Datentypen
Code:
: Konstanten und Zeichenlisten
’ich bin eine konstante’
"ich bin eine Zeichenliste"
’hi’
"abcdefg"
der Unterschied: Konstanten werden komplett ausgewählt, von den Zeichenlisten jedoch immer nur ein Zeichen genommen. Eine Zeichenliste ist damit nur eine verkürzte Schreibweise für eine ODER Verknüpfung mehrerer Konstanten:
Code:
"abc"
äquivalent:
’a’|’b’|’c’
Escapesequenzen: für Konstanten (werden zwischen ' definiert) \'
für Zeichenlisten: \"
Bsp:
Code:
"ab\"c"
'Max\'s password'
Operationen
: UND,ODER,ZUWEISUNG
Code:
UND: + . & and
ODER: | or
Zuweisung: = :=
Variablen
: werden mit define eingeleitet und können Ausdrücke zugewiesen bekommen:
Code:
define word1="abc"
define word2=’hi’|’hey’
define myword=word1+word2
Variablennamen beginnen immer mit einem Buchstaben und können Buchstaben, Ziffern, ’_’ oder ’-’ beinhalten.
main
: als von vielen Sprachen bekannte ’Main’ fungiert die Password Zuweisung
Code:
define word1=’hi’|’hey
password=word1
oder
PASS=’hallo’+"123"
Eigenschaften
: werden zwischen ’[’ und ’]’ aufgelistet.
Code:
[min..max ,mixedcase, lowercase, uppercase]
min..max: wiederhole Abschnitt mindestens
’min’ und höchstens ’max’ Male
lowercase: konvertiere alles in Kleinbuchstaben
uppercase: gegenteil von lowercase
mixedcase: es sollen alle
Groß/Kleinschreibungmöglichkeiten
durchprobiert werden.
Beispiele:
Code:
"abc"[2..3] : wiederhole a oder b oder c zwei bis drei mal
"abc"[1..2,mixedcase]: wiederhole a oder b oder c ein bis 2 male
und probiere Groß/Kleinschreibung durch
(’pass’+"1234567890"[2..2]): ’pass’ und zwei Ziffern: pass12,pass13
Klammern
Code:
: ’[ ]’,’< >’,’{ }’, ’( )’
[ ] : hier werden Optionen aufgezählt
( ) : Gruppierungsklammern. Bsp:
("abc"|"def")+(’hi’|’hey’)
< > : Uniqueklammern. Elemente, die hier drin
stehen, dürfen sich nicht wiederholen.
Dies gilt allerdings immer für das
’erste Level’ der Anweisungen. Daher sollte
man im Zweifelsfall Gruppierungsklammern nutzen.
Bsp:
<"12345"[5..5]> (5 Ziffern von 1 bis 5, wobei nur komplett
unterschiedliche Sequnezen erlaubt sind)
{ } eine Liste mit Elementen (durch Kommata getrennt), aus
denen alle möglichen Kombinationen gebildet werden
Bsp:
{’hello’,word2,word3}
Include
: Über include String kann man weitere Quelltextdateien einbinen:
Code:
include("stdinc.wlml")
include "stdinc.wlml"
include ’stdinc.wlml’
include "/incs/myinc.wlml"
Listen einbinden
: Über file String kann man bestehende Wörterbücher einbinden:
Code:
define word=file ’wordlist.txt’
oder
define word=file "wordlist.txt"
define zusatz=’special’
password=word+zusatz
Aus dem Wörterbuch wird dann jeweils ein Wort eingelesen und für die Generierung herangezogen. Äquivalente Darstellung - Wörter aus dem Wörterbuch im Quellcode direkt aufzuschreiben.
Code:
define word=’word1’ | ’word2’ | ’word3’ | ...
Achtung: die Wörterbücher werden komplett in den Speicher eingelesen (20GB große Listen gehen also schon mal nicht).
Kommentare
: Kommentare werden entweder über # oder // eingeleitet und gelten immer bis zum Zeilenende:
Code:
#include("ich wurde auskommentiert")
define hello="abc" #|’hi
define hi=’hi’|’hey’|’moin’ //begrüßung