Python TCP 端口扫描器
Python TCP port scanner
我正在尝试在 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")
通常您使用 str.join
从几个不同的字符串构建一个新字符串:
''.join(data[:3])
并用 0
替换 o
使用 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]
[...]
我已经修改了这里发布的一个答案,其实我想编辑那个答案但被作者删除了。
尝试以下操作:
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")
试试最后一个。
首先,您的作业似乎允许重复(例如像 "passw0rdpassw0rdpassw0rd" 这样的密码),而您的方法不允许。这也是低效的。您可以使用 random.choice
三次代替。
字符串的连接使用 +
运算符完成,例如concatenation = str1 + str2 + str3
或 join
函数。将 o 替换为 0 是通过字符串 class 方法 replace
完成的,例如concatenation.replace('o', '0')
.
我正在尝试在 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")
通常您使用 str.join
从几个不同的字符串构建一个新字符串:
''.join(data[:3])
并用 0
替换 o
使用 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]
[...]
我已经修改了这里发布的一个答案,其实我想编辑那个答案但被作者删除了。
尝试以下操作:
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")
试试最后一个。
首先,您的作业似乎允许重复(例如像 "passw0rdpassw0rdpassw0rd" 这样的密码),而您的方法不允许。这也是低效的。您可以使用 random.choice
三次代替。
字符串的连接使用 +
运算符完成,例如concatenation = str1 + str2 + str3
或 join
函数。将 o 替换为 0 是通过字符串 class 方法 replace
完成的,例如concatenation.replace('o', '0')
.