通过 bash 和 Telnet 发送不可打印的 ASCII 码(如 0x80)
Sending non-printable ASCII codes (like 0x80) through bash and Telnet
我正在尝试通过 telnet 将不可打印的 ASCII 字符(代码 128 - 255)发送到使用套接字对象读取数据的 Ruby 应用程序。
当我尝试通过 telnet 发送 \x80
时,我希望 Ruby 收到 3 个字节的字符串:128 13 10
.
我实际上收到了一个 6 字节的字符串:92 120 56 48 13 10
。
我是否需要更改有关 telnet 发送信息的方式或 Ruby 套接字如何接受信息的方式?我已经通读了所有我能理解的 telnet 术语。非常感谢指出正确方向的观点。
92 120 56 48 13 10
十进制 ASCII:
\ x 8 0 \r \n
所以你做错了,不是 Telnet。转义序列 \x80
按字面意思处理,而不是被理解为 code=128.
的单个字符
我猜你用的是 '\x80'
而不是 "\x80"
。注意不同的引号。如果那是单个字符,您可以在 Ruby 中也使用 ?
字符来表示一个字符:?\x80
例如:
"\x80\r\n" == ?\x80 + ?\r + ?\n
=> true
当然
'\x80\r\n' == "\x80\r\n"
=> false
--
从评论中总结长篇故事:
- 原来要发送的数据是通过telnet终端手动输入的
- telnet 终端通常不接受任何转义码,并且 "just send" 他们直接获得的所有内容,有时复制和粘贴带有特殊字符的文本有效,有时终端提供一些额外的 UI 好东西来发送特殊字符- 但这次终端非常基础,粘贴它不起作用,也没有 UI 好东西
- 与手动输入数据相比,通过管道将文件发送到 telnet 终端似乎效果更好。收到了一些数据,但不是很好
- 将数据通过管道传输到
nc
(netcat) 而不是 telnet 终端似乎几乎可以工作,二进制数据已到达,但还不完美
- 在使用 hexdump utility 检查输入文件(通过管道传输到 nc 的文件)后,发现该文件包含的内容与我们所想的不完全一样,似乎用于创建保存文件的编辑器编码错误的文本,并且添加了一些额外不需要的字节
- 最后,utility called xxd 帮助从定制的十六进制文本中生成了良好的二进制数据;
xxd
的输出可以直接传送到 nc
(netcat)
我正在尝试通过 telnet 将不可打印的 ASCII 字符(代码 128 - 255)发送到使用套接字对象读取数据的 Ruby 应用程序。
当我尝试通过 telnet 发送 \x80
时,我希望 Ruby 收到 3 个字节的字符串:128 13 10
.
我实际上收到了一个 6 字节的字符串:92 120 56 48 13 10
。
我是否需要更改有关 telnet 发送信息的方式或 Ruby 套接字如何接受信息的方式?我已经通读了所有我能理解的 telnet 术语。非常感谢指出正确方向的观点。
92 120 56 48 13 10
十进制 ASCII:
\ x 8 0 \r \n
所以你做错了,不是 Telnet。转义序列 \x80
按字面意思处理,而不是被理解为 code=128.
我猜你用的是 '\x80'
而不是 "\x80"
。注意不同的引号。如果那是单个字符,您可以在 Ruby 中也使用 ?
字符来表示一个字符:?\x80
例如:
"\x80\r\n" == ?\x80 + ?\r + ?\n
=> true
当然
'\x80\r\n' == "\x80\r\n"
=> false
--
从评论中总结长篇故事:
- 原来要发送的数据是通过telnet终端手动输入的
- telnet 终端通常不接受任何转义码,并且 "just send" 他们直接获得的所有内容,有时复制和粘贴带有特殊字符的文本有效,有时终端提供一些额外的 UI 好东西来发送特殊字符- 但这次终端非常基础,粘贴它不起作用,也没有 UI 好东西
- 与手动输入数据相比,通过管道将文件发送到 telnet 终端似乎效果更好。收到了一些数据,但不是很好
- 将数据通过管道传输到
nc
(netcat) 而不是 telnet 终端似乎几乎可以工作,二进制数据已到达,但还不完美 - 在使用 hexdump utility 检查输入文件(通过管道传输到 nc 的文件)后,发现该文件包含的内容与我们所想的不完全一样,似乎用于创建保存文件的编辑器编码错误的文本,并且添加了一些额外不需要的字节
- 最后,utility called xxd 帮助从定制的十六进制文本中生成了良好的二进制数据;
xxd
的输出可以直接传送到nc
(netcat)