Autoit Captcha ImageSearch

10/06/2012 20:20 Ιlluminati#1
Hey ich mach mich gerade an einen Captcha Cracker für die Registration von Nexon.

Die Buchstaben haben Immer die Gleiche Form.
Ich habe bereits ein Script gemacht das mir vom Captcha nur die Buchstaben rausfiltert.

Nun müsste ich aber mit Imagesearch oder so jeden buchstaben absuchen um dann zu filtern in welcher reihenfolge welcher buchstabe ist.

Jemand eine Idee?

Hier mein Bisheriges Script.
Ihr könnt es ja mal ausführen um zu sehen wie das Captcha aussieht.

PHP Code:
#include <INet.au3>
#include <GDIPlus.au3>
#include <String.au3>
#include <Array.au3>
$Farben "662bff_0000ff_3380cc_338099_0055cc_3300ff_9955ff_6600ff_0000cc_0055ff_6655ff_002bcc_992bff_3355cc_002bff_332bff_"



$sHTML _INetGetSource("http://passport.nexoneu.com/Registration/Signup.aspx?nexoneuTheme=NexonEU")
$lol _StringBetween($sHTML'<img id="imgPic" src="/img/''" border="0" />')
InetGet("http://passport.nexoneu.com/img/"&$lol[0], "Captcha.gif")

_GDIPlus_Startup()
$hImage _GDIPlus_BitmapCreateFromFile(@ScriptDir "\Captcha.gif")
$iWidth _GDIPlus_ImageGetWidth($hImage)
$iHeight _GDIPlus_ImageGetHeight($hImage)
Dim $aPic[$iWidth][$iHeight]
For 
$iYPos 0 To $iHeight-1
    
For $iXPos 0 To $iWidth-1
        $aRGB 
Hex(_GDIPlus_GetPixel($hImage$iXPos$iYPos), 6)
        
         If 
StringInStr($Farben$aRGB&"_"Then
            $aPic
[$iXPos][$iYPos] = 1
         
Else
            
$aPic[$iXPos][$iYPos] = 0
         
EndIf
         
    
Next
Next
For $iYPos 0 To $iHeight-1
   
For $iXPos 0 To $iWidth-1
      
If $aPic[$iXPos][$iYPos] = 1 Then
         _GDIPlus_SetPixel
($hImage$iXPos$iYPos0x000000)
      Else
         
_GDIPlus_SetPixel($hImage$iXPos$iYPos0xffffff)
      EndIf
   
Next
Next 

_GDIPlus_ImageSaveToFile
($hImage, @ScriptDir "\Solve.bmp")
_GDIPlus_Shutdown()

Func _GDIPlus_GetPixel($hBitmap$iX$iY)
    
Local $result DllCall($ghGDIPDLL"int""GdipBitmapGetPixel""ptr"$hBitmap"int"$iX"int"$iY"dword*"0)
    If @
error Then Return SetError(100)
    Return 
SetError($result[0], 1$result[4])
EndFunc

Func _GDIPlus_SetPixel
($hBitmap$iX$iY$color)
    
Local $result DllCall($ghGDIPDLL"int""GdipBitmapSetPixel""ptr"$hBitmap"int"$iX"int"$iY"dword"$color)
    If @
error Then Return SetError(100)
    Return 
SetError($result[0], 1$result[4])
EndFunc 
10/06/2012 20:50 Lawliet#2
Ich hab das Teil schon fertig hier, wenn du es willst kannst du dich bei mir melden.
Läuft allerdings über GDI+ und im Hintergrund.