実践パケット解析にて、
まだ『知っておきたい下位層プロトコル』というところを読んでいます(ちょうど中盤)
で,サンプルのパケットをwiresharkで見てどういうことで、そのパケットがどういう意味を果たすか
書いてあります。
しかし、この前せっかくScapyを勉強したので、Scapyでもパケットが見れるのか。
Wiresharkとどっちの方が見やすいのか!?って感じで、見比べました。
(wiresharkはめんどくさいから自分でみてね๑❛ᴗ❛๑)۶ w
早速やりましょう。
今回は arp_resolution.pcap というパケットを見ます。(実践パケット解析のサンプルです
で、wiresharkで見る場合だったら open => file という感じで見れるのでしょう。
ScapyはCUIなので、少しめんどくさい。ほんの少しね。
このサンプルは ppa2ecapturesというフォルダとして提供しています。
では、tmpにでも置きましょうか。
/tmp/ppa2ecaptures/
という感じになりますね。
>>>#arp_packetという変数(パケット)に rdpcapという関数で代入します。 >>>arp_packet = rdpcap('/tmp/ppa2ecaptures/arp_resolution.pcap') >>>#ちなみにwiresharkとして開きたかったら, >>>#wireshark(arp_packet) >>>#として開くことも可能。まぁ、今回はCUIって言ったのでやらないです。はい。 >>>#簡単に見る感じならしたのように見れますね。 >>> arp_packet.show() 0000 Ether / ARP who has 192.168.0.1 says 192.168.0.114 0001 Ether / ARP is at 00:13:46:0b:22:ba says 192.168.0.1 / Padding >>>#もっと詳しく!って思う方には、1つ1つパケットを見たら良いですね。 >>> arp_packet[0] <Ether dst=ff:ff:ff:ff:ff:ff src=00:16:ce:6e:8b:24 type=0x806 |<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=who-has hwsrc=00:16:ce:6e:8b:24 psrc=192.168.0.114 hwdst=00:00:00:00:00:00 pdst=192.168.0.1 |>> >>> arp_packet[1] <Ether dst=00:16:ce:6e:8b:24 src=00:13:46:0b:22:ba type=0x806 |<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=00:13:46:0b:22:ba psrc=192.168.0.1 hwdst=00:16:ce:6e:8b:24 pdst=192.168.0.114 |<Padding load='\xc0\xa8\x00r' |>>> >>> >>>#⬆のは確かに詳しいですが、見にくい(醜い)ですね。じゃあ、.show2()を使いましょ、 >>> arp_packet[0].show2() ###[ Ethernet ]### dst= ff:ff:ff:ff:ff:ff src= 00:16:ce:6e:8b:24 type= 0x806 ###[ ARP ]### hwtype= 0x1 ptype= 0x800 hwlen= 6 plen= 4 op= who-has hwsrc= 00:16:ce:6e:8b:24 psrc= 192.168.0.114 hwdst= 00:00:00:00:00:00 pdst= 192.168.0.1 >>> arp_packet[1].show2() ###[ Ethernet ]### dst= 00:16:ce:6e:8b:24 src= 00:13:46:0b:22:ba type= 0x806 ###[ ARP ]### hwtype= 0x1 ptype= 0x800 hwlen= 6 plen= 4 op= is-at hwsrc= 00:13:46:0b:22:ba psrc= 192.168.0.1 hwdst= 00:16:ce:6e:8b:24 pdst= 192.168.0.114 ###[ Padding ]### load= '\xc0\xa8\x00r' >>> >>>#ほうほう。分かりやすい。 >>>#最後にオペレーションコード(opcode) >>> arp_packet[0].op 1 >>> arp_packet[1].op 2 >>>
一番パケットで気をつけることが 送信先と送信元ですね。これが凄く分かりやすい所が素敵。
そのあと、オペレーションコードが1,2って書いてあるけど、実は 0x0002なりもっといい方法
あるんじゃねぇのかなぁ〜って思うけど、typeとして考えるならありかな。って思います、はい。
##まとめ##
Pythonによって作られたScapy最高。もっというとPython最高。
ネットワークたまらんぐらいおもろいよね。うん。