我正在尝试在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选项时,我们将非常感谢任何帮助。
答案 0 :(得分:3)
通常使用str.join
从几个不同的字符串构建一个新字符串:
''.join(data[:3])
并使用o
替换0
使用str.replace
:
''.join(data[:3]).replace('o', '0')
请注意,您可以使用random.sample(data, 3)
获得3个样本,您无需随机播放data
:
''.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]
[...]
答案 1 :(得分:2)
试试这个:
"{}{}{}".format(w1,w2,w3).replace("o","0")
答案 2 :(得分:1)
我修改了这里发布的一个答案,其实我想编辑那个答案但是被作者删除了 尝试以下操作:
res = ""
for x in data[:3]:
res += x
res.replace("o", "0")
print res
OR
res = ""
for x in data[:3]:
res = res + x
print res.replace("o", "0")
尝试上一个。
答案 3 :(得分:1)
首先,你的任命似乎允许重复(例如密码,如#34; passw0rdpassw0rdpassw0rd"),而你的方法不是。它效率也很低。您可以使用random.choice
三次。
字符串的连接是使用+
运算符完成的,例如concatenation = str1 + str2 + str3
或join
功能。使用字符串类方法replace
替换o为0,例如concatenation.replace('o', '0')
。