Results 1 to 13 of 13

Thread: Captcha Code Recognise.

  1. #1
    Join Date
    Jan 2012
    Posts
    51
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default Captcha Code Recognise.

    Hi,
    is it possible that Simba recognizes a captcha code on a game?

  2. #2
    Join Date
    Jan 2008
    Location
    C:\
    Posts
    1,483
    Mentioned
    2 Post(s)
    Quoted
    2 Post(s)

    Default

    Only if you create a procedure that will do so.

  3. #3
    Join Date
    Dec 2011
    Location
    United States
    Posts
    960
    Mentioned
    21 Post(s)
    Quoted
    504 Post(s)

    Default

    It would be very hard to create since the whole point of Captchas is to prevent computers from proceeding.

  4. #4
    Join Date
    Jan 2012
    Posts
    51
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    is there anyone who can do this???

  5. #5
    Join Date
    Dec 2011
    Location
    Holland
    Posts
    545
    Mentioned
    0 Post(s)
    Quoted
    19 Post(s)

    Default

    Quote Originally Posted by HHHHHHHH View Post
    is there anyone who can do this???
    Yes, there is.
    Now try to learn it yourself or at least dont ask us to make such a thing because no one will do this for you.

  6. #6
    Join Date
    Jan 2008
    Location
    C:\
    Posts
    1,483
    Mentioned
    2 Post(s)
    Quoted
    2 Post(s)

    Default

    Quote Originally Posted by Chris View Post
    Yes, there is.
    Now try to learn it yourself or at least dont ask us to make such a thing because no one will do this for you.
    This would be extremely hard to learn if you don't have any coding background, and there could very well be someone who is willing to take on such a challenge. I don't think you have the right to say what others think.

  7. #7
    Join Date
    Dec 2011
    Location
    Holland
    Posts
    545
    Mentioned
    0 Post(s)
    Quoted
    19 Post(s)

    Default

    Quote Originally Posted by Runaway View Post
    This would be extremely hard to learn if you don't have any coding background, and there could very well be someone who is willing to take on such a challenge. I don't think you have the right to say what others think.
    LOL
    You dont know if he has no coding background.
    You dont know if its extremely hard to learn, maybe his IQ is extremely high
    And this guy doesnt post things the right way, so im 98% sure that no one else will do this for him.

  8. #8
    Join Date
    Jan 2008
    Location
    C:\
    Posts
    1,483
    Mentioned
    2 Post(s)
    Quoted
    2 Post(s)

    Default

    Quote Originally Posted by Chris View Post
    LOL
    You dont know if he has no coding background.
    You dont know if its extremely hard to learn, maybe his IQ is extremely high
    And this guy doesnt post things the right way, so im 98% sure that no one else will do this for him.
    1) Check his public profile and you'll see that he's "learning to script".
    2) I know it's hard to learn because I have attempted things like this before and it's VERY difficult.
    3) I attempted this because he requested it.

    This is getting off-topic, I'm not about to argue over something like this.

  9. #9
    Join Date
    Feb 2011
    Location
    The Future.
    Posts
    5,600
    Mentioned
    396 Post(s)
    Quoted
    1598 Post(s)

    Default

    Post a picture of the captcha so we can see what it looks like.. then we can decide if it will be hard or not.. I've written one for scar before.. that recognized masked bitmaps and chose the right numbers.. It isn't very hard.. It all depends on the captcha in question.
    I am Ggzz..
    Hackintosher

  10. #10
    Join Date
    Dec 2011
    Location
    Holland
    Posts
    545
    Mentioned
    0 Post(s)
    Quoted
    19 Post(s)

    Default

    Quote Originally Posted by ggzz View Post
    Post a picture of the captcha so we can see what it looks like.. then we can decide if it will be hard or not.. I've written one for scar before.. that recognized masked bitmaps and chose the right numbers.. It isn't very hard.. It all depends on the captcha in question.
    This.
    I have tried it for an online maffia game and it worked for 70% of the pictures, I had only been here for around 25 days.
    Not to say Im brilliant, but if you really want it and you have some time, you might get there. Still depends on the thoughness of the captcha though.
    My first post was a bit rude as I read it again.. Im sorry.
    And this just isnt enough information for us to do something with it. I would expect people to know that, and if they apparently dont.. then Ill think your a dumbass

  11. #11
    Join Date
    Jan 2012
    Posts
    51
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Chris View Post
    This.
    I have tried it for an online maffia game and it worked for 70% of the pictures, I had only been here for around 25 days.
    Not to say Im brilliant, but if you really want it and you have some time, you might get there. Still depends on the thoughness of the captcha though.
    My first post was a bit rude as I read it again.. Im sorry.
    And this just isnt enough information for us to do something with it. I would expect people to know that, and if they apparently dont.. then Ill think your a dumbass
    Mine is a maffia game too.

  12. #12
    Join Date
    Nov 2006
    Posts
    2,369
    Mentioned
    4 Post(s)
    Quoted
    78 Post(s)

    Default

    Quote Originally Posted by HHHHHHHH View Post
    Mine is a maffia game too.
    I think finddtmrotated could do that.
    Quote Originally Posted by DeSnob View Post
    ETA's don't exist in SRL like they did in other communities. Want a faster update? Help out with updating, otherwise just gotta wait it out.

  13. #13
    Join Date
    Dec 2011
    Location
    Holland
    Posts
    545
    Mentioned
    0 Post(s)
    Quoted
    19 Post(s)

    Default

    I came across this thread some days ago, and saw my own posts..
    I'm sorry for being that immature and stupid back then, so I have made something.

    You'll need Appa to try this.

    Simba Code:
    program new; {$loadlib Appa_Simba.dll}

    type
      TheColor = (Roze, Blauw, Wit, Groen, Rood);

    var
      Captcha: Integer;
      CaptchaColor: TheColor;

    procedure WaitForPage;
    var
      t: Integer;
    begin
      t := GetSystemTime + 1000;
      while (not appa_PageLoaded) and appa_Showing and (GetSystemTime < t)do
        Wait(10);
    end;

    procedure appa_NavigateTo(URL: string);
    begin
      if not appa_Showing then
        Exit;
      appa_Navigate(URL);
      WaitForPage;
    end;

    procedure appa_UpdateBitmap(var BMP: Integer);
    var
      w, h:Integer;
      Bitmap: TBitmap;
    begin
      appa_GetSize(w, h);
      BMP := CreateBitmap(w, h);

      Bitmap := GetMufasaBitmap(BMP).ToTBitmap();
      Bitmap.Canvas.Pixels[0, 0] := 0;

      try
        appa_CopyContentToBitmapDC(Bitmap.Canvas.Handle);

        GetMufasaBitmap(BMP).LoadFromTBitmap(Bitmap);
      except
        writeln('Error at appa_UpdateBitmap');
      finally
        Bitmap.Free;
      end;
    end;

    procedure Setup;
    begin
      if not(appa_Showing) then
      begin
        appa_ShowForm;
        appa_Caption('Mafiaroots.com - Captcha');
        appa_SetSize(400, 200);
      end;

      appa_NavigateTo('http://mafiaroots.com/images/captcha/captcha.php?key=rld');
      wait(50);
    end;

    procedure SetTarget;
    var
      CaptchaImg: Integer;
    begin
      appa_UpdateBitmap(CaptchaImg);

      SetTargetBitmap(CaptchaImg);
      Captcha := BitmapfromClient(12, 17, 111, 58);
      SetTargetBitmap(Captcha);

      FreeBitmap(CaptchaImg);
    end;


    procedure FreeRuntimeBMPs;
    begin
      FreeTarget(GetImageTarget);
      FreeBitmap(Captcha);
      FreeBitmap(1);
    end;

    procedure AddOnTerminate(const proc: string); // Copied from SRL.
    var
      OldProcs: TVariantArray;
      i: integer;
    begin
      GetScriptProp(SP_OnTerminate,OldProcs);
      for i := 0 to high(OldProcs) do
        if lowercase(OldProcs[i]) = lowercase(proc) then
          exit;
      setlength(OldProcs,Length(OldProcs) + 1);
      OldProcs[high(OldProcs)] := proc;
      SetScriptProp(SP_OnTerminate,oldprocs);
    end;

    function GetBitmap(WhatColor: TheColor): Integer;
    begin
      case WhatColor of
      Roze: Result := BitmapFromString(6, 9, 'meJxzc3NzdXV1QwL/UQGy1IIFC1at' +
            'WgXnzp07d/fu3XDurFmzzpw54+HhAeFOnz795s2bvr6+xJiMBwAAZ' +
            '9BL6w==');
      Rood: Result := BitmapFromString(7, 10, 'meJxtyjEOABEQheHTLQlRSRzDQRQ' +
            'apd4ddO6gcAalRENj7U52Ctm/evNlCHm63iil5AvPtdbegFvgcyOI' +
            'UirnPMaIMSKmlEIIjDFjDGLvXUoJG3HOyTk/sJRirRVCeO8Rtda11' +
            'taacw7xtxtG/GCv');
      Wit: Result := BitmapFromString(13, 10, 'meJxzc3NzdXV1IwTc3d3RGHjA//' +
            '//4Wy44RBBZC4ywC+I3wqSlP369QtTGabgxYsXCwoKgJ4NDg7GI5i' +
            'VlfX48eM/f/68ffsWrgyrIH4AAEMKotA=');
      Groen: Result := BitmapFromString(13, 8, 'meJyNjzEKxCAURE+nhYLEykL0DDm' +
            'HOYWYW1hGAoHUyRHSpggJkYD58HeX3S2WnWIYngPzpfQhQgj91DtZ' +
            '1xVcaz1NU84ZHDI+SSn7vj/Pc1mWUgqQYRi894yxtm0hYy3G6JwDW' +
            'Nc1kuM4qqqCAA4Z4bZt5akfta7rvq4dxxFHQwiv0ZRS0zSccyEEEm' +
            'vtPM/XdcEXjDEIlVLQ3Pcd1ul/ugGBKZNn');
      Blauw: Result := BitmapFromString(11, 9, 'meJx1jSEOxCAQRU8HdaSqhnACDNW' +
            '1vQAJCYdAVqNQNRyApKoKgQKDYidLtkF0v3r5/2UGYzxNE/4FGCEE' +
            'gL7pU29GbZRTSkKI3rTWnhX4ui4Axpj3/lUIIczzDFBrfRWcc/340' +
            'z+wLAuwMUZKue87MCEE+pwz55xSep4nlEopOHIch7U2xgiC1rqUct' +
            '/3uq4gbNs2Pv2XD+Kvj8g=');
      end;
    end;

    procedure GetCorrectColor;
    var
      BMP, x, y, I: Integer;
    begin
    //(Roze, Blauw, Wit, Groen, Rood)
      for I := 0 to 4 do
      begin
        BMP := GetBitmap(TheColor(I));
        if FindBitmapToleranceIn(BMP, x, y, 0, 25, 50, 41, 5) then
        begin
          CaptchaColor := TheColor(I);
          Break;
        end;
        FreeBitmap(BMP);
      end;
      FreeBitmap(BMP);
    end;

    procedure SetCaptchaOnlyAsTarget;
    begin
      Captcha := BitmapfromClient(0, 0, 99, 25);
      SetTargetBitmap(Captcha);
    end;

    function MakeBitmap(TPA: TPointArray): Integer;
    var
      BMP, i: Integer;
      TBox: TBox;
    begin
      TBox := GetTPABounds(TPA);

      BMP := CreateBitmap(TBox.x2 - TBox.x1 + 2, TBox.y2 - TBox.y1 + 1);
      for i := 0 to high(TPA) do
        FastSetPixel(BMP, TPA[i].x - TBox.x1, TPA[i].y - TBox.y1, 255);

      Result := BMP;
    end;

    function FindColorOnAllBoxBounds(Color, xs, ys, xe, ye: Integer): Boolean;
    var
      i, a, X, Y: Integer;
    begin

      X := xs
      for a := 0 to 1 do
      begin
        for i := ys to ye do
          if not (GetColor(X, i) = Color) then
          begin
            Result := False;
            Exit;
          end;
        X := xe
      end;

      Y := ys;
      for a := 0 to 1 do
      begin
        for i := xs to xe do
          if not (GetColor(i, Y) = Color) then
          begin
            Result := False;
            Exit;
          end;
        Y := ye;
      end;

      Result := True;
    end;

    function CheckAll(w, h: Integer): string;
    var
      TPA: TPointArray;
      L, x, y, DTM: Integer;
    begin  {Done: 0, 1, 2, 4, 5, 6, 8, 9}  {Nodig: 3, 7}

      {Finding 9's}
      if FindColors(TPA, 0, 2, 2, 6, 7) then
      begin
        L := Length(TPA);
        if (L >= 6) and (L <= 10) then
        begin
          if FindColorOnAllBoxBounds(255, 2, 2, 6, 7) then
          begin
            Result := '9';
            Exit;
          end;
        end;
      end;

      {Finding 8's}
      if FindColors(TPA, 0, 2, 1, 6, 5) then
      begin
        L := Length(TPA);
        if (L >= 2) and (L <= 5) then
        begin
          if FindColorOnAllBoxBounds(255, 2, 1, 6, 5) then
          begin
            Result := '8';
            Exit;
          end;
        end;
      end;

      {Finding 4's}
      if FindColors(TPA, 0, 2, 5, 5, 9) then
      begin
        L := Length(TPA);
        if (L <= 4) then
        begin
          if FindColorOnAllBoxBounds(255, 2, 5, 5, 9) then
          begin
            Result := '4';
            Exit;
          end;
        end;
      end;

      {Finding 0's}
      DTM := DTMFromString('mUAIAAHick2FgYGABYlYgZgNidiDmIBKj62MmEjNhwcw43MEJxFxAzI0DE6P3P53xSAYAeAQdUQ==');
      if FindDTM(DTM, x, y, 0, 0, w-1, h-1) then
      begin
        Result := '0';
        FreeDTM(DTM);
        Exit;
      end else
        FreeDTM(DTM);

      {Finding 1's}
      DTM := DTMFromString('miwMAAHic02aAAEYgZgJiZiBmAWJWIGYDYnYi5JmJwCxEYFYiMBcBzE0A4/IDBxBzQs2glpr/QwiPggEHAG8gLO8=');
      if FindDTM(DTM, x, y, 0, 0, w-1, h-1) then
      begin
        Result := '1';
        FreeDTM(DTM);
        Exit;
      end else
        FreeDTM(DTM);

      {Finding 6's}
      if FindColors(TPA, 0, 2, 6, 6, 11) then
      begin
        L := Length(TPA);
        if (L >= 6) and (L <= 10) then
        begin
          //writeln('Checking number 6');
          if FindColorOnAllBoxBounds(255, 2, 6, 6, 11) then
          begin
            Result := '6';
            Exit;
          end;
        end;
      end;

      {Finding 2's}
      DTM := DTMFromString('mfgEAAHicE2JgYGABYnYgZkbCIDFWKGaDYnYoZoLyWaHqmKFiHFAxTiDmAmJuJMwO1QPj8yDR6Pg/lfDgBwBN9RMK');
      if FindDTM(DTM, x, y, 0, 0, w-1, h-1) then
      begin
        Result := '2';
        FreeDTM(DTM);
        Exit;
      end else
        FreeDTM(DTM);

      {Finding 5's}
      DTM := DTMFromString('mKgEAAHic42NgYGBGwyxAzArETEiYGYkNk2dEkmOB8hnRxFmR1IMwGxD/JxMPLAAA4NoOVw==');
      if FindDTM(DTM, x, y, 0, 0, w-1, h-1) then
      begin
        Result := '5';
        FreeDTM(DTM);
        Exit;
      end else
        FreeDTM(DTM);

      DTM := DTMFromString('mrAAAAHic42BgYGACYg4gZgZiFiBmBWI2KGYHYm4gZgRiLqg6Nqg6Zqje/wQwtQAAAdEIVw==');
      if FindDTM(DTM, x, y, 0, 0, w-1, h-1) then
      begin
        Result := '7';
        FreeDTM(DTM);
        Exit;
      end else
        FreeDTM(DTM);

      // No numbers found, assuming it's a 3.
      Result := '3';

    end;

    function FindNumbers(ATPA: T2DPointArray): string;
    var
      i, w, h, BMP: Integer;
    begin
      Result := '';
      FreeTarget(GetImageTarget);
      for i := 0 to high(ATPA) do
      begin
        BMP := MakeBitmap(ATPA[i]);
        GetBitmapSize(BMP, w, h);
        SetTargetBitmap(BMP);

        Result := Result + CheckAll(w, h);

        FreeTarget(GetImageTarget);
        FreeBitmap(BMP);
      end;
      SetTargetBitmap(Captcha);
    end;

    procedure AddIntArray(var Arr: TIntegerArray; Value: Integer);
    var L: Integer;
    begin
      L := Length(Arr);
      SetLength(Arr, L + 1);

      Arr[L] := Value;
    end;

    function Modus(Arr: TIntegerArray): Integer;
    var        // Calculates the mode, it's "Modus" in dutch.
      I, LastNum, Count, HighestCount: Integer;
    begin
      Quicksort(Arr);
      Inverttia(Arr);
      for i := 0 to high(Arr) do
      begin
        if Arr[i] = LastNum then
        begin
          inc(Count);
          if Count > HighestCount then
          begin
            HighestCount := Count;
            Result := Arr[i];
          end;
        end else
          Count := 0;
        LastNum := Arr[i];
      end;
    end;

    procedure EditATPA(var ATPA: T2DPointArray);
    var
      ATPA2: T2DPointArray;
      i, L, x, y, Mode, Mode2, Dif, Dif2: Integer;
      TBox: TBox;
      IntArr, IntArr2: TIntegerArray;
    begin
      ATPA2 := [];
      for i := 0 to high(ATPA) do
      begin
        TBox := GetTPABounds(ATPA[i]);
        if ((TBox.x2 - TBox.x1) > 5) and ((TBox.y2 - TBox.y1) > 10) and ((TBox.x2 - TBox.x1) < 12) then
          if FindColor(x, y, 16645629, TBox.x1, TBox.y1, TBox.x2, TBox.y2) then
          begin
            L := Length(ATPA2) + 1;
            SetLength(ATPA2, L);
            ATPA2[L - 1] := ATPA[i];
            AddIntArray(IntArr, TBox.y1);
            AddIntArray(IntArr2, TBox.y2);
          end;
      end;

      ATPA := [];
      Mode := Modus(IntArr);
      Mode2 := Modus(IntArr2);

      for i := 0 to high(ATPA2) do
      begin
        TBox := GetTPABounds(ATPA2[i]);
        Dif := (TBox.y1 - Mode);
        Dif2 := (TBox.y2 - Mode2);

        if (Dif <= 1) and (Dif >= -1) and (Dif2 <= 1) and (Dif2 >= -1)  then
        begin
          L := Length(ATPA) + 1;
          SetLength(ATPA, L);
          ATPA[L - 1] := ATPA2[i];
        end;
      end;

    end;

    procedure SplitIntoBoxes(var ATPA: T2DPointArray);
    var
      Color, Tolerance: Integer;
      TPA: TPointArray;
    begin
      case CaptchaColor of
        Roze:
        begin
          Color := 16580861;  // <100
          Tolerance := 80;
        end;
        Blauw:
        begin
          Color := 16480304;  //  >50, <75
          Tolerance := 65;
        end;
        Wit:
        begin
          Color := 16711422;  //  > 75, >91, >93, <100
          Tolerance := 94
        end;
        Groen:
        begin
          Color := 64768;  //  > 50
          Tolerance := 60;
        end;
        Rood:
        begin
          Color := 3289852;
          Tolerance := 60;
        end;
      end;

      FindColorsTolerance(TPA, Color, 0, 0, 99, 25, Tolerance);

      SplitTPAWrap(TPA, 1, ATPA);

      if CaptchaColor = Wit then
        EditATPA(ATPA);
      // Background gives trouble in that case, EditATPA() sorts it out.
    end;

    procedure Run;
    var
      ATPA: T2DPointArray;
    begin
      SetTarget;
      GetCorrectColor;
      SetCaptchaOnlyAsTarget;
      AddOnTerminate('FreeRuntimeBMPs');

      SplitIntoBoxes(ATPA);

      SortATPAFromMidPoint(ATPA, point(0, 10));

      Writeln('Result: ' + FindNumbers(ATPA));
    end;

    begin
      Setup;
      Run;
    end.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •