作者:沈智强619 | 来源:互联网 | 2023-07-08 14:06
首先用编辑器打开PDF,可以看到如下结构
![](https://img8.php1.cn/3cdc5/155f4/882/92162d56cd01fb1e.png)
1.寻找文件结构入口 /Root
![](https://img8.php1.cn/3cdc5/155f4/882/9ef43034b6c08814.png)
k-value形式,/Root 98 0 R/ k是Root value是98 0 R
98 0 R 代表被引用,指向的对象是98 0 obj
![](https://img8.php1.cn/3cdc5/155f4/882/e6870bcb31a8eb3c.png)
用PDFExploer工具打开看,如下:
![](https://img8.php1.cn/3cdc5/155f4/882/a58e5f0662f2773c.png)
可以看出用工具打开的树形结构跟上面编辑器打开的k-v值一样
![](https://img8.php1.cn/3cdc5/155f4/882/21824dc39189c227.png)
/Pages 97 0 R 代表页数,找到97 0 obj则是标记每一页的对象
![](https://img8.php1.cn/3cdc5/155f4/882/0cce3423b21789b3.png)
![](https://img8.php1.cn/3cdc5/155f4/882/d4434110d4c9216b.png)
上图可以看出总共1页 /Kids[0] 为第一页数据对象,找到96 0 obj
![](https://img8.php1.cn/3cdc5/155f4/882/e73c04945dff8528.png)
![](https://img8.php1.cn/3cdc5/155f4/882/62f2468e70e2fc38.png)
签名值就存在/Annots标签里
![](https://img8.php1.cn/3cdc5/155f4/882/96320c3880e017e4.png)
查询146 0 obj对象
/V 后面所跟对象即为签名值138 0 obj
![](https://img8.php1.cn/3cdc5/155f4/882/a0a6789cc8ea4f40.png)
![](https://img8.php1.cn/3cdc5/155f4/882/41a976c65eb89990.png)
![](https://img8.php1.cn/3cdc5/155f4/882/a0f2fe3d31561d8b.png)
找到签名值,复制出来,存在txt文件里,是p7结构
![](https://img8.php1.cn/3cdc5/155f4/882/15fb875fd2a2594e.png)
正常情况下,后面会多了很多0占位,要先把0去掉,然后转成asn1编码格式便可打开
可转成字节方式或者Base64都可以
![](https://img8.php1.cn/3cdc5/155f4/882/43d72274feca6680.png)
然后用ans1工具打开,即可查看结构
![](https://img8.php1.cn/3cdc5/155f4/882/99480fe6ce9bc4bc.png)