Mini Shell
"""
Ethernet (TCP/IP protocol stack)
"""
from construct import *
from binascii import hexlify, unhexlify
import six
class MacAddressAdapter(Adapter):
def _encode(self, obj, context):
return unhexlify(obj.replace("-", ""))
def _decode(self, obj, context):
return "-".join(hexlify(b) for b in obj)
def MacAddress(name):
return MacAddressAdapter(Bytes(name, 6))
ethernet_header = Struct("ethernet_header",
MacAddress("destination"),
MacAddress("source"),
Enum(UBInt16("type"),
IPv4 = 0x0800,
ARP = 0x0806,
RARP = 0x8035,
X25 = 0x0805,
IPX = 0x8137,
IPv6 = 0x86DD,
_default_ = Pass,
),
)
if __name__ == "__main__":
cap = unhexlify(six.b("0011508c283c0002e34260090800"))
obj = ethernet_header.parse(cap)
print (obj)
print (repr(ethernet_header.build(obj)))
Zerion Mini Shell 1.0