1

我在这方面完全是菜鸟,

但假设我有以下十六进制代码,我知道它是一个 png 文件,通过将其转换为 Ascii:

89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 c8 00 00 00 c8 01 03 00 00 00 97 96 3c dd 00 00 00 06 50 4c 03 0 45 ff 0 5 c 2 ff 7e 00 00 00 f8 49 44 41 54 58 85 ed 96 31 12 84 20 0c 45 e3 50 6c e9 11 3c 8a 47 83 a3 71 14 8f 60 69 e1 90 fd 01 66 15 d7 4d 4d 76 f8 c 4 9f 10 a2 ae 2e cb 9a 58 b4 cc 08 db 98 d7 ab 05 12 11 46 90 01 64 c1 fa 65 83 78 ·· f1 08 11 2f 20 da 22 39 1f 63 64 0e e4 4c 92 e2 9d 90 e4 aa 07 49 ad c6 90 dc 8f 3a d5 48 aa d0 43 76 ba 95 4a 82 7c c8 95 ce 27 c2 7a b5 40 a2 27 b7 22 1f b8 86 17 df 76 3e b5 04 42 35 72 a4 fc cc b7 de 4b 66 ···· ab 0d bf 24 1d 1f 68 26 13 87 01 75 4a 75 ff 9b 0a d6 4b 3e 59 e5 3a bd 78 47 2d a9 3d 31 67 02 c7 27 77 ed 96 3a 49 a4 72 fe e2 9d ef 93 e9 41 52 a6 8d ea 0d 9c 35 64 88 f8 7c e7 e9 90 01 22 73 88 f4 eb e1 3c fb 6b 26 54 a7 27 d9 7f 7f ee 7c9a 49 a9 46 cc a3 c8 87 1b c7 2b 26 5d 5d ff a6 37 a5 e6 4e bb 4f 77 cf e7 00 00 00 00 49 45 4e 44 ae 42 60 82

.. 是未知的十六进制代码(在这个阶段)。

和 ascii 输出:

�PNG

���� IHDR��������������<Ý���PLTEÿÿÿ���UÂÓ… EãPlé<�G�£q�`iá�ýf×MvøED�Á�¢®.Ë �...Ú"9cdäL�â��ärçªIÆ�Ü�:ÕHªÐCvº�J�|È�Î'...¿$h&�uJuÿ� ÖK>Yå:½xG-©=1gÇ'wí�:I¤rþH>â�ï �éAR¦�ê �5d�ø|çé�"s�ôëá<ûk&T§'Ùî|�I©FÌ£È�Ç…</p>

如何根据这些信息构建可打开的文件(或至少部分可打开)?另外,有没有办法向后确定丢失的十六进制代码必须是什么?你可能需要慢慢解释,我是一个初学者。

任何有关学习 ascii - 十六进制 - 十进制 - 二进制编码 - 文件类型和加密的好资源也将不胜感激......

(这和最近的TF2 ARG有关)。

4

1 回答 1

0

简单的 C 程序

  #include <stdio.h>

  FILE *stream;

  int main( void )
    {    
       char s[3]={0};  

       if( fopen_s( &stream, "hex.txt", "r" ) != 0 )
          printf( "The file fscanf.out was not opened\n" );
       else
       {
          fseek( stream, 0L, SEEK_SET );
          while (fscanf(in_fd, "%s", s) != EOF) 
          {printf("%c",strtol((s,s+3,16));}   

          fclose( stream );
       }
    }
于 2012-08-13T11:56:29.683 回答