gpt4 book ai didi

linux - 十六进制到 TCP 端口 - BASH

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:25 28 4
gpt4 key购买 nike

所以我一直在努力将十六进制发送到 tcp 端口。现在,我的下一个任务是执行以下操作,但这是一种不同的十六进制方式?

我想我需要一些帮助,因为任何地方的文档都非常糟糕。

到目前为止,我被告知的十六进制(命令)是这样的

 01 53 20 00 41 04 4F

所以通常情况下,我会在 linux 中执行以下操作

exec 3<>/dev/tcp/IP OF SERVER/PORT TO SERVER

然后

echo -ne '01 53 20 00 41 04 4F' >&3

然后

echo <&3

但我没有收到任何回复,只是一片空白。

对不起,我忘了说,

我习惯做的是

echo -ne 54686973776f726b7366696e65 | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3

然后 echo <&3生病得到答复。

所以我的问题是,01 53 20 等之间有什么区别......

我有点懵。

最佳答案

当你说

echo -ne 54686973776f726b7366696e65 | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3

您正在通过 Perl 传输十六进制代码,Perl 会将它们分解并为您将它们翻译成 8 位字符代码。

另一方面,Bash 处理文本的能力不如 Perl(这就是您首先需要 Perl 的原因)。充其量,因为您没有进行任何翻译,另一方将看到文字文本 01 53 20 00 41 04 4F

为了完全在 Bash 中执行此操作,您必须执行以下操作

echo -ne '\x01\x53\x20\x00\x41\x04\x4f' >&3

\x## 代码基本上等同于 Perl 对每对数字所做的操作...并且 -e 启用该转换。

作为引用,这对我来说效果很好:

exec 3<>/dev/tcp/127.0.0.1/80
# 'GET /\r\n'
echo '\x47\x45\x54\x20\x2f\x0d\x0a' >&3
# Note: `echo <&3` didn't work here, in my tests.
cat <&3

关于linux - 十六进制到 TCP 端口 - BASH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20754725/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com