zoukankan      html  css  js  c++  java
  • C#实现盛大盛付通充值卡状态查询

    今天有这样一需求,要求能够查询盛付通卡的状态,官网如下 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个线程,速度杠杠的.............

    --幸福海

    博客地址:http://www.cnblogs.com/ningqhai/

    --幸福海 微信号:ningqhai
  • 相关阅读:
    Activity
    清晰易懂TCP通信原理解析(附demo、简易TCP通信库源码、解决沾包问题等)
    Android-- FragmentStatePagerAdapter分页
    使用NServiceBus开发分布式应用
    SOA、ESB、NServiceBus、云计算 总结
    ESB简介及选型(转) http://www.cnblogs.com/skyme/archive/2012/08/06/2623414.html
    C# 版dll 程序集合并工具
    83款 网络爬虫开源软件
    13个.Net开源的网络爬虫
    IE6浏览器的bug问题及相关解决的方法
  • 原文地址:https://www.cnblogs.com/ningqhai/p/4181318.html
Copyright © 2011-2022 走看看