python dpkt moduleのチュートリアル + @

今日はpythonのdpkt moduleに関して。
これもstructと同じで、たびたびCTFのwriteup読んでると
利用されているのを見かけるので、自分でも使ってみました。

about dpkg module

  1. pythonでpacketの作成、パース機能を提供する
  2. 最新版は1.8(2013.05リリース。現在は開発が活発に行われているわけではなさそう)
  3. 公式ドキュメントはないっぽい?

install dpkg

wiresharkでは手の届きづらいところに

  • プログラマブルなので、細かい条件の指定、構造化、新しいpcapの作成などが可能
  • 受信したデータを復元・保存
  • パケットを自分で作って送信することもできる(socket moduleを併用)
  • wiresharkでざっと眺めて、dpktで細かく分析する、とか併用するといいかも

sample

packet 分析

まずはpcapの読み込み

読み込んだデータはEthernetレベルのデータと受信時間が含まれるリストになるので
for文で回す。

Ethernetレベルのデータをdpkt.ethernet.Ethernet()でインスタンス可

最後に、受け取ったethernetのデータの内容がIPプロトコルのものかを
判定し

真であれば、送信元、送信先、データサイズを返す。
そんな感じになってます。

この例であれば

  • Ethernetの中にIPのデータ
  • IPの中にTCPのデータ
  • TCPの中にHTTPのデータ

であるので

こんな感じでHTTP通信のデータをインスタンス化しています。
(DNS, ARP, DHCP, TELNET, ICMPなどなどが標準で用意されています)

packet 作成・送信

link

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です