12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
三国霸业 战车-珍宝-觉醒-攻城掠地SF-全新玩法 免费玩新区 攻城掠地私服 进入游戏
手游私服盒子 各类免费游戏 0.1折送海量资源 各类手游私服 进入游戏
皇家MU2 《奇迹 2:传奇》韩国网禅公司《奇迹》正统续作。 3D锁视角Mmrpg 暗黑3+传奇+流放之路+奇迹 进入游戏
查看: 257|回复: 0

分析某移动请求加密方式

[复制链接]

60

主题

60

帖子

130

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
130
发表于 2020-5-11 16:10:25 | 显示全部楼层 |阅读模式
注:此加密方式并非和10086.cn加密方式相同,仅提供思路学习。

地址:https://ngcs.cmcc-cs.cn:29090/ha/dist/module/bandOrder.html

界面如下:



没有什么功能可以说的,只是通过手机号检测是否可以安装宽带的一个API接口。
去年的时候这个接口还可以进行任意的手机号套餐及姓名首字母查询。发到吾爱之后秒失效。

输入手机号,自动弹出是否已经安装了宽带或者符合条件。



浏览器F12,进行抓取请求包,按键根据不同浏览器则不一样,本例以搜狗浏览器为例。

输入手机号码,随意点击一处位置。点击Newwork得到请求包。



得到URL:
https://ngcs.cmcc-cs.cn:29090/ha/api//busimngFront/broadbandNumFilter/checkPhone

请求:
{"phoneNum":"bWR4N2VMR2lvV054cm5XWEhJTXpmZ21zczJERzViQ3lYNlBmZ0xXWEVOUnVncE5ncDJuMEs0MEpFQWZmSk1XTWFDNERnbUcvYkduNitONFJkdkZWMDVQWDdHcDVYcFB6UjY0bjd2T1hKaE9iT1ZLSGg4S0lsbWpYblR1MXBGbEU5SDlzUzd3dUlmdzBqTTZKREJwU1Ztbkp4eVZKWDNYZkoyYWlveTFPRzkwPQ=="}

确定请求里面是手机号的加密格式,第一眼看上去为base64编码方式。但通过手机号进行编码转换长度不够。

那么有可能是先进行了加密然后通过base64二次编码。

找关键字

通过JS文件查找关键字,对JS代码进行查询。

关键字嘛,可以以phoneNum或者checkPhone进行。一个是请求中的json数据,一个是请求Url中的数据。

右键查看源文件,找到所有的JS文件,CTRL+F搜索关键字。

phoneNum关键字有点多,换下一个。



寻找到了五个结果,看此处应该就是我们需要找的,看到了ajax post请求。

复制全部代码,进行JS格式化。

[JavaScript] 纯文本查看 复制代码var e = document.getElementById("handleNum").value;   //获得元素handleNum的值,就是手机号,并转到变量e中if ("" != e && 11 == e.length) {                      //判断e的长度,是否为11位。11位是手机号嘛。    var t = new JSEncrypt,                             //创建对象。    n = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrFbqMVDuNE3mpySKGtjgC3Aha4HXxTZBcaia3jL2dKLl+H+1rHr6tsqIamhtai4LGTcD9mp1QMPyMF+p5ElxSJ8Q1oqPKS29Cu6pAIGsWNS1wVvw0ogdK2qF8ttf8yEC4fH8luYvPVkVNHYs8n/tQ5qPNjHxTGOSORgItRtBBWQIDAQAB";    //变量n值    t.setPublicKey(n);  //设定公钥值为n    var r = A.Base64.encode(t.encrypt(e));  //r变量就是加密后的编码,在这个地方可以看到先是经过了一次rsa加密,rsa的公钥为变量n。而后又经过了一次base64的编码。才是正确的内容。//为什么会知道先是经过了rsa加密呢?先不说这一处中的代码函数中所显示的rsa加密,而且源代码中还调用了一个JS文件,jsencrypt.min.js,通过此JS文件可以判断出为RSA加密方式。    fetch("/ha/api//busimngFront/broadbandNumFilter/checkPhone", {        method: "POST",        headers: {            Accept: "application/json",            "Content-Type": "application/json"        },        body: JSON.stringify({            phoneNum: r    //请求中,json中的r就是加密后的内容。这就清楚了。r         })

那么这个原理就清楚了。

测试



添加上文的中公钥,输入待加密的字符,加密得

p2J3g2LMXU+4jNfkgmobJ+CaYbiCVk+zf8ALEIKVRXkhVlSK1m2NKAAYOZDgUNMYl7ufdnzsxOPxqnZxl87IoeIgTeU2nqPqUff3tW1Un6MvyLT6bnZVjE9lOAdm4NoSwomoXTn5ScLK0+YbbvgyMCLSFtmMWgxm69enPVaKRC0=

再进行base64的编码得:
cDJKM2cyTE1YVSs0ak5ma2dtb2JKK0NhWWJpQ1ZrK3pmOEFMRUlLVlJYa2hWbFNLMW0yTktBQVlPWkRnVU5NWWw3dWZkbnpzeE9QeHFuWnhsODdJb2VJZ1RlVTJucVBxVWZmM3RXMVVuNk12eUxUNmJuWlZqRTlsT0FkbTROb1N3b21vWFRuNVNjTEswK1liYnZneU1DTFNGdG1NV2d4bTY5ZW5QVmFLUkMwPQ==

用精易助手测试一下



成功返回数据,至于功能嘛,没卵用,可以看河南省任何一个的手机号是否符合宽带的办理条件。

来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-11-25 07:48 , Processed in 0.093750 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表