首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hexdump不显示国际字符

Hexdump不显示国际字符
EN

Stack Overflow用户
提问于 2022-11-07 21:43:44
回答 1查看 22关注 0票数 0

我正在尝试解码网络数据,我已经将password设置为pas$w0rd@1ħ213₹

我希望在十六进制输出中看到这个完整的密码字符串,但它似乎仅限于ASCII字符范围。

下面是一个使用Linux的十六进制输出的示例:

代码语言:javascript
复制
hexdump hexd.hex -C -L                          
00000000  18 03 02 40 00 02 ff ff  70 6f 74 61 74 6f 45 43  |...@....potatoEC|
00000010  4f 44 45 43 4f 44 45 43  4f 44 45 43 4f 44 45 43  |ODECODECODECODEC|
00000020  4f 44 45 43 4f 44 45 43  4f 44 45 00 00 02 00 2f  |ODECODECODE..../|
00000030  01 00 00 05 00 0f 00 01  01 0a 55 73 65 72 2d 41  |..........User-A|
00000040  67 65 6e 74 3a 20 63 75  72 6c 2f 37 2e 38 36 2e  |gent: curl/7.86.|
00000050  30 0d 0a 41 63 63 65 70  74 3a 20 2a 2f 2a 0d 0a  |0..Accept: */*..|
00000060  43 6f 6e 74 65 6e 74 2d  4c 65 6e 67 74 68 3a 20  |Content-Length: |
00000070  34 35 0d 0a 43 6f 6e 74  65 6e 74 2d 54 79 70 65  |45..Content-Type|
00000080  3a 20 61 70 70 6c 69 63  61 74 69 6f 6e 2f 78 2d  |: application/x-|
00000090  77 77 77 2d 66 6f 72 6d  2d 75 72 6c 65 6e 63 6f  |www-form-urlenco|
000000a0  64 65 64 0d 0a 0d 0a 75  73 65 72 6e 61 6d 65 3d  |ded....username=|
000000b0  75 73 65 72 6e 61 6d 65  26 70 61 73 73 77 6f 72  |username&passwor|
000000c0  64 3d 70 61 73 24 77 30  72 64 40 31 c4 a7 32 31  |d=pas$w0rd@1..21|
000000d0  33 e2 82 b9 fc f3 ca d2  0a 49 8b 0a b3 47 04 f8  |3........I...G..|

python3 3的十六进制库也是如此:

代码语言:javascript
复制
000000A0: 64 65 64 0D 0A 0D 0A 75  73 65 72 6E 61 6D 65 3D  ded....username=
000000B0: 75 73 65 72 6E 61 6D 65  26 70 61 73 73 77 6F 72  username&passwor
000000C0: 64 3D 70 61 73 24 77 30  72 64 40 31 C4 A7 32 31  d=pas$w0rd@1..21
000000D0: 33 E2 82 B9 FC F3 CA D2  0A 49 8B 0A B3 47 04 F8  3........I...G..

但是,我的终端当然可以解码这些字符。下面是打印所有可打印字符的sed的输出:

代码语言:javascript
复制
❯ sed 's/[^[:print:]]//g' hexd.hex       
@��potatoECODECODECODECODECODECODECODE/
User-Agent: curl/7.86.0
Accept: */*
Content-Length: 45
Content-Type: application/x-www-form-urlencoded

username=username&password=pas$w0rd@1ħ213₹����
I�

我的地区设置为en_US.UTF-8

如何使用十六进制或在终端上打印十六进制和相应Unicode字符的任何替代方法?我想在终点站或巨蟒上找一条路。

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 22:04:21

正如一些人在注释中已经指出的那样,这并不能真正发挥作用,因为十六进制只会给出字节。对于ASCII字符,这不是一个问题,因为它们只有一个字节大,但是所有非ASCII字符都大于一个字节,因此在使用十六进制显示时会被拆分。

您也可以在您的六号转储中看到这种情况: hbar应该在十六进制中有两个点,而不仅仅是一个点。

然而,取决于您到底想做什么,我可能会为您提供一个解决方案。在Visual代码的十六进制中,您可以标记多个字节,数据检查器将以不同的编码方式向您显示字符:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74353256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档