【问题标题】:Python and libpcap. find source mac address of packetPython 和 libpcap。查找数据包的源mac地址
【发布时间】:2010-06-10 12:17:36
【问题描述】:

我正在编写python程序来使用pcap构建mac地址缓存。但是 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 和 ether 类型。

    decoded=decode_ip_packet(data[14:])

我需要解析它们以获取此信息。任务完成。

【问题讨论】:

    标签: python pcap mac-address libpcap


    【解决方案1】:

    谷歌“以太网帧格式”。数据包的前 6 个八位字节是目标 MAC 地址,紧随其后的是源 MAC 地址的 6 个八位字节。

    这个Wikipedia page 可能会有所帮助。

    【讨论】:

      【解决方案2】:

      天哪,你为什么要这样做?请改用Scapy

      【讨论】:

      • 如何使用 Scapy,我无法获得从 pcap 文件中获取 mac 地址的确切功能
      猜你喜欢
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 2012-03-16
      相关资源
      最近更新 更多