Scapy:AttributeError:'NoneType'对象没有属性'getlayer'

时间:2018-06-29 16:28:29

标签: python python-3.x scapy

因此,我写了一个很棒的portcanner。它输出了我想要的一切。但是在某个时候,我已经将其破坏了,我无法确定我是如何破坏它的。

我得到的错误是:

line 12, in portscan
    if(tcp_connect.getlayer(TCP).flags == SYNACK):
AttributeError: 'NoneType' object has no attribute 'getlayer'
[Finished in 4.4s with exit code 1]

这是脚本:

#!/usr/bin/env python3
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *

def portscan(host,dst_port):
    src_port = RandShort()
    SYNACK = 0x12
    RSTACK = 0x14
    tcp_connect = sr1(IP(dst=host)/TCP(sport=src_port,dport=dst_port,flags="S"),verbose=0,timeout=2)

    if(tcp_connect.getlayer(TCP).flags == SYNACK):
        send_rst = sr(IP(dst=host)/TCP(sport=src_port,dport=dst_port,flags="AR"),verbose=0,timeout=2)
        print (dst_port,"is open")

    elif (tcp_connect.getlayer(TCP).flags == RSTACK):
        print (dst_port,"is closed")

if __name__ == '__main__':
    host = '192.168.0.40'
    port = 80
    portscan(host,port)

我不确定为了使它破解而更改了什么。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

致癌物质指出:

  

如果没有响应,则在达到超时时将分配None值。没有返回表示没有响应。您需要检查一下。 。

解决方案:

if tcp_connect == None: 
     (Handle Failure)
else: 
     (Handle success)