Scapy Error
x90skysn3k opened this issue · comments
getting this error after a fresh install on Kali 2019.1
Unsure if it's something with my install. Tried different versions of mitm6.
anyways below is the error:
Traceback (most recent call last):
File "/usr/local/bin/mitm6", line 11, in <module>
load_entry_point('mitm6==0.2.1', 'console_scripts', 'mitm6')()
File "build/bdist.linux-x86_64/egg/mitm6/mitm6.py", line 366, in main
reactor.run()
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1267, in run
self.mainLoop()
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1276, in mainLoop
self.runUntilCurrent()
--- <exception caught here> ---
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 875, in runUntilCurrent
f(*a, **kw)
File "build/bdist.linux-x86_64/egg/mitm6/mitm6.py", line 272, in parsepacket
if arpp.op is arpp.is_at:
File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 326, in __getattr__
return self.payload.__getattr__(attr)
File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 326, in __getattr__
return self.payload.__getattr__(attr)
File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 324, in __getattr__
fld, v = self.getfield_and_val(attr)
File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 1427, in getfield_and_val
raise AttributeError(attr)
exceptions.AttributeError: is_at
This is a known issue with the latest Scapy that I still need to fix. For now you can work around it by making sure you have v2.4.0 of Scapy: pip install scapy==2.4.0
ahhh thank you! works!
--coding:utf-8 --
from scapy.all import *
from scapy.layers.inet import TCP, IP, UDP
from scapy.utils import PcapReader
import scapy
import time, os, sys, csv
def pcap_to_csv():
global dFileName
pcapFolder = os.listdir(path_pcap)
pcapFolder.sort() #Prevent file reading out of order under linux; windows automatically read in order
for pcapFile in pcapFolder:
start = time.time() # ;pcapFile = "try.pcap"
try:
packets = rdpcap(path_pcap + pcapFile)
except Exception as e:
print("Read %s failure" % pcapFile)
continue
finally:
end = time.time()
print("read%sTotal cost of documents%.1fs" % (pcapFile, end - start))
dFileName = pcapFile.split(".")[0] + ".csv";
with open(path_csv + dFileName, "w") as wf:
# row = ["packetID","timestamp","length","srcIP","dstIP","ttl","protocol","sport","dport","qr","opcode","rcode","aa","tc","rd","ra","z","ad","cd","qdcount","ancount","nscount","arcount","qdlength","anlength","nslength","arlength","qtype","credibility"]
writer = csv.writer(wf)
# writer.writerow(row)
for index, packet in enumerate(packets):
row = list()
row.append(index + 1)
row.append(packet.time)
row.append(len(packet))
row.append(packet[IP].src)
row.append(packet[IP].dst)
row.append(packet[IP].ttl)
if TCP in packet:
row.append("tcp")
row.append(packet[TCP].sport)
row.append(packet[TCP].dport)
else:
row = list()
continue
else:
row.append("udp")
row.append(packet[UDP].sport)
row.append(packet[UDP].dport)
if TCP in packet:
row.append(packet[TCP].id)
row.append(packet[TCP].qr) # 0表示查询,1表示响应
row.append(packet[TCP].opcode) # 0表示标准查询,1表示反向查询,2表示服务器状态请求,5表示动态更新
row.append(packet[TCP].rcode) # 0表示没有差错,3表示名字错误,2表示服务器请求,1表示格式错误
row.append(packet[TCP].aa)
row.append(packet[TCP].tc)
row.append(packet[TCP].rd)
row.append(packet[TCP].ra)
row.append(packet[TCP].z)
row.append(packet[TCP].ad)
row.append(packet[TCP].cd)
row.append(packet[TCP].qdcount)
row.append(packet[TCP].ancount)
row.append(packet[TCP].nscount)
row.append(packet[TCP].arcount)
row.append(calLength(packet[TCP].qd))
row.append(calLength(packet[TCP].an))
row.append(calLength(packet[TCP].ns))
row.append(calLength(packet[TCP].ar))
if packet[TCP].qdcount > 0 and packet[TCP].opcode != 5:
# row.append(packet[TCP].qd.qname)
row.append(packet[TCP].qd.qtype)
else:
# row.append("")
row.append(0)
credibility = packet[TCP].ancount + packet[TCP].nscount + packet[TCP].arcount
row.append(credibility)
else:
for x in list(range(1, 10, 2)):
if x == 5:
continue
print(x)
try:
writer.writerow(row); # print "Successfully written% csv file" % index"
row = list()
except Exception as e:
print("Failed to csv.")
raise e
finally:
pass
print("%sWrite completion" % dFileName)
def calLength(param):
if param == None:
return 0
else:
return len(param)
def test_function():
packets = rdpcap(path_pcap + "try.pcap") #Read pcap package
p = packets[14]
print(p.show())
print(len(p))
# print p[TCP].qd.qname
print(p.time)
print(p[IP].ttl)
if p[TCP].ns ==None:
print(0)
else:
print(len(p[TCP].ns))
def main():
test_function()
##Determine if the folder exists, if not create one
if not os.path.exists(path_csv):
os.makedirs(path_csv);
print ("folder:" )
#pcap_to_csv()
path_pcap = sys.path[0] + "/pcap/" #Get the program execution path
path_csv = sys.path[0] + "/csv/" #Set the csv file path
if name == 'main':
print ("start...")
start = time.time()
main()
end = time.time()
print ("The program execution time is a total of %.1fs"%(end-start))
print ("end...")
"C:\Users\John Maruf\PycharmProjects\My Project 01\venv\Scripts\python.exe" E:/4/p2p.py
start...
###[ Ethernet ]###
Traceback (most recent call last):
dst = 00:5e:0a:8a:01:00
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 325, in getattr
src = 28:e3:47:11:8b:e5
fld, v = self.getfield_and_val(attr)
type = 0x800
###[ IP ]###
TypeError: cannot unpack non-iterable NoneType object
version = 4
ihl = 5
During handling of the above exception, another exception occurred:
tos = 0x0
len = 40
Traceback (most recent call last):
id = 33290
File "E:/4/p2p.py", line 133, in
flags = DF
main()
frag = 0
File "E:/4/p2p.py", line 118, in main
test_function()
ttl = 128
File "E:/4/p2p.py", line 111, in test_function
proto = tcp
if p[TCP].ns ==None:
chksum = 0x99c0
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 327, in getattr
src = 172.19.190.39
return self.payload.getattr(attr)
dst = 108.59.8.143
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 325, in getattr
\options
fld, v = self.getfield_and_val(attr)
###[ TCP ]###
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 1428, in getfield_and_val
sport = 51254
raise AttributeError(attr)
dport = 60000
AttributeError: ns
seq = 2544752264
ack = 571778720
dataofs = 5
reserved = 0
flags = A
window = 514
chksum = 0xe54a
urgptr = 0
options = []
None
54
1557497532.823497
128
Process finished with exit code 1
where is the problem,can anyone help please,thanks
here is my all code
from scapy.all import *
from scapy.layers.inet import TCP, IP, UDP
from scapy.utils import PcapReader
import scapy
import time, os, sys, csv
def pcap_to_csv():
global dFileName
pcapFolder = os.listdir(path_pcap)
pcapFolder.sort() # Prevent file reading out of order under linux; windows automatically read in order
for pcapFile in pcapFolder:
start = time.time() # ;pcapFile = "try.pcap"
try:
packets = rdpcap(path_pcap + pcapFile)
except Exception as e:
print("Read %s failure" % pcapFile)
continue
finally:
end = time.time()
print("read%sTotal cost of documents%.1fs" % (pcapFile, end - start))
dFileName = pcapFile.split(".")[0] + ".csv";
with open(path_csv + dFileName, "w") as wf:
# row = ["packetID","timestamp","length","srcIP","dstIP","ttl","protocol","sport","dport","qr","opcode","rcode","aa","tc","rd","ra","z","ad","cd","qdcount","ancount","nscount","arcount","qdlength","anlength","nslength","arlength","qtype","credibility"]
writer = csv.writer(wf)
# writer.writerow(row)
for index, packet in enumerate(packets):
row = list()
row.append(index + 1)
row.append(packet.time)
row.append(len(packet))
row.append(packet[IP].src)
row.append(packet[IP].dst)
row.append(packet[IP].ttl)
if TCP in packet:
row.append("tcp")
row.append(packet[TCP].sport)
row.append(packet[TCP].dport)
else:
row = list()
continue
else:
row.append("udp")
row.append(packet[UDP].sport)
row.append(packet[UDP].dport)
if TCP in packet:
row.append(packet[TCP].id)
row.append(packet[TCP].qr) # 0表示查询,1表示响应
row.append(packet[TCP].opcode) # 0表示标准查询,1表示反向查询,2表示服务器状态请求,5表示动态更新
row.append(packet[TCP].rcode) # 0表示没有差错,3表示名字错误,2表示服务器请求,1表示格式错误
row.append(packet[TCP].aa)
row.append(packet[TCP].tc)
row.append(packet[TCP].rd)
row.append(packet[TCP].ra)
row.append(packet[TCP].z)
row.append(packet[TCP].ad)
row.append(packet[TCP].cd)
row.append(packet[TCP].qdcount)
row.append(packet[TCP].ancount)
row.append(packet[TCP].nscount)
row.append(packet[TCP].arcount)
row.append(calLength(packet[TCP].qd))
row.append(calLength(packet[TCP].an))
row.append(calLength(packet[TCP].ns))
row.append(calLength(packet[TCP].ar))
if packet[TCP].qdcount > 0 and packet[TCP].opcode != 5:
# row.append(packet[TCP].qd.qname)
row.append(packet[TCP].qd.qtype)
else:
# row.append("")
row.append(0)
credibility = packet[TCP].ancount + packet[TCP].nscount + packet[TCP].arcount
row.append(credibility)
else:
for x in list(range(1, 10, 2)):
if x == 5:
continue
print(x)
try:
writer.writerow(row); # print "Successfully written% csv file" % index"
row = list()
except Exception as e:
print("Failed to csv.")
raise e
finally:
pass
print("%sWrite completion" % dFileName)
def calLength(param):
if param == None:
return 0
else:
return len(param)
def test_function():
packets = rdpcap(path_pcap + "try.pcap") # Read pcap package
p = packets[14]
print(p.show())
print(len(p))
# print p[TCP].qd.qname
print(p.time)
print(p[IP].ttl)
if p[TCP].ns == None:
print(0)
else:
print(len(p[TCP].ns))
def main():
test_function()
##Determine if the folder exists, if not create one
if not os.path.exists(path_csv):
os.makedirs(path_csv);
print("folder:")
# pcap_to_csv()
path_pcap = sys.path[0] + "/pcap/" # Get the program execution path
path_csv = sys.path[0] + "/csv/" # Set the csv file path
if name == 'main':
print("start...")
start = time.time()
main()
end = time.time()
print("The program execution time is a total of %.1fs" % (end - start))
print("end...")
this i got error
start...
###[ Ethernet ]###
Traceback (most recent call last):
dst = 00:5e:0a:8a:01:00
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 325, in getattr
src = 28:e3:47:11:8b:e5
fld, v = self.getfield_and_val(attr)
type = 0x800
TypeError: cannot unpack non-iterable NoneType object
###[ IP ]###
version = 4
During handling of the above exception, another exception occurred:
ihl = 5
tos = 0x0
Traceback (most recent call last):
File "E:/4/p2p.py", line 132, in
len = 40
main()
id = 33290
File "E:/4/p2p.py", line 118, in main
flags = DF
test_function()
frag = 0
File "E:/4/p2p.py", line 111, in test_function
ttl = 128
if p[TCP].ns == None:
proto = tcp
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 327, in getattr
chksum = 0x99c0
return self.payload.getattr(attr)
src = 172.19.190.39
dst = 108.59.8.143
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 325, in getattr
\options
fld, v = self.getfield_and_val(attr)
###[ TCP ]###
File "C:\Users\John Maruf\PycharmProjects\My Project 01\venv\lib\site-packages\scapy\packet.py", line 1428, in getfield_and_val
sport = 51254
raise AttributeError(attr)
dport = 60000
AttributeError: ns