非モテ男の恋愛VPN

非モテ男の、非モテ男による、【女の子にモテたい】非モテ男のための、モテモテになるまで宣言書

スポンサーリンク

プログラミング

【パケットキャプチャ】Raw Socket でpingを受信し中身を表示してみた

更新日:

パケットキャプチャを作る際のテスト用として、pingの受信結果を簡単に表示するものです。

まずはインクルードするもの

次に各プロトコルのヘッダーファイルを表示させるための関数です。pingで使うプロトコルと実際に通信するときに必要になるプロトコル(Ethernet・ARP・IP・ICMP)のみ対応しています。

IPパケットで表示するIPアドレスとARPパケットで表示するIPアドレスは、定義されているデータのサイズが異なるので、それぞれ違う関数で文字列に変換してあげます。struct iphdrを見るとIPアドレスは4バイトの変数に格納されています。一方で、struct ether_arpを見るとIPアドレスは1バイトの配列に格納されています。 MACアドレスは同じ関数で文字列変換できます。



基本的にはlinuxで定義されたヘッダの構造体のメンバを表示させるだけです。2バイト以上のデータを扱うときは、ネットワークバイトオーダにからホストバイトオーダに変換して表示させます。

main関数です。
受信したデータで使われているプロトコルによって、処理を分けていきます。受信したデータの先頭からデータを表示していきます。

 

実行したものがこちらです。

最後まで読んでいただきありがとうございました。

スポンサーリンク

-プログラミング

Copyright© 非モテ男の恋愛VPN , 2019 All Rights Reserved Powered by STINGER.