Wireshark(Ethereal)のPacketListにおけるDisplayFilterについて、PacketBytesで表示されている任意のHEXでFilterする方法をまとめたので、備忘録としてアップしておく事にしました。
●下記のPacketBytesを例とした場合。
0000 02 00 4c 4f 4f 50 c4 00 09 d4 f1 00 08 00 45 00 ..LOOP.. ......E.
0010 00 76 f2 03 00 00 ff 06 c5 79 01 01 01 02 01 01 .v...... .y......
0020 01 01 00 17 0d 21 38 51 6e 45 a7 46 e0 d8 50 18 .....!8Q nE.F..P.
0030 0f e3 8c b1 00 00 45 6e 74 65 72 20 63 6f 6e 66 ......En ter conf
0040 69 67 75 72 61 74 69 6f 6e 20 63 6f 6d 6d 61 6e iguratio n comman
0050 64 73 2c 20 6f 6e 65 20 70 65 72 20 6c 69 6e 65 ds, one per line
0060 2e 20 20 45 6e 64 20 77 69 74 68 20 43 4e 54 4c . End w ith CNTL
0070 2f 5a 2e 0d 0a 52 6f 75 74 65 72 28 63 6f 6e 66 /Z...Rou ter(conf
0080 69 67 29 23 ig)#
<書式>
frame[XXXX:YYYY] == ZZ:ZZ:ZZ.....
・XXXX=PacketBytesの番地。
・YYYY=マッチングさせたいHEXパターンのByte数(10進数表記)
※1:10進数で指定する際は、数字をそのまま指定
※2:16進数で指定する際は、HEXの前に『0x』をつける
・ZZ =マッチングさせたいHEXパターン。
1Byteごとに『:(半角) 』で区切る。
<適用例>
・先頭から80Byte目から数えて1Byte分の値が、
『64(HEX)』
の場合のFilterは、下記1~4となる。
1.frame[80:1] == 64
2.frame[80:0x1] == 64
3.frame[0x50:1] == 64
4.frame[0x50:0x1] == 64
・先頭から96Byte目から数えて3Byte分の値が、
『2e 20 20(HEX)』
の場合のFilterは、下記1~4となる。
・frame[96:3] == 2e:20:20
・frame[96:0x3] == 2e:20:20
・frame[0x60:3] == 2e:20:20
・frame[0x60:0x3] == 2e:20:20
・先頭から112Byte目から数えて16Byte分の値が、
『2f 5a 2e 0d 0a 52 6f 75 74 65 72 28 63 6f 6e 66(HEX)』
の場合のFilterは、下記1~4となる。
・frame[112:16] == 2f:5a:2e:0d:0a:52:6f:75:74:65:72:28:63:6f:6e:66
・frame[112:0x10] == 2f:5a:2e:0d:0a:52:6f:75:74:65:72:28:63:6f:6e:66
・frame[0x70:16] == 2f:5a:2e:0d:0a:52:6f:75:74:65:72:28:63:6f:6e:66
・frame[0x70:0x10] == 2f:5a:2e:0d:0a:52:6f:75:74:65:72:28:63:6f:6e:66
以上となります。(10進数と16進数の使い分けに注意する)
これで、Packet Detailsで定義されていないパターンであっても、自在に表示フィルタを作成することが出来ます。