跑跑卡丁车卡密自动充值工具

主要为了实现将世纪天成卡号密码直接冲入用户帐户的功能,由于时间紧,没有使用线程,因此是采用的阻塞的方式来实现的,充值过程会造成系统假死;
验证码采用自动识别
  postwww := tstringlist.Create ;
  StartTag:= True;
  For i:=0 To LstViewCard.Items.Count-1 do begin
    if LstViewCard.Items.Checked then begin
      strCard:= LstViewCard.Items.Caption;
      strPass:= LstViewCard.Items.SubItems.Strings[0];
      if LstViewCard.Items.SubItems.Count<2 then
        LstViewCard.Items.SubItems.Add(EdtGameAccount.Text)  //充值帐号
      else
        LstViewCard.Items.SubItems.Strings[1]:= EdtGameAccount.Text;
      if LstViewCard.Items.SubItems.Count<3 then
        LstViewCard.Items.SubItems.Add('开始利用该卡密进行充值...')  //充值帐号
      else
        LstViewCard.Items.SubItems.Strings[2]:= '开始利用该卡密进行充值...';
      strImgUrl:= 'http://pay.tiancity.com/Modules/Validate.aspx';
      strUrl:= 'http://pay.tiancity.com/Payment/CardConfirm.aspx';
    TStm := TMemoryStream.Create();
    IdHTTP1.Get(strImgUrl,tstm);
      strRnd := GetValidCode(TStm,1081,'POPNETSOFT-CNTLIS');//通过之前的验证码识别组件来进行识别
      postwww.Text:= 'txt_userName='+ EdtGameAccount.Text
        + '&txt_userName2='+ EdtGameAccount.Text
        + '&txt_cardno='+ strCard
        + '&txt_cardpwd='+ strPass
        + '&txt_validatecode='+ strRnd
        + '&sdfdsf.x=31&sdfdsf.y=4';//要提交给充值服务器的数据
      IdHTTP1.Request.Referer:= 'http://pay.tiancity.com/Payment/CardRegistration.aspx';//服务器禁止了外部提交数据,因此要模拟Referer
     try
       strhttp:= IdHTTP1.post(strUrl,postwww);
     except
       sleep(1000);
       try
         strhttp := IdHTTP1.post(strUrl,postwww);
       except
         sleep(1000);
         try
           strhttp := IdHTTP1.post(strUrl,postwww);
         except
         end;
       end;
     end;
      strMsg:= URLDecode(MidStr(strhttp,
          pos('../Modules/Message.aspx?msg=',strhttp)+ 28,
          pos('" ;</script>',strhttp)-pos('../Modules/Message.aspx?msg=',strhttp)-28));//判定是否充值成功
      //strRedirect:= IdHTTP1.Redirecturl;
      if pos('充值成功',strMsg)>0 then begin
        if LstViewCard.Items.SubItems.Count<3 then
          LstViewCard.Items.SubItems.Add('冲值成功')  //充值帐号
        else
          LstViewCard.Items.SubItems.Strings[2]:= '冲值成功:';
        WriteLog('卡号:'+strCard+ ',密码:'+strPass+'对账户'+LstViewCard.Items.SubItems.Strings[1]
          + '充值成功;');
      end else begin
        if LstViewCard.Items.SubItems.Count<3 then
          LstViewCard.Items.SubItems.Add('冲值失败,系统返回原因:'+strMsg)  //充值帐号
        else
          LstViewCard.Items.SubItems.Strings[2]:= '冲值失败,系统返回原因:'+strMsg;
        WriteLog('卡号:'+strCard+ ',密码:'+strPass+'对账户'+LstViewCard.Items.SubItems.Strings[1]
          + '充值失败;系统返回原因:'+ strMsg);
      end;
      Delay(1000*StrToInt(EdtSecond.Text));//这个地方是由于充值服务器禁止在几秒钟之内同时充值,其实可以通过多线程来实现,这样就不用来延迟
    end;
  end;
 
应某些朋友需要,将编译以后的软件发布出来供大家下载研究
由于时间紧迫,程序非常简陋,但是不影响使用

posted on   cntlis  阅读(3328)  评论(6编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2009年2月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
1 2 3 4 5 6 7
8 9 10 11 12 13 14
点击右上角即可分享
微信分享提示