为什么不能在python中将源ip地址设置为0.0.0.0?

2024-06-30 06:00:38 发布

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

我试图用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)) 

我将源ip地址设置为0.0.0.0,但当我在wireshark中嗅探生成的数据包时,我惊讶地发现源ip地址与我的真实ip地址相同。在

但当我使用scape时,一切都像expacted一样工作

^{pr2}$

那么,Scapy如何将源ip地址设置为0.0.0.0??有没有可能使用原始套接字来实现这一点??在


Tags: ipidsourcerawlenpacket地址socket