Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据包被重新封装_Python_Sockets_Networking_Packet - Fatal编程技术网

Python 数据包被重新封装

Python 数据包被重新封装,python,sockets,networking,packet,Python,Sockets,Networking,Packet,我有一个代码,应该是制作一个包并发送它,但当我发送它时它会重新封装它。在制作包或发送包的方式中是否有错误 此文件称为PCAS 导入结构 导入get_mac_a 从getmac导入获取作为gma的\u mac\u地址 投标人须知(ip): 十六进制列表=ip.split('.')) aabgsa=字节(0) 对于十六进制列表中的x: aabgsa+=字节([int(x)]) 返回aabgsa def UDP_IPv4(SRC_ip、Des_ip、SRC_端口、Des_端口、数据): 如果类型(数据

我有一个代码,应该是制作一个包并发送它,但当我发送它时它会重新封装它。在制作包或发送包的方式中是否有错误 此文件称为PCAS

导入结构
导入get_mac_a
从getmac导入获取作为gma的\u mac\u地址
投标人须知(ip):
十六进制列表=ip.split('.'))
aabgsa=字节(0)
对于十六进制列表中的x:
aabgsa+=字节([int(x)])
返回aabgsa
def UDP_IPv4(SRC_ip、Des_ip、SRC_端口、Des_端口、数据):
如果类型(数据)=字节:
尝试:
eth\u packet=get\u mac\u a.get\u mac\u addr('192.168.1.1'))
除:
eth\u packet=get\u mac\u a.get\u mac\u addr('10.0.0.1'))
aas=gma().split(“:”)
bssasd=b''
对于aas中的i:
bssasd+=struct.pack('B',int(i,16))
eth_数据包+=bssasd
eth_数据包+=b'\x08\x00'
ip_数据包=b'\x45'
ip_数据包+=b'\x00'
ip_数据包+=结构包('H',32*5+len(数据))
ip_数据包+=b'\x00\x00'
ip_数据包+=b'\x00\x00'
ip_数据包+=b'\x40'
ip_数据包+=b'\x11'
ip_数据包+=b'\x00\x00'
ip_数据包+=ITB(SRC_ip)
ip_数据包+=ITB(Des_ip)
udp_数据包=结构包('H',SRC_端口)
udp_数据包+=结构包('H',Des_端口)
udp_数据包+=结构包('H',64+len(数据))
udp_数据包+=b'\x00\x00'
udp_数据包+=数据
ip_数据包+=结构包('H',64+len(数据))
udp_IPv4_数据包=eth_数据包+ip_数据包+udp_数据包
返回udp_IPv4_数据包
其他:
退出('输入数据的二进制值')
文件get_mac_a是这样的

导入子流程
def获取mac地址(ip):
尝试:
ip_table=子进程。检查_输出(['arp','-a',ip])
路由器\u ip='Tipo\r\n'
路由器ip+=ip
路由器_ip+=“”
res=ip_table.split(字节(路由器ip,'utf-8'))[1]。split(字节(“dinamico\r\n','utf-8'))[0]。split(字节('-','utf-8'))
es=b''
对于我在res:
es+=字节([int(i,16)])
返回es
除:
退出('检查您的internet连接')
发送数据包的代码如下

导入套接字
导入线程
导入PCA
从时间上导入睡眠
raw\u sock=socket.socket(socket.AF\u INET,socket.sock\u raw,socket.IPPROTO\u raw)
尽管如此:
睡眠(1)
原始sock.sendto(PCAS.UDP_IPv4('192.168.1.84','192.168.1.11',55436666,b'\x03'),('192.168.1.11',6666))
接收它的代码是

导入套接字
导入结构
端口=6666
s=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_RAW)
s、 setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
s、 绑定('192.168.1.11',6666))
打印(“等待端口:”,端口)
而1:
数据,addr=s.recvfrom(65553)
打印(数据)
打印(“\n”)
但是它发送这个

E\x00\x00Am0\x00\x00\x80\xff\x00\x00\xc0\xa8\x01\x0b\xc0\xa8\x01\x0b \xb0\x01\xbfmx<\x95\t\x13d\x8d\x08\x00E\x00\xa1\x00\x00\x00\x00\x00@\x11\x00\x00\xc0\xa8\x01T\xc0\xa8\x01\x0bA\x00\xa7\x15\n\x1aA\x00\x00\x00\x03
E\x00\x00Am0\x00\x00\x80\xff\x00\x00\xc0\xa8\x01\x0b\xc0\xa8\x01\x0b\xb0\x01\xbfmx
 \xb0\x01\xbfmx<\x95\t\x13d\x8d\x08\x00E\x00\xa1\x00\x00\x00\x00\x00@\x11\x00\x00\xc0\xa8\x01T\xc0\xa8\x01\x0bA\x00\xa7\x15\n\x1aA\x00\x00\x00\x03