我通过与各种设备的串行通信工作很多,因此我经常需要分析日志文件中的十六进制转储.目前,我通过查看转储,查看协议规范以及写下结果来手动执行此操作.但是,这很乏味且容易出错,尤其是whem消息包含数百个字节,并包含big-endian和little-endian数据,ASCII,Unicode,压缩,CRC等的混合....
我编写了一些Python脚本来帮助处理更常见的情况.但是有很多协议要处理,除非我知道我要分析很多转储,否则花时间编写自定义脚本是没有意义的.
我想要的是某种可以自动执行此活动的实用程序.所以,例如,如果我有这样的文本十六进制转储:
7e ff 00 7b 00 13 86 04
00 41 42 43 44 56 ef 7e
Run Code Online (Sandbox Code Playgroud)
以及对消息格式的某种描述,如下所示:
# Field Size Byte Order Output Format
Flag 1 hex
Address 1 hex
Control 1 hex
DataType 1 decimal
LineIndex 1 decimal
PollAddress 2 msb hex
DataSize 2 lsb decimal
Data (DataSize) ascii
CRC 2 lsb hex
Flag 1 hex
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
Flag 0x7e
Address 0xff
Control 0x00
DataType 123
LineIndex 0
PollAddress 0x1386
DataSize 4
Data "ABCD"
CRC 0xef56
Flag …Run Code Online (Sandbox Code Playgroud) 我在文件中有一个消息的十六进制转储,我希望在数组中获取它,以便我可以在其上执行解码逻辑.
我想知道这是否是一种解析看起来像这样的消息的简单方法.
37 39 30 35 32 34 35 34 3B 32 31 36 39 33 34 35
3B 32 31 36 39 33 34 36 00 00 01 08 40 00 00 15
6C 71 34 34 73 69 6D 31 5F 33 30 33 31 00 00 00
00 00 01 28 40 00 00 15 74 65 6C 63 6F 72 64 69
74 65 6C 63 6F 72 64 69
请注意,任何行上的数据最多可为16个字节.但是任何行都可以包含更少的字节(最小值:1)
是否有一种漂亮而优雅的方式,而不是在perl中一次读取2个字符?
thegladiator:~/cp$ cat new.txt
Hello World This is a Trest Progyy
thegladiator:~/cp$ hexdump new.txt
0000000 6548 6c6c 206f 6f57 6c72 2064 6854 7369
0000010 6920 2073 2061 7254 7365 2074 7250 676f
0000020 7979 000a
0000023
Run Code Online (Sandbox Code Playgroud)
那个文本数据如何用Hex表示?这是什么意思 ?请任何人都可以告诉我.
我正在调试通过 TCP 传输数据的程序的输出。出于调试目的,我用netcat和替换了接收程序hexdump:
netcat -l -p 1234 | hexdump -C
Run Code Online (Sandbox Code Playgroud)
将所有数据输出为一个不错的十六进制转储,几乎就像我想要的那样。现在,数据以长度不是 16 倍数的固定块传输,导致输出中的行移位,这使得发现差异有点困难:
00000000 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |P...............|
00000010 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.P..............|
00000020 00 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 |..P.............|
Run Code Online (Sandbox Code Playgroud)
如何重新格式化输出,以便在 17 个字节后开始新行?它应该是这样的:
50 00 00 00 00 00 …Run Code Online (Sandbox Code Playgroud) 在GDB中,下面显示的等效lldb命令是什么?
(gdb)set {char} 0x02ae4 = 0x12
这些值是任意的例子.使用GDB,我可以轻松编辑给定十六进制地址的字节代码,同时查看终端中的转储.自从我升级为小牛队以来,我一直试图用lldb来捣乱,但我在一些领域遇到了困难.也许它甚至没有这个功能..
centos 6.5-运行hexdump
$ hexdump -C filecsv
00000000 44 4f 53 2c 20 50 61 74 69 65 6e 74 2c 20 41 63 |DOS, Patient, Ac|
00000010 63 74 20 23 2c 20 4d 52 20 23 2c 20 54 69 6d 65 |ct #, MR #, Time|
Run Code Online (Sandbox Code Playgroud)
喜欢这种格式,但希望将十六进制转换为十进制我已经花了很多时间但是找不到它?
我有一个文件music.mp3.使用后binwalk,我得到了结果:
pexea12@DESMICE:~/Downloads$ binwalk music.mp3
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
152318 0x252FE MySQL ISAM compressed data file Version 2
586865 0x8F471 MySQL ISAM compressed data file Version 5
5669358 0x5681EE MySQL ISAM index file Version 1
5831936 0x58FD00 TIFF image data, little-endian offset of first image directory: 8
5832467 0x58FF13 Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#">
5832624 0x58FFB0 Unix path: /purl.org/dc/elements/1.1/"
5832748 0x59002C Unix path: /ns.adobe.com/xap/1.0/mm/"
5832806 0x590066 Unix path: /ns.adobe.com/xap/1.0/sType/ResourceEvent#">
Run Code Online (Sandbox Code Playgroud)
我意识到我的其他文件类型music.mp3如MySQL,TIFF图像.现在我想提取所有这些文件以查看它们的真实内容.
我尝试该命令,binwalk -e music.mp3但它只适用于压缩文件,如.zip.我怎样才能获得所有这些文件?
我有两个img文件.原点(2GB)和目标(4GB),它们是某种编码的结果,我正在尝试识别和恢复.因此,为了成功恢复编码,我必须看看我是否能够再次从Destionation文件获取Origin我已经构建了一个表,表明Origin有256种字节,Destination有256种字节对.以下是使用occurrency在Hex of Origin中转换的字节列表.
FF=24575615
FE=3242667
FD=3009202
FC=3063146
FB=3003652
FA=3025947
F9=3005543
F8=7684326
F7=4554041
F6=2933185
F5=3373967
F4=5597006
F3=2906784
F2=3789554
9F=3102630
9E=3005388
F1=3557574
F0=4365911
9D=3078506
9C=2840242
9B=2763692
9A=2804976
EF=2941117
EE=3025616
99=2877085
ED=2902961
98=3028895
EC=2817617
97=2752245
EB=3333926
96=2789702
EA=2850121
95=2989513
94=3031653
93=2911830
92=2658657
91=2728002
90=3419534
E9=2887403
E8=3208952
E7=3285198
E6=2644790
E5=4609467
E4=2650016
E3=4372245
8F=2991145
E2=3368100
E1=5113630
8E=2575537
E0=9155599
8D=3578967
8C=3038052
8B=2921954
8A=2675041
DF=2917213
DE=2560516
89=2736502
DD=2625394
88=3270888
DC=2599744
87=3366265
DB=2698959
86=2899131
DA=2673989
85=3330569
84=3367665
83=3421457
82=3444192
81=3864339
80=6354686
D9=2792340
D8=3572281
D7=2917209
D6=2502705
D5=2726792
D4=2599407
D3=2526731 …Run Code Online (Sandbox Code Playgroud) hexdump命令将任何文件转换为十六进制值.但是,如果我有十六进制值并且我想要反转过程怎么办?这可能吗?
经过几天的努力,我想向社区询问:)
我有两个exe文件。两者大小相同且相当大(约 80MB)。
我设法使用 Cutter (Radare2 GUI) 反编译这些文件,但考虑到文件大小,几乎不可能遍历每一种方法。
使用十六进制编辑器(Hex Fiend),我设法获得应用补丁的每个偏移位置。现在我试图用 Cutter 找到这些偏移量来反编译这些位置。
问题是:如何?当我在 Cutter 中打开 Hexdump 时,似乎一切都未就位,我可能需要偏移。在 Cutter 的加载屏幕上设置偏移量似乎没有做任何事情。难道是我用错了?
例子:
妖魔
Offset Hex Data Text
474942-474956 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 GetModuleHandleA
Run Code Online (Sandbox Code Playgroud)
刀具
Offset Hex Data Text
0x0060713E-0x0060714D 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 GetModuleHandleA
Run Code Online (Sandbox Code Playgroud)
474942是0x73F3E,但是距离0x0060713E很远
也许我需要其他工具?任何帮助表示赞赏!