Scapy Sniffer — получение RSSI

Меня интересует получение значений RSSI, если точки доступа используют сниффер scapy. Я использую sig_str = -(256-ord(packet.notdecoded[-4:-3])) для получения значений RSSI. Однако я получаю -256 для всех точек доступа. Тогда недекодированная часть равна 0. Может ли кто-нибудь помочь мне разобраться с этим?

PS: я уже ссылался на этот соответствующий пост. https://stackoverflow.com/a/34118234/4804221

ТИА!


person KDK    schedule 25.07.2016    source источник
comment
Вы использовали режим монитора? Или вы нашли решение?   -  person Dmitry    schedule 23.08.2016
comment
Я использовал режим монитора. Однако решения этой проблемы я так и не нашел.   -  person KDK    schedule 24.08.2016
comment
Вы использовали wireshark на интерфейсе монитора для проверки rssi?   -  person Dmitry    schedule 24.08.2016


Ответы (1)


Предпосылка

Предполагается, что интерфейс находится в режиме мониторинга и назначен правильный канал. В следующем примере iface=wlan0 настраивается на monitor mode и прослушивается channel=6

$ sudo ip link set wlan0 down
$ sudo iw dev wlan0 set type monitor
$ sudo ip link set wlan0 up
$ sudo iw dev wlan0 set channel 6

Python3

RSSI из пакета может быть получен dBm_AntSignal, если заголовок RadioTap правильно обнюхал вместе.

from scapy.all import RadioTap
from scapy.all import sniff

# sniff a packet from the interface
pkt = sniff(iface="wlan0", count=1)
pkt = pkt[0]

# getting the RSSI
radiotap = pkt.getlayer(RadioTap)
rssi = radiotap.dBm_AntSignal
print("RSSI={}".format(rssi)) # RSSI=-84

Python2

Похоже, что dBm_AntSignal не работает на python2 scapy, следующий пример будет работать.

extra = pkt.notdecoded
rssi = -(256-ord(extra[-4:-3]))

Надеюсь это поможет.

person yananet    schedule 26.08.2019