2012-05-30 29 views
5

Tôi đang cố gắng để có được RSSI hoặc cường độ tín hiệu từ các gói WiFi. Tôi cũng muốn RSSI từ 'yêu cầu thăm dò WiFi' (khi ai đó đang tìm kiếm điểm phát sóng WiFi).Scapy - truy xuất RSSI từ các gói WiFi

Tôi đã xem được từ nhật ký kismet nhưng đó chỉ là để đảm bảo có thể - tôi không muốn sử dụng kismet mọi lúc.

Để 'quét toàn thời gian' tôi đang sử dụng scapy. Có ai biết nơi tôi có thể tìm thấy RSSI hoặc cường độ tín hiệu (trong dBm) từ các gói sniffed với scapy? Tôi không biết làm thế nào là toàn bộ gói được xây dựng - và có rất nhiều giá trị 'hex' mà tôi không biết làm thế nào để phân tích/giải thích.

Tôi đang đánh hơi trên cả hai giao diện - wlan0 (phát hiện khi ai đó kết nối với điểm phát sóng của tôi) và mon.wlan0 (phát hiện khi ai đó đang tìm kiếm điểm phát sóng). Phần cứng (thẻ WiFi) Tôi sử dụng dựa trên chipset Prism (ISL3886). Tuy nhiên thử nghiệm với Kismet đã chạy trên Atheros (AR2413) và Intel iwl4965.

Edit1:

Hình như tôi cần phải truy cập vào bằng cách nào đó thông tin được lưu trữ trong PrismHeader: http://trac.secdev.org/scapy/browser/scapy/layers/dot11.py dòng 92?

Bất kỳ ai biết cách nhập thông tin này? packet.show() và packet.show2() không thể hiện bất cứ điều gì từ lớp này/lớp

Edit2:

Sau khi đào bới hơn có vẻ như giao diện chỉ không được thiết lập một cách chính xác và đó là lý do tại sao nó không thu thập tất cả các tiêu đề cần thiết. Nếu tôi chạy kismet và sau đó sniff gói tin từ giao diện đó với scapy có biết thêm trong gói:

###[ RadioTap dummy ]### 
    version= 0 
    pad= 0 
    len= 26 
    present= TSFT+Flags+Rate+Channel+dBm_AntSignal+Antenna+b14 
    notdecoded= '8`/\x08\x00\x00\x00\x00\x10\x02\x94\t\xa0\x00\xdb\x01\x00\x00' 
    ... 

Bây giờ tôi chỉ cần phải thiết lập giao diện một cách chính xác mà không sử dụng kismet.

Trả lời

2

Để tóm tắt:

  • cường độ tín hiệu là không nhìn thấy được bởi vì một cái gì đó đã sai trong cách mà 'chế độ màn hình' đã được thiết lập (không phải tất cả tiêu đề được thông qua/phân tích cú pháp bằng sniffer). Giao diện màn hình này được tạo bởi hostapd.

  • bây giờ tôi đang đặt chế độ màn hình trên giao diện với airmon-ng - tcpdump, scapy hiển thị các tiêu đề phụ bổ sung.

+0

Bất kỳ bản cập nhật? bạn có thể nhận được các giá trị RSSi không? – alandalusi

+4

Vâng. Nó 'ẩn' trong phần chưa được mã hóa của gói. Tôi đang giải nén nó với: 'sig_str = - (256-ord (packet.notdecoded [-4: -3]))' – kaczor1984

+0

@ kaczor1984 Tôi đã thử: 'sig_str = - (256-ord (packet.notdecoded [ -4: -3])) 'và tôi nhận được các giá trị như -69, -79, -81 vv Bạn giải thích những giá trị này như thế nào? – zengr

0

Thực tế là nó nói "radiotap" cho thấy thiết bị có thể cung cấp Radiotap headers, không tiêu đề Prism, mặc dù nó có một chipset Prism. The p54 driver dường như là một "trình điều khiển SoftMAC", trong trường hợp này nó có thể sẽ cung cấp các tiêu đề Radiotap; bạn đang sử dụng trình điều khiển p54 hoặc trình điều khiển prism54 cũ hơn?

4

Đây là tiện ích mở rộng có giá trị của scapy giúp cải thiện việc phân tích cú pháp các trường hiện tại không được giải mã của scapy.layers.dot11.Packet.

https://github.com/ivanlei/airodump-iv/blob/master/airoiv/scapy_ex.py

Chỉ cần sử dụng:

import scapy_ex 

Và:

packet.show() 

Nó sẽ giống như thế này:

###[ 802.11 RadioTap ]### 
    version = 0 
    pad  = 0 
    RadioTap_len= 18 
    present = Flags+Rate+Channel+dBm_AntSignal+Antenna+b14 
    Flags  = 0 
    Rate  = 2 
    Channel = 1 
    Channel_flags= 160 
    dBm_AntSignal= -87 
    Antenna = 1 
    RX_Flags = 0 
+1

Bạn nên sao chép git repo và chạy 'import scapy_ex' từ thư mục airoiv vì có các tệp phụ thuộc khác được yêu cầu bởi chỉ scapy_ex.py (ví dụ: printer.py). Sau đó, nó hoạt động độc đáo. – Pierz

0

Tôi có vấn đề tương tự, tôi thiết lập màn hình mo de với airmon-ng và tôi có thể thấy mức dBm trong tcpdump nhưng bất cứ khi nào tôi thử các sig_str = -(256-ord(packet.notdecoded[-4:-3])) tôi nhận được -256 vì giá trị trả về từ notdecoded trong 0. Cấu trúc gói trông như thế này.

version = 0 
pad  = 0 
len  = 36 
present = TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext 
notdecoded= ' \x08\x00\x00\x00\x00\x00\x00\x1f\x02\xed\x07\x05 
....... 
1

Vì lý do nào đó cấu trúc gói đã thay đổi. Bây giờ dBm_AntSignal là phần tử đầu tiên trong notdecoded.

Tôi không chắc chắn 100% giải pháp này nhưng tôi đã sử dụng sig_str = -(256 - ord(packet.notdecoded[-2:-1])) để tiếp cận yếu tố đầu tiên và tôi nhận được các giá trị có vẻ là dBm_AntSignal.

Tôi đang sử dụng OpenWRT trong một TP-Link MR3020 với extroot và Edward Keeble Dự án giám sát Wifi thụ động với một số sửa đổi.

tôi sử dụng scapy_ex.py và tôi đã có thông tin này:

802.11 RadioTap 

    version = 0 

    pad  = 0 

    RadioTap_len= 36 

    present = dBm_AntSignal+Lock_Quality+b22+b24+b25+b26+b27+b29 

    dBm_AntSignal= 32 

    Lock_Quality= 8 
Các vấn đề liên quan