我正在努力通过“暴力巨蟒”。我在第2章中,尝试运行以下代码时收到此语法错误:
python2 portscanner.py -H perl6.org -p 21, 22, 80
[21,][+]扫描结果:www.p6c.org扫描端口21,回溯
(最近一次呼叫最后一次):文件
“/home/wolf/python/viole python examples/chapter-2/portscan.py”,
第53行,英寸
main()文件“/home/wolf/python/暴力python示例/chapter-2/portscan.py”,
第49行,主
portscan(tgthost,tgtports)file“/home/wolf/python/viole python examples/chapter-2/portscan.py”,
行32,在端口扫描中
connscan(tgthost,int(tgtport))valueerror:以10为基的int()的无效文本:“21,”
我主要是直接从代码中复制它,但是我做了一些事情使它成为python3而不是python2,例如为
print()
功能。但是,我对python还不熟悉,我不明白这里的问题是什么。我想是因为
split()
方法?
import optparse
import socket
from socket import *
def connScan(tgtHost, tgtPort):
try:
connSkt = socket(AF_INET, SOCK_STREAM)
connSkt.connect((tgtHost, tgtPort))
connSkt.send('ViolentPython\r\n')
results = connSkt.recv(100)
print('[+]%d/tcp open' % tgtPort)
connSkt.close()
except:
print('[-]%d/tcp closed' % tgtPort)
def portScan(tgtHost, tgtPorts):
try:
tgtIP = gethostbyname(tgtHost)
except:
print("[-] Cannot resolve '%s': Unknown host" % tgtHost)
return
try:
tgtName = gethostbyaddr(tgtIP)
print('\n[+] Scan results for: ' + tgtName[0])
except:
print('\n[+] Scan results for: ' + tgtIP)
setdefaulttimeout(1)
for tgtPort in tgtPorts:
print('Scanning port ' + tgtPort)
connScan(tgtHost, int(tgtPort))
def main():
parser = optparse.OptionParser("usage%prog -H <target host> +\
-p <target port>")
parser.add_option('-H', dest='tgtHost', type='string',
help='specify target host')
parser.add_option('-p', dest='tgtPort', type='string',
help='specify target port')
(options, args) = parser.parse_args()
tgtHost = options.tgtHost
tgtPorts = str(options.tgtPort).split(', ')
print(tgtPorts)
if (tgtHost is None) | (tgtPorts[0] is None):
print('[-] You must specify a target host and port[s].')
exit(0)
portScan(tgtHost, tgtPorts)
if __name__ == '__main__':
main()