因此,我写了一个很棒的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)
我不确定为了使它破解而更改了什么。任何想法将不胜感激!
答案 0 :(得分:1)
致癌物质指出:
如果没有响应,则在达到超时时将分配None值。没有返回表示没有响应。您需要检查一下。 。
解决方案:
if tcp_connect == None:
(Handle Failure)
else:
(Handle success)