Hexdump读取偏移量与c lseek()

时间:2017-05-27 10:53:59

标签: c hexdump

我有一个图像文件img.jpg并做了以下
strings img.jpg | hexdump -C
which gave me this output
现在我需要使用带有open,lseek和read的c程序获取相机和日期信息... 我的问题是,如何使用lseek跳到2015:08:05的日期? 我试图使用偏移量0x40但不知道发生了什么......

编辑:正如答案中指出的那样,2015年的2应该是2015年但是这段代码输出的数字不是2但是为0.

int rd = lseek(filedesc, 0x49, SEEK_SET);


    if(rd < 0){
        perror("lseek");
        close(filedesc);
        return 1;
    }   

    read(filedesc, &output, 1);

    printf("%d", output);

1 个答案:

答案 0 :(得分:1)

0x40是地址代表行的开头。 2中的2015位于地址0x49中 - 这是您需要的地址。其内容为Hexa中的32或文本中的2

在每一行中,地址都是这样的 - 因为该行以0x40开头:

0x40 0x41 0x42 ... 0x48 0x49 0x4A 0x4B ... 0x4F。然后开始下一行。

文件中的列是:

  • 左列 - 行中的第一个地址。
  • 中间栏 - Hexa中每个地址的内容。
  • 右栏 - 文字表示中每个地址的内容。

您应该检查每个 JPG文件的偏移量是否为真。

附加:在hexdump -C上执行以及在strings img.jpg上执行时,运行img.jpg会产生不同的结果。如果您要在文件中搜索特定数据,则应检查cat img.jpg | hexdump -C。偏移那里将适合fopen文件的结果,然后是lseek