- B84016CA07429304DED25AABF4F820A22CC7C7CC#4498956#迷你简娃娃篆.ttf
标准码的生成
这个码到底怎么生成的呢?只要你去百度,谷歌,只会发现大量的工具,似乎没人告诉你这个码怎么由来的,或者是怎么拼出来的,那么我们来研究一下。
首先构成形式如下:
- 哈希值(SHA1)#文件字节大小#文件名
文件字节大小,这个呢?就是我们说的文件大小了,后面的文件名完全是打酱油的存在,前面的哈希值和文件大小完全已经可以确定文件,所以目测后缀不变,名字什么的完全没有影响。
了解了标准码的构造,我们如何生成它呢?我们当然可以去115服务器,查看文件哈希值,但是考虑这个可行性后还是放弃了。其实在几年前的115是提供哈希 值查看功能的,用于比对文件的完整性,后来不知道因为什么就取消了。但是功能还在,只是不显示在大众面前罢了。
下面我用到了抓取网络数据交互的工具 Fiddler,其实谷歌自带的F12功能也行,只是习惯了。
我们随意的打开115网盘上面的文件夹,可以看到地址栏显示类似如下
抛开请求的js,css样式,图片等其他的请求,我们发现还有一个请求 (由于我们打开的不同文件的cid不同,所以直接打开上面的文件看不到我如下的结果的,必须替换成你地址栏的cid才能得到数据)
上面的数据返回了一个json数据如下
- {"data":[{"fid":"639976661156","uid":22110348,"aid":1,"cid":"440964055369423227","n":"\u8ff7\u4f60\u7b80\u5a03\u5a03\u7bc6.ttf","s":4498956,"sta":1,"pt":"0","pc":"dfqxya8iaxxl8","p":0,"m":0,"t":"2015-01-30 11:18","d":1,"c":0,"sh":0,"e":"","ico":"ttf","sha":"B84016CA07429304DED25AABF4F820A22CC7C7CC","de":"","q":0,"hdf":0,"et":0,"epos":""}],"count":1,"data_source":"MYSQL","page_size":32,"aid":"1","cid":"440964055369423227","is_asc":0,"star":0,"is_share":0,"type":0,"is_q":0,"r_all":0,"stdir":0,"cur":0,"code":"","scid":"","snap":"","natsort":1,"order":"user_ptime","uid":"22110348","offset":0,"limit":32,"path":[{"name":"\u6587\u4ef6","aid":1,"cid":0,"pid":0},{"cid":"440964055369423227","name":"x","aid":"1","pid":"0","p_cid":"145683"}],"state":true,"error":"","errNo":0,"t":0.014142990112305}
- {"data": [{"fid":"639976661156","uid":22110348,"aid":1,"cid":"440964055369423227","n":" 迷你简娃娃 篆.ttf","s":4498956,"sta":1,"pt":"0","pc":"dfqxya8iaxxl8","p":0,"m":0,"t":"2015-01-30 11:18","d":1,"c":0,"sh":0,"e":"","ico":"ttf","sha":"B84016CA07429304DED25AABF4F820A22CC7C7CC","de":"","q":0,"hdf":0,"et":0,"epos":""}],"count":1,"data_source":"MYSQL","page_size":32,"aid":"1","cid":"440964055369423227","is_asc":0,"star":0,"is_share":0,"type":0,"is_q":0,"r_all":0,"stdir":0,"cur":0,"code":"","scid":"","snap":"","natsort":1,"order":"user_ptime","uid":"22110348","offset":0,"limit":32,"path": [{"name":"文件","aid":1,"cid":0,"pid":0}, {"cid":"440964055369423227","name":"x","aid":"1","pid":"0","p_cid":"145683"}],"state":true,"error":"","errNo":0,"t":0.014142990112305}
- "sha":"B84016CA07429304DED25AABF4F820A22CC7C7CC"
- "s":4498956,"
文件大小也有了,名字上面的直接照抄就好或者你改成福利吧专属字体.ttf,除了版权问题,问题不大,应用到上面的拼凑技巧,你也应该能拼凑出如下的标准码了
- B84016CA07429304DED25AABF4F820A22CC7C7CC#4498956#迷你简娃娃篆.ttf
简便的获取方式
这里考虑到有的童鞋们可能不会抓取交互数据,那么我们就可以这样获取数据,替换关键的cid部分来获取数据,我们需要构造如下的地址
当然可能不需要这么多的参数,具体需要哪些参数你可以自行删减测试,这里我就不做测试了,红色字体就是我们要替换的|CID部分,这块在哪找呢,我们随意的打开一个115网盘文件夹会发现类似的地址
cid=后面就是要取得的部分,我们把数字上面的CID替换成440964055369423227得到下面的地址 然后用浏览器打开就能获取到上文中提到的json数据了,然后我们找到要拼凑的数据按照
- 哈希值(SHA1)#文件字节大小#文件名
本文为TSIR原创,如果你觉得有所收获的话,希望点下赞,也是对我原创的支持,如果有不明白的地方也可以跟帖回复,我会及时的做出解答,有错误纰漏也请指出,我们下一个主题帖子见!
==========================================================
Hello~大家好,这里是萌萌的TSIR,时隔几天之后又来给大家出教程的续集了,在上文(115非VIP礼包码转存内幕(一)) 我们提及到了标准码的提取,但是并没有涉及到标准码的转存及礼包码转标准码的过程,这次我就来详细的介绍下其中的原理,由于上文普遍反映看不懂,这里能理 解大家的心情,帖子呢只是知识的科普和内幕的解密,并不是要大家亲自操作哈,当然了,感兴趣的童鞋也是可以试着操作的。
文章中会涉及到POST数据的发送,这个需要软件支持,我用到的是Fiddler4,感兴趣的童鞋可以去官网下载。好了前面就说到这,我们开始正文吧。
礼包码转标准码的过程
就目前而言,没有发现类似的接口存在,也就是说只能采取折中的方法来获取标准码,首先VIP账号获取礼包码,然后VIP获取标准码,分享标准码,最后利用 标准码实现转存,这也是取巧的方式,但是就目前而言也是最合适的方法(115升级中,或许升级后的礼包码重新向普通用户开放接受也不一定)。我们更多的介 绍的是如何将标准码的转存。
标准码的转存
首先标准码是一段能区别文件的字符串,类似如下:
- B84016CA07429304DED25AABF4F820A22CC7C7CC#4498956#迷你简娃娃篆.ttf
这里不得不提到秒传功能,秒传就是在服务器端已经有人上传过一样的文件,那么在你上传同样的文件的时候就会直接秒传,如果我们利用标准码+秒传功能就能实现转存的效果。这也是标准码转存的核心。
在我们得到一个标准码的时候,我们利用如下接口进行转存。
- POST http://uplb.115.com/2.0/upload.php?sig=检测合法的sig HTTP/1.1
- Referer: http://www.115.com/
- Content-Type: application/x-www-form-urlencoded; Charset=UTF-8
- User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 QIHU 360SE
- Cookie: 用户自己cookie
- Content-Length: 219(大小随数据的不同而不同)
- Accept: */*
- Host: uplb.115.com
- Connection: Keep-Alive
- api_version=2.0&fileid=标准码中的哈希值部分&filename=标准码中的文件名部分&
amp;filesize=标准码中的文件大小部分&quickid=标准码中的哈希值部分&target=U_1_文件夹的CID&
amp;user_id=用户ID&userid=用户ID
- POST http://uplb.115.com/2.0/upload.php?sig=检测合法的sig HTTP/1.1
- Referer: http://www.115.com/
- Content-Type: application/x-www-form-urlencoded; Charset=UTF-8
- User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 QIHU 360SE
- Cookie: 用户自己cookie
- Content-Length: 219(大小随数据的不同而不同)
- Accept: */*
- Host: uplb.115.com
- Connection: Keep-Alive
这些Referer是从哪里过来的,类似我们从百度(http://www.baidu.com/)首页点击百度新闻(http://news.baidu.com/)那么这个值就是http://www.baidu.com/。Content-Type顾名思义就是数据的类型,而User-Agent参数则是告诉服务器你的系统所用浏览器是什么,这个可以根据不同的浏览器和系统做出不一样的响应。cookie是几乎每个网站都要或多或少用到的参数,和session搭配区别用户。Content-Length是说数据的长度大小,后面的参数什么允许文件、主机、保持连接就不一一赘述了。重点是我们看到的发送的数据部分,也就是下面的部分。
- api_version=2.0& fileid=标准码中的哈希值部分&filename=标准码中的文件名部分&filesize=标准码中的文件大小部分& quickid=标准码中的哈希值部分&target=U_1_文件夹的CID&user_id=用户ID&userid=用户 ID
- userid=132456798
- api_version=2.0& fileid=B84016CA07429304DED25AABF4F820A22CC7C7CC&filename=迷你简娃娃篆.ttf& amp;filesize=4498956&quickid=B84016CA07429304DED25AABF4F820A22CC7C7CC&target=U_1_440964055369423227&user_id=132456798&userid=<span style="line-height: 1.5;">132456798</span>
好吧,其实,cookie可以从登录115网站时候获取,sig是通过算法得出,页面中sig值不能被用于转存,因为sig是根据目录和文件的哈希值来 计算出来的。fiddler没接触的话,没办法了,这里只是科普贴,如果有时间的话我会出教程的关于如何使用fiddler。
其实写这个一直很纠结,所以拖了很多天,感觉不是一句两句能解释清楚的东西,标准码的生成,也许点了几下就可以获得到,可是写出来就要很多文字去说明, 还是有很多童鞋看不明白,这次的转存也是一样,想到就是一个简单的发送数据,可是解释起来真的很麻烦,用软件就很容易操作,又是一个头两个大,所以就不要 求大家跟着试验了,而且这里我并没有对sig的算法进行说明,会出现sig不对的提示,为什么呢?因为发现并利用这个接口的第一个人并不是我,而是 popok,他对115网盘转存进行了系统的研究,并且出了大量相关的软件,无私的分享了出来,可以说只要是有关115标准码的软件都有过他的身影。我只 是对软件进行了行为分析和部分反编译,在尊重popok的前提下,也是对这个转存功能保护的前提下,想了很久还是不公布sig的算法,其实不是很难的,大 家可以自行尝试分析。只是做基本的科普,本来嘛,这个就是一个科普和解密的过程,了解其中的原理就好。
本文内容为TSIR原创解密内幕,如果你觉得有所收获的话,希望点下赞,也是对我原创的支持,如果有不明白的地方也可以跟帖回复,我会及时的做出解答,有错误纰漏也请指出,呼呼~终于完结了!
没有评论:
发表评论