Ergebnis 1 bis 10 von 13

Baum-Darstellung

  1. #1
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard Word List Markup Language (WLML)

    Ich möchte hier eine Word-List Beschreibungssprache samt Interpreter vorstellen
    WLML kann dazu benutzt werden, „Worteigenschaften“ zu beschreiben und sich Anhand der Beschreibung komplette Wörterbücher generieren zu lassen.
    Einsatz: überall da wo man über BF-Methoden nur wenige Versuche pro Sekunde hat und mit intelligenten Listen viel Zeit sparen kann.
    Möglichkeiten: im Prinzip "unbegrenzt" (zumindest falls ich kein Feature vergessenen habe ) - sollten aber auf jedenfall viel weiter als jegliche BF-Tool/Wordlistgenerator Masken gehen.

    Syntax: relativ einfach gestrickt.
    Es werden Variablen/Zeichenlisten/Konstanten definiert, miteinander verknüpft und letzendlich als
    Password definiert.
    Wobei Variablen nur der "schönheitshalber" als Platzhalter vorhanden sind und sowieso vor der Generierung aufgelöst werden (man kann direkt das Passwort definieren, nur die Übersicht leiden darunter). Kann man auch mit Funktionen in "normalen" Progrmamiersprachen vergleichen - da kann man auch alles in die Main-Funktion reinschreiben, nur wird es irgendwann unübersichtlich.

    Weiteres sind nur Auszüge aus dem Manual

    Syntax: Auszug aus dem Manual(siehe selbiges für eine bessere Formatierung):


    Beispiele:
    HelloWorld:
    Code:
    define hello='Hello'
    define world='World'
    define end="?!."
    password=hello+world+end
    alternativ
    Code:
    password='HelloWorld'+"?!."
    alternativ
    Code:
    password='HelloWorld'+('?'|'!'|'.')
    Ausgabe:
    Code:
    HelloWorld?
    HelloWorld!
    HelloWorld.
    Vergessenes Passwort: Passwort von einem RAR Archiv war z.B irgendwas mit ’FreE-hAck’, allerdings ist inzwischen unklar, ob der Bindestrich wirklich vorhanden war und natürlich weiß man die genaue Groß/Kleinschreibung nicht mehr.
    Code:
    #Zip Passwort mit FH:  
    #Muster: FrEe-hAcK oder fReEHaCk  
    #(zufällige groß/kleinschreibung, optionaler bindestrich)  
     
    include (’stdinc.wlml’)  
    define free=’free’  
    define bind=’-’[0..1]  
    define hack=’hack’  
    password=(free+bind+hack)[mixedcase]
    Ausgabe:
    Code:
    freehack  
    freehacK  
    freehaCk  
    freehaCK  
    freehAck 
    ...
    Oder:
    passwort besteht aus 7 Zeichen, man weiß, es sind Buchstaben a,b,c,d,e,f,g,h
    allerdings gibt es keine wiederholungen im Passwort (also keine "aabcd"/"abbbcd" usw Wörter).

    In einem einfachen BF-Tool wären das 8^7 = 2 097 152 Passwörter
    in WLML kann man es genau beschreiben:
    Code:
    #passwort hat länge 7 und besteht aus 8 unterschiedlichen zeichen
    #allerdings ohne Widerholungen
    
    define zeichen="abcdefgh"
    password=<zeichen[7..7]>
    #alternativ (viel schneller, aber syntaktisch nicht so gut lesbar)
    #password=<{"ah","bh","ch","dh","eh","fh","gh"}>
    und hat somit nur noch ~40 000 Wörter in der Liste. Bei einem TC Volume, bei dem man nur 5 P/s hat, sind es 2 Std BF statt 5 Tage
    lange Passwörtersequenzen:
    Code:
    #in einem sehr langen passwort wurde in der Mitte die Ziffersequenz vergessen
    #vermutung: 4-5 Ziffern, die sich nicht widerholen
    #bei einfachem BF würde man 110 000 Kombos durchprobieren,
    #gegenüber 35000 (wenn man die "Ziffern wiederholen sich nicht" Bedingung
    #miteinbringt).
    
    include ('stdinc.wlml')
    define const='ich bin ein sehr sehr langes passwort'
    define varpart=<digits[4..5]>
    define const2='ich bin das Ende eines langen Passworts'
    password=const+varpart+const2
    Bestehende Wordlisten nutzen geht auch:
    Code:
    #nimm ein Wort aus der Wordlist und füge eine Ziffer hinzu  
    include (’stdinc.wlml’)  
    define word=file ’wordlist.txt’  
    define end="1234"  
    password=word+end
    allerdings werden Wordlisten komplett in den Speicher eingelesen - man kann also keine 20GB Listen nutzen (die ich sowieso für
    unsinnige halte )

    Vordefiniertes: stdinc.wlml bietet Variablen A-Z, a-z und digits (Zeichen A bis Z in groß/klein und Ziffern 1 bis 9)
    Ansprechbar über
    Code:
    include "stdinc.wlml"
    define myword=A-Z[1..4]
    password=myword+'ichbinfest'
    Konsole: der Interpreter läuft im Konsolenmodus und bietet mehrere Befehle an (einfach HELP oder ? eingeben). Wichtigste:
    compile"datei.wlml" - kompiliert die Datei und liefert eventuell Fehlermeldungen
    test - generiert testweise mehrere Passwörter, so dass man sehen kann, ob diese richtig aufgebaut werden
    genlist "wordlist.txt" - generiert eine komplette Liste und speichert sie unter dem angegebenen Namen.

    Starten der Konsole: Linuxer&Co brauchen noch SWI-Prolog (z.B http://sewiki.iai.uni-bonn.de/servic...logasdeb/start)
    In der Prolog-Console "consult(cmd)." eingeben.
    Windowsuser können start.bat nutzen oder SWI-Prolog installieren und manuell starten "consult(cmd)."

    Fehlermeldungen: ich habe zwar versucht, möglichst viele Fehler abzudecken und detailierte Meldungen auszugeben, allerdings sollte man es nicht mit einer VB/VC# Compiler verwechseln . Notfalls wird eben die Zeile ausgegeben, ab der der Interpreter nicht weiter kommt.
    Manual: liegt im HTML und im PDF Format.

    Plattformen: Windows, Mac, Linux

    ToDo:
    - der Befehl "test" im Interpreter soll noch eine geschätzte Anzahl an Wörtern ausgeben.


    Begründete Kritik, Feedback und Anregungen willkommen
    PS:Source für das komplette Projekt liegt natürlich bei.

    Update: Manual um Escapesequenzen erweitert, paar WLML Beispiele hinzugefügt
    Update2: Nun können bestehende Wordlisten eingebunden werden (und damit z.B modifiziert).
    Manual+Beispielcodes updated
    Update3: Manual komplett neu geschrieben, mehrere Optimierungen und einige Sprachfeatures hinzugefügt. Installationsskripte für Linux/Windows beigelegt. Interpreter lässt sich nun mit Quellcodedateien verknüpfen (Doppelklickausführung).

    Manual (in verschiedenen Foramten ) ) sowie der Interpreter:
    Edit: da die ebfe.de.vu Domain abused wurde, sollte erstmal die Mirroralternative genutzt werden.
    http://ebfe.de.vu/wlml.zip
    http://ebfe.de.vu/manual.pdf
    http://ebfe.de.vu/manual.dvi
    http://ebfe.de.vu/manual.ps
    mirror:
    http://ebfe00.eb.funpic.de/
    Geändert von EBFE (24.07.2010 um 22:34 Uhr)

  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Cyber Tjak (18.09.2010), novaire (16.12.2010), Sarius (04.04.2012)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •