0

我对 unicode 字符串几乎没有经验。我什至不确定这是否符合标准。

在任何情况下,我都在使用 nmap 并运行:

# nmap -sV -O 192.168.0.8 

对着我局域网中的一个盒子。Nmap 在从开放端口返回的几行中生成了一个字符串,但由于其格式,我无法理解很多输出。例如,一个小片段如下所示:

-Port8081-TCP:V=6.00%I=7%D=10/20%Time=52642C3A%P=i686-pc-linux-gnu%r(FourOhFourRequest,37,"HTTP/1\.1\x20503\x20Service\x20Unavailable\r\nContent-Length:\x200\r\n\r\n")%r

我的第一个想法是需要解码的 URL 编码,但这是不正确的。它看起来几乎像串行通信的填充?任何能够解释如何解释“\x200”或“\x20503”或其他经常出现的人都是“x\20”。

我考虑编写一个小的 Python 脚本来接收整个字符串并转换为 ASCII:

>>> s = '<STRING>'
>>> eval('\x20"'+s.replace('"', r'"')+'"').encode('ascii')

我在正确的轨道上吗?

4

2 回答 2

1

您看到的字符串是服务指纹。它包含收到的对 Nmap 发送的各种探测的响应。如果您认为响应中有识别信息,请将指纹提交给 Nmap 项目以改进未来的检测。

发生的事情很可能是该服务没有发送任何有用的信息。例如,您提供的示例没有Server:标识 HTTP 服务器的标头。

要回答如何转动这个字符串的技术问题:

"HTTP/1\.1\x20503\x20Service\x20Unavailable\r\nContent-Length:\x200\r\n\r\n"

进入非转义版本,您可以这样做:

>>> print mystring
"HTTP/1\.1\x20503\x20Service\x20Unavailable\r\nContent-Length:\x200\r\n\r\n"
>>> print mystring.decode('string-escape')
"HTTP/1\.1 503 Service Unavailable
Content-Length: 0

"
于 2013-10-21T14:58:32.473 回答
0

由于前面的“x”,这些数字让人想起十六进制值。我知道十六进制值实际上以 '0x' 而不仅仅是 x 开头,但我认为值得将它们作为十六进制值进行谷歌搜索,并在前面加上 '0x'。我确实得到了一整页的搜索结果,其中似乎包含这三个值(也许不可避免地会在某个地方出现三个随机值,但话又说回来,也许不是):

0x200, 0x20503, 0x20

抱歉,这不是一个答案,但我想我会提到它,因为你没有在你的帖子中提到尝试这个。我想将此作为评论发布,但由于某种原因该选项不可用...

于 2013-10-20T21:44:02.613 回答