13

分析しているWi-Fiキャプチャ(.pcap)があり、802.11仕様とWiresharkによるデータの解釈との間に矛盾があるように見えるものに遭遇しました。具体的には、私が引き離そうとしているのは、2バイトの802.11フレーム制御フィールドです。

http://www4.ncsu.edu/~aliu3/802.bmpから取得した、フレーム制御フィールドのサブフィールドの形式は次のとおりです。

フレーム制御サブフィールド。

そして、以下は私を混乱させたパケットのWiresharkスクリーンキャップです:

Wiresharkの紛らわしいフレーム制御

したがって、Wiresharkのスクリーンショットによると、フレーム制御フィールドのフラグ部分(最後の8ビット)は0x22であり、これで問題ありません。バージョン/タイプ/サブタイプが0x08Wiresharkのフレームの説明とどのように一致するかが、私を混乱させました。

0x08= 0000 1000b、これはバージョン= 00、タイプ= (データフレームではなく管理00を意味すると思った)およびサブタイプ= (ビーコンフレームだと思った)に変換されると思いました。したがって、このフレームは管理フレーム、より具体的にはビーコンフレームであると思います。ただし、Wiresharkはそれをデータフレームとして報告します。私を混乱させている2番目のことは、Wiresharkがラインのどこからでも引っ張っているところです。 10000x20Type/Subtype: Data (0x20)

誰かが私のために802.11仕様/Wiresharkキャプチャの私の解釈を明確にすることができますか、そしてなぜ2つが一貫していないのですか?

4

3 に答える 3

18

フレームコントロール(FC)のそのバイトのレイアウトのため、この例のデータフレームは0x08です。0x08 = 00001000-最初の4ビット(0000)はサブタイプです。0000はこのフレームのサブタイプです-次の2ビット(10)はタイプであり、小数点以下2桁であるため、データ型フレームです-最後の2ビット(00)はバージョンであり、0です。

次の表は、いくつかのフレームタイプのFCのサブタイプタイプバージョンバイトの16進値を変換したものです。QoSデータを通常のデータフレームと比較すると、これをうまく理解するのに役立つ可能性があります。私がちょうどそれを泡立てたので、テーブルにエラーがあるかもしれないことに注意してください。

あなたは1000がビーコンフレームであることは正しいです、あなたはちょうど間違ったビットを見ていました。

ここに画像の説明を入力してください

radiotapヘッダーがあり、pcapAPIからそのようなタイプのdec表現を取得できます。

int type = pkt_data[20] >> 2;
于 2012-10-04T01:04:43.307 に答える
3

これはよくあるエラーであり、確かに何度か私を噛みました。

それはバイトオーダーにかかっています。

表すマルチバイト数がある場合、最初にどのバイトを送信/送信するかという疑問が生じます。

自然な(人間の)バイト順序は、大きな部分を最初に配置し、次に小さな部分を左から右に配置することです。これはビッグエンディアンとも呼ばれます。各バイトのビットは、プログラマーの観点からは決して間違った方法ではないことに注意してください。

たとえば、10進数の1234には2バイト、16進数の04D2が必要です。04 D2、またはD2 04を書き込み/送信しますか?1つ目はビッグエンディアン、2つ目はリトルエンディアンです。

さらに混乱させるために、関連するメカニズムは異なるバイト順序を使用する場合があります。

ネットワークバイトオーダー(この場合はリトルエンディアン)、アーキテクチャバイトオーダー(CPUアーキテクチャごとに異なる可能性があります)があり、データはバッファー内にある可能性があるため、バッファーを上から読み取るかどうかによって異なります。 -下、または下から上。

元の投稿のように、どのビットが「逆方向」にもなり得ることを説明することは役に立ちません。

于 2013-01-13T08:55:06.213 に答える
0

私はwireshark version-2.4.3ウィンドウズで使用しています。データフレームのキャプチャファイルは次のようになります。

Frame control field = 0x0842 i.e., in binary format 0000 1000 0100 0010 
Framecontrol flag field = 0x42.i.e., in binary format 0100 0010

したがって、私の理解にLSB 8bitsよれば、framecontrolフィールドのはフラグに対応します。

MSB 8ビットは、サブタイプ、タイプ、バージョンに対応します。つまり、私の場合は&&0000-subtypeです。10-type00-version

これはサブタイプ0のデータフレームです。

あなたの場合、wiresharkのエラーである可能性があります。0x08220x2208の代わりにフレーム制御フィールドを表示する必要があります。

Flagsフィールドは正しく表示され0x22ます。

私の場合、使用していて、フラグがwireshark-2.4.3であるフレーム制御フィールドの表示は正しいです。0x08420x42

My_capture_file:

ここに画像の説明を入力してください

于 2018-03-30T14:23:45.553 に答える