def await_responce(self, iface):
global rev
r = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
pkt = r.recvfrom(2048)
eth = pkt[0][0:14]
eth_d = struct.unpack("!6s6s2s", eth)
res = binascii.hexlify(eth_d[0])
dst_mac = self.format_mac(res.decode('utf-8'))
local_mac = open('/sys/class/net/{}/address'.format(iface)).read().strip('\n')
if dst_mac == local_mac:
stop_time = datetime.datetime.now()
arp_h = pkt[0][14:42]
arp_d = struct.unpack("2s2s1s1s2s6s4s6s4s", arp_h)
timee = stop_time - start_time
rev += 1
return self.format_mac(binascii.hexlify(arp_d[5]).decode('utf-8')), arp_d[6], timee.total_seconds() * 1000
评论列表
文章目录