我有一个图像文件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);
答案 0 :(得分:1)
0x40
是地址代表行的开头。 2
中的2015
位于地址0x49
中 - 这是您需要的地址。其内容为Hexa中的32
或文本中的2
。
在每一行中,地址都是这样的 - 因为该行以0x40
开头:
0x40 0x41 0x42 ... 0x48 0x49 0x4A 0x4B ... 0x4F
。然后开始下一行。
文件中的列是:
您应该检查每个 JPG文件的偏移量是否为真。
附加:在hexdump -C
上执行以及在strings img.jpg
上执行时,运行img.jpg
会产生不同的结果。如果您要在文件中搜索特定数据,则应检查cat img.jpg | hexdump -C
。偏移那里将适合fopen
文件的结果,然后是lseek
。