Python TCP端口扫描程序

Python TCP端口扫描程序,python,python-2.7,port,port-scanning,Python,Python 2.7,Port,Port Scanning,我正在尝试用Python创建一个TCP端口扫描程序,它接受多个参数(-all(显示所有端口,目标端口的打开和关闭)、-open(仅显示目标端口上打开的端口)、-target(指定目标IP、子网或主机名)和-range(指定端口范围) 目前我只对程序中使用的选项进行了编码,我的代码如下: import optparse parser = optparse.OptionParser() parser.add_option('-all', dest='allPorts', help='display

我正在尝试用Python创建一个TCP端口扫描程序,它接受多个参数(-all(显示所有端口,目标端口的打开和关闭)、-open(仅显示目标端口上打开的端口)、-target(指定目标IP、子网或主机名)和-range(指定端口范围)

目前我只对程序中使用的选项进行了编码,我的代码如下:

import optparse

parser = optparse.OptionParser()
parser.add_option('-all', dest='allPorts', help='displays all ports regardless of status')
parser.add_option('-open', dest='openPorts', help='displays only open ports')
parser.add_option('-target', type='string', dest='targetIP', help='specify target IP address, subnet or hostname')
parser.add_option('-range', type='string', dest='portRange', help='specify port range')

(options, args) = parser.parse_args()
我不确定如何继续该计划,尤其是使用-all/-open选项,如果您有任何帮助,我将不胜感激。

尝试以下方法:

"{}{}{}".format(w1,w2,w3).replace("o","0")
通常情况下,您使用从多个不同的字符串构建新字符串:

''.join(data[:3])
要用
0
替换
o
,请使用:

请注意,您可以使用获得3个样本,无需对完整的
数据进行无序排列:

''.join(random.sample(data, 3)).replace('o', '0')
要排除包含
“e”
的单词,您只能在输入中保留不包含
“e”
的单词:

with open('randomwords.txt', 'r') as f:
    # a conditional list comprehension
    data = [word for word in f.read().split() if "e" not in word]

[...]

我修改了这里发布的一个答案,实际上我想编辑这个答案,但被作者删除了。
尝试以下操作:

res = ""
for x in data[:3]:
    res += x
    res.replace("o", "0")
print res


请尝试最后一种方法。

首先,您的分配似乎允许重复(例如,像“passw0rdpassw0rdpassw0rd”这样的密码),而您的方法则不允许重复。这也是低效的。您可以使用
随机选择。
三次


字符串串接是通过
+
运算符完成的,例如
串接=str1+str2+str3
,或
连接
函数。使用字符串类方法
替换
,例如
串接。替换('o',0'))

首先获取一个过滤子列表,其中包含条件
'e'不在word
中的所有单词
为true
。然后,您需要对此列表进行笛卡尔乘法。您将有
N^3
可能的字符串,其中
N
是过滤后的单词数。我认为最直观的方法是要实现的是使用3个嵌套for循环,这些循环都在过滤词上运行,然后将它们连接起来,并在尝试破解时执行“find replace”操作(蛮力)从您的文件中随机抽取三个单词的密码没有多大用处,您需要系统地尝试所有可能的组合。
randomwords.txt
文件是否包含故事?如果是这样,您应该首先创建一组候选单词(没有重复,没有包含
e
,替换
o
res = ""
for x in data[:3]:
    res += x
    res.replace("o", "0")
print res
res = ""
for x in data[:3]:
    res = res + x
print res.replace("o", "0")