タップ デバイスを作成し、それにフレームを書き込むだけではどうですか? その後、他のtap
デバイスと同じようにデバイスをスニッフィングできます。Python でデバイスwireshark
を使用する例がここにあり、 Cでのより長いチュートリアル (実際にはデバイスについて) がここにあります。tap
tun
NB: 私はこれをテストしていませんが、アイデアは合理的なようです...
更新:これはうまくいくようです。上記の要点に基づいていますが、単純にファイルからフレーム データを読み取り、デバイスに書き込みます。
import sys
import fcntl
import os
import struct
import subprocess
TUNSETIFF = 0x400454ca
TUNSETOWNER = TUNSETIFF + 2
IFF_TUN = 0x0001
IFF_TAP = 0x0002
IFF_NO_PI = 0x1000
# Open TUN device file.
tun = open('/dev/net/tun', 'r+b')
# Tell it we want a TUN device named lars0.
ifr = struct.pack('16sH', 'lars0', IFF_TAP | IFF_NO_PI)
fcntl.ioctl(tun, TUNSETIFF, ifr)
# Optionally, we want it be accessed by the normal user.
fcntl.ioctl(tun, TUNSETOWNER, 1000)
# Bring it up and assign addresses.
subprocess.check_call(['ifconfig', 'lars0', 'up'])
print 'waiting'
sys.stdin.readline()
# Read an IP packet been sent to this TUN device.
packet = list(open('/tmp/packet.raw').read())
# Write the reply packet into TUN device.
os.write(tun.fileno(), ''.join(packet))
print 'waiting'
sys.stdin.readline()