Blanktar

  1. top
  2. blog
  3. 2013
  4. 08

ctypes用のネットワーク関係の構造体

追記

C言語で書いた普通のものはこちらをどうぞ。 イーサネット関係のヘッダ

PyPyCapの作成途中で作ったんだけど、結局使わなかったやつ。 元々は構造体にキャストしてパースする予定だったんだけど、途中から添字直打ちに変更しちゃったのよねー。

このまま捨てるのもくやしいので、役立ててくれどこかの誰かっ

class st_ether_header(BigEndianStructure):
    _fields_ = [
        ('ether_dhost', c_uint8 * 6),
        ('ether_shost', c_uint8 * 6),
        ('ether_type', c_ushort),
    ]

class st_ip_header(BigEndianStructure):
    _fields_ = [
        ('ihl_and_version', c_uint8),
        ('tos', c_uint8),
        ('tot_len', c_uint16),
        ('id', c_uint16),
        ('frag_off', c_uint16),
        ('ttl', c_uint8),
        ('protocol', c_uint8),
        ('check', c_uint16),
        ('saddr', c_uint32),
        ('daddr', c_uint32),
    ]

class st_tcp_header(BigEndianStructure):
    _fields_ = [
        ('source', c_uint16),
        ('dest', c_uint16),
        ('seq', c_uint32),
        ('ack_seq', c_uint32),
        ('flags', c_uint16),
        ('windows', c_uint16),
        ('check', c_uint16),
        ('urg_ptr', c_uint16),
    ]

class st_udp_header(BigEndianStructure):
    _fields_ = [
        ('source', c_uint16),
        ('dest', c_uint16),
        ('len', c_uint16),
        ('check', c_uint16)
    ]