我正在编写python程序来使用pcap构建mac-address缓存。但是用于python的pcap模块没有很好的文档。我找到了这个页面http://pylibpcap.sourceforge.net/和代码示例,它运行正常。
是否可以修改此示例以使其能够显示每个数据包的源mac地址?或者请指出我可以阅读的文档......
已更新
这是一个代码部分,其中有关mac地址的信息被删除。
def print_packet(pktlen, data, timestamp):
if not data:
return
if data[12:14]=='\x08\x00':
decoded=decode_ip_packet(data[14:])
print '\n%s.%f %s > %s' % (time.strftime('%H:%M',
time.localtime(timestamp)),
timestamp % 60,
decoded['source_address'],
decoded['destination_address'])
for key in ['version', 'header_len', 'tos', 'total_len', 'id',
'flags', 'fragment_offset', 'ttl']:
print ' %s: %d' % (key, decoded[key])
print ' protocol: %s' % protocols[decoded['protocol']]
print ' header checksum: %d' % decoded['checksum']
print ' data:'
dumphex(decoded['data'])
数据中的前14个八位字节是目标,源mac-addr和以太类型。
decoded=decode_ip_packet(data[14:])
我需要解析它们以获取此信息。任务完成了。
答案 0 :(得分:3)
Google“以太网帧格式”。数据包的前6个八位字节是目标MAC地址,紧接着是6个八位字节的源MAC地址。
这Wikipedia page可能会有所帮助。
答案 1 :(得分:2)
天啊,天哪,你为什么要这样做?请改用Scapy。