百度文库免积分免费下载工具的原理与实现

百度文库免登陆免积分下载工具大揭秘!

具体原理不是太懂,于是下载一些已经实现了的工具进行逆向一下,看看别人都是怎么实现的.

下载了一个"冰点文库下载"拖入OD,关于如何找关键代码就不说了.这里直接切入重点.

仍以工具默认的文库下载网址:http://wenku.baidu.com/view/9a2feb165f0e7cd18425363a.html 为例子说明.

首先下载http://wenku.baidu.com/view/9a2feb165f0e7cd18425363a.html网页内容,找到DOC_INFO即文档的基本信息,这里是:

?
DOC_INFO={doc_id:"9a2feb165f0e7cd18425363a",cid:"62",price:"2",value_average:"8",doc_size:"311.5KB",doc_name:'
侧方位停车图解教你侧方停车技巧',doc_type:"doc",url:"http://wenku.baidu.com",wealth:parseInt
('0'),level:parseInt('1'),isOrgDoc:'0',catal:"0",isAdmin:"",totalPageNum:"3",cid1:"2",cid2:"62",cid3:""};

然后软件解析这段文本并写入一个配置文件中:

?
[task]
dac=bDD38048E63267FE4B3ABEF2314679EC9
mtime=20110826141952
status=2
site=2
downfile=1
totalpage=3
filenum=1
docname='侧方位停车图解教你侧方停车技巧',doc_type,doc
webaddr=http://wenku.baidu.com/view/9a2feb165f0e7cd18425363a.html
docaddr=http://ai.wenku.baidu.com/play/9a2feb165f0e7cd18425363a?pn=1&rn=10
docid=9a2feb165f0e7cd18425363a
docserver=ai.wenku.baidu.com
author=
desc=
docver=
pdffile=D:\冰点文库下载1.5\kpdf\'侧方位停车图解教你侧方停车技巧',doc_type,doc.pdf
expword=1

其实到这里差不对就知道下载文库的基本方法了,因为重要的信息是:docaddr=http://ai.wenku.baidu.com/play/9a2feb165f0e7cd18425363a?pn=1&rn=10
我们只要把这个网址输入到浏览器中并保存网页内容,稍加修改就是一个swf文件了。这个后面我们再具体解释。

软件会创建一个线程用来下载文档:

0041C0B9| 51                    | push    ecx                                       |

0041C0BA| 6A 04                 | push    4                                         |

0041C0BC| 57                    | push    edi                                       |

0041C0BD| 68 B0C24100           | push    iDocDown.0041C2B0                         |

0041C0C2| 6A 00                 | push    0                                         |

0041C0C4| 6A 00                 | push    0                                         |

0041C0C6| FF15 BC104400         | call    dword ptr ds:[<&KERNEL32.CreateThread>]   |kernel32.CreateThread

找到线程回调函数地址:0041C2B0分析里面的处理过程,中间有处理豆丁文库的代码,我们下次再说。此次只说百度文库的下载。

0041C9F6| E9 81020000           | jmp     iDocDown.0041CC7C                         |

0041C9FB| 83F8 03               | cmp     eax,3                                     |

0041CA0D| 50                    | push    eax                                       |

0041CA0E| 57                    | push    edi                                       |

0041CA0F| 68 02000084           | push    84000002                                  |

0041CA14| 6A 01                 | push    1                                         |

0041CA16| 53                    | push    ebx                                       |

0041CA17| E8 94C90100           | call    <jmp.&MFC42.#5207_?OpenURL@CInternetSession@@QAEPAVCStdioFile@@PBDKK0K@Z>……

堆栈参数:

0256F0A4   003B7D78  ASCII "http://ai.wenku.baidu.com/play/9a2feb165f0e7cd18425363a?pn=1&rn=1"

0256F0A8   00000001

0256F0AC   84000002

0256F0B0   003BA5F8  ASCII "Accept: */* Referer: http://www.baidu.com"

0256F0B4   0000002C

文件下载到“D:\冰点文库下载1.5\kdocin”目录下的临时文件中:

b_9a2feb165f0e7cd18425363a_1.dat.tmp,下载完成改名为: b_9a2feb165f0e7cd18425363a_1.dat。

实际上是一个swf文件,只不过开头多了一下数据:

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   7B 22 74 6F 74 61 6C 50  61 67 65 22 3A 22 33 22   {"totalPage":"3"

00000010   2C 22 66 72 6F 6D 50 61  67 65 22 3A 22 31 22 2C   ,"fromPage":"1",

00000020   22 74 6F 50 61 67 65 22  3A 22 31 22 7D 20 20 20   "toPage":"1"}

00000030   20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20

00000040   20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20

00000050   20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20

00000060   20 20 20 20 20 20 20 20  20 20

只要利用winhex的cut功能把这段数据去掉就是一个能播放的swf文件了。

软件再利用SWFToImage.DLL文件把swf文件转换为jpg图片,最后使用pdflib.dll把这些jpg图片制作成pdf文档。

当然后面还有将swf中的文字提取出来写入到txt文件中,b_9a2feb165f0e7cd18425363a_1.dat_2.swf的文字导出到b_9a2feb165f0e7cd18425363a_1.dat_2.swf.txt中。

代码在:

00407454| 50                    | push    eax                                       |

00407455| E8 361F0000           | call    iDocDown.00409390                         |提取txt文本

0040745A| 8D5424 3C             | lea     edx,dword ptr ss:[esp+3C]                 |

0040745E| 8D4424 20             | lea     eax,dword ptr ss:[esp+20]                 |

00407462| 52                    | push    edx                                       |

00407463| 68 4CF04400           | push    iDocDown.0044F04C                         |%s

00407468| 50                    | push    eax                                       |

00407469| E8 72190300           | call    <jmp.&MFC42.#2818_?Format@CString@@QAAXPBDZZ>……

0040746E| 83C4 14               | add     esp,14                                    |

00407471| 8D4C24 18             | lea     ecx,dword ptr ss:[esp+18]                 |

00407475| 51                    | push    ecx                                       |

00407476| 8BCE                  | mov     ecx,esi                                   |

00407478| E8 B3BBFFFF           | call    iDocDown.00403030                         |UTF8->ANSI

0040747D| 8D5424 18             | lea     edx,dword ptr ss:[esp+18]                 |

00407481| 8D4424 14             | lea     eax,dword ptr ss:[esp+14]                 |

00407485| 52                    | push    edx                                       |

00407486| 51                    | push    ecx                                       |

00407487| 8BCC                  | mov     ecx,esp                                   |

00407489| 896424 38             | mov     dword ptr ss:[esp+38],esp                 |

0040748D| 50                    | push    eax                                       |

0040748E| E8 F9180300           | call    <jmp.&MFC42.#535_??0CString@@QAE@ABV0@@Z> |

00407493| 8BCE                  | mov     ecx,esi                                   |

00407495| E8 B6060000           | call    iDocDown.00407B50                         |写入txt

至于如何提取的我没有具体跟进去,大致流程是:swf文件是压缩过的,要先解压缩后提取txt文本。

我直接从网上下载了一个“Flash文本提取工具加强版(SWFTxtEx)”,我们在浏览器中输入http://ai.wenku.baidu.com/play/9a2feb165f0e7cd18425363a?pn=1&rn=1,

然后保存为swf文件,然后使用winhex去掉头部信息,便得到一个压缩的swf文件,然后用“Flash文本提取工具加强版(SWFTxtEx)”工具打开,便能提取出文本信息了:

而且也显示了该swf的一些其他信息,如下说明是经过压缩过的:

*********************************
文件基本信息:

文件名 C:\Documents and Settings\user\桌面\9a2feb165f0e7cd18425363a.swf
文件版本  9
经过压缩
宽:595 pixels
高:842 pixels
帧数:1 frame
帧率:0 fps
共提取文字: 397 个

总结:

分析完以后,我们便知道如何实现一个免登陆免积分下载百度文库的工具了。

1.根据文库网址获取文档的id,页数等信息(DOC_INFO)。

2.构造如下类似链接:http://ai.wenku.baidu.com/play/9a2feb165f0e7cd18425363a?pn=1&rn=1,下载文件。

3.将文件头部的信息去掉得到一个压缩过的swf文件。

4.将swf解压缩并提取其中的文本信息,可以得到txt,或者word文档。

5.使用SWFToImage.DLL将swf文件转换为jpg图片,参考:SWF To Image library - converting set of SWF into BMP in Visual C# using SWF TO Image library 。

6.将这些转换出来的图片使用pdflib.dll、iTextSharp 等三方库制作成pdf文件,参考:iTextSharp 使用详解&用C#制作PDF文件全攻略。

 注:

SWFToImage.dll在64位下的使用参考“How to run and use SWF To Image on x64 Windows”,

大致意思是在vs工程中设置exe的目标平台为"x86“,为项目添加一个YourApplication.exe.manifest资源,内容为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <file name="SWFToImage.dll">
<typelib tlbid="{F52B2898-3CD9-4530-8F1E-2762A2783C33}" version="1.0" helpdir="C:\WINDOWS\system32\"/>
<comClass description="CLASS_SWFToImage" clsid="{479A1AAC-C148-40BB-9868-A9773DA66AF9}" progid="SWFToImage.SWFToImageObject" threadingModel="both" tlbid="{F52B2898-3CD9-4530-8F1E-2762A2783C33}" />
</file>
</assembly> 

当然还要将SWFToImage.dll文件放到你的可执行文件目录下。

最后附上原文内容:

     How to run and use SWF To Image on x64 WindowsSolution
The SWF To Image ActiveX library is made using managed Windows 32-bit code so as a result library (dll) can not be loaded into 64-bit application.
Solution is to build application for x86 platform so application will be operate in 32-bit mode (will work on both 32 and 64-bit OS)To apply this in Visual Studio 2005 and higher:- open project in Visual Studio 2005
- open project settings by pressing ALT+F7 (or via main menu: Project | Windows Application 1 Properties)
- select "Build" tab
- change "Platform Target" to "x86" option
- re-build projectProduced EXE application will work OK with registration-free scenario on Windows x64. To see how to add registration-free support into application see below:For registration-free usage scenario for SWF To Image please use the following manifest file:Content of YourApplication.exe.manifest file:<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <file name="SWFToImage.dll">
<typelib tlbid="{F52B2898-3CD9-4530-8F1E-2762A2783C33}" version="1.0" helpdir="C:\WINDOWS\system32\"/>
<comClass description="CLASS_SWFToImage" clsid="{479A1AAC-C148-40BB-9868-A9773DA66AF9}" progid="SWFToImage.SWFToImageObject" threadingModel="both" tlbid="{F52B2898-3CD9-4530-8F1E-2762A2783C33}" />
</file>
</assembly> Do not forget to put SWFToImage.dll into the same folder where YourApplication.exe is located    


百度文库免积分免费下载工具的原理与实现相关推荐

  1. 百度文库免积分下载原格式文档的方法(利用百度文库漏洞)

    利用百度文库漏洞下载)百度文库免积分下载原格式文档的办法其实很简单. 1.首先在浏览器中找到想下载的文档,如 http://wenku.baidu.com/view/bd23fe3e0b4c2e3f5 ...

  2. 那些你可能不知道的百度文库/网盘快速下载工具

    有时候搜索文档,百度文库是个不错的选择,但有些文档下载要收费,如果想(一次性)免费下载(长期使用建议购买VIP)怎么办呢?这里分享些基于类似百度文库/网盘/知乎/京东等网站开发的网站. 百度文库下载 ...

  3. 冰点文库----拒绝百度文库会员,高速下载文章

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一 : 冰点文库介绍 冰点文库下载器是一款十分好用的文库下载器,能够对百度文库.豆丁文库等文库内的文章实现免积分一键下载,让用户无需积分就可以自由 ...

  4. 62个ASP免积分资料下载地址汇总

    2019独角兽企业重金招聘Python工程师标准>>> 为了方便大家学习,小弟最近整理了一批免积分下载的ASP资料,共62个,整理了这批资料的下载地址,大家可以根据自己的需要选择性下 ...

  5. 最新的百度网盘不限速下载工具 - 100兆速度理论10m/s

    Yama之前安利过很多百度云盘下载不限速工具,随着时间推移,百度对这些账户还是限速,毕竟白嫖VIP的特权,可是会有封号.拉黑的风险(滑稽) 最新的百度网盘不限速下载工具,至于能用多久就随缘吧,最好用小 ...

  6. ftp免费下载工具,五大容易上手的ftp免费下载工具

    ftp免费下载工具主要是网络上用来传送文件的工具.但有些ftp免费下载工具传输文件不是特别稳定.今天就来为大家分享五大容易上手的ftp免费下载工具吧. 第一款:IIS7服务器管理工具 这款工具是真的好 ...

  7. 分享一个百度云资源不限速下载工具(含下载链接)

    想必大家也深受百度云限速之苦了,明明几十兆宽带,居然跟我们说下载速度只有几十kb/s ???? 因此给大家分享个某大神的良心开源工具:proxyee-down,不限速下载百度云网盘的多线程下载工具! ...

  8. 强大无比!百度文库、音视频下载、商品历史价…一行命令满足你的各种需求...

    前言 不同的网站具有不同的功能,电商.视频.社交.知识分享.... 这些网站各具特色,而且差异较大,以社交和电商为例,一个是用于商品交易的,一个是用于社交的,因此,背后的架构体系,主要功能自然会有千差 ...

  9. 百度网盘不限速下载工具,无需登录实现高速下载 (1)

    面对百度网盘几十KB的下载速度,显然是被限速了,这里推荐给大家一个mac和win都可以用的不限速下载工具,先简单介绍下这个下载器的几个特点: 1.高速下载 先放张下载的速度图片. 速度基本上都是满带宽 ...

  10. java 仿百度文库源码_java开发_模仿百度文库_OpenOffice2PDF_源码下载

    这几天在研究模仿着做类似于百度文库的东西,在这里给大家分享一下我自己做的东西. 由于需要做这样的项目,我查阅了很多资料,最后选定一下方案去做: Txt/Word/Excel/PPT=>PDF(O ...

最新文章

  1. eclipse 的快捷键
  2. java链接mysql数据库格式_JDBC URL连接常用数据库格式
  3. vue+element-ui的分页完整版
  4. 解决布局拖动混乱的问题
  5. 信用卡还不起会有什么严重后果?
  6. 原有ui项目调用qml_从0开始写前端UI框架:概述
  7. 在sqlserver中使用事务的注意事项
  8. 展开收起功能实现_小房间不一定要拥挤,这样设计实现小户型的大气!
  9. Js + Css的msn式的popup提示窗口的实现 (转自:月牙儿)
  10. Mybatis—三剑客之generator使用方法
  11. 谷歌助手现可预测航班延误情况并推送建议
  12. 遗传算法工具箱约束优化例题
  13. 移动硬盘与电脑连接后 计算机中找不到,移动硬盘不显示盘符怎么办 移动硬盘显示不出来解决方法【详解】...
  14. 软件人员kpi制定模板_KPI绩效考核软件有哪些?拥有多种考核模板i人事
  15. 数据结构与算法学习笔记——数据结构(四):单向环形链表(约瑟夫问题)
  16. JMeter-配置元件-HTTP授权管理器
  17. ADO连接MySql数据库之通过连接字符串
  18. 21届本科大数据菜鸡:我是怎么在互联网寒冬拿到腾讯、华为、京东、美团、快手等大厂offer的?
  19. 在html中页面不全,网页显示不全,教您网页显示不全怎么办
  20. docker 保存 环境持久化_Docker深入浅出系列 | 容器数据持久化

热门文章

  1. MT7621方案GPIO介绍
  2. 【信号与系统】笔记合集,你确定不收藏吗?我已经收藏了
  3. max点缓存烘焙帧_3DMAX怎么进行点缓存?
  4. Excel VBA 巧用自定义函数进行数组去重
  5. 树莓派版本及各种引脚
  6. 基于C#木门归方程序 下料机 锯片 CNC 拆单软件 全屋定制设计拆单软件橱柜衣柜拆单设计制造管理一体化软件 有屋软件
  7. android H5页面跳转APP,H5唤醒app并跳转到指定页面
  8. 《证券市场的风险与心理》
  9. 通过cmd上传文件ftp服务器,通过cmd完成FTP上传文件操作
  10. jpa 人大金仓数据库方言_人大金仓数据库(kingbase7d)操作入门指南 Windows