-
-
[原创]某直播平台协议分析之一
-
发表于:
2016-9-27 21:00
30521
-
忙于工作,最近都很少登录看雪论坛。得为论坛做点贡献,写写文章,总是感觉词不达意,讲话都不流畅。最近各种直播平台都很火,移动互联网已经进入了直播时代。什么快手,映客,花椒,奇秀,斗鱼,熊猫都纷纷火起。
作为一个逆向工程师,总想一窥其中的奥秘,看看里面有什么好玩的东西。
好吧。就以某直播平台为目标,假如触犯到你们的知识产权,很抱歉,先说声对不起
本分析过程分为三个功能主题:
1.新浪微博协议登录
2.直播登录之过程
3.进入直播房间观看视频
*****************************华丽分割线*******************************************
新浪微博授权协议
1.微博第三方授权有两种,下面我们分别简述这两种授权方式
第一种是“https://passport.weibo.cn/signin/login?client_id=2459267064&sso_type=1” 做为登录点.界面为
第二种是以奇秀第三方授权
”https://api.weibo.com/oauth2/authorize?redirect_uri=http%3A%2F%2Fpassport.iqiyi.com%2Foauth%2Fcallback.php%3Fisapp%3D1%26from%3D2&client_id=1925825497“ 为登录点,界面为
第一种第三方授权比第二种简单一点,不过操作流程都类似的。
1.第一步获取微博验证码
2.第二步提交登录
3.第三步提交应用授权
4.最后授权成功会返回微博的登录信息,包含了Session,Uid,过期之前之类的信息
例如
access_token=2.00etX75toIakKB7d9cdc4fcf0Ctl4n&remind_in=700101&expires_in=700101&refresh_token=2.00etX65GoIakKBad906c39b16elA3E&uid=57857754335
然后第三方应用就可以凭借这些信息开始登录自身的应用
5.映客根据微博登录返回的信息做如下的判断。当该微博号码为全新的,映客将会注册该微博,获取微博的马甲,头像,并存储于映客服务器中。下次就不需要再注册,直接登录。纵横沙场几十年,都是那几个板斧。
请求微博验证码 https://passport.weibo.cn/captcha/image
返回的验证码信息如下.
retcode ==20000000 表示响应成功,返回信息没有错误。
验证码ID pcid为 gz-53c817e99f6e60f3b454ce2c0ce35145c24f
图片的的内容就是以image ,用base64 编码过的。用base64解码以后就是原始的图片
{"retcode":20000000,"msg":"","data":{"pcid":"gz-53c817e99f6e60f3b454ce2c0ce35145c24f","image":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAoCAMAAAA\/pq9xAAAAV1BMVEX\/\/\/\/+ZWX+srL+eHj+i4v+6+v+xcX+np7+2Nj+qKj+iIj+c3P+gYH+lpb+u7v+ubn+rKz+bm7+aWn+dXX+2tr+fHz+ra3+enr+Z2f+lZX+ycn+bGz+uLiRT+yJAAADH0lEQVRIie1Wa2\/bMAwURUpk1z2abd3Wbv\/\/d453UtykteMGWIF9KIHEiSzx+DieXcq7\/cdW1dqbOZ+eu7jqW2G4SMXVrIREmNVXHIrrcu5SqwTAtDS5ETVZRekqjqssdgVI+i5026UV\/ZBfNosWcRq6qCeKnNkVmaRvo5sofiu9VGEtsozalo7V9Gj0rFjNY9egRLp1xp75VMloscIyhnhTUfxDx5hGSFKwddf5vyxhXDT6xkaF\/4\/KH\/lV4TkbZMRUlmrci0zHcQIoSM\/iMkRBrVCp1hWdt8RzwdBkwPIF3TLwgtWpXE6uj+BbB4JHXvYmjKxSRUCJ+Ck9dYkG73kHa0AJgkTJrNpkXySC1lGxPhq1bei8mXembJqJpRt0qaXHDpSmrH5uDO4lRL2fVQJ2brGLICHHiraW3UGtTNEHUrljOhrjTYJVJTRhTW7zsM8S+A7TkH7r2WAy6zNJjLjqZBlajkAzBcOOhkJmYAryi4PMR0puG1mV4Tg733mCyTkPVgZRuU8rB2bw705+jASY5w4IO+9lDJw6quRj3p1gdXY6LzoDyFRx6OdIANVsconGwilhaDhvOgcexVjYOxRUYtGgijuHXxiAJLCWnenHEMdochtzObwoWWmKMH3gmtxhishW7HqQR4pPbfsgHDKZ3ckZQZPTRwMK2cvKB1E4nETJXY\/ykFQ+Ct0eyrHVmU\/+8EHXwX0exmiYD+bmNKbWRMMu+U0PberlDspg\/3w4xlGJUwjGUXSMj5OmB0TTOZ2t3EOODMCvQhkgpRtEaKF9TJmlmNhA+foNOTcKxA01yHwHhcvo7an2mMZ4WM5jqGV+xsBkLlN0U1IPypA4tnULZa62enYbpfflcTHUDR+iuHyHMjr0RP+QbXNs6zrI0+p5FCzG0xLdgOOeHccbDURIvTcSuUtMFNPyEubU8fMoTlFtCFcZTD2TDxv1GigEOffzooTPMJ\/+kFx8VSnRz58bdXnxmPiy6eVkbe1NJB\/AdUP\/Rr0IHDUuellBOfOkfGSsWo7\/FJ01PxuH1i02JTaO8vmm1q58Y323d\/u39hco8hAvf53tbQAAAABJRU5ErkJggg=="}}
提交微博登录
https://passport.weibo.cn/sso/login,包含了用户名称,用户密码,验证码还有其它的登录信息
username=&password=&pincode=&pcid=
微博服务器验证登录信息,当登录信息正确的时候返回 ticket 信息
{"retcode":20000000,"msg":"","data":{"ticket":","toauth":1,"uid":""}}
根据返回的ticket信息提交第三方应用授权,授权成功以后映客访问该微博,可以获取微博的马甲,性别,年龄还有头像之类的信息。
授权成功,则返回sessionid,uid。
至此,微博登录授权完成。从此就可以把微博扔在一边了。抛弃你。映客凭sessionid和Uid就可以识别该用户
其实基本上所有的第三方授权平台都是这个流程的。已经标准化,流程化了。
微博授权登录只是开胃小菜。下面进入某直播平台的登录流程
/*************************华丽分割线******************************************/
直播平台登录流程之分析
自从有反汇编工具出现以来,大部分应用的秘密便暴露逆向人员眼皮底下。
其实随便抓一个直播平台分析,里面的通讯基本都是类似的,感觉都是同一批工程师开发出来的。或者是你逆向我,我抄袭你。
稍微修改一下字段,跟之前的换肤游戏有得一比。换汤不换药的。这类运用比拼的其实就是运营能力,和话题性。
映客开始登录流程,先提交
https://service.ingkee.com/user/account/logins?devi=&cv=&ua=&proto=7&lc=0000000000000032&idfv=&imsi=&imei=&cc=&osversion=0&idfa=FA&uid=0&sid=&conn=Wifi&
POST请求,该请求字符串的Url地址如上,并附带了Json 数据
access_token是微博返回的token值,expire_time是微博返回的过期时间,weixin_openid
是微博返回的Uid值,比较有意思的是secret 字段,该字段是通过RSA加密后的字符串转为为二进制字符串表示。原始的内容是 "Uid#expire_time#版本号" 然后通过保存在app 应用中的RSA公钥进行加密,把加密后的结果转换为二进制字符串。官方就根据这个值判断是否登录合法,或者非法登录
{"access_token":"","expire_time":“","openid":"","platform":"weibo",
"secret":"ab5224a2d1dab7aa529c5dc7d50630858599b19690689432e433bb29f148832a665972f5858ae7fedf7945ad4bcec654020a0158aafb9eeee
06442b7bd70ba2ce1068a189be6f3f10c72876e70624ceb5e2cc89628d21353184874bc7cba16047bf40fb96b050235ca780a0b3217895039c067080f10413238063cf9
bc27f6057decd5e1c8161e11cfb31c767a2e45b438c592ee8e5c89f8edda9be0a27daa161545a7bddd4db",
"weixin_openid":""}
当登录的信息正确合法,官方将返回属于平台的用户ID,和Session值,客户端根据first_login 字段判断当前的微博号码是否为全新的用户。当为全新的用户时,则通过微博API 获取马甲,头像等信息,根据微博的信息,更新用户信息。
该平台的API都是简单明了,比较容易分析,设置了一些小伎俩都很容易被发现。另外一个平台花椒直播的登录过程就稍微复杂一点。不过都基本是类似的。
书接上回
每天挤点牙膏,分析分析。哈哈
登录成功以后,接下来就是获取映客的Token值,该Token值是用来操作更新,关注,修改马甲的凭证,请求的Https 如下
https://service.ingkee.com/user/account/token 附带的Json 数据
{"sec":"","time":}
当请求合法正确时返回{"v2_success": true, "token": "11133332323233233223233"}
这些返回信息我都删除了好多,真正都数据并不是这些,以防被无良都人滥用,不会写得很详细的。
token 表面的意思时令牌,其实真正的作用是某加密算法的加密公钥。
现在已经有了一把万能钥匙了,可以凭此钥匙打开无数的珍宝,所有的功能都可以凭这个打开。
什么更新用户信息,都只是Uri地址不一样而已。没有什么变化。
找些时间给大家说说花椒的内部东西,小伎俩好多。一不下就被骗了。需要多花点时间
感觉分析映客只是在分析Http协议,没有什么大的挑战性
我每天只能挤挤牙膏,工地老板又要我去板砖了
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)