Scapy: AttributeError: объект 'NoneType' не имеет атрибута 'getlayer' - PullRequest
0 голосов
/ 29 июня 2018

Итак, я написал сканер портов, который работал чудесно. Он вывел все, что хотел. Но в какой-то момент я сломал его и не могу определить, как сломал.

Я получаю ошибку:

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 голосов
/ 29 июня 2018

Карцигеникат указал:

Если ответа нет, вместо истечения времени ожидания будет назначено значение None. Отсутствие возврата означает отсутствие ответа. Вам нужно будет проверить это. , .

Решение:

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