Scapyのコードを少しみてみる。構造体をどう処理しているか。
目的
少し用事があり、例えば、Scapyのコードはどんな感じが見てみた。
Scapyとは、
Scapy is a powerful Python-based interactive packet manipulation program and library.
(引用:https://pypi.org/project/scapy/)
Pythonには構造体がないので、
パケットなどの構造体的なデータをどう処理しているかを確認した。
対象コードは、
https://github.com/secdev/scapy
引用コードもすべて上記。
わかったこと
概要
コード上、以下の2つの構造体関連の処理があった
- structモジュール
- Structureクラス
基本、前者が使われている。
structモジュール
↓以下のような感じで、packしていた。
psdhdr = struct.pack("!4s4sHH",
inet_pton(socket.AF_INET, u.src),
inet_pton(socket.AF_INET, u.dst),
proto,
ln)
Structureクラス
↓以下のようなコードがあるが、Windowsのpcap対応用??
使われ方がよくわからなかった。
class sockaddr_in(Structure):
_fields_ = [("sin_family", SHORT),
("sin_port", USHORT),
("sin_addr", in_addr),
("sin_zero", 8 * CHAR)]
まとめ
有名なScapyで、パケットの構造体的なデータがどう処理されているかを確認した。
structモジュールが使われていた。
(上記、少し、語弊があります。データをかためる部分で、structモジュールが使われていたという言い方が適当かも。)
c言語等に構造体がどう扱われているかという意味では、かためる以外の部分は、普通にクラスのメンバーになっているという言い方が正しいと思う。
コメントなどあれば、お願いします。
Author And Source
この問題について(Scapyのコードを少しみてみる。構造体をどう処理しているか。), 我々は、より多くの情報をここで見つけました https://qiita.com/enoughspacefor/items/93a13d9e27b0fc127509著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .