Использование dpkt для извлечения информации из файла pcap, содержащего пакеты pcap. Когда я запускаю команды eth.dst и eth.sr c, они возвращаются в виде строк, которые объединяют ascii и hex в одну строку. Как мне остановить это, когда я пытаюсь превратить гекс в ма c адрес? В данный момент mac_addr возвращает ошибку, поскольку переданная строка не может быть преобразована.
def __init__(self,filename):
f = open(filename,"rb")
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = eth.data.data
print("\nNew Packet")
print('Timestamp: ', str(datetime.datetime.utcfromtimestamp(ts)))
print('Ethernet Frame: ',self.mac_addr(eth.dst),self.mac_addr(eth.src),eth.type)
if not isinstance(eth.data, dpkt.ip.IP):
print("This IP Packet Is Not Supported")
continue
def mac_addr(self,address):
print(address)
try:
s = '{0:016x}'.format(address)
s = ':'.join(re.findall(r'\w\w',s))
return s
except:
return "Error"