Bot in Python wie AutoIT?!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Mahlzeit!

Also ich wollt mich als nächstes mal darin versuchen einen Bot zu schreiben,
sowas in der Richtung wie AutoIT falls das einer kennt.

Nun wollt ich ma wissen, ob sich hier vlt jemand tiefgründig auskennt vlt und Tips geben könnte?!
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Kenn' ich nicht. Erzähl doch mal, worum es da geht/was du anpeilst.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Was ich anpeile ist, ein Bot in Python (wahrscheinlich mit bissl C) zu schreiben, der die Aktivität des Users simuliert.

Ausgestattet mit ner GUI, kann man dann Routinen für Spiele schreiben, welche das zeitraubende leveln erleichtern.
AutoIt macht das ähnlich, man kann Scripte schreiben die eben
die Tasten und Maus-Events simulieren.
Leider funktioniert das nicht bei jedem Game, also dacht ich es wär ja ma ein Versuch wert das in python zu probieren.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Also kein Web-, IRC-, Jabber-, sondern ein Bot für Spiele? Der muss natürlich aufgrund der sehr unterschiedlichen Implementierungen genau das Protokoll des Spiels beherrschen - und das liegt in der Regel nicht offen. Davon abgesehen, dass die Lizenzbedingungen gerade bei MMORPGs sowas nicht gestatten.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Nahhh!
Wozu brauch ich das Protokoll wenn ich doch lediglich die Tasten- und Mausevents simuliere?
Das Programm (Spiel) bekommt ja diese Events übergeben von Treibern, demnach kann man doch das ganze hooken, oder nicht ?
Und ja laut Lizenzbedingung ist das denen nicht recht,
aber mich interessiert das herzlich wenig.
Ja, entschuldigung für diese Ansicht, diese habe ich leider in dieser Hinsicht.
Solche mutwillig gesetzten Barrieren möchte ich durchbrechen, is das so schlimm?
Die zeitraubenden Spielinhalte will ich einfach automatisieren, um nebenbei auch noch lesen, lernen und programmieren zu können.

Um die eigentlich intressanten Inhalte genießen zu können, ein Nicht-Zocker mag dafür wenig Verständnis, ist mir auch klar.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

skypa hat geschrieben:Nahhh!
Wozu brauch ich das Protokoll wenn ich doch lediglich die Tasten- und Mausevents simuliere?
Das Programm (Spiel) bekommt ja diese Events übergeben von Treibern, demnach kann man doch das ganze hooken, oder nicht ?
Damit könntest du aber nur sehr dumme Bots machen, da sie nicht auf ihre Umgebung reagieren können.
Für solche Aufgaben gibts aber afaik schon genug makrotools, da würde es sich vielleicht lohnen, die zu nutzen, anstatt das Rad neuzuerfinden.
Ja, entschuldigung für diese Ansicht, diese habe ich leider in dieser Hinsicht.
entschuldige dich nicht, wenn du dich nicht schuldig fühlst, und versteck dich nicht hinter "leider".
Solche mutwillig gesetzten Barrieren möchte ich durchbrechen, is das so schlimm?
Jede Spielregel ist mutwillig. Solche regeln zu durchbrechen, um sich Vorteile zu verschaffen nennt sich mogeln, oder neudeutsch "cheaten". Dass das auf wenig gegenliebe stößt, sollte dich doch nicht überraschen, oder?
Die zeitraubenden Spielinhalte will ich einfach automatisieren, um nebenbei auch noch lesen, lernen und programmieren zu können.
Bin vielleicht kein Onlinegamer, aber wenn das Spiel so langweilig ist, warum spielst du es dann (und zahlst wohlmöglich noch dafür)?
Um die eigentlich intressanten Inhalte genießen zu können, ein Nicht-Zocker mag dafür wenig Verständnis, ist mir auch klar.
Gerade die Zocker dürften dafür weniger Verständnis haben, vermute ich.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Ich habs kommen sehen XD

Hast ja recht, zumindest bei den ersten Punkten.
Ja neuerfinden muss ich es nicht, aber find das es für mich halt ein interessantes Projekt ist, was ich wohl auch weiterverfolgen werde.

Und nein es ist nicht langweilig, ich finds vorallem interessant weil man mit Menschen aus Amerika, Schweden und sonst woher in Kontakt treten kann.

Das ist mitunter sehr intressant, und übt vorallem das englische.
Und nein ich zahl nix dafür, bin noch nicht ausgelernt, von daher kauf ich mir auch keine produkte sondern...

u know?

Vorhandene Makrotools zu benutzen bringt nix weil die von solch tollen Programm wie Hackshield unterbunden werden.

Skriptsprachen scheinen da doch Vorteile von Haus aus mitzubringen.

Und die meisten Zocker sind genau diejenigen die das entwickelte Tool letzten Endes nutzen, auf neudeutsch auch Leecher genannt.

Das hat man als paradebeispiel sehen können bei Diablo2 damals.
Massenbanns weil Warden (ähnlich zu Hackshield) cheats entdeckte.
War wohl nix mit der Überzahl an moralisch korrekten Spieler ;)
BlackJack

Ob da nun eine Überzahl moralischer Spieler sind oder nicht, ändert nichts daran, dass so etwas den Spielspass der ehrlichen Spieler zerstört.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

skypa hat geschrieben:Vorhandene Makrotools zu benutzen bringt nix weil die von solch tollen Programm wie Hackshield unterbunden werden.
weist du, wie hackshield das unterbindet? denn vermutlich wird das nicht einfach nur die Namen von ein paar Tools kennen und die abwürgen, sondern auf einer tieferen Ebene ansetzen, so dass es dein Tool auch unterbinden würde.
Um da effektiv zu sein, müsstest du vmtl erstmal Hackshield analysieren
Skriptsprachen scheinen da doch Vorteile von Haus aus mitzubringen.
welche wären das?
Das hat man als paradebeispiel sehen können bei Diablo2 damals.
Massenbanns weil Warden (ähnlich zu Hackshield) cheats entdeckte.
War wohl nix mit der Überzahl an moralisch korrekten Spieler ;)
Du kennst den Spruch mit den Fliegen und der Scheisse?
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Nein ich weiß nicht wie Hackshield das unterbindet.
Ja ich vermute da was, nein der C-Code ist noch nicht fertig der das analysieren soll.

Welche Sprachen? Python? Perl? Ruby?
Ich kann nur die ersten beiden so o la la.

Nein ich kenn den Spruch nicht, bin ja auch kein Sprücheklopfer generell ;)

Und nein, die ehrlichen Spieler leiden nicht darunter, Sie profitieren von denen die etwas auf die Beine stellen.
Um das mal zu verdeutlichen:

Bei Diablo2 waren es sogenannte Maphacks, die einen den Weg zeigten, dadurch entstanden schnelle Runs, in denen zu 70% die ehrlichen Spieler waren und die Exp leechten.

Im Falle des Games worauf ich es abgesehen habe, profitieren die ehrlichen Spieler auch wieder.

Aber wenn man Nicht-Online-Gamer ist, kann man dann natürlich schnell mal was an den Haaren herbeiziehen wie "Die ehrlichen Spieler leiden darunter".

Ist klar....

Back to Topic vlt endlich mal wieder?!
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Aber wenn man Nicht-Online-Gamer ist, kann man dann natürlich schnell mal was an den Haaren herbeiziehen wie "Die ehrlichen Spieler leiden darunter".
Ich BIN onlinegamer, ich spiel nur keine MMORPGS. Und dass, ganz abstrakt formuliert, sich mittels nicht regelkonformer Mittel Vorteile zu verschaffen nicht im Endeffekt denen, die diese Mittel nicht nutzen schadet, konntest und wirst du ziemlich sicher auch nicht zeigen können.
An den Haaren herbeigezogen halte ich da eher diese Selbstbetrügereien á la "die ehrlichen Spieler Profitieren von denen, die was auf die Beine stellen". Dein Beispiel zeigt eher, dass die Spieler vor der Wahl stehen, bei der Betrügerei mitzumachen (profitieren) oder schlechter dazustehen (schaden erleiden).
Ich spiele Warcraft:FT, und die ersten 3 Minuten sind auch denkbar langweilig und gleich, trotzdem würd ich mir nie einreden, dass ich nicht mogele, wenn ich meinen Basisaufbau skripten würde.
skypa hat geschrieben:Welche Sprachen? Python? Perl? Ruby?
Ich kann nur die ersten beiden so o la la.
nein, das sollte keine Lehrerhafte Abfrage nach Skriptsprachen sein, ich wollte wissen, welche Vorteile du bei Skriptsprachen vermutest.
Ich glaube nämlich nicht, dass das Programm einfach naiv nach konkreten Programmen sucht (und deins nicht kennt), sondern eher guckt, ob die Mausbewegungen vom Windowmanager oder vom Treiber kommen, o.ä. Im prinzip wie ein Virenscanner, der ja auch nichts großartig anderes macht, als Schadsoftware zu finden (nur in diesem Fall halt für jemand anderen).
Was den Effekt haben dürfte, dass dein Programm ebenfalls nicht funktioniern würde.
Eine erste Abschätzung, was hackshield kann, kann man vmtl daran treffen, was für Rechte es zum laufen/installieren braucht.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Warum sollten Spieler vor der Wahl stehen?
Ich sagte doch lediglich das diese, in meinen Augen mit profitieren,
das hat für mich nix mit Selbstbetrügereien zu tun.

Im Falle von Warcraft:FT würd ich auch kein Script nutzen, es ist gut so wie es ist, und bockt auf jeder LAN-Party :P

Nun, um es zu konkretisieren:
AutoIt funktioniert bei dem Game, trotz Hackshield.
Was stellt man dabei nun fest? GENAU!
Nicht überall wo Hackshield drauf steht, ist auch Hackshield drin!
Dasgleiche kannste beobachten bei Hack-Safe Sites im Internet.
Auch da wo Hack-Safe "draufstand", war nicht unbedingt Hack-Safe drin.
Was widerum in einem, auf neudeutsch, sogenannten Defacement endete.
Und das empfinde ich auch als daneben bzw unerhört.

Hab grad keine Links um dir dies auch zu unter mauern.
Demnach ist es auch bifi (=Wurst), ob es Admin Rechte hat oder nicht.
Was es letzten Endes überwacht scheint anscheinend nicht das Optimum zu sein.
Und Vorteile kann ich dir nicht in Worte fassen, mir ist nur aufgefallen
das erstellte Bots z.B. OpenKore (= in Perl programmierter Bot für Ragnarok)

"ohne Probleme" das tun was Sie sollen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mal ne generelle Frage: Wie funzen denn solche Bots? Ich meine man kann ja schlecht den Inhalt des Spiel-Screens analysieren, wo welches Item liegt usw. (Das menschliche Auge + Hirn können das - ein Script sicherlich nicht so ohne weitere und dann noch in Echtzeit!)

Und um Bedienelemente anklicken zu lassen, müßte man ja deren genaue Position auf dem Schrim kennen - bei unterschiedlichen Auflösungen usw. sicherlich nicht wirklich einfach. Wenn man das UI noch customizen kann, vermutlich unmöglich!

Was wirklich funzen könnte, wäre doch, wenn man das Protokoll "knackt" und die Befehle, die der Client sendet eben manipuliert. Aber das dürfte idR doch nicht trivial sein, zumindest bei heutigen Games, bei denen die Entwickler dem sicherlich entegegen wirken werden ...
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Ja, das ist die Sache an der ich die nächsten Tage knabern werde, während meines Kurzurlaubs.

Es geht beides.
Positionen kann man auf unterschiedlichen Arten erlangen.
Zum einen durch Memory Allocation, Pixelbestimmung (frisst laut externer Quelle unmengen an Leistung, was aber vlt auch nur an dem Algorithmus liegt?!) oder aber in dem man erst gar keine genauen Positionen brauch :D

Die gedroppten Items findet man in dem man in den Speicher schaut,
und demnach auch die Positionen der Gegner.
TrayserCassa
User
Beiträge: 97
Registriert: Donnerstag 2. Mai 2013, 19:11

So entschuldigt das ich das Thema wieder aufreiße, aber es ist nicht geschlossen und auch noch nicht geklärt nach meines erachtens. Denn ich hatte die selbe Idee.

AutoIT macht wie der Autor beschrieben hat nicht ins Spiel eingreifen, deswegen greifen auch keine Verteidigungen vom Spiel. AutoIT funktioniert sehr einfach (Ich werde mal den Config hier dran hängen.) Es simuliert, beim starten durch das betätigen der F9 Taste, mehrere Tastendrücke. (Kein halten der Taste)
Dies sollte anhand einer while-schleife funktionieren.

Code: Alles auswählen

HotKeySet("{F6}","stopp")
HotKeySet( "{F5}" ,"start")

$pause = false

sleeP(1000)
Func start()
$Pause = true
EndFunc

Func stopp()
$Pause = False
while $Pause = False
sleeP(500)
WEnd
EndFunc


while 1
if $pause = true then
Send ( "p" )
Send ( "ü" )
EndIf
WEnd
Edit: Bei mir ist die Start-Taste F5 und die Stop-Taste F6. Und an meiner Stelle werden p und ü nach einander (püpüpüpüpüp) gedrückt. Das wenn man eine txt datei aufruft und F5 drückt ü's und p's erscheinen.

Meine Frage ist nun wie man einen Tastendruck in Python simuliert.

mfg TrayserCassa
lunar

@TrayserCassa Ich glaube nicht, dass Dir hier jemand beim Betrügen helfen möchte…
TrayserCassa
User
Beiträge: 97
Registriert: Donnerstag 2. Mai 2013, 19:11

was heißt betrügen? Es ist jedeglich ein tastendruck erleichterung ^^ naja ich verstehs schon ;) war auch bloß ne frage ^^
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

Kennt ihr das schon ?

http://www.webupd8.org/2013/05/sikuli-a ... s-100.html ?

Vielleicht hilft euch die Info weiter
Antworten