字符串的 ISO8859-1 序列化

逆向工程 二进制
2021-07-10 15:18:03

我目前正在研究一种奇怪的布局,用于存储似乎是字符串(医学格式)的内容。

在这里查看一堆字符串的转储是我所看到的:

$ hexdump -C out0000 
00000000  df ff 79 17 01 09 00 49  53 4f 38 38 35 39 2d 31  |..y....ISO8859-1|
00000010  02 08 00 30 30 30 30 30  30 30 30                 |...00000000|
0000001b
$ hexdump -C out0001
00000000  df ff 79 19 01 09 00 49  53 4f 38 38 35 39 2d 31  |..y....ISO8859-1|
00000010  02 0a 00 83 74 83 40 83  93 83 67 83 80           |....t.@...g..|
0000001d
$ hexdump -C out0009
00000000  df ff 79 21 01 09 00 49  53 4f 38 38 35 39 2d 31  |..y!...ISO8859-1|
00000010  02 12 00 91 71 95 7e 90  ac 90 6c 95 61 83 5a 83  |....q.~...l.a.Z.|
00000020  93 83 5e 81 5b                                    |..^.[|
00000025
$ hexdump -C out0002
00000000  df ff 79 16 01 09 00 49  53 4f 38 38 35 39 2d 31  |..y....ISO8859-1|
00000010  02 07 00 46 41 4e 54 4f  4d 55                    |...FANTOMU|
0000001a
$ hexdump -C out0004
00000000  df ff 79 0f 01 09 00 49  53 4f 38 38 35 39 2d 31  |..y....ISO8859-1|
00000010  02 00 00                                          |...|
00000013

有没有人见过这种格式?这是什么 ?


提取那些奇怪字符串的步骤:

  1. 您需要来自 Toshiba MRT200SP5 的实例(图像),
  2. 提取Original Data, 使用例如:

    gdcmraw -t 700d,1008 toshiba_input.dcm original_data.raw

  3. 使用正在进行的工作dump4.c来处理其中的一部分(类型 = WSTRING)

1个回答

粗略一看,您的数据似乎是这样格式化的
(假设为大端,但实际数据 SHORT 字段似乎是小端,您可能需要即兴发挥)

块大小可变,大小嵌入在数据之前

typedef struct _FOO {   
BYTE[3]       magic                 \\ dfff79 same in all blocks    
BYTE[1]       siz_exc_magic&siz_fld \\ 17,19,21,16,0f  
int           another_magic         \\ 01090049  
char[8]       encode                \\ ISO8859-1   
BYTE[1]       some_byte             \\ 02 same in all blocks  
short         act_size_of_data      \\ 08,0a,12,7,0   
data[1]       variable_sized_data
}