前文
之前已经在网页模拟出来了我们的APP环境
我们可以在最后调用标明一个
console.log('遇到未处理的事件'+name+')
来看我们到底需要补什么环境函数和数据
第一个碰到的就是genSign
但是问题来了
网页本身就可以计算sign,难道我们要再使用脚本实现一遍吗?
为什么不开脚本好好的,开了脚本却要自己实现一遍?
我们翻一下堆栈,发现了一个有意思的爆出错误
这里可以看到调用genSign之前设置了一个定时器,到时间就触发一个自定义错误
那上方肯定有一个try函数
往上继续找堆栈,果然找到了
如果调用genSign函数到时还没有返回
就直接触发异常让catch抓到错误然后走原来的网页逻辑
那我们不需要处理genSign,直接在callHandler检测到并且返回一个undefined即可
开始分析摄像头
然后我们分析摄像头
触发一下按钮发现调用了examPushSign事件
翻一下堆栈,发现使用了t.image
除此以外一个没动
我们抓个包看看提交的参数是什么
%2F9j%2F4AAQSkZJRgABAQEAAQABAAD%2F2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj%2F2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj%2FwAARCAKAAoADASIAAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW
很明显是一个url编码掉的,再解码看看
/9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAKAAoADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW
这种带/ 数字和连续HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBg的字符,很难不让人联想到是base64转了图片
我们尝试复制粘贴一下
随便找个
https://tool.chinaz.com/tools/imgtobase
然后在这个图片前加个data:image/jpeg;base64,表示是一个base64图片,发现直接解码成功!
那我们基本就理清他的回调逻辑了,油猴上比较简单,我们可以直接打开一个文件选择器,接受图片之后base64掉传回给网页
理论建立完毕
实战...下节开始
补充
其实可以在callHandle里手动触发错误,关于这个的处理方案就当作一个小想法了~
因为比较无关紧要
结语
撒花~