我有一个包含二进制格式的原始IP数据包的文件。文件中的数据包含完整的IP标头,TCP \ UDP标头和数据。我想使用任何语言(最好是python)来读取这个文件并将数据转储到该行上。
在Linux中我知道你可以直接写入某些设备(echo“DATA”> / dev / device_handle)。使用python在/ dev / eth1上做一个开放实现相同的效果(即我可以回显“DATA”> / dev / eth1)
答案 0 :(得分:2)
没有;没有/dev/eth1
设备节点 - 网络设备与字符/块设备(如终端和硬盘驱动器)位于不同的命名空间中。您必须创建一个AF_PACKET
套接字来发送原始IP数据包。
答案 1 :(得分:2)
类似的东西:
#!/usr/bin/env python
import socket
s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)
s.bind(("ethX", 0))
blocksize = 100;
with open('filename.txt') as fh:
while True:
block = fh.read(blocksize)
if block == "": break #EOF
s.send(block)
应该工作,但是没有测试过。
ethX
需要更改为您的界面(例如eth1
,eth2
,wlan1
等。)blocksize
。一次100个字节应该没问题,你可以考虑上升,但我会保持低于1500字节的以太网PDU。while
循环,但send
仍然相同。while
循环是不够的。