Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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中,是否将源ip地址设置为0.0.0.0?_Python_Sockets_Scapy - Fatal编程技术网

为什么可以';在python中,是否将源ip地址设置为0.0.0.0?

为什么可以';在python中,是否将源ip地址设置为0.0.0.0?,python,sockets,scapy,Python,Sockets,Scapy,我正在尝试用python实现DHCP客户端。我使用了一个原始套接字 s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) def ip_packet(source_ip,dest_ip): ip_ihl = 5 ip_ver = 4 ip_tos = 0 ip_

我正在尝试用python实现DHCP客户端。我使用了一个原始套接字

s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
def ip_packet(source_ip,dest_ip): 
     ip_ihl = 5
     ip_ver = 4
     ip_tos = 0
     ip_tot_len = 0 
     ip_id = 54321   #Id of this packet
     ip_frag_off =0
     ip_ttl = 255
     ip_proto = socket.IPPROTO_UDP
     ip_check = 0    
     ip_saddr = socket.inet_aton ( source_ip )  
     print ip_saddr.encode('hex')
     ip_daddr = socket.inet_aton ( dest_ip )

     ip_ihl_ver = (ip_ver << 4) + ip_ihl


     ip_header = struct.pack('!BBHHHBBH4s4s' , ip_ihl_ver, ip_tos, ip_tot_len, ip_id, ip_frag_off, ip_ttl, ip_proto, ip_check, ip_saddr, ip_daddr)
     return  ip_header

s.sendto(packet,('255.255.255.255',67)) 

那么,Scapy如何将源ip地址设置为0.0.0.0??使用原始套接字是否可以做到这一点???

您没有提供可测试的代码。您知道0.0.0.0不是正确的吗?因此,dhcp客户端如何在ip源和目标设置为0.0.0.0的情况下发送数据包?首先要澄清0.0.0.0的ip地址,如@user3379214所述,dhcp发现数据包的源ip地址必须是0.0.0.0.0。这是正确的。至于实际问题本身,我想可能会对你有所帮助。
sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=hw)/DHCP(options=[("message-type","request")]),count=3)