提问人:mana 提问时间:2/12/2019 最后编辑:mana 更新时间:11/18/2023 访问量:3569
关于“TypeError:需要类似字节的对象,而不是'str'”
Regarding "TypeError: a bytes-like object is required, not 'str'"
问:
第一篇文章在这里。几个月前我开始接触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。
答:
3赞
Slam
2/12/2019
#1
我相信,不知何故,您将对象作为参数传递给您的函数。bytes
banner
问题是 - 要么你应该有字符串并从中剥离字符串,要么剥离字节(但你以后会遇到连接问题)。banner.strip('\n')
banner.strip(b'\n')
混合字符串和原始字节通常是一个坏主意,直到你知道自己在做什么。我建议你跟踪你的函数被调用的位置和方式
评论
0赞
mana
2/12/2019
感谢您的输入。我会接受你说的话,并尝试解决这个问题并弄清楚。
0赞
mana
2/12/2019
我编辑了原始帖子,以显示正在发生的事情的全部内容。仍然收到与上面所示相同的错误。我不确定我做错了什么。我尝试添加“b”来剥离字节,但似乎不起作用。“你应该有绳子并剥离绳子”是什么意思?感谢您的任何帮助,不胜感激。banner.strip(b'\n')
0赞
Rossywan França
11/17/2023
#2
您正在使用,但您没有迭代,因此:in
if line.strip("\n") == banner:
评论
0赞
Rossywan França
11/17/2023
* 迭代,对不起,我正在提高我的英语水平
0赞
Chris
11/18/2023
如果你需要修复某些东西,你可以(也应该)编辑你的答案。
评论