python raw socket示例

发送端

复制代码
#!/usr/bin/python3

import socket
import struct
import binascii

raw_socket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x9213))
raw_socket.bind(("ens38", 0))

header = struct.pack("!6s6sH", b"\xff\xff\xff\xff\xff\xff", b"\xaa\xaa\xaa\xaa\xaa\xaa", 0x9213)

data = b'hello,world'

data1 = header + data
print(data1)
raw_socket.send(data1)

raw_socket.close()
复制代码

接收端

复制代码
#!/usr/bin/python3

import socket
import struct
import binascii

raw_socket = socket.socket(socket.PF_PACKET,socket.SOCK_RAW,socket.htons(0x9213))

frame = raw_socket.recv(1024)
eth_header = struct.unpack("!6s6sH", frame[:14])
data = (binascii.unhexlify(frame.hex()[28:])).decode()

dst_mac = eth_header[0].hex()
src_mac = eth_header[1].hex()
eth_type = hex(eth_header[2])

print(frame)
print(dst_mac)
print(src_mac)
print(eth_type)
print(data)

raw_socket.close()
复制代码

 

posted @   roverqqq  阅读(352)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示