打开未知的图像格式(可能是 RAW 图像)

逆向工程 二元分析 文件格式 二进制 二元诊断 二进制编辑
2021-06-25 11:06:03

我从以 .bin 结尾的基于 linux 的系统复制图像文件。

不幸的是我不知道如何打开它。目标是稍后将图像转换为这种格式。

我已经尝试过的:

  • 使用 RAW 图像查看器打开文件(未成功)
  • 使用十六进制编辑器查看文件以找出有关结构的信息(未成功)
  • 为确保这些是菜单中的图像,我相互交换了 2 个文件(交换文件名)(有效)

这是它在设备上的外观:

在此处输入图片说明

我已经在这里上传了两个文件。

https://drive.google.com/file/d/1WXbuqT7B-_1OdHZjScmWMKHKxfEUzta7/view?usp=sharing https://drive.google.com/file/d/1YN_TbwWevuNQ3_Ha6MikOA_5JX8h1Pu1/view?usp=sharing

- 更新 -

//------------------------------------------------ ---------------//

在这里,我从设备中克隆了一些其他标志:

西班牙语:

https://drive.google.com/file/d/18FE-nT7DMDmNvPtT3lMzARdjcUItpUSu/view?usp=sharing

英语:

https://drive.google.com/file/d/1Qqr-ZKyT1M5ichLXBKRRBJzxaPDEpSGg/view?usp=sharing

葡萄牙语:

https://drive.google.com/file/d/13DYM1-Di7bI_KXvT4Eo9zC6x-jIwX0jX/view?usp=sharing

这里还有两张随机的 GUI 图片:

https://drive.google.com/file/d/1oulgopsKGIkpUQ12_94twBaNlVkToKxI/view?usp=sharing https://drive.google.com/file/d/1E9Tx2S86tP2B_z84Fe_6LWO-RZxSEVtD/view?usp=sharing

这应该是这些图像(一旦突出显示,一旦正常):

车站标志 01

车站标志02

//------------------------------------------------ ---------------//

这是来自十六进制编辑器的 2 个文件的 2 个副本

img_togglelanguage_ru_ovg.bin:

FF FF FF FF 00 FF FF FF FF 00 E2 FF FF FF 00 01 1A 1A 1A 2D 1A 1A 1A C3 99 1A 1A 1A FF 01 1A 1A 1A C0 1A 1A 1A 2D 88 FF FF FF 00 00 1A 1A 1A CF 9B 1A 1A 1A FF 00 1A 1A 1A CF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF FF FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF FF FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF FF FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF FF FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF FF FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 FF FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 00 1A 1A 1A D2 9B 1A 1A 1A FF 00 1A 1A 1A CF 88 FF FF FF 00 01 1A 1A 1A 39 1A 1A 1A D2 99 1A 1A 1A FF 01 1A 1A 1A C9 1A 1A 1A 2D FF FF FF FF 00 FF FF FF FF 00 E3 FF FF FF 00

img_togglelanguage_de_ovg.bin:

FF FF FF FF 00 FF FF FF FF 00 E2 FF FF FF 00 01 1A 1A 1A 2D 1A 1A 1A C3 99 1A 1A 1A FF 01 1A 1A 1A C0 1A 1A 1A 2D 88 FF FF FF 00 00 1A 1A 1A CF 9B 1A 1A 1A FF 00 1A 1A 1A CF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 00 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 DE 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 DE 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 DE 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 DE 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 DE 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 DE 00 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF CF 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF CF 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF CF 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF CF 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF CF 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 81 1A 1A 1A FF 99 FF CF 00 FF 81 1A 1A 1A FF 88 FF FF FF 00 00 1A 1A 1A D2 9B 1A 1A 1A FF 00 1A 1A 1A CF 88 FF FF FF 00 01 1A 1A 1A 39 1A 1A 1A D2 99 1A 1A 1A FF 01 1A 1A 1A C9 1A 1A 1A 2D FF FF FF FF 00 FF FF FF FF 00 E3 FF FF FF 00

也许有人比我知道得更多。

2个回答

基于这些图像,这似乎是一种相当直接的运行长度编码的 32 位/像素位图格式。一般结构似乎由多个记录组成,每个记录都有一个“标签”字节,后跟 4 个字节的倍数 RGBA 数据。这些记录似乎只封装了像素数据,没有维度或其他元数据。

这些像素记录的结构如下——

tag  data
byte bytes
==== ===========
// literal pixel records
 00  RR GG BB AA                      => specifies colour of the next single RGBA pixel 
 01  RR GG BB AA  RR GG BB AA         => specifies colours of the next 2 RGBA pixels
 02  RR GG BB AA  RR GG BB AA  .. etc => specifies colours of the next 3 RGBA pixels
 03  ..
 ..
 19  RR GG BB AA  RR GG BB AA  .. etc => specifies colours of the next 26 RGBA pixels
 ..
// run-length encoded pixel records
 81  RR GG BB AA              => colour RGBA is used for the next 2 pixels
 82  RR GG BB AA              => colour RGBA is used for the next 3 pixels
 83  RR GG BB AA              => colour RGBA is used for the next 4 pixels
 ...
 88  RR GG BB AA              => colour RGBA is used for the next 9 pixels
 ...
 99  RR GG BB AA              => colour RGBA is used for the next 26 pixels    
 9A  RR GG BB AA              => colour RGBA is used for the next 27 pixels    
 9B  RR GG BB AA              => colour RGBA is used for the next 28 pixels    
 ...
 E2  RR GG BB AA              => colour RGBA is used for the next 99 pixels 
 ...   
 FF  RR GG BB AA              => colour RGBA is used for the next 128 pixels    

图像尺寸需要通过检查得出。您提供的旗帜图像均为 39 x 39。另外 2 张图像的尺寸为 172x207 和 148x186。旗帜图像特别有边框,并且确实使用了 RGBA alpha 通道。


这是图像的样子 -

img_togglelanguage_de_ovgimg_togglelanguage_ru_ovgimg_togglelanguage_br_ovgimg_togglelanguage_mex_ovgimg_togglelanguage_eu_ovg

img_btn_tuner_main_preset_01_a_bg_ovgimg_btn_tuner_main_preset_01_p_bg_ovg

我进一步研究了这种格式并在这里制作了一个解码器:

https://github.com/cr3ative/rcd_330g_logo_utilities/blob/master/ovg_to_png.py

tagIan 在另一个答案中描述字节在此处详细说明:

https://www.nxp.com.cn/docs/en/application-note/AN4339.pdf

在此处输入图片说明