4 stellige Ziffer knacken mit Hilfe von Code?
Hey,
Ich habe leider in einem Spiel den 4 stellige zahlen Code(0-9) vergessen.
Wie es der Zufall so will habe ich momentan python in der schule und habe versucht mein Passwort mit hilfe meines letzten presentations Themas (Brute-Force-Methode) zu knacken.
Irgendwie scheitere ich aber am Code 😅 ist ja ansich relativ einfach, 4 zahlen und dann nach kurzer Zeit "e" wenn es nicht funktioniert hat.
4 zufällige zahlen krige ich schon hin, aber es gibt ja genau 10000 Möglichkeiten, da dauert es mit zufälligen Zahlen doch länger als mit einem System oder?
Hat irgendwer evtl genug Erfahrung und kann mir ein paar Tips geben wie ich die Variablen am besten zu ändern habe?
Lg Eduard
2 Antworten
Um mit einem System arbeiten zu können, müsstest du noch irgendwelche Infos von der Pin haben. Z.B. dass zwei gleiche Ziffern vorgekommen sind, oder dass es irgendeine Kombination der Ziffern 5,6,7,8 war. Damit könnte man es auf sehr wenige Möglichkeiten eingrenzen. Ansonsten bleibt wirklich nur Brute-Force.
Je nachdem, wie lange es pro Versuch dauert, dauern 10000 Versuche aber auch nicht sehr lange. Es kann aber z.B. sein, dass du nach drei Fehlversuchen gesperrt wirst
Tschuldige wollte hilfreich ankreuzen 😘
Ich glaube der Kommentar von sucht00 hat sehr geholfen.
Ich kenne mich zwar nicht wirklich mit Python aus aber eigentlich müsste es ja ausreichen, einfach eine Variable in einer For-Schleife von 0-4000 zählen zu lassen.
So, wie ich es gelesen habe, muss der Code aber genau 4 Stellen lang sein, daher kannst du einfach jedes Mal die Variable mit Nullen füllen lassen.
Dafür gibt es anscheinend die Methode zfill(n) in Python. Bei n gibt's du einfach 4 an. Dadurch werden dem String immer soviele Nullen vornheran gestellt bis es vier Stellen sind.
Die Zahlen sind das kleinste Problem. Du kannst eine Liste mit allen Zahlen einfach so aufbauen:
liste = [f"{i:04}" for i in range(10000)]
Die Schwierigkeit liegt darin, die Zahlen dahin zu senden, wo sie hin sollen. Vielleicht musst du uns genauer sagen, um was es geht, damit wir dir da auch weiterhelfen können.
Um das Spiel ark, dort habe ich ein Tresor auf den ich mir e zugreifen, dann kann ich 4 zahlen eingeben und entweder ist es richtig und ich gelange ins Inventar des Tresors oder ich werde wie auf die Ausgangs Position zurück gestellt und muss wieder e drücken und wieder 4 zahlen. Es gibt hierbei kein timer oder deerartiges.
Die zahlen so krige ich ja schon hin aber kann ich beispielsweise sagen dass ich die 3. Stelle von i also z. B. 0017 oder so abfagen?
Also quasi die einzelnen Stellen der variable Abfrage und dann ausgebe?
Es gibt ja sehr wahrscheinlich addons für Keyevents oder derartiges.
Lg
Wenn du den Code oben ausführst, dann kriegst du eine Variable namens "liste", in der alle Kombinationen drinstehen. Dann kannst du mit liste[3] natürlich den vierten Eintrag ("0003", weil 0-indiziert) ausgeben. Oder auch mit "for entry in liste:" eine Schleife starten, die jeden Eintrag durchgeht.
Wenn es in dem Spiel reicht, einfach nur bestimmte Tasten zu drücken, kannst du mit pyautogui ziemlich einfach Tastenanschläge simulieren.
Naja das war ja schon so, es geht darum dass ich nicht sagen kann (davon aus gegangen sendKey wäre ein richtiger command) sendKey(liste) also sendKey(1230) sonder ja sagen muss sendKey(erste stelle also 1)
sendKey(zweite stelle also 2)
sendKey(dritte stelle also 3)
sendKey(vierte stelle also 0)
Verstehst du was ich meine? Oder kennst du eine librarie bei der ich (1234) eingeben kann und es wird so auch simuliert?
Lg
Ja. Mit pyautogui kannst du auch ganze Texte auf einmal eingeben lassen. Wenn du z.B. einfach nur die Zahlen und dann Enter drücken willst, geht es so:
import pyautogui as p
liste = [f"{i:04}" for i in range(10000)]
p.countdown(5) # Damit man in ein anderes Programm wechseln kann
for pin in liste:
p.typewrite(pin)
p.press('enter')
Damit du pyautogui benutzen kannst, musst du evtl. vorher in cmd oder in powershell die Library installieren mit "pip install pyautogui"
Hast du da eine Idee wie ich das am besten umsetze? Bin nicht sooo Programmier erfahren.
Lg
Fürs reine zählen hätte ich so getestet.
txt = "0"
i = 0
while i <= 7:
txt = int(i)
print(str(txt).zfill(4))
i += 1
Geht das besser?