Werbung
Thema geschlossen
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 12 von 20
  1. #1


    Karma
    Karma
    0
    Beiträge
    5
    IG-Credits
    0
    Thanks
    0
    Registriert seit
    16.10.2008

    Standard Code zum Captcha knacken

    Hey,
    ich spiele Pennergame schon seit etwas längerer Zeit, jedoch nicht lange genug um bei den Beta-Spielern mitzuhalten. Da ich nicht die ganze Zeit vor dem PC hocken kann und trotzdem Geld verdienen möchte, musste ein Pfandflaschensammler her, und naja, hier ist der Code zum Knacken des Captchas

    Geschrieben in C und benutzt die GD-Bibliothek. Bei meinem letzten Test konnten so etwa 90% der Captchas geknackt werden, obwohl man den Code noch sehr überarbeiten könnte

    Ich habe woanders schonmal von dem Pennermanager gelesen und dass der Programmierer auch aufgehört hat, das Programm weiterzuentwickeln. Mit was genau könnten die Betreiber von Pennergame mir drohen, wenn ich auch einen Bot veröffentliche?

    captcha.h
    Code:
    #ifndef CAPTCHA_H
    #define CAPTCHA_H
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include <gd.h>
    
    int captcha_break(const char *filename, int *x, int *y);
    
    #endif
    
    captcha.c
    Code:
    #include "captcha.h"
    
    int saveImage(const char *filename, gdImagePtr image)
    {
    	FILE *fd = fopen(filename, "wb");
    	if(fd == NULL) return -1;
    	gdImagePng(image, fd);
    	fclose(fd);
    	return 0;
    }
    
    int checkCircle(gdImagePtr image, int x, int y, int positiveColor, int resultColor)
    {
    	float minRadius = 14.5;
    	float maxRadius = 15.5;
    	float radius;
    	float radiusStep = (maxRadius - minRadius) / 3;
    	int angle;
    	int px, py;
    	int angles[360];
    	int c;
    	int error = 0;
    
    	int max_x = gdImageSX(image);
    	int max_y = gdImageSY(image);
    
    	for(angle = 0; angle < 360; angle++)
    	{
    		angles[angle] = 0;
    		for(radius = minRadius; radius <= maxRadius; radius += radiusStep)
    		{
    			px = x + radius * cos(angle * M_PI / 180.0);
    			py = y + radius * sin(angle * M_PI / 180.0);
    
    			if(px < 0) continue;
    			else if(py < 0) continue;
    			else if(px >= max_x) continue;
    			else if(py >= max_y) continue;
    
    			c = gdImageGetPixel(image, px, py);
    			if(c == positiveColor) angles[angle]++;
    		}
    		if(angles[angle] == 0) error++;
    		if(error > 100) return -1;
    	}
    
    	if(error > 70)
    	{
    		gdImageSetPixel(image, x, y, resultColor);
    		//printf(" Solution: %i:%i %i\n", x, y, resultColor);
    		return 0;
    	}
    	return -1;
    }
    
    int scanImage(gdImagePtr image, int *px, int *py)
    {
    	int max_x = gdImageSX(image) - 15;
    	int max_y = gdImageSY(image) - 15;
    	int x, y;
    	int white = gdImageColorResolve(image, 255, 255, 255);
    	int green = gdImageColorResolve(image, 0, 255, 0);
    	for(x = 15; x < max_x; x++)
    	{
    		for(y = 15; y < max_y; y++)
    		{
    			if(checkCircle(image, x, y, white, green) == 0)
    			{
    				*px = x;
    				*py = y;
    				return 0;
    			}
    		}
    	}
    	return 1;
    }
    
    int cleanImage(const char *filename, gdImagePtr *imagePtr)
    {
    	gdImagePtr image = NULL, cleanImage = NULL;
    	FILE *fd;
    	int black, white, green;
    	int c, r, g, b;
    	int x, y;
    
    	fd = fopen(filename, "rb");
    	if(fd == NULL) return -1;
    
    	image = gdImageCreateFromJpeg(fd);
    	fclose(fd);
    	if(image == NULL) return -2;
    
    	cleanImage = gdImageCreate(gdImageSX(image), gdImageSY(image));
    	if(cleanImage == NULL)
    	{
    		gdImageDestroy(image);
    		return -3;
    	}
    
    	white = gdImageColorAllocate(cleanImage, 255, 255, 255);
    	black = gdImageColorAllocate(cleanImage, 0, 0, 0);
    	green = gdImageColorAllocate(cleanImage, 0, 255, 0);
    
    	gdImageFilledRectangle(cleanImage, 0, 0, gdImageSX(cleanImage) - 1, gdImageSY(cleanImage) - 1, black);
    
    	for(x = 0; x < gdImageSX(image); x++)
    	{
    		for(y = 0; y < gdImageSY(image); y++)
    		{
    			c = gdImageGetPixel(image, x, y);
    			r = gdImageRed(image, c);
    			g = gdImageGreen(image, c);
    			b = gdImageBlue(image, c);
    			if(r >= 200 && g >= 200 && b >= 200)
    			{
    				gdImageSetPixel(cleanImage, x, y, white);
    			}
    		}
    	}
    	gdImageDestroy(image);
    	*imagePtr = cleanImage;
    	return 0;
    }
    
    int captcha_break(const char *filename, int *x, int *y)
    {
    	gdImagePtr image;
    	int rc = cleanImage(filename, &image);
    	if(rc == -1) return -2;
    	else if(rc == -2) return -3;
    	else if(rc == -3) return -4;
    
    	*x = 0;
    	*y = 0;
    
    	rc = scanImage(image, x, y);
    	//saveImage("captcha.png", image);
    	gdImageDestroy(image);
    	if(rc) return -1;
    	return 0;
    }
    

  2. #2


    Karma
    Karma
    0
    Beiträge
    1
    IG-Credits
    0
    Thanks
    1
    Registriert seit
    13.10.2008

    Standard

    was ist ein captcha

  3. #3
    Avatar von Labello

    Karma
    Karma
    0
    Beiträge
    148
    IG-Credits
    0
    Thanks
    8
    Registriert seit
    05.10.2008

    Standard

    Zitat Zitat von hamsican Beitrag anzeigen
    was ist ein captcha
    Das ist lass sagen.. der "Sicherheitscode" das kleine Fenster das immer kommt und du in den Kreis drücken musst ^^ das ist ein Captcha.

    4chan is not dead yet !



    Labello - For Fucking Sake!



  4. #4
    GEJKNJKNJBJKNBFM
    Gast

    Standard

    mit garnichts können die dir drohen

  5. #5


    Karma
    Karma
    0
    Beiträge
    8
    IG-Credits
    0
    Thanks
    1
    Registriert seit
    06.09.2008

    Standard

    Die Auszüge, die ich unten Zitiere, stammen von einem Anwalt, der ua im Bereich Internetrecht tätig ist, sie beziehen sich auf den konkreten Anlass Pennermanager/Strafbarkeit:

    [...]
    halte ich ein Urheberrechtsverletzung hier nicht für unproblematisch.
    2. [...] Ein Risiko im Rahmen des weiteren Vertriebes ist sicherlich nicht auszuschließen, da Ihre Software evtl. widerrechtliche Handlungen unterstützt und damit wettbewerbswidrig ist.
    3. (Hier wurde gefragt, ob man rechtlich angreifbar wäre, würde man den Pennermanager weiterentwickeln und vertreiben, Anm. d. Verf.)
    Sicherlich könnte man an eine derartige Klage denken. Ob diese im Urheberrechtlichen Bereich angesiedelt ist, halte ich zwar für fraglich. Hingegen kommen wettbewerbsrechtliche Ansprüche in Betracht, die durchaus Aussicht auf Erfolg haben könnten.
    4. Ansprüche werden wohl kaum auf die AGBs direkt gestützt werden. Allerdings werden diese insoweit Bedeutung haben, als dass Ihr Programm gerade zur Umgehung dieser dient.
    Das nur als Tipp.

  6. #6


    Karma
    Karma
    0
    Beiträge
    5
    IG-Credits
    0
    Thanks
    0
    Registriert seit
    16.10.2008

    Standard

    Vielen Dank für die Auskunft, ph_n. Bevor es zu Problemen kommt, fange ich besser garnicht erst damit an.

  7. #7


    Karma
    Karma
    0
    Beiträge
    20
    IG-Credits
    0
    Thanks
    5
    Registriert seit
    14.09.2008

    Standard

    wie kann man des machen

  8. #8
    Avatar von Winned

    Karma Karma Karma Karma Karma Karma Karma Karma Karma
    Karma
    12
    Beiträge
    1,632
    IG-Credits
    1
    Thanks
    213
    Registriert seit
    01.07.2008

    Standard

    Nunja, du musst den Code in ein in C geschriebenes Programm einfügen und halt noch andere Sachen, wie weiterbilden etc. in das Programm schreiben.
    Wie du das machst bedarf viel an Übung und guten Programmierkenntnissen, sowie logischem Denken.

    MfG
    Wenn Dir mein Beitrag gefallen hat klicke doch bitte auf das THANKS (unten Rechts) oder auf das + unter meinem Namen.


    ICQ: 415-787-201
    (Ich verwende keine andere ICQ Nummer für ingamers.de!)


    Interesse daran ein echter Gangster zu werden? Klick hier!



  9. #9


    Karma
    Karma
    0
    Beiträge
    19
    IG-Credits
    0
    Thanks
    0
    Registriert seit
    11.09.2008

    Standard

    Boa, warum ihr immer so viel Angst wegen irgendwelcher Klagen habt. Wenn ihr nicht gerade euen Namen und eure Adresse in Rot auf das Programm klebt, kann euch garkeiner was. Keiner kann nachweisen, von wem das Proggi kommt. Von miraus können wir gern ein Forum gründen auf einem freehoster, auf dem wir in einer privatsection zusammen solch ein Tool erstellen. Fals es mal fertig wird, läd man es bei rapidshare hoch und verlinkt es über securelink dort hin. Als autor kommen nur Synonyme rein, fertig. Wenn ich nicht so übelst faul wäre, hätt ich es schon gemacht. Ein Forum kann ich gern zur Verfügung stellen. Wie man eine Webseite steuert, weis ich. Ist laso auch kein Prob. So können wir das Ding in VB oder so coden. Es muss halt nur ein Plan her ^^. Wie man zuverlässig den Capchacode raus finden weis ph_n eigendlich schon. Ansonnsten überleg ich mir gern einen algorithmus, der das macht.

    PS: ich hab mit einem Reflector den Code von PH_N wieder raus bekommen. nur leider ist er nicht gerade sehr übersichtlich. Das liegt aber nicht an ph_n, sondern an den reflector, der den warscheinlich Bytecode oder was auch immer zeile für Zeile zurück übersetzt hat.
    Je eher du stirbst, umso länger bist du tod

  10. #10


    Karma
    Karma
    0
    Beiträge
    5
    IG-Credits
    0
    Thanks
    0
    Registriert seit
    16.10.2008

    Standard

    Nimm doch einfach meinen Code, bis jetzt hat er immer gut funktioniert Das Umschreiben in VB sollte auch recht schnell gehen, wenn man weiß, wie man Bilder laden und verändern kann.

  11. #11


    Karma
    Karma
    0
    Beiträge
    21
    IG-Credits
    0
    Thanks
    0
    Registriert seit
    24.09.2008

    Standard

    VB.Net kann ich
    Nur C nicht!
    Naja...Nachweisen kann man das schon,da zimlich viele Daten gespeichert werden^^

  12. #12


    Karma
    Karma
    0
    Beiträge
    3
    IG-Credits
    0
    Thanks
    2
    Registriert seit
    26.08.2008

    Standard

    dann muss man das alles von nem internetkaffe machen mit bahrzahlung und einem das keine überwachungscams hat

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein