Python と libpcap。パケットの送信元MACアドレスを見つける
-
26-09-2019 - |
質問
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-addr、および ether タイプです。
decoded=decode_ip_packet(data[14:])
この情報を取得するには、それらを解析する必要があります。タスクは完了しました。
解決
Google「イーサネットフレームフォーマット」。パケットの最初の 6 オクテットは宛先 MAC アドレスで、その直後に送信元 MAC アドレスの 6 オクテットが続きます。
これ ウィキペディアのページ 役立つかもしれない。
他のヒント
ああ、なんてことだ、なぜこんなことをしているのですか?使用 スカピー その代わり。
所属していません StackOverflow