如何使用源mac地址和目标mac地址嗅探以太网

2024-06-26 13:44:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试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索引号

钢丝鲨 Wireshark and script output

输出(只需移动到excel即可轻松阅读) Wireshark and script output


Tags: importipdatamacsyssocket数据包dest