我正在尝试snif以太网数据包,但我无法从原始数据包中获取mac地址,从IP头开始
我添加了wireshark输出和脚本输出的图片。出于这个原因,我不使用struct,但是dest_mac = data[:6]
操作也会给出相同的结果。(物理设备上的windows和作为NIC的virtualbox)
import socket
import sys
def receiveData(s):
data = ''
try:
data = s.recvfrom(65000)
except:
print('Data read error')
sys.exc_info()
return data[0]
s = socket.socket(socket.AF_INET, socket.SOCK_RAW)
s.bind(('192.168.56.1', 0))
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
data = receiveData(s)
dest_mac = data[:6]
j = 0
for i in data:
print(str(hex(j)) + ' ' + hex(i))
j += 1
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
虚拟接口没有流量,只是我发送了ping 192.168.56.2到192.168.56.1 可以是回音或回复这一个更接近。 但当我检查wireshark 0x49中的总长度时,当我检查代码输出0x3b 0x49-0x3b时,这个差异是我丢失的字节,因为我可以看到0x45,它是wireshark中的0x0e索引号
目前没有回答
相关问题 更多 >
编程相关推荐