python - python scapy portscanner 的问题

标签 python scapy

我编写了一个端口扫描器来了解有关网络的更多信息
但由于某种原因,它只为扫描的每个端口返回端口 n 已关闭

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: 而不是 == "SA",或者更好的是,if ans[TCP ].flags & 18 == 18:.

关于python - python scapy portscanner 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357217/

相关文章:

Python:通过字符串中的名称访问结构字段

python - 通过 SCAPY 使用特定私钥解密 SSL/TLS

python - 在 Python 中定义函数时,如何将标题作为参数调用?

python - 如何使用SIFT从数据集中提取相同大小的特征向量?

python - 合并 pandas 中的 2 个数据框

python - 如何提高 scapy 读取大文件的性能

python - 使用 RadioTap 时在 Scapy 3.0 中出现错误,该错误在 Scapy 2.4 中工作正常

python - 威尔斯·怀尔德 (Welles Wilder) 对 Pandas 的移动平均线

python - 从失败的步骤暂停和恢复 Python 脚本

python - 如何使用 scapy python 读取数据包 TLS 元数据