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 @ 2022-01-24 17:52  roverqqq  阅读(391)  评论(0)    收藏  举报