[Biete an] AutoIt Programmentwicklung und Hilfestellung

01/18/2012 19:38 Buffmebuffyou#1
Liebe Community,

Kennt Ihr das nicht auch?
Ihr sucht ewig nach einem Programm, das etwas Bestimmtes kann und Ihr findet es einfach nicht.
Falls Ihr dann doch eines findet, ist es meist zu kompliziert oder zu umfangreich, obwohl
es vielleicht nur eine simple Funktion ausführen müsste.

Andere wiederum versuchen selbst ein solches Programm zu entwickeln, doch manchmal fehlt ihnen
aber die zündende Idee oder es funktioniert einfach nicht so wie es sollte.

Ist Aufgeben hier wirklich die Lösung? - Nein, denn ich helfe Euch.

Ich entwickle für Euch Programme nach Euren Vorstellungen und Wünschen oder helfe Euch bei
euren eigenen Programmideen.

Bei der Entwicklung stehen folgende Punkte für mich im Vordergrund:
  • Einwandfreie Funktion
  • Sauberer Aufbau in der Entwicklung
  • Schöne grafische Gestaltung
  • Übersichtlichkeit
  • Benutzerfreundlichkeit

Falls Ihr Hilfestellungen wünscht biete ich Euch:
  • Korrekturlesung u.a. um kleine Fehler auszubessern
  • Entwicklung individueller Funktionen zum allseitigen Verwenden in AutoIt
  • Fertige Code-Snippets zur Einbindung

Die grafische Gestaltung der Programme wird von Sternachen geleitet.

Auf gute Zusammenarbeit, euer Dawn.

Erreichbarkeit
Dawn: ICQ = 604732969
Sternachen: ICQ = 612567539
01/18/2012 21:32 TimeTooChill#2
machst du das ganze denn auch kostenfrei? :D
Ich hoffe doch ja, denn das soll hier doch ein entwickler "Bereich" sein.

mfg Time
01/18/2012 21:52 Buffmebuffyou#3
Natürlich, ich biete all meine Services grundsätzlich kostenlos an.
Bin nicht so geldgierig wie manch anderer hier. ;P
01/18/2012 22:24 Lawliet#4
Ich programmiere gerade einen Captcha cracker.
Dabei lese ich ein Bild in ein 2D Array ein. Danach werden alle Farbcodes bis auf 3-4 bestimmte gelöscht. Das Array ist nurnoch an bestimmten stellen > 0.
Danach muss ich das Array auf markante Stellen prüfen, also aktuell sieht sowas noch so aus:
Code:
	If Dec($bild[$MidY + 2][$MidX]) <> 0 Then
		ConsoleWrite("1x" & @CRLF)
		If Dec($bild[$MidY + 5][$MidX - 6]) <> 0 Then
			ConsoleWrite("2x" & @CRLF)
			If Dec($bild[$MidY + 5][$MidX - 5]) <> 0 Then
				ConsoleWrite("3x" & @CRLF)
				If Dec($bild[$MidY + 7][$MidX + 3]) <> 0 Then
					ConsoleWrite("4x" & @CRLF)
					If Dec($bild[$MidY + 8][$MidX - 9]) <> 0 Then
						ConsoleWrite("5x" & @CRLF)
						If Dec($bild[$MidY - 5][$MidX + 6]) <> 0 Then
							ConsoleWrite("6x" & @CRLF)
							MsgBox(0, "Captcha", "In diesen Captcha ist ein X an der Stelle: " & $stelle)
							$captcha = "X"
						EndIf
					EndIf
				EndIf
			EndIf
		EndIf
	EndIf
Hast du eine Ahnung, wie man solche If- Schleifen automatisch generieren kann?
Also man hat das Array und das Programm soll auf bestimmte Koordinaten prüfen an denen das Array > 0 ist. Die Koordinate sollte möglichst in der Mitte anderer > 0 Stellen liegen, da es am Rand zu Abweichungen kommen kann.
Ist schwierig, aber es nervt auch für 26 Buchstaben & 10 Zahlen immer 6-10 solcher If- Abfragen zu machen :D
$Mid ist übrigens immer die Mitte des Buchstabens im Array.
MfG Lawliet!

Und ja, ich will mir mit nem Code das coden automatisieren :awesome:
01/18/2012 23:18 lolkop#5
Code:
If $a Then
    If $b Then
        ...
    EndIf
EndIf
sollte auf jeden fall ersetzt werden durch:
Code:
If $a And $b Then
    ...
EndIf
Edit:
davon abgesehen ist in autoit "0" = "False".
==> "<> 0" = "Not 0" = "Not False" = "True" ==> "If Dec($a) <> 0 Then" = "If Dec($a) Then"
sollte es sich bei $a ohnehin um einen hex oder dec wert handeln, so reicht auch einfach: "If $a Then"

alles in anführungszeichen gesetzte soll hierbei syntax darstellen und nicht etwa strings.
01/18/2012 23:47 Lawliet#6
Quote:
Originally Posted by lolkop View Post
Code:
If $a Then
    If $b Then
        ...
    EndIf
EndIf
sollte auf jeden fall ersetzt werden durch:
Code:
If $a And $b Then
    ...
EndIf
Edit:
davon abgesehen ist in autoit "0" = "False".
==> "<> 0" = "Not 0" = "Not False" = "True" ==> "If Dec($a) <> 0 Then" = "If Dec($a) Then"
sollte es sich bei $a ohnehin um einen hex oder dec wert handeln, so reicht auch einfach: "If $a Then"

alles in anführungszeichen gesetzte soll hierbei syntax darstellen und nicht etwa strings.
Ich brauch aber nach jeder If- Abfrage das "ConsoleWrite" ;) Und evl. hast du mich falsch verstanden :P Aber der Code funktioniert einwandfrei, nur ich würde ihn gerne automatisch generieren lassen, da es verdammt viel Arbeit ist, für jeden Buchstaben die 6-10 zu prüfenden Punkte einzutragen. Aber danke für deinen Tipp bezüglich der Schreibweise :)
01/18/2012 23:54 KDeluxe#7
Kannst du sie nicht einfach in einer For-Schleife durchgehen? Zum Beispiel indem du ein zweidimensionales Array erstellst, indem die zu addierenden bzw. subtrahierenden X und Y Zahlen enthalten sind.
01/18/2012 23:57 MoepMeep#8
Schreib dir doch einfach ein kleines Programm, was genau diesen Code für dich generiert. Die Punkte musst du natürlich trotzdem auf irgendeine weise eingeben.
01/19/2012 00:28 lolkop#9
Quote:
Originally Posted by Lawliet! View Post
Ich brauch aber nach jeder If- Abfrage das "ConsoleWrite" ;) Und evl. hast du mich falsch verstanden :P Aber der Code funktioniert einwandfrei, nur ich würde ihn gerne automatisch generieren lassen, da es verdammt viel Arbeit ist, für jeden Buchstaben die 6-10 zu prüfenden Punkte einzutragen. Aber danke für deinen Tipp bezüglich der Schreibweise :)
das sollten auch nur tipps sein.

selbst die consolewrites könntest du als "logische operation" mit in die abfrage einbinden, wenn du dir selbst eine function erstellst, welche einen bool wert ausgibt.

bsp:
Code:
Dim $a=True, $b=True

If $a And print('$a') And $b And print('$b') Then
	print('Then')
EndIf

Func print($string)
	ConsoleWrite($string&@CRLF)
	Return True
EndFunc
letztendlich hat dein ganzes script allerdings absolut garnichts mit einem "captchabreaker" zu tun :s. für das wirkliche brechen von echten captchas wäre sehr viel logik und auch mathematik notwenig.
01/19/2012 07:07 Buffmebuffyou#10
Da hat mir jemand die Arbeit abgenommen. xP
Wie meine Vorposter bereits geschrieben hatten, waeren Funktionen mit Parametern am sinnvollsten. Allerdings erscheint mir deine Vorgehensweise hier etwas komisch. Ich guck mir das demnaechst genauer an.
01/19/2012 11:51 Lawliet#11
Es ist ein sehr einfaches Captcha ;)
[Only registered and activated users can see links. Click Here To Register...]
Dabei lese ich das ganze Bild in ein Array ein, lösche (wie gesagt) alle Farben bis auf die, die eben in den Buchstaben enthalten sind. Dann ermittel ich die Mitte jedes Buchstabens und davon ausgehend prüfe ich dann auf Punkte im Array, die entweder True (<> 0) oder False (=0) sind. Ich löse also das Captcha. Aber ich will dir deinen Thread ja nicht versauen :p Ich würde dir mein Problem nochmal erklären. Dann aber besser über nen Messenger.
lg
01/19/2012 13:08 lolkop#12
ich würde den schritt mit dem entfernen überspringen.

da die schrift immer exact in der bild mitte steht, würde ich genau wie du einfach von da aus loslaufen, und schauen, wann ich das erste mal auf ein zeichen stoße.

quasi in einer For schleife von links nach rechts durchlaufen. da die zeichen scheinbar immer identisch aufgebaut sind, kannst du dir tatsächlich eine solche abfrage aufbauen. allerdings braucht man hierfür keine consolewrites o0
01/19/2012 13:22 Lawliet#13
Ja, ich suche erst alle Anfänge & Enden der Zeichen ;) Die ConsoleWrites brauch ich, um zu sehen, wenn ein anderer Buchstabe kritisch viele Abfragen zu einem Buchstaben erfolgreich durchläuft (also nur zu prüfzwecken). Wenn das Programm einmal fertig ist, kann ich deine Methode natürlich noch anwenden.
Das Problem gibts z.B. bei Zeichen wie A/4 O/0 K/X usw.
Naja, ich werd die Schleifen wohl doch manuell schreiben müssen :)
01/19/2012 14:49 lolkop#14
du könntest auch andere lösungsansätze probieren, welche dir deutlich die arbeit erleichtern könnten.

eine idee wäre beispielsweise eine funktion zu schreiben, welche die anzahl der zusammenhängenden blauen pixel speichert. damit könnte man sich schnell ein "lernendes" programm schreiben, welches immer wieder captchas empfängt, wo du dann die richtige combo eingibst, und die jeweiligen anzahlen der zusammenhängenden pixel in einer datei gespeichert werden. sobald du das ganze so 5-10 mal mit jedem buchstabe gemacht hast, sollte das programm dann selbst in der lage sein alle captachs zu lösen.
01/19/2012 15:33 Lawliet#15
Ich habs jetzt geschafft, eine Funktion zu schreiben, die mir den Code erzeugt :
Code:
Func _CodeCreate($Anfang, $End, $Mid, $oldarry)
	$if = 0
	$i = 0
	$x = 0
	For $iX = $Anfang To $End Step 1
		For $iY = 0 To 49 Step 1
			If Dec($oldarry[$iY][$iX]) <> 0 Then
				If Dec($oldarry[$iY][$iX - 1]) <> 0 Then
					If Dec($oldarry[$iY][$iX + 1]) <> 0 Then
						MsgBox(0, "Efs", "Y: " & $iY & " X: " & $iX & "MID: " & $Mid & "l" & 25)
						FileWrite("C:\Code.txt", "If Dec($bild[$MidY +" & $iY - 25 & "][$MidX +" & $iX - $Mid & "]) <> 0 Then" & @CRLF)
						$if += 1
					EndIf
				EndIf
			EndIf
			$i += 1
		Next
		$i = 0
		$x += 1
	Next
	FileWrite("C:\Code.txt", 'MsgBox(0, "Captcha", "In diesen Captcha ist eine - an der Stelle: " & $stelle)' & @CRLF & '$captcha = "-"' & @CRLF)
	For $k = 1 To $if Step 1
		FileWrite("C:\Code.txt", 'Endif' & @CRLF)
	Next
EndFunc