繁体   English   中英

python scapy portscanner的问题

[英]Problems with python scapy portscanner

我对端口扫描程序进行了编程,以了解有关网络的更多信息
但是由于某种原因,它只返回对扫描的每个端口port n is closed

import sys 
from scapy.all import *

 target = str(sys.argv[1])
 beg = int(sys.argv[2])
 ran = int(sys.argv[3])
 ptable = []
 print "beginning port scan on target: " + target
 for x in range(beg,ran):
    pkt = IP(dst=target)/TCP(dport=x,flags="S")
    ans,uans = sr(pkt,timeout=0.5)
    if TCP in ans:      
            if ans[TCP].flags == "SA":
                ptable.append(1)

            else:
                ptable.append(0)


print "======================== port scan summary ==========================="
print " "

for i in range(beg,ran):

    if ptable[i-1] == 1:

        print "port " + str(i) + " is open"
    else:
        print "port " + str(i) + " is closed" 

这是因为ans[TCP].flags返回数字值(而不是字符串,而该字符串还有歧义):

>>> TCP(flags='SA').flags == 'SA'
False
>>> TCP(flags='SA').flags
18

if ans[TCP].flags == 18:应该使用if ans[TCP].flags == 18:而不是== "SA"if ans[TCP].flags & 18 == 18:更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM