|
|
现在网络上很多文档都是pdf格式,看起来方便是方便,可惜不论用什么工具(xpdf or acrobat reader)字体却始终没办法作到清晰漂亮.因此转为其他格式的文档看就不失为一个好办法了.
pdftohtml就是一个linux下转pdf为html的工具,它可以将pdf很完美的转为html格式,而且使用起来十分简单.
主页:
http://pdftohtml.sourceforge.net/
版本已经很久没有更新,但不影响使用,经测试acroread 1.5格式的也可以照转不误.
* 简单应用:
编译安装完后,直接pdftohtml -c xxx.pdf即可.
* 高级应用:
一般的pdf文件都是可以直接转的,但现在还有很多的pdf文件被加密了,如果用pdftohtml去转,它会告诉你出错,那么网上下的pdf文件,不知道密码怎么办呢?
这时,你就需要有一点点的编程基础了,我们要把pdftohtml的代码稍稍的修改一下,配合一个crack工具,绕过密码.
对于pdf文件来说,一般可以设置user密码和owner密码,大多的pdf文件都不会设置user密码,而我们需要关注的就是owner密码,这就是我们在转换时候遇到的拦路虎了.
假设现在有一个pdf文件 enc.pdf,被owner密码加密了.
1) 到
http://www.password-crackers.com/crack/guapdf.html
下载一个demo版本的guapdf(这东东不错,可惜要钱,不然就不能解压大文件)
解压,运行guapdf
- [fog@fog-linux pdf]$ ./guapdf enc.pdf
- Guaranteed PDF Decryptor v. 2.0 BETA - freeware DEMO version
- (c) PSW-soft, 2000-03, by P. Semjanov, S. Lysak
- [url]http://www.password-crackers.com[/url]
- This product includes software developed by Eric Young (eay@cryptsoft.com)
- 'enc.pdf' has no user password, only restrictions present
- Key found! (exact value is 23 10 65 70 D7 34 6A D5 25 2B 62 2B 7F 97 5C E7)
- Would you like to decrypt it now?
复制代码
这时候我们看到Key已经被crack出来了,虽然不是password,但已经够用了,记下这个Key,按C-c结束程序.
2) 我们有了Key,下一步就是直接修改pdftohtml的源代码来使用它了.
需要修改的文件是./xpdf/XRef.cc,关键就是fileKey的值.
在文件头定义一个const变量
- const Guchar KnownKey[16] = {0x23,0x10,0x65,0x70,0xD7,0x34,0x6A,0xD5,0x25,0x2B,0x62,0x2B,0x7F,0x97,0x5C,0xE7};
复制代码
然后在XRef::checkEncrypted函数最后插入
- ownerPasswordOk = 1;
- memcpy(fileKey,KnownKey,sizeof(fileKey));
复制代码
回到根目录,重新编译.
3)OK,这时候输入命令pdftohtml -c enc.pdf,看到什么了?哈哈,成功转换了.
注: 这里介绍的只是一个方法,最好当然是把code改一下,把key做成一个参数,甚至直接带guapdf为参数完成解密的工作,哪位兄弟有兴趣自己改把,我闪人了先 |
|