一不小心用代码登陆了B站。。。并上传了。。视频

阅读本文需要4.66分钟

你被标题吸引了吧。。。别急着关。。重头戏在后面

最近当我玩B站的时候,一不小心用代码登录了它,并几乎无限制的上传视频。

那么接下来,我来讲解如何通过Hack技术来模拟 哔哩哔哩 的登录,并完成我们的视频上传等操作。因此内容中略有“暴力”,若您感到不适,那还是也请看完它。

按照以往的老套路,我们首先需要弄清楚它的登录逻辑,并通过我们的代码来实现登录操作,其次拿到所谓的 Cookie 或者 Token、Sign等校验字段来做其他的操作,以下将围绕 B站 一步步来讲解破解的思路:

首先我们访问到 哔哩哔哩 的登录页面:


当我们在未登录的状态下访问登录页面的时候,会发现验证码已经显示出来了。那么他们是怎么做到当我输入账号、密码并输入一个已经出来的验证码之后就能校验成功呢。这时候就得提前动动脑子,当然如果你是开发服务器的话,应该明白里面的道理。这里我简单的讲下,其实在访问这个登录页面的时候,B站 已经将一个唯一的标识和验证码绑定起来了(也就是后面说到的Cookie),并且在登录的时候将这个标识一并发送上去。也就是说:通过一个标识来绑定验证码和登录操作。

那么接下来我们看看在第一次访问登录页面的时候,都有哪些可用的数据,打开 Charles 抓包工具(Charles抓包工具讲解可点击 阅读全文 ),重新访问登录页面.

这是登录页面的Request数据:



当然一眼看上去并没有什么可用数据。其实确实是没什么卵用的数据.那么我们来看看Response数据:



一眼看上去是挺乱的。细看下它的Raw数据。其中包括了使用的Server、Set-Cookie等等的数据,还有登录页面的html文本. 那么其中最重要的数据也就是 Set-Cookie,这个Set-Cookie中的数据就是之前讲到的 用来和验证码绑定的唯一标示。那么我们来确认下,来看看验证码图片的包:

快看,快看 验证码 Request 中的 Cookie,果然是上面登录页面的 Response 的 Set-Cookie。

那么验证码就简单了,我们通过代码来访问 B站 的登录页面,并拿到Response的Set-Cookie,然后再将这个Set-Cookie放到下载验证码Request的Cookie中,就这样,我们的验证码搞定了,那是不是登录就很简单了,少年憋急。登录才是大头..

来来来,基于上面的登录页面,我们在里面输入自己的账号,并完成登录来看看发的包都有哪些.

登录操作之后的Request:



可以看出来这是一个 post 请求,当然 Cookie 和验证码的一样将之前保存下来的 Set-Cookie 传给Request的Cookie.

post 参数如下:



Orz,WTF,提交的密码加密了。那么我就需要来找一下它的加密算法了。其实网页端的加密并没有什么卵用。对我来说,就是随便翻翻代码的事(毕竟我很帅)。

来来来,找啊找啊找加密。然后我们先试探性的搜索下请求的字段 'pwd' 如下图:



果然定位到了加密的位置,当然前端页面的加密大部分都是很容易找到的,只要你有耐心.



以上就是 B站 加密密码的算法。简单讲下就是:通过 /login?act=getkey 拿到一个数据(hash,key),并以key作为RSA算法的公钥来加密 (hash+明文密码),然后针对这个数据来一次base64即可

python实现如下:
import rsapub = rsa.PublicKey.load_pkcs1_openssl_pem(_key)_pwd = rsa.encrypt((_hash + psw).encode(),pub)_real_pwd = base64.b64encode(str(_pwd))

那么现在我们就需要把问题聚焦到 /login?act=getkey 这个接口上。那么我们再回到之前的抓包数据上,会发现果然有一个 getkey 的请求:



同上,Cookie是最开始的Set-Cookie。



Response中也就同时拿到了我们需要的 hash 和 key.大功告成,所有请求和加密都被我们搞定。

这时候我们再思考下登录脚本应该怎么判断是否登录成功呢,回头过来看下之前的登录操作的结果 也就是 上面的 dologin 接口.



会发现如果你成功登录之后,在 dologin 接口上会有 302 重定向跳转,并最终跳转到 主页上。因此这时候我们就可以来写代码,模拟登录,并且在最后一步登录请求中判断当前请求历史的第一个状态码是不是 302 ,如果是302,说明我们的登录脚本是没问题的。同时,再拿到 dologin的Response中的Set-Cookie作为新的Cookie,因为这个Cookie才是真正验证通过的Cookie,当然它是存在有效期的。具体多少我还不清楚,一般有一个礼拜、一个月、甚至一年之久。之后我们用这个Cookie去做其他有意义的事情,是完全没问题的。

其次就是上传视频接口,也是类似的方法,需要分析上传视频的接口数据。并将最终的Cookie携带到请求包中。其中需要注意的是B站的上传视频可简单的分为以下几个步骤:

  1. 将视频以Chunk的方式,而且是options的请求方式上传到服务器。因此它是支持断点续传的。
  2. 拿到options请求之后的视频id,再请求 add 接口将数据post上去即可
    总结
    虽然这篇文章很短,但是当你真正坐下来分析的时候,将是一段非常枯燥的过程。需要的就是你的耐心。

其次之所以写这篇文章,其实重点不是怎么去破解B站的登录,而是这些破解的逻辑是否可以提供给我们一些服务器架构的思路,抑或防范别人的破解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,221评论 11 349
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,938评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,939评论 25 707
  • 黄河下,青丝簪,百年不遇沙子棺 雒巽书,离天卦,活人更比厉鬼凶 白衣莫顾身后事,朱带不裹竖葬尸 亡灵冢内分北斗,笑...
    天上云水中月阅读 387评论 0 0