Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
xortool — Ein Werkzeug zur Analyse von Multi-Byte-XOR-Chiffren. | Kitploit
Tools/GitHubGitHub/hellman/xortool
Statische AnalyseVerschlüsselungs-/EntschlüsselungstoolsHash-AnalyseForensikKryptographieBinäranalyseLernen & BildungTop in Kryptographie Nr.16Top in Verschlüsselungs-/Entschlüsselungstools Nr.17Top in Hash-Analyse Nr.8
1.5k18012vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
GitHubhellman/xortool

xortool

Ein Werkzeug zur Analyse von Multi-Byte-XOR-Chiffren.

Repository anzeigen
Teilen

xortool.py

Ein Tool zur XOR-Analyse:

  • Erraten der Schlüssellänge (basierend auf der Anzahl gleicher Zeichen)
  • Erraten des Schlüssels (basierend auf der Kenntnis des häufigsten Zeichens)

Hinweis: xortool läuft jetzt nur noch unter Python 3. Die alte Python-2-Version ist im py2-Zweig verfügbar. Das pip-Paket wurde aktualisiert.

Installation

root@kitploit:~
$ pip3 install xortool

Für die Entwicklung oder das Erstellen dieses Repositorys wird poetry benötigt.

root@kitploit:~
poetry build
pip install dist/xortool*.whl

Verwendung

root@kitploit:~
xortool
  Ein Tool zur XOR-Analyse:
  - Erraten der Schlüssellänge (basierend auf der Anzahl gleicher Zeichen)
  - Erraten des Schlüssels (basierend auf der Kenntnis des häufigsten Zeichens)

Verwendung:
  xortool [-x] [-m MAX-LEN] [-f] [-t CHARSET] [DATEI]
  xortool [-x] [-l LEN] [-c CHAR | -b | -o] [-f] [-t CHARSET] [-p PLAIN] [-r PERCENT] [DATEI]
  xortool [-x] [-m MAX-LEN| -l LEN] [-c CHAR | -b | -o] [-f] [-t CHARSET] [-p PLAIN] [-r PERCENT] [DATEI]
  xortool [-h | --help]
  xortool --version

Optionen:
  -x --hex                          Eingabe ist hex-kodierter String
  -l LEN, --key-length=LEN          Länge des Schlüssels
  -m MAX-LEN, --max-keylen=MAX-LEN  Maximale zu testende Schlüssellänge [Standard: 65]
  -c CHAR, --char=CHAR              Häufigstes Zeichen (ein Zeichen oder Hex-Code)
  -b --brute-chars                  Brute-Force aller möglichen häufigsten Zeichen
  -o --brute-printable              Wie -b, prüft aber nur druckbare Zeichen
  -f --filter-output                Filtert Ausgaben basierend auf dem Zeichensatz
  -t CHARSET --text-charset=CHARSET Zieltext-Zeichensatz [Standard: druckbar]
  -p PLAIN --known-plaintext=PLAIN  Verwendet bekannten Klartext zur Dekodierung
  -r PERCENT, --threshold=PERCENT   Schwellenwert für Gültigkeitsprozentsatz [Standard: 95]
  -h --help                         Diese Hilfe anzeigen

Hinweise:
  Text-Zeichensatz:
    * Vordefinierte Sätze: printable, base32, base64
    * Benutzerdefinierte Sätze:
      - a: Kleinbuchstaben
      - A: Großbuchstaben
      - 1: Ziffern
      - !: Sonderzeichen
      - *: druckbare Zeichen

Beispiele:
  xortool datei.bin
  xortool -l 11 -c 20 datei.bin
  xortool -x -c ' ' datei.hex
  xortool -b -f -l 23 -t base64 nachricht.enc
  xortool -b -p "xctf{" nachricht.enc
  xortool -r 80 -p "flag{" -c ' ' nachricht.enc
Tool herunterladen

Beispiel 1

root@kitploit:~
# xor ist xortool/xortool-xor
tests $ xor -f /bin/ls -s "secret_key" > binary_xored

tests $ xortool binary_xored
The most probable key lengths:
   2:   5.0%
   5:   8.7%
   8:   4.9%
  10:   15.4%
  12:   4.8%
  15:   8.5%
  18:   4.8%
  20:   15.1%
  25:   8.4%
  30:   14.9%
Key-length can be 5*n
Most possible char is needed to guess the key!

# 00 ist das häufigste Byte in Binärdateien
tests $ xortool binary_xored -l 10 -c 00
...
1 possible key(s) of length 10:
secret_key

# Entschlüsselte Chiffretexte werden in ./xortool_out/Number_<key repr> abgelegt
# (mir fällt nichts Besseres ein)
tests $ md5sum xortool_out/0_secret_key /bin/ls
29942e290876703169e1b614d0b4340a  xortool_out/0_secret_key
29942e290876703169e1b614d0b4340a  /bin/ls

Die häufigste Verwendung ist, einfach die verschlüsselte Datei und das häufigste Zeichen (normalerweise 00 für Binärdateien und 20 für Textdateien) zu übergeben – die Länge wird automatisch gewählt:

root@kitploit:~
tests $ xortool tool_xored -c 20
The most probable key lengths:
   2:   5.6%
   5:   7.8%
   8:   6.0%
  10:   11.7%
  12:   5.6%
  15:   7.6%
  20:   19.8%
  25:   7.8%
  28:   5.7%
  30:   11.4%
Key-length can be 5*n
1 possible key(s) of length 20:
an0ther s3cret \xdd key

Hier ist der Schlüssel länger als der Standardgrenzwert von 32:

root@kitploit:~
tests $ xortool ls_xored -c 00 -m 64
The most probable key lengths:
   3:   3.3%
   6:   3.3%
   9:   3.3%
  11:   7.0%
  22:   6.9%
  24:   3.3%
  27:   3.2%
  33:   18.4%
  44:   6.8%
  55:   6.7%
Key-length can be 3*n
1 possible key(s) of length 33:
really long s3cr3t k3y... PADDING

Wenn die automatisierte Entschlüsselung fehlschlägt, kannst Du also nachjustieren:

  • (-m) Maximale Länge, um längere Schlüssel zu testen
  • (-l) Ausgewählte Länge, um einige interessante Schlüssel zu sehen
  • (-c) Das häufigste Zeichen, um den richtigen Klartext zu erhalten

Beispiel 2

Wir haben eine Nachricht, die in Base64 kodiert und mit einem unbekannten Schlüssel XOR-verschlüsselt wurde.

root@kitploit:~
# xortool message.enc
The most probable key lengths:
   2:   12.3%
   4:   13.8%
   6:   10.5%
   8:   11.5%
  10:   8.6%
  12:   9.4%
  14:   7.1%
  16:   7.8%
  23:   10.4%
  46:   8.7%
Key-length can be 4*n
Most possible char is needed to guess the key!

Wir können nun die Schlüssellängen testen, während wir die Ausgaben filtern, sodass nur die Klartexte behalten werden, die den Zeichensatz von Base64 enthalten. Nach einigen getesteten Längen stoßen wir auf die richtige, die nur einen Klartext mit einem Prozentsatz gültiger Zeichen über dem Standardschwellenwert von 95 % ergibt.

root@kitploit:~
$ xortool message.enc -b -f -l 23 -t base64
256 possible key(s) of length 23:
\x01=\x121#"0\x17\x13\t\x7f ,&/\x12s\x114u\x170#
\x00<\x130"#1\x16\x12\x08~!-\'.\x13r\x105t\x161"
\x03?\x103! 2\x15\x11\x0b}".$-\x10q\x136w\x152!
\x02>\x112 !3\x14\x10\n|#/%,\x11p\x127v\x143
\x059\x165\'&4\x13\x17\r{$("+\x16w\x150q\x134\'
...
Found 1 plaintexts with 95.0%+ valid characters
See files filename-key.csv, filename-char_used-perc_valid.csv

Durch das Filtern der Ausgaben auf den Zeichensatz von Base64 behalten wir direkt die einzige Lösung.

Informationen

Autor: hellman

Lizenz: MIT License