dirkjanm / mitm6

pwning IPv4 via IPv6

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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!

Pushed a fix in c600963

--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