2

私はpcapを使用してMACアドレスキャッシュを構築するPythonプログラムを書いています。しかし、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アドレス、およびイーサタイプです。

    decoded=decode_ip_packet(data[14:])

この情報を取得するには、それらを解析する必要があります。タスクが完了しました。

4

2 に答える 2

3

Google「イーサネット フレーム フォーマット」。パケットの最初の 6 オクテットは宛先 MAC アドレスで、その直後に送信元 MAC アドレスの 6 オクテットが続きます。

このウィキペディアのページが役立つ場合があります。

于 2010-06-10T13:21:19.387 に答える
2

なんてこった、どうしてこんなことをしているの?代わりにScapyを使用してください。

于 2010-06-10T15:58:30.417 に答える