Scacco: get / set tần số hoặc kênh của gói


8

Tôi đã cố gắng bắt các gói WIFI với Linux và xem tần số / kênh mà gói được bắt. Tôi đã thử Wireshark và không có may mắn và không có sự giúp đỡ . Mặc dù sử dụng một gói mẫu từ Wireshark, tôi có thể thấy tần số / kênh.

Vì vậy, bây giờ tôi đang thử nghiệm với Scacco. Tôi muốn tìm ra tần số / kênh của gói đánh hơi, nhưng vẫn không gặp may. Có cách nào để làm điều này với Scacco.

PS Nếu có một công cụ tốt hơn Scacco hoặc Python, tôi đánh giá cao ý kiến


Một câu trả lời hợp lệ sẽ là một câu trả lời chi tiết về cách gửi một gói tin ở một tần số / kênh nhất định
Baby Desta

2
Tùy thuộc vào những gì bạn muốn làm cuối cùng, tôi muốn giới thiệu bettercap.org
Fabian N.

@FabianN., Cảm ơn bạn. nhìn vào nó ngay bây giờ
Em bé định mệnh

Câu trả lời:


5

Tôi phát hiện ra rằng các tiêu đề RadioTab không phải là một phần của bất kỳ giao thức Dot11 nào mà chỉ được thêm vào bởi giao diện mạng. Và lý do tôi nhận được các tiêu đề RadioTab trên các gói mẫu từ Wireshark.org chứ không phải từ việc thu thập thông tin trực tiếp của tôi là vì một số bộ điều hợp mạng không thêm RadioTap trong khi các bộ điều hợp mạng khác của máy tính xách tay của tôi không thêm các tiêu đề RadioTab. Tôi đã kiểm tra điều này với một bộ điều hợp WiFi bên ngoài mới và nó đã thêm các tiêu đề RadioTap.

Nếu bộ điều hợp không tiêm thông tin bổ sung vì nó chụp các khung, thì sẽ không có tiêu đề radiotap nào được thêm vào.

Vì vậy, với câu hỏi chính của tôi, làm thế nào để có / đặt tần số của một gói. Tôi mong đợi Scacco có tùy chọn này nhưng không được, và không nên. Lý do là tần số phụ thuộc vào những gì được đặt trên bộ điều hợp mạng. Vì vậy, những gì tôi đã làm là đặt tần số / kênh của bộ điều hợp WiFi thành một tần số khác. Bộ điều hợp WiFi bên ngoài của tôi có thể hoạt động ở nhiều kênh khác nhau vì vậy tôi đã thay đổi từng kênh và xác nhận với tiêu đề RadioTap. Có một lệnh / công cụ linux đơn giản giúp tôi kiểm tra các kênh được hỗ trợ của giao diện WiFi và chuyển sang một kênh cụ thể.

Để chụp / gửi các gói ở một tần số hoặc kênh nhất định, bạn cần thay đổi kênh làm việc của giao diện của mình và đặt giao diện sniffer / sender trong scacco thành giao diện đó.

EDIT - Các vấn đề khác tôi gặp phải và giải pháp:

Nếu bạn đang sử dụng linux và bạn muốn thay đổi kênh làm việc trên giao diện của mình, bạn cần phải tắt trình quản lý mạng cho giao diện đó và thực hiện việc này trước tiên Thêm đoạn mã sau vào /etc/network/interfaces

auto $iface
iface $iface inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

thay thế $ifacebằng tên giao diện của bạn. Điều này sẽ cho phép bạn kiểm soát giao diện một mình. Và sau đó thêm các dòng sau vào/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant

network={
    ssid="Your_AP_SSID"
    psk="Your_Passphrase"
    freq_list=2412 2437 2462
}

Lưu ý rằng đó 2412 2437 2462là tần số (kênh 1, 6, 11 trong trường hợp này) để giao diện của bạn lựa chọn. Bạn có thể chỉnh sửa chúng theo tần số mong muốn. Nguồn . Nhưng trước tiên bạn phải kiểm tra xem giao diện của bạn có hỗ trợ các tần số này không. Để kiểm tra

iwlist channel

Cuối cùng sau khi mọi thứ đã xong.

sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="wlp3s0")

Điều này sẽ gửi cho bạn các gói ở tần số wlp3s0được đặt.


Tâm trí thêm một số mã cho câu trả lời này?
Ross Jacobs

@RossJacobs, Bạn chỉ cần sử dụng phương thức gửi phổ biến trên scacco, không có gì mới. ngoại trừ bạn thay đổi giao diện của bạn. Một ví dụ là sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1")bạn có thể đặt giao diện của mình theo một tần số nhất định mà bạn muốn nếu nó hỗ trợ nó.
Em bé mệnh

1

Câu trả lời này nằm trong phạm vi tiêu đề và nội dung của câu hỏi: Cung cấp getters và setters cho tần số và kênh của gói.

Đối với giải pháp này, hãy sử dụng tệp wpa-Indraction.pcap trong Bản chụp mẫu của Wireshark .

Chọc quanh

Thật hữu ích khi chọc xung quanh một gói để xem những lĩnh vực nào Scacco có quyền truy cập trong trình thông dịch Scacco.

>>> pkts = rdpcap('wpa-Induction.pcap')
>>> pkts[0].summary()
"RadioTap / Dot11FCS / Dot11Beacon / Dot11Elt / Dot11EltRates / Dot11Elt / Dot11Elt / Dot11Elt / Dot11Elt / Dot11EltRSN / Dot11Elt / Dot11EltVendorSpecific / Dot11EltMicrosoftWPA / SSID=''"
>>> pkts[0].show()
###[ RadioTap dummy ]###
  version= 0
  pad= 0
  len= 24
  present= Flags+Rate+Channel+Lock_Quality+Antenna+dB_AntSignal+RXFlags
  Flags= FCS
  Rate= 2
  Channel= 2412
  ChannelFlags= CCK+2GHz
  Antenna= 84
  notdecoded= '\x00\x00+\x00\x00\x9fa\xc9\\'

... <output truncated> ...

Mặc dù 2412 là tần số và KHÔNG phải là kênh , đây là dữ liệu chúng tôi muốn. RadioTap là lớp trên pkts[0].summary(). Đặt nó lại với nhau,

>>> frequency = pkts[0][RadioTap].Channel
>>> print(frequency)
2412

Scacco không cung cấp quyền truy cập vào kênh, nhưng việc chuyển đổi tần số sang kênh là chuyện nhỏ.

Đặt nó lại với nhau

Bắt tần số

Cho một tập tin và số gói, bây giờ chúng ta có thể nhận được kênh và tần số cho một gói.

from scapy.all import RadioTap, rdpcap

def getChannel(frequency):
    base = 2407              # 2.4Ghz
    if frequency//1000 == 5: 
        base = 5000          # 5Ghz
    # 2.4 and 5Ghz channels increment by 5
    return (frequency-base)//5

def getFrequency(file, packet_number):
  pkts = rdpcap(file)
  # Scapy mixes up Channel/Frequency here
  frequency = pkts[packet_number][RadioTap].Channel
  return frequency

freq = getFrequency('wpa-Induction.pcap', 0)
chan = getChannel(freq)
print("Channel: {0} \nFrequency: {1}".format(freq, chan))

Đặt tần số

Giả sử chúng tôi muốn thay đổi tần số thành 5300 và lưu nó. Điều này sẽ chỉ yêu cầu lặp qua danh sách gói, thay đổi tần số cho mỗi gói và lưu kết quả. Trong trình thông dịch scacco:

>>> for i in range(len(pkts)):
...     pkts[i][RadioTap].Channel = 5300
>>> wrpcap('temp.pcap', pkts)
>>> pkts2 = rdpcap('temp.pcap')
>>> pkts[0].Channel
5300

@Babydesta Tôi đã đọc câu hỏi và đưa ra câu trả lời cho câu hỏi này. Bạn có thể muốn hỏi một đồng nghiệp để có ý kiến ​​thứ hai về cách câu hỏi / tiêu đề của bạn đọc. Bạn có thể muốn đánh dấu lại câu hỏi bằng cách làm theo định dạng trong cách hỏi , với trọng tâm là tiêu đề thứ hai. Nếu bạn nghĩ rằng điều này trả lời câu hỏi bạn đã hỏi , xin vui lòng đánh dấu nó như vậy.
Ross Jacobs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.