今天有这样一需求,要求能够查询盛付通卡的状态,官网如下 http://www.801335.com/status/index.htm
刚一打开网址,发现两个输入框加一个验证码,心中一喜不是小 case 验证码没有粘贴也没怎么变形手到擒来,三五两下识别做完了 正确率还不错,90+%..
验证码做发了,开始抓包,一下就懵了,发现他的数据好像被加密了,先上一张图
回过头来后,仔细看了下他的界面,发现了猫腻,他卡号和密码输入的地方是 flash UesTextInput-1.4.swf 文件名是这个,再看了看,他的 JS代码发现关键的几行
// 获取加密Key
var encryptedKey = document.getElementById(swfObjId).GetKey($("#base64Cert").val());
$("#"+keyEleId).val(encryptedKey);
// 获取加密数据
var encryptedData = document.getElementById(swfObjId).GetValue();
$("#"+dataEleId).val(encryptedData);
原来,他是通过 flash把输入的文本加密后再赋值给 input 输入框. 即然知道他的现实,我马上就有思路了
方案一
C# 调用 flash 的Com组件来实现,通过模拟键盘来输入卡号和密码来实现加密并批量查. 具体的实现这里不讲了,
程序是跑起来了,但是发现一个问题.在多线程的情况下,flash加密存在一个问题,不能同步,没办法,你不同步我给你同步吧,加了一个同步机制,可以了没问题了 一是一 二是二,但是同步后,查询的速度下来了,差不多 1-2秒才能查一张卡,奶奶的受不了,还不如我手工查得快,没办法是 革命没有成功,还是继续
方案二
你不是用的flash加密吗 你加密码再厉害还不是在客户端完成的,只要是在客户端完成的 我就不信我拿你没办法,呵呵, 经过几年的开发积累,什么都没有,有的就是积累的小工具,
flash是吧,把我N年前有的 闪客精灵用上试下
比较古老的一个版本,没关系,只要能派上有场就行....
欧啦 ,什么出来了,现在要做的 就是 A3代码转成我们可爱 C#代码,就一切搞定了
其实需要重写的方法也只有两个,刚才在上面就是JS调的那两个
GetKey GetValue 就这两个,重写的代码就不贴了,最后再上张软件的效果图
开 10个线程,速度杠杠的.............
--幸福海
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探