6

WiFiパケットからRSSIまたは信号強度を取得しようとしています。「WiFiプローブリクエスト」からのRSSIも必要です(誰かがWiFiホットスポットを検索している場合)。

私はなんとかkismetログからそれを見ることができましたが、それはそれが可能であることを確認するためだけでした-私は常にkismetを使いたくありません。

「フルタイムスキャン」では、scapyを使用しています。scapyでスニッフィングされたパケットからRSSIまたは信号強度(dBm)をどこで見つけることができるか誰かが知っていますか?パケット全体がどのように構築されているのかわかりません。また、解析/解釈の方法がわからない「16進」値がたくさんあります。

wlan0(誰かが私のホットスポットに接続したときに検出する)とmon.wlan0(誰かがホットスポットを検索しているときに検出する)の両方のインターフェイスをスニッフィングしています。私が使用しているハードウェア(WiFiカード)は、Prismチップセット(ISL3886)に基づいています。ただし、Kismetを使用したテストは、Atheros(AR2413)およびInteliwl4965で実行されました。

編集1:

PrismHeaderに保存されている情報にアクセスする必要があるようです: http ://trac.secdev.org/scapy/browser/scapy/layers/dot11.py 92行目?

誰かがこの情報を入力する方法を知っていますか?packet.show()およびpacket.show2()は、このクラス/レイヤーから何も表示しません

Edit2:

さらに掘り下げてみると、インターフェイスが正しく設定されていないように見えます。そのため、必要なヘッダーがすべて収集されていません。kismetを実行してから、そのインターフェイスからscapyを使用してパケットをスニッフィングすると、パケットに詳細情報が含まれます。

###[ 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'
  ...

これで、kismetを使用せずにインターフェイスを正しく設定するだけで済みます。

4

6 に答える 6

3

scapy.layers.dot11.Packetこれは、デコードされていない現在のフィールドの の解析を改善する貴重な scapy 拡張です。

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

使用するだけです:

import scapy_ex

と:

packet.show()

次のようになります。

###[ 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
于 2013-12-25T21:22:54.580 に答える
3

要約する:

  • 「モニターモード」の設定方法に問題があったため、信号強度は表示されませんでした (すべてのヘッダーがスニファーによって渡されたり解析されたりしたわけではありません)。この監視インターフェースは、hostapd によって作成されました。

  • 今、私は airmon-ng とのインターフェイスで監視モードを設定しています - tcpdump、scapy はこれらの追加ヘッダーを表示します。

編集済み: scapy 2.4.1+ (または github dev バージョン) を使用します。最近のバージョンでは、« notdecoded » 部分が正しくデコードされるようになりました

于 2012-05-31T21:58:31.953 に答える
2

何らかの理由でパケット構造が変更されました。現在、dBm_AntSignal は notdecoded の最初の要素です。

私はこの解決策を100%確信しているわけではありませんが、以前sig_str = -(256 - ord(packet.notdecoded[-2:-1]))は最初の要素に到達していたので、dBm_AntSignal.

私はextrootとEdward Keeble Passive Wifi Monitoringプロジェクトでいくつかの変更を加えて使用OpenWRTしています。TP-Link MR3020

私は scapy_ex.py を使用していますが、次の情報がありました。

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
于 2016-06-15T15:01:00.873 に答える
1

誰かがまだ同じ問題を抱えている場合は、解決策を見つけたと思います。

これが RSSI 値の適切なカットだと思います。

sig_str = -(256-ord(packet.notdecoded[-3:-2]))

これはノイズレベル用です:

noise_str = -(256-ord(packet.notdecoded[-2:-1]))
于 2018-06-28T14:58:38.710 に答える