Maus realistisch simulieren

SeppiHinteregger

SeppiHinteregger

Mitglied
Hallo Leute.

Ein Bekannter hat mich gefragt, ob ich ihm ein Programm schreiben kann, das dazu in der Lage ist eine Maus realistisch zu simulieren. Die Maus was machen zu lassen, ist an sich nicht das Problem. Was es für mich schwierig macht, ist, dass es "realistisch" sein soll.

Es soll wohl deshalb realistisch sein, weil er vermutet, dass die Entwickler (von irgendeinem Onlinespiel) darauf achten, ob eine echte oder eine falsche Maus bewegt wird. Das kann ich mir zwar nicht vorstellen, aber würde Sinn machen. Bei manchen Spielen, zB. Rollenspielen, kann man ja Gold sammeln oder irgendetwas anderes machen. Und sowas soll nicht gehen, wenn man afk ist. Auf die Art wollen manche Spielemacher dafür sorgen, dass die Leute Echtgeld ins Spiel investieren. Und mein Bekannter will das nicht, darum hat er mich gefragt, ob ich sowas machen kann. Ob ichs wirklich mache, weiß ich noch nicht, weil ich sicher nichts Illegales mache, schon gar nicht für irgendein Spiel. Aber ich muss sagen, dass ich die Aufgabe selbst schon interessant finde. Meint ihr, dass man sowas machen darf, also rein rechtlich? Wenn das "nur" gegen AGBs verstößt, würden sie ihm halt seinen Account zusperren, was mir egal sein könnte.

Habt ihr eine Idee wie man Mausbewegungspfade echt aussehen lassen kann? Was mir auf die Schnelle einfällt, ist, dass ich einfach 100mal eine Bewegung von A nach B mache, diese 100 verschiedenen Pfade abspeichere und random verwenden lasse.
Und was mich außerdem interessiert, ist, wie man Tastaturanschläge realistisch simuliert. Denn ich nehme an, dass man abfragen kann, ob es sich um eine "echte" oder "gefakte" Eingabe handelt.

Vielen Dank für euren Input.

LG Seppi
 
Tobse

Tobse

Top Contributor
Rechtliche Auskunft kann dir hier keiner geben. Aber eines kann man mit Sicherheit sagen: jegliche betrügerische Aktion gegenüber einem Onlinespiel, egal ob Echtgeld involviert ist, oder nicht, ist garantiert durch die AGB und Nutzungsbedingungen untersagt. Ihr riskiert einen permanenten Bann der betroffenen Accounts (bei Steam ggf. sogar des kompletten Steam-Accounts) und Firmen wie z.B. Blizzard sind bekannt dafür, dass sie mit Anwälten kräftig zurückschlagen. Das kann dann, je nach enstandenem Schaden, Gerichtsstand und geltendem Recht Jahre an Gefängnis nach sich ziehen.

Nun zum Thema:
Ich sehe zwei Wege:

1. du machst das selbe wie die Entwickler der Software: du trainierst eine KI darauf, echte von gefakten Eingaben zu unterscheiden. Das sollte eigenlich kein Problem sein, z.B. der neue Re-Captcha von Google macht das mit JS im Browser auch. Diese AI kannst du dann invertieren: du schickst Signale in die andere Richtung durch die Neuronen und bekommst am anderen Ende Mausbewegungen heraus. Die Qualität hängt hier vor allem von der Menge und Qualität deiner Trainingsdaten ab.

2. Testdaten sammeln, die Characteristika daraus ermitteln und dann zur Laufzeit diese Charakteristika mit Zufallsfaktor wieder zu Abläufen zusammensetzen. Für die Tastatur kannst du z.B. einige Leute mehrere (viele, mindestens 5-10) Seiten Text tippen lassen. Dann kannst du analysieren, wie schnell die Finger von der einen Taste zur anderen kommen und wie viel Varianz da drin ist; z.B.:
Ich Tippe das Wort "der" so: Zeigefinger links D, Mittelfinger links E, Zeigefinger links R. Wenn ich jetzt einen Text tippe, in dem 100 mal das Wort "der" vorkommt, kannst du aus diesen Daten die folgenden Schlüsse ziehen:
Wie viel Zeit durchschnittlich zwischen dem D und dem E vergeht, und wie viel Zeit durchschnittlich zwischen dem D und dem R vergeht wenn zwischendrin der Mittelfinger noch für einen anderen Buchstaben verwendet wird; wann immer du dann diese Buchstabenkombination simulieren musst kannst du diese Daten noch +- Zufallszeit rechnen und kommst vmtl auf ein passables Ergebnis.
Das selbe Prinzip lässt sich sicherlich auch auf Mausbewegungen übertragen.

Bei beiden würde ich sehr darauf achten, dass der "Eingabensimulator" gelegentlich Fehler macht. Ich vertippe mich alle 30 - 40 Zeichen mal und benutze dann die Backspace-Taste; machmal tippe ich auch einen Satz und merke dann zwischendrin, dass ich die Grammatik 5 Worte vorher korrigieren muss.
Selbiges gilt für die Maus: wenn ich müde bin bewege ich sie langsamer und treffe z.B. Checkboxen trotzdem manchmal nicht auf anhieb, einfach weil sie klein sind. Siehe dazu dieses interessante Computerphile-Video.

---
Das war jetzt mal das, was mir aufs erste in den Kopf geschossen ist, ziemlich unstrukturiert :D Ich hoffe das hilft dir weiter.

P.S.: Ggf. kannst du bei den Tastatureingaben mithilfe der Finger-zu-Tasten-Zuordnungen des 10-Finger-Systems bestimmen, in welcher Abfolge welcher Finger auf welche Taste drücken muss. Dann kannst du noch den Abstand der Tasten zueinander, welche vom selben Finger gedrückt werden, einrechnen und bekommst gute Zeitabstände zwischen den Tastenanschlägen heraus.

P.P.S.: Bei der Maus und der Tastatur natürlich beachten, dass der Tastenanschlag/Klick in der Realität einige Zeit anhält (bspw.: t = 0; Taste wird heruntergedrückt; t = 80ms; Taste wird wieder losgelassen).
 
Zuletzt bearbeitet:
Viktim

Viktim

Bekanntes Mitglied
Das was @Tobse sagt ist natürlich das beste, wenn du es wirklich wirklich realistisch umgesetzt haben willst.
Was mich nochmal Interessieren würde ist, um welches Spiel es denn geht, dann kann ich mir besser ein Bild machen, was du brauchst, und auch mal ein bisschen nachforschen, wie das Rechtlich aussieht ;)
 
SeppiHinteregger

SeppiHinteregger

Mitglied
Hey, danke schon mal für eure Antworten. :)

Ich hab schon was gebaut, das wie folgt aussieht, für Tastatur und Maus:

Code:
Robot robo = null;
  try {
   robo = new Robot();
  } catch (Exception failed) {
   System.err.println("robo failed: " + failed);
  }
  int Key = KeyEvent.VK_Y;
  robo.keyPress(Key);

Code:
Robot robo= null;
  try {
   robo = new Robot();
  } catch (Exception failed) {
   System.err.println("robo failed: " + failed);
  }
  int press = InputEvent.BUTTON1_DOWN_MASK;
  robo.mouseMove(1457 , 640);
  robo.mousePress(press);
  robo.mouseRelease(press);

Ich hab auch schon was ausprobiert und es funktioniert grundsätzlich. Jetzt muss ich natürlich noch verschiedene Wege reinbauen. Angenommen ich hab jetzt ein paar Mausbewegungen gemacht und lass mein Programm ausgehend davon die selben (zB. 10 Varianten) random machen und zwar mit jew. ein paar Prozent random Abweichung in der Bewegung, sodass ich eine Art Krümmung in die Bewegung reinbekomme, die jedes mal ein bisschen anders ist. Meint ihr, dass das reicht um Entwickler, die vll. auch auf Zack sind, auszutricksen? Denn besonders schwierig scheint mir das so bei längerem Nachdenken nicht zu sein. Also ich kann mir nicht vorstellen, dass man das als sowas wie "Stealthmode" bezeichnen kann, oder steckt da nicht mehr dahinter?
Es gibt ja auch Viren, die die Tastatur faken und dann irgendwelche Eingaben machen ohne dass Windows oder ein Virenscanner was davon mitbekommt. Wenn diese Viren nach dem selben Prinzip arbeiten, dann fänd ich das schon lächerlich.

Es geht übrigens um Blizzard. Der Name des Spiels ist mir gerade entfallen. Ich hab schon ein bisschen in deren AGBs geschmökert. Wenn die was mitbekommen, wird der Account auf jeden Fall gebannt. Find ich eine faire Sache eigentlich, aber egal. Ich hab meinem Kumpel ja von Haus aus gesagt, dass ich nicht versprechen kann, dass das wirklich unsichtbar bleibt.
 
Tobse

Tobse

Top Contributor
Vergiss die Vierenscanner. Die glauben tatsächlich, dass der Java Robot, wie du ihn benutzt, ein Mensch ist. Die "Computerviren", die eine Tastatur "simulieren", sind normalerweise USB-Sticks, die so tun als wären sie eine Tastatur. Wenn der PC sie dann als Tastatur einbindet können sie eine shell / CMD öffnen und darin schädliche Befehle absetzen.

Bzgl. Blizzard: ich habe keine Ahnung, wie gewieft die sind; aber von einem Java Robot werden sie sich nicht austricksen lassen. Hier ein Defcon-Talk von jemand, der sich schon mit Blizzard angelegt hat und dafür ein paar Jahre in den Knast wanderte...
 
SeppiHinteregger

SeppiHinteregger

Mitglied
Interessant. Auf jeden Fall danke. Ich werd mal einfach mehrere Pfade bzw. Tastenandrückvarianten machen und darum herum Abweichungen bauen. Was der gute Herr dann damit anfangt soll nicht mein Problem sein. Ich habs ihm gesagt, dass es Konsequenzen haben kann, wenn er so ein Programm für seine Spielereien einsetzt. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java – Warum kann ich plötzlich bei Android Studio Grafische Benutzeroberflächen mit der Maus gestalten? Allgemeine Java-Themen 5
V Maus mitthilfe Bewegungssensor steuern (Java) Allgemeine Java-Themen 12
I AWT MouseListener Extra Knopf auf der Maus Allgemeine Java-Themen 9
N Globale Maus Allgemeine Java-Themen 7
S JFreechart: ValueMarker mit der Maus ziehen? Allgemeine Java-Themen 12
K Screenshot mit Maus Allgemeine Java-Themen 2
Z zeit zwischen maus drücken und loslassen Allgemeine Java-Themen 7
T [RXTX] GPS-Maus (Comport) effizient auslesen Allgemeine Java-Themen 6
S GPS-Maus über USB ansprechen Allgemeine Java-Themen 8
C Markierung durch Maus lesen Allgemeine Java-Themen 9
M Maus durch JavaProgramm bewegen Allgemeine Java-Themen 2
G Eingabegerät unterscheiden (z.B. Maus oder Touchpad) Allgemeine Java-Themen 3
S GPS-Maus auslesen Allgemeine Java-Themen 14
M Automatische Steuerung der Maus Allgemeine Java-Themen 6
G TJable MULTIPLE_INTERVAL_SELECTION ohne Maus Allgemeine Java-Themen 2
B Maus-Cursor zurücksetzen Allgemeine Java-Themen 4
mabu MediaCenter Applikation in Java realistisch oder nicht? Allgemeine Java-Themen 11
N Tastendrücke Simulieren Allgemeine Java-Themen 7
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
M Mikrofon Input simulieren Allgemeine Java-Themen 1
W keypress simulieren Allgemeine Java-Themen 6
O Bot, Mausklicke simulieren Allgemeine Java-Themen 19
C HTTP OnClick auf Website in Java simulieren Allgemeine Java-Themen 2
aze Mockito:Instanzmethode mit any simulieren Allgemeine Java-Themen 4
Mephist0 Mailserver simulieren mit EasyMock 1.2 Allgemeine Java-Themen 7
S Strg+V ohne Fokus simulieren! Allgemeine Java-Themen 12
L Mausklick simulieren Allgemeine Java-Themen 4
M Mouse Klicks simulieren? Allgemeine Java-Themen 10
L Tastendruck simulieren Allgemeine Java-Themen 7
T JComboBox simulieren Allgemeine Java-Themen 9
U langsamen Prozessor simulieren Allgemeine Java-Themen 4
S Dateisystem unter Java simulieren Allgemeine Java-Themen 17
T Tastendruck simulieren Allgemeine Java-Themen 3
G Enter-Taste simulieren Allgemeine Java-Themen 14

Ähnliche Java Themen

Anzeige

Neue Themen


Oben