2010-06-10 61 views
2

我正在寫python程序來使用pcap建立mac-address緩存。但是python的pcap模塊沒有很好的文檔。我發現這個頁面http://pylibpcap.sourceforge.net/與代碼示例,它工作正常。Python和libpcap。找到數據包的源mac地址

任何人都可以修改此示例,使其能夠顯示每個數據包的源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:]) 

我需要解析它們才能獲取此信息。任務完成。

回答

3

Google「以太網幀格式」。數據包的前6個字節是目標MAC地址,緊接着是6個八位字節的源MAC地址。

This Wikipedia page may help。

+0

非常感謝!這很簡單,當你知道該怎麼做.. – Shamanu4 2010-06-10 14:16:57

2

天啊,你爲什麼這樣做?改爲使用Scapy

+0

是的,Scapy是偉大的 – bortzmeyer 2010-06-11 11:55:06

+0

我怎麼能用Scapy,我無法獲得從pcap文件中獲取mac地址的確切功能 – 2016-12-14 12:20:45