猿人学app第一题fridaRPC远程调用
app:yuanrenxuem109.apk
接口:https://appmatch.yuanrenxue.cn/app1
解析流程:第一题未作双向认证,所以可以正常抓包,多次抓包发现,需要解决的参数只有sign,page是页数,t是时间戳
正常使用jadx打开,app未加壳,直接搜索“sign”,点进第一个看一下,发现一个类似路由一样的东西,也指明了路由app1,应该就是i这里了,看一下OooO00o方法是什么,点击右键,查找用例,再点进去看一下
在这里可以看到sb是一个字符串,然后sign方法中传入的是sb转字节数组,我们再看一下sign方法什么
sign方法传入一个字节数组后,进行了一系列操作,我们直接用frida看一下传入的参数是什么,再看下返回了什么
由于传入的是一个字节数组,所以我们需要先转换成字符串才知道传入的参数是什么
123456789101112function bin2String(array) { return String.fromCharCode.apply(String, array)}Java.perform(f ...
房天下登录密码RSA加密解析
网站地址:https://cs.esf.fang.com/?backurl=https://cs.esf.fang.com/
登录接口:https://cs.esf.fang.com/login.api
加密字段:pwd
解析流程1.直接搜索关键字pwd,找到对应的加密函数,发现是RSA加密,key_to_encode是公钥,可以再html页面里面找到,第二个参数是我们输入的密码
2.扣取代码或者导包即可完成加密
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311 ...
金昌市公共资源交易中心详情页链接DES加密
解析流程通过抓包发现列表页正常无加密,但是详情页链接有两个字段是通过加密获取的
网站链接:https://ggzy.jcs.gov.cn/website/transaction/index
详情页链接:
https://ggzy.jcs.gov.cn/website/anno/index?projectId=9f37db7a30fb6259&projectInfo=ff15d186c4d5fa7a
直接搜索关键字定位:
进去打上断点发现是在请求发送之前做了加密,跟进去查看
发现是C方法对jquery传过来的projectId 和 ZBGG两个参数进行加密进行加密
跟进c方法,发现是一个正常的DES加密,直接导包或者改写都行,iv参数固定
12345def des_encrypt(text): key = iv = '54367819' k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5) en = k.encrypt(str(text), padmode=PAD_PKCS5) ...
驾培创业教练app请求参数frida
app:驾培创业教练v2.9.6
目标接口:http://weixin.jx885.com/Appapi/Common/getSmscode
解析流程:该app未作双向认证所以正常抓包获取目标url,结果测试后 请求头都很正常,唯独需要获取请求参数sign
将app拖进jadx,反编译成功,搜索”sign”关键字查看,这一块比较符合 我们点进去看一下
发现sign = stringMD5toUpperCase ,stringMD5toUpperCase是getStringMD5toUpperCase方法传入sb数组,我们点进getStringMD5toUpperCase方法看一下
这边应该是做了一个md加密,这个时候我们需要看一下getSmscode方法传入的三个参数是什么东西
我们使用frida attach模式获取com.jx885.library.http.CommAction下面的getSmscode方法传入的参数,可以看得出来,这么开发老哥并不是很友善,前面一个参数是年月日时分秒类似202305180210,中间两个参数固定,后面一个参数是手机号码,最后 ...
企查查随机请求头Hmac算法加密解析
网址:https://www.qcc.com/firm/5dffb644394922f9073544a08f38be9f.html
解析流程以查看公司财务数据为例,通过多次请求发现请求参数固定,如果是请求同一类数据请求头也固定,但请求头中有个参数会跟着不同的请求体进行变更,可以查看一下,直接通过发起程序追栈
代码量有点多,我们直接全局搜索headers[ ,通过查看,发现第二条更符合,打上断点查看
这一段就是我们想要的结果了
12345var i = (0,a.default)(t, e.data), l = (0,r.default)(t, e.data, (0,s.default)());e.headers[i] = l//改写一下var i = a.default(t, e.data), l = r.default(t, e.data, s.default());e.headers[i] = l
t是请求url,e.data是请求体
分别查看一下r.default,a.default,s.defaul
首先,s.default是一个固定值,c5c144235c844 ...
企知道网站cookie、uuid字段加密解析
网址:https://www.qizhidao.com/
解析流程首先抓包发现有反调试无限debug,先使用永不在此暂停先过掉它
多次请求发现请求头中有个user-agent-web字段需要携带,这个字段好像和user-agent没啥关系,且可以固定
然后是cookie,有些时候全部不带都行,如果不用随机代理的话,多请求几次就会出现疯狂滑块页面
wz_uuid 应该是游客id,用ua + 时间戳 + 随机字符串生成
z.i 和 a.m
1234567891011121314151617function O(t) { var e = (t || window.navigator.userAgent || Object(a.m)(4, 8)) + (new Date).getTime() + Object(a.m)(4, 8); return s()(e)}function a_m(t, e, n) { var r, o = ""; void 0 === t && (t = 6), & ...
全国招标公告公示响应des解密
网址:http://ctbpsp.com/#/
解析流程网站请求头和cookie都没有加密,唯一的加密是响应体加密
抓包发现promise,我们在找一下interceptors拦截器
这个一眼看上去就比较符合,而且数据进来,应该是用这个拦截器进行解析的
这也是个普通的des解密,直接导包使用就好了
123456789101112131415161718192021222324252627282930313233var CryptoJS = require("crypto-js");var C = CryptoJS;var C_lib = C.lib;var WordArray = C_lib.WordArray;function parse1(latin1Str) { // Shortcut var latin1StrLength = latin1Str.length; // Convert var words = []; for (var i = 0; i < latin1StrLength; i++) & ...
oklink区块链交易网请求头参数解析
解析流程通过全局搜索apikey可以发现x-apikey全在一个地方
大致的流程就是对api_key转成列表,然后转字符串在拼接上后后八位,然后又加入时间戳和和一些随机的数字,最后生成x-apikey
使用python生成:
1234567891011121314151617def get_api(): key = "a2c903cc-b31e-4547-9299-b6d07b7631ab" key_list = list(key) n = key_list[:8] result_list = key_list[8:] + n result_key = "".join(result_list) times = int(time.time() * 1000) e = list(str(times + 1111111111111)) e.append(str(random.randint(0, 10))) e.append(str(random.randint(0, 10))) e.a ...
百度翻译sign和token参数加密解析
网址:https://fanyi.baidu.com/v2transapi?from=zh&to=en
解析流程一个token和sign是我们需要解决的
搜索sign:发现有好多个,都打上断点尝试一下
断点到了这里
直接把这个函数扣下来
然后把根据报错把需要的给补上
另外token参数发现是固定可以不用解析,只要把sign解析出来即可
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455function n(t, e) { for (var n = 0; n < e.length - 2; n += 3) { var r = e.charAt(n + 2); r = "a" <= r ? r.charCodeAt(0) - 87 : Number(r), r = "+" === e.charAt(n + ...
有道词典请求体和响应体加密解析
网址:https://fanyi.youdao.com/index.html#/
解析流程可以很明显的看到sign 和 响应都做了加密处理
然后再控制台发现 它竟然把解密的结果给打印出来了
那我们直接搜索console.log定位到这里
1234const n = an["a"].decodeData(o, sn["a"].state.text.decodeKey, sn["a"].state.text.decodeIv), a = n ? JSON.parse(n) : {};sn["a"].state.text.decodeKey 和 sn["a"].state.text.decodeIv都是固定值
查看一下 an[“a”].decodeData()方法,t是响应体
crypto.createDecipheriv()是内置的加密算法,o和n使用md5加密后转换成数组,这里直接copy下面,补一下环境即可
1234567891011const cry ...