-
-
[原创]某直播平台协议分析之一
-
发表于:
2016-9-27 21:00
31094
-
忙于工作,最近都很少登录看雪论坛。得为论坛做点贡献,写写文章,总是感觉词不达意,讲话都不流畅。最近各种直播平台都很火,移动互联网已经进入了直播时代。什么快手,映客,花椒,奇秀,斗鱼,熊猫都纷纷火起。
作为一个逆向工程师,总想一窥其中的奥秘,看看里面有什么好玩的东西。
好吧。就以某直播平台为目标,假如触犯到你们的知识产权,很抱歉,先说声对不起
本分析过程分为三个功能主题:
1.新浪微博协议登录
2.直播登录之过程
3.进入直播房间观看视频
*****************************华丽分割线*******************************************
新浪微博授权协议
1.微博第三方授权有两种,下面我们分别简述这两种授权方式
第一种是“e9dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5i4y4K6M7r3!0J5N6q4)9J5k6i4N6W2K9h3u0G2i4K6u0W2j5$3&6Q4x3V1k6K6K9h3N6F1K9h3&6Q4x3V1k6D9L8$3N6A6L8W2)9K6c8X3y4D9K9h3g2F1N6q4)9#2k6X3W2V1i4K6y4p5x3U0b7#2z5e0t1$3y4K6l9$3y4q4)9J5y4Y4y4K6L8#2)9#2k6Y4c8&6M7r3g2Q4x3@1b7I4i4@1f1J5i4K6R3H3i4K6W2p5 做为登录点.界面为

第二种是以奇秀第三方授权
”0aaK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7r3W2Q4x3X3g2%4k6h3W2T1L8#2)9J5k6h3y4G2L8g2)9J5c8X3!0S2N6i4c8Z5x3W2)9J5c8X3q4#2N6r3S2G2M7X3W2*7k6g2)9K6c8Y4u0W2k6r3W2J5k6h3y4@1i4K6g2X3N6i4u0A6i4K6y4p5K9s2c8@1M7q4)9J5y4e0y4m8i4K6t1#2x3V1k6Q4x3U0f1J5c8Y4m8S2M7%4y4H3L8%4u0@1i4K6u0W2K9i4q4A6P5h3W2Q4x3X3g2U0L8$3#2Q4x3U0f1J5c8X3!0S2N6i4c8Z5i4K6t1#2x3V1k6U0j5h3I4D9j5X3q4U0K9#2)9J5k6i4m8Z5M7q4)9J5y4e0y4r3K9i4y4S2M7s2m8Q4x3U0f1K6c8o6q4Q4x3U0f1J5y4X3k6J5L8$3#2Q4x3U0f1K6c8o6u0Q4x3U0k6U0L8r3W2W2L8Y4c8Q4y4h3k6A6k6q4)9K6c8o6p5&6x3U0f1^5x3U0f1@1z5e0N6Q4c8e0u0Q4z5o6m8Q4z5f1x3`. 为登录点,界面为

第一种第三方授权比第二种简单一点,不过操作流程都类似的。
1.第一步获取微博验证码
2.第二步提交登录
3.第三步提交应用授权
4.最后授权成功会返回微博的登录信息,包含了Session,Uid,过期之前之类的信息
例如
access_token=2.00etX75toIakKB7d9cdc4fcf0Ctl4n&remind_in=700101&expires_in=700101&refresh_token=2.00etX65GoIakKBad906c39b16elA3E&uid=57857754335
然后第三方应用就可以凭借这些信息开始登录自身的应用
5.映客根据微博登录返回的信息做如下的判断。当该微博号码为全新的,映客将会注册该微博,获取微博的马甲,头像,并存储于映客服务器中。下次就不需要再注册,直接登录。纵横沙场几十年,都是那几个板斧。
请求微博验证码 1cfK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5i4y4K6M7r3!0J5N6q4)9J5k6i4N6W2K9h3u0G2i4K6u0W2j5$3&6Q4x3V1k6U0j5i4m8@1j5$3S2S2i4K6u0r3K9h3#2S2k6$3f1`.
返回的验证码信息如下.
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=="}}
提交微博登录
c6cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5i4y4K6M7r3!0J5N6q4)9J5k6i4N6W2K9h3u0G2i4K6u0W2j5$3&6Q4x3V1k6K6M7$3!0Q4x3V1k6D9L8$3N6A6L8W2!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4g2)9^5b7#2)9^5y4g2!0q4y4g2)9&6x3q4!0m8b7W2!0q4y4q4!0n7b7g2)9^5y4W2!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4W2)9^5z5q4!0n7y4#2!0q4y4g2)9&6x3q4)9^5c8q4!0q4y4#2!0m8y4#2!0n7x3q4!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4W2)9^5z5q4!0n7y4#2!0q4y4g2!0m8c8W2)9^5y4W2!0q4y4#2!0m8x3q4)9^5x3g2!0q4c8W2!0n7b7#2)9^5b7#2!0q4z5g2!0m8b7g2)9^5b7#2!0q4z5q4!0m8c8W2)9^5x3g2!0q4y4#2!0m8x3q4)9^5x3g2!0q4z5q4!0n7c8W2)9&6z5q4!0q4y4W2)9&6b7#2)9^5z5g2!0q4y4g2)9^5y4g2!0n7y4W2!0q4y4g2!0m8c8g2)9^5x3#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4#2)9&6z5g2!0n7b7W2!0q4y4g2!0n7c8q4)9&6y4g2!0q4y4q4!0n7c8W2!0m8x3g2!0q4y4W2)9^5x3g2!0m8c8R3`.`.
username=&password=&pincode=&pcid=
微博服务器验证登录信息,当登录信息正确的时候返回 ticket 信息
{"retcode":20000000,"msg":"","data":{"ticket":","toauth":1,"uid":""}}
根据返回的ticket信息提交第三方应用授权,授权成功以后映客访问该微博,可以获取微博的马甲,性别,年龄还有头像之类的信息。
授权成功,则返回sessionid,uid。
至此,微博登录授权完成。从此就可以把微博扔在一边了。抛弃你。映客凭sessionid和Uid就可以识别该用户
其实基本上所有的第三方授权平台都是这个流程的。已经标准化,流程化了。
微博授权登录只是开胃小菜。下面进入某直播平台的登录流程
/*************************华丽分割线******************************************/
直播平台登录流程之分析
自从有反汇编工具出现以来,大部分应用的秘密便暴露逆向人员眼皮底下。
其实随便抓一个直播平台分析,里面的通讯基本都是类似的,感觉都是同一批工程师开发出来的。或者是你逆向我,我抄袭你。
稍微修改一下字段,跟之前的换肤游戏有得一比。换汤不换药的。这类运用比拼的其实就是运营能力,和话题性。
映客开始登录流程,先提交
cafK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6i4u0$3K9h3y4W2i4K6u0W2K9h3&6Y4K9$3g2W2i4K6u0W2j5$3!0E0i4K6u0r3N6i4y4W2M7W2)9J5c8X3q4U0j5$3!0#2L8Y4c8Q4x3V1k6D9L8$3N6A6L8Y4y4Q4x3@1k6V1k6i4k6A6i4K6y4p5i4K6t1$3j5%4k6Q4x3@1c8Q4x3U0k6#2j5g2)9K6c8q4)9J5y4Y4m8J5L8%4c8G2i4K6y4p5y4#2)9J5y4X3I4U0i4K6y4p5x3o6l9H3x3o6l9H3x3o6l9H3x3o6l9H3x3o6l9K6x3W2)9J5y4X3W2V1k6Y4k6Q4x3@1c8Q4x3U0k6A6L8i4y4A6i4K6y4p5i4K6t1$3K9h3#2W2K9g2)9K6c8q4)9J5y4X3y4U0i4K6y4p5i4K6t1$3L8%4y4$3k6i4u0K6K9h3!0F1i4K6y4p5x3q4)9J5y4X3W2V1k6X3q4Q4x3@1c8r3b7g2)9J5y4Y4g2A6k6q4)9K6c8o6m8Q4x3U0k6K6K9h3c8Q4x3@1c8Q4x3U0k6U0L8$3&6F1i4K6y4p5g2$3W2X3K9g2)9J5y4R3`.`.
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 如下
da6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6k6i4u0$3K9h3y4W2i4K6u0W2K9h3&6Y4K9$3g2W2i4K6u0W2j5$3!0E0i4K6u0r3N6i4y4W2M7W2)9J5c8X3q4U0j5$3!0#2L8Y4c8Q4x3V1k6@1L8$3E0W2L8R3`.`. 附带的Json 数据
{"sec":"","time":}
当请求合法正确时返回{"v2_success": true, "token": "11133332323233233223233"}
这些返回信息我都删除了好多,真正都数据并不是这些,以防被无良都人滥用,不会写得很详细的。
token 表面的意思时令牌,其实真正的作用是某加密算法的加密公钥。
现在已经有了一把万能钥匙了,可以凭此钥匙打开无数的珍宝,所有的功能都可以凭这个打开。
什么更新用户信息,都只是Uri地址不一样而已。没有什么变化。
找些时间给大家说说花椒的内部东西,小伎俩好多。一不下就被骗了。需要多花点时间
感觉分析映客只是在分析Http协议,没有什么大的挑战性
我每天只能挤挤牙膏,工地老板又要我去板砖了
[培训]科锐逆向工程师培训第53期2025年7月8日开班!