Anti Hack Bot

03/23/2009 22:02 jns991#1
ich wusste net wos wirklich hingehört deswegen hab ichs einfach mal hier reingeschrieben.


Gibt es eine möglichkeit bei diesem logo mit einem Bot das THC zeichen anklicken zu lassen? das is halt son anti hack bot... und den will ich halt mitnem bot austricksen. wäre cool wenn sich das ma einer angucken könnte ;)

mfh
03/23/2009 22:08 Adroxxx#2
Ist das immer an der selben stelle? Wenn ja dann einfach die pos angeben, wenn es immer eine andere stelle ist, wird es schwer bis unmöglich - für dich -.

Müsstest es über ORC machen, aber ich sag schonmal, mit AutoIt wirste das nicht hinbekommen.
03/23/2009 22:51 jns991#3
es ist immer an einer unterschiedlichen stelle, manchmal verdeckt ein anderes zeichen das auch ein bisschen...
03/23/2009 22:58 Adroxxx#4
hm, dann würde ich mir keine großen hoffnungen machen. ist dann sehr schwer bis gar nicht realisierbar.
03/24/2009 20:05 DamageBreaker#5
möglich ja aber sehr sehr sehr sehr.......schwer


man müsste nen art filter bauen der das bild filtert und die buchstaben raussucht aber da sie auch überdeckt werden hat adroxxx recht
03/25/2009 02:50 lustylol#6
German? dont understand
03/25/2009 17:26 USB Schnittstelle#7
Quote:
Originally Posted by lustylol View Post
German? dont understand
[Only registered and activated users can see links. Click Here To Register...]
03/26/2009 14:20 jns991#8
kann das hier irgendwer? bzw würde das mal wer umsonst probieren hinzukriegen? wäre voll geil :D
03/28/2009 14:49 Gertos#9
Eine wichtige frage ist of die Zeichen immer die gleiche Größe haben.
Dann sollte das nicht so schwer sein.

Wenn die größe variiert und die Zeichen noch unterschidliche ausrichtungen haben ( e.g. gedreht , gestaucht , andere Font , ... ) wird es richtig schwer.


Hier mal etwas C# Code wie man sehr schnell ( für C# ) ein Bild in einem Bild suchen kann.
Code:
        public static bool SucheBildimBild(Bitmap grosseBild, Bitmap SuchBild, ref int Treffer_x, ref int Treffer_y)
        {

            Rectangle rec_grosseBild = new Rectangle(0, 0, grosseBild.Width, grosseBild.Height);
            Rectangle rec_SuchBild = new Rectangle(0, 0, SuchBild.Width, SuchBild.Height);

            BitmapData grosseBild_data = grosseBild.LockBits(rec_grosseBild, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            BitmapData SuchBild_data = SuchBild.LockBits(rec_SuchBild, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);


            unsafe
            {
                int remain1 = grosseBild_data.Stride - grosseBild_data.Width * 3;
                int remain2 = SuchBild_data.Stride - SuchBild_data.Width * 3;

                byte* ptr1 = (byte*)grosseBild_data.Scan0;
                byte* ptr2 = (byte*)SuchBild_data.Scan0;

                for (int y = 0; y < rec_grosseBild.Height; y++)
                {
                    for (int x = 0; x < rec_grosseBild.Width * 3; x++)
                    {

                        if (ptr1[0] == ptr2[0])
                        {
                            // Der erste Treffer wurde gefunden 
                            // jetzt werden die restlichen Zeichen verglichen

                            byte* ptr3 = ptr1;
                            byte* ptr4 = ptr2;
                            for (int y2 = 0; y2 < SuchBild.Height; y2++)
                            {
                                for (int x2 = 0; x2 < SuchBild.Width * 3; x2++)
                                {
                                    if (ptr3[0] != ptr4[0])
                                    {
                                        goto endofLoop;         // oh no, ein goto  ... aus Geschwindigkeitsgründen ist das hier jedoch Sinnvoll.
                                    }
                                    ptr3++;
                                    ptr4++;
                                }
                                ptr3 = ptr1 + grosseBild_data.Stride * (y2 + 1);        // Genau eine Zeile nach unten springen
                                ptr4 += remain2;
                            }
                            // Wenn das Prog bis hier kommt, hatten wir einen Treffer
                            Treffer_x = x / 3;
                            Treffer_y = y;
                            return true;

                        }
                    endofLoop:  // Sprungmarke, wenn es keinen Treffer gab ... Weiter mit dem nächsten pixel


                        ptr1++;
                    }
                    ptr1 += remain1;
                }
            }

            grosseBild.UnlockBits(grosseBild_data);
            SuchBild.UnlockBits(SuchBild_data);

            return false;
        }
Hierbei könnte man jetzt noch eine extra Logik einbauen , um überlappungen auch noch zu tollerieren. e.g. eine übereinstimmung von 75% langt.
Dabei solltest du aber berücksichtigen das die Übereinstimmung nicht nur im Hintergrund ist ;)
03/30/2009 15:01 jns991#10
Das zeichen ist immer gleich groß, doch manchmal verschiebt sich das hinter ein anderes zeichen.
04/06/2009 03:28 jns991#11
push?!!!
04/06/2009 17:58 DamageBreaker#12
Quote:
Originally Posted by jns991 View Post
push?!!!
warum push das wär doch viel zu schwer also hoff ich das geclosed wird
04/07/2009 10:46 USB Schnittstelle#13
Da keiner vorhat dir vorgekautes in den Mund zu legen mach ich hier mal zu.