【发布时间】:2019-02-11 23:28:34
【问题描述】:
第一次发帖。几个月前我接触了python。我一直在阅读 Syngress 的《Violent Python》一书。
制作了一个 txt 文件,列出了几个版本的 vsFTPd,保存为 vuln_banners.txt。它只是一个 txt 文件中几行的列表。
我做错了什么?如果这是一个愚蠢的问题或非常初级/愚蠢的问题,我深表歉意。感谢任何形式的帮助。
运行代码后我得到了这个回溯错误:
Traceback (most recent call last):
File "ban_grab2.py", line 33, in <module>
main()
File "ban_grab2.py", line 29, in main
checkVulns(banner)
File "ban_grab2.py", line 18, in checkVulns
if line.strip('\n') in banner:
TypeError: a bytes-like object is required, not 'str'
下面是有问题的代码部分:
def checkVulns(banner):
f = open('vuln_banners.txt', 'r')
for line in f.readlines():
if line.strip('\n') in banner:
print('[+] Service is vulnerable: ' + banner.strip('\n'))
如果这有助于更好地了解情况,这是完整的脚本:
import socket
def retBanner(ip, port):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
socket.setdefaulttimeout(2)
banner = s.recv(1024)
return banner
except:
return
def checkVulns(banner):
f = open('vuln_banners.txt', 'r')
for line in f.readlines():
if line.strip('\n') in banner:
print('[+] Service is vulnerable: ', + banner.strip('\n')
def main():
portList = [21, 22, 25, 80, 110, 443]
for r in range(1, 255):
ip = '192.168.0.' + str(r)
for port in portList:
banner = retBanner(ip, port)
if banner:
checkVulns(banner)
print('[+] ' + ip + ': ' + str(banner))
main()
这个脚本没什么了不起,只是在我的虚拟网络中使用它来进行 POC。
【问题讨论】:
标签: python python-3.x security