1.创意来源

用过奶牛快传的都知道,奶牛快传支持取件码提取文件,而取件码是六位的,因此可以尝试遍历。

使用burp suite遍历一遍,发现很快就能找出很多上传的文件,有很多是 “资源”和内部资源等。

2.问题

使用burp固然简单方便,可是每次都要打开网页抓取,配置,扫描,最后还要将扫描的数字手动输入到网页内,十分不方便。

另外通过观察发现服务器返回的json中包含很多信息,例子:

1
{"valid":true,"transfer":{"guid":"a447e372-edba-4faf-8498-784637240289","transferName":"PR软件","password":null,"uniqueUrl":"a447e372edba4f","uploadDate":"2021-07-25 下午5:57","expireAt":"2021-11-12 18:02:12","deleted":false,"uploaded":true,"exceeedCustomDownloadLimit":false,"expireHours":2636,"daysToCleanUp":-1,"day":25,"month":7,"year":2021,"language":"zh-cn","receivedTransfer":false,"displayEnterpriseTransferOwner":false,"proAccount":true,"needPassword":false,"frontendShow":false,"shareShow":false,"daysLeft":110,"filesAmount":11,"firstFile":null,"downloaded":0,"downloadLeft":0,"restored":0,"totalSizeGb":15.44,"totalSizeByte":1.6577689809E10,"transferFileDtos":[],"zipDownloadFile":null,"zipComplete":true,"miniAppQrCode":null,"message":null,"tempCode":"101831","tempCodeValid":true,"downloadLimit":-1,"validDaysLimit":-1,"receivers":[],"emailReceivers":[],"canOnlyDownloadInMySpace":false,"enableSingleFileDownload":true,"allowDownloadAll":true,"errorCode":0,"creamTransfer":false,"creamTransferRequestStatus":null,"diabledSaleTransfer":false,"creamTransferPrice":0.0,"creamSuggestPrice":0.0,"creamTransferRevenue":0.0,"syncedFolderGuid":null,"enableDownload":true,"enablePreview":true,"page":0,"totalPages":0,"totalFileAmount":0,"hasFolderStrucutre":true,"disabled":false,"iuploaded":false},"url":"a447e372edba4f"}

如果利用这些信息进行文件预览的话能提高效率。

于是,一个伟大的软件即将诞生。

3.编写软件

下定决心后,立即开始着手编写软件,使用Python。昨天晚上开始编写用时30分钟,主要是写了代码结构,继续学习了些语法(本人小白,菜到不会语法,真的不要再来问我hello world怎么写,真心不会)

今天学车归来后下午完善了代码,功能实现用时1小时,其中解决了一个以为是不会Python导致的巨大的问题:服务器就是不返回正确的信息(content-length=0),即使和浏览器发送完全一样的信息。

解决过程:

1.第一个想到的是cookies的问题,去查询了相关资料,两种方法实现了获取cookies并发送带正确cookies的请求,还是不行。

2.想看看究竟是和浏览器发送的有什么不一样,试图抓包,尝试了requests库配置代理,信任证书并不核验证书,本地抓包,局域网代理抓包,都以软件只字不发告终。

(为什么我自己程序自己都不能抓包,为什么)

3.最后实在是被这个问题难住想放弃了,开了局排位,死的时候瞄了眼代码,发现好像和浏览器请求差一行,补上后就正常了。

(问题永远出现在你想不到的地方)

离谱的是后来发现只需要差的这一行,其他的headers包括cookies都不要……

1
2
3
4
5
6
7
8
9
10
11
12
GET /transfer/verifydownloadcode?code=101831 HTTP/1.1
Host: cowtransfer.com
Connection: close
Accept: application/json
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: https://cowtransfer.com/ (就是这一行!其他基本不要)
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: cf-cs-k-20181214=1627035068237; gr_user_id=b8ed0cc3-889a-4abd-a47f-ad63950a2e7b; _ga=GA1.2.26932554.1627035070; domain=cowtransfer.com; dont_show_gift_icon=true; JSESSIONID=DD59AA21F77CAB8565DF02352F5FC449; Hm_lvt_43cc776da3af1b944b70ee23bd09e325=1627035070,1627035436,1627049597,1627220989; Hm_lpvt_43cc776da3af1b944b70ee23bd09e325=1627220989; _gid=GA1.2.1498505792.1627220989; b86d645824ea1f7f_gr_session_id=39d587c2-cc9c-46a7-8be7-ba78362424c1; b86d645824ea1f7f_gr_session_id_39d587c2-cc9c-46a7-8be7-ba78362424c1=true; SERVERID=cc911459ee852d72727a313870635d93|1627221066|1627220988

添加免责声明,friendly tips,优化代码和改进UI 用时一小时,成功。

4.成果展示(点击可查看原图)

1.2.15版本:

优化了代码,增加了详细信息显示

1.2.10版本:

增加了存档功能,优化初始化过程

菜鸡如何使用多线程:

json解析:

极简UI(其实是菜):

大约一秒一个:

最终盲盒打开示例:

1.1.5版本:

5.软件

仅供个人学习研究:

点此下载文件盲盒搜索软件(计算机程序,使用Windows电脑打开,手机可以将本页面分享给电脑)