能否通过文件特征码欺骗百度云客户端来达到分享文件?

2014-09-12 11:37:17 +08:00
 strikehht
RT,百度云客户端在上传文件时应该是先校验文件特征码,看云端是否有匹配,若有则“极速妙传”,若没有则上传新文件。能否在这一步做手脚,直接给百度云自己需要的文件的特征码来获得该文件的“所有权”?这样,不管分享链接如何也可以保证能够下载到资源?个人感觉理论上肯定是可行的。实际如何操作有可能吗?
9927 次点击
所在节点    问与答
37 条回复
imn1
2014-09-12 12:10:29 +08:00
不太明白
上传可以提交特征码,但下载时特征码应该是服务器端从数据库提取的,不涉及客户端提交的问题
takato
2014-09-12 12:16:08 +08:00
从设计上讲,这个接口肯定放在应用内部,除非你能知道他们内部通信的协议来模拟,否则不太可能。
sandotsan
2014-09-12 12:22:13 +08:00
理论上可行,不过万一百度做特征码时加盐了,就没搞了,不可能你能搞到你想要的文件+盐后的特征码撒。
sandotsan
2014-09-12 12:30:34 +08:00
又想到,如果百度仅仅是做文件特征码的对比,那么协议破解的话,可以穷举文件
如果baidu除开文件特征码,还对比了文件的前3个字节或者前5个字节,那基本就没搞了,
nybux
2014-09-12 12:47:12 +08:00
这个思路非常不错
lvye
2014-09-12 12:51:40 +08:00
通过md5修改器我觉得应该可以,http://www.97world.com/archives/701
ZzFoo
2014-09-12 12:52:50 +08:00
流程应该是:

客户端扫描要上传的文件——生成特征码——把特征码传递给百度云服务器——服务器对比已有特征码——获得文件所有权

如果是这样的话,只要能截取生成的特征码并且修改成一个已知的特征码。就能分享一个文件,而不用生成一个分享的链接,也就不怕被和谐了...
ksc010
2014-09-12 12:56:38 +08:00
即时不用找这种欺骗的方式
你和别人分享“同一份文件”的链接应该也不是一样的啊
oott123
2014-09-12 13:12:35 +08:00
用百度网盘的 API 吧,有秒传接口。
你需要知道这个文件的哈希值,好像还要知道大小和前512字节。
秒传上传之后,就能下载了…
csx163
2014-09-12 14:07:44 +08:00
记得qq邮箱被此人搞出个秒传,可以去请教下 hloli.net
strikehht
2014-09-12 14:08:21 +08:00
「流程应该是:

客户端扫描要上传的文件——生成特征码——把特征码传递给百度云服务器——服务器对比已有特征码——获得文件所有权

如果是这样的话,只要能截取生成的特征码并且修改成一个已知的特征码。就能分享一个文件,而不用生成一个分享的链接,也就不怕被和谐了...』


恩,我想的就是这样,可惜只知道理论完全不会实践,不知道有没哪个高人可以验证一下。。
anheiyouxia
2014-09-12 14:31:14 +08:00
@oott123 百度api有返回这个哈希值给你的,你用api上传后,会返回一个文件大小和哈希值给你
akfish
2014-09-12 15:00:24 +08:00
简单的分析下概率就知道可行性有多低了。
文件的特征码本质上就是hash,hash空间是相当稀疏的。
以git用40位sha1编码文件对象为例,不考虑碰撞的话,整个hash空间能编码16^40=1.46*10^48个文件。
全球人口不过才7*10^9,就算每人上传一个hash完全不同的文件,也还连hash空间的零头都占不到。

想用hash碰撞到任意一个文件?除非你恰好有一份一模一样的文件,否则别想了。不过你都有一样的文件了,还碰撞神马。
dorentus
2014-09-12 16:04:54 +08:00
@akfish 楼主想做的似乎不是去碰撞试。而是这样(假如我想分享一个文件给别人):

1. 我先通过某些方式获得百度云内部使用的、该文件的特征数据(文件大小、哈希值之类)
2. 我把这个文件的特征数据给你
3. 你拿到这个文件的特征数据之后,通过某些方式欺骗百度的客户端,把这个文件添加到自己的账号下

如果像上面说的百度是直接提供了那些接口的话,倒是可以简单实现……
strikehht
2014-09-12 16:22:37 +08:00
@dorentus 正解
ayang23
2014-09-12 17:08:39 +08:00
@dorentus
@strikehht 逆向一下客户端不就有了
zmj1316
2014-09-12 17:16:00 +08:00
当初115封分享的时候大家不就是这么干的么
ZzFoo
2014-09-12 17:42:12 +08:00
这是我用百度云上传时抓取到的request。
POST /api/rapidupload?clienttype=8&devuid=BDIMXV2%2DO%5F328CCC7C9BAE4DC8B3C1D118284819FE%2DC%5F0%2DD%5F101118PBN406X7GJGSJL%2DM%5F60EB69B81D44%2DV%5F10E697A0&channel=00000000000000000000000000000000&version=4.5.0.7&logid=JwAxADQAMQAwADUAMQAyADAAMgAxACwAMQA5ADIALgAxADYAOAAuADEALgAzACwANQA2ADUA%0AJwA%3D HTTP/1.1..Host: pan.baidu.com..Accept: */*..Cookie:BDUSS=TZ5SHd0TEhQSjlyRVZhWklyYkstdk1HbWpmQmlrQVQ2ci1vSkJXLTRlSGxQVHBVQVFBQUFBJCQAAAAAAAAAAAEAAADP5xAXxcLR9LnitcTDqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWwElTlsB..User-Agent: netdisk;4.5.0.7;PC;PC-Windows;6.1.7601;WindowsBaiduYunGuanJia..Content-Length: 187..Content-Type: application/x-www-form-urlencoded....path=/Friends.S01E01.UNCUT.DVDRip.XviD-SAiNTS.avi&content-length=245096448&content-md5=f50c85023b19adca96996d77ac640ba8&slice-md5=53aff60319468c7fcdd1f166073ab92e&content-crc32=3088105606

所以每次只要把除了cookie之外的request告诉别人是不是就行了..
ZzFoo
2014-09-12 17:45:48 +08:00
有没有比较简单的方法模拟一个post请求呢。。。。
ZzFoo
2014-09-12 18:29:39 +08:00
上传成功了。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/133050

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX