我正在尝试编写一个包嗅探器,用于检测连接到我的wifi的设备访问的不同网站。问题是我只获得了私人IP,以下是我从1小时的嗅探中获得的IP数:
IPS Number_Of_Values
224.0.0.251 1068
192.168.1.255 387
255.255.255.255 32
224.0.0.22 28
224.0.0.1 28
192.168.1.111 6
192.168.1.115 5
224.0.1.187 2
这是嗅探器的一部分,以太网\u帧获取mac地址和协议,ipv4\u数据包解压IP头并获取IP(源和目标),最后,获取数据包继续进行不同的解压:
def ethernet_frame(data):
dest_mac, src_mac, proto = struct.unpack('! 6s 6s H', data[:14])
return get_mac_addr(dest_mac), get_mac_addr(src_mac), socket.htons(proto), data[14:]
def ipv4_packet(data):
version_header_length = data[0]
version = version_header_length >> 4
header_length = (version_header_length & 15) * 4
ttl, proto, src, target = struct.unpack('! 8x B B 2x 4s 4s', data[:20])
return version, header_length, ttl, proto, ipv4(src), ipv4(target), data[header_length:]
def get__packets():
conn = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(3))
while True:
raw_data, addr = conn.recvfrom(65536)
dest_mac, src_mac, eth_proto, data = ethernet_frame(raw_data)
# 8 for ipv4
if eth_proto == 8:
(version, header_length, ttl, proto, src_ip, target_ip, data) = ipv4_packet(data)
为什么我只得到私人IP?如何获取网站IP?如果不可能,如何从TCP数据包中获取http头以获取url
(我正在我的raspberry pi 4-Linux上进行编码)
目前没有回答
相关问题 更多 >
编程相关推荐