Zum Inhalt springen
  • 0

Wordlist generator


noame

Frage

Hallo,

ich brauche einen Wordlist Generator geschrieben als Bash Script, welcher folgendes tut:

Verschiedene Werte Abfragen und in ein Array schreiben.

Also zum Beispiel Wort1? Wort2? etc.

Außerdem sollen verschiedene Sonderzeichen verwendet werden, welche am besten auch beliebig definiert werden können.

 

Anschließend sollen diese Werte in jeder beliebigen Kombination ausgegeben bzw. weggesichert werden.

 

Beispiel:

Wort1: baum

Wort2: blume

Wort3: bär

Mögliche Sonderzeichen: + - : .



#Ausgabe soll dann sein:

baum

baumblume

baumblumebär

baum.blumebär

baumblume.bär

baum.blume.bär

baum.blume.bär.

.baum.blume.bär

.baum.blume.bär.

.baum.blume.

blume.baum.bär

.blume-baum-bär.

Die Ausgabe hier ist lange nicht vollständig aber ich denke am Beispiel ist erkennbar was der Sinn ist.

Jede mögliche Kombination aus allen oder einzelnen Werten soll erstellt werden.

 

Kann mir dazu jemand einen Ansatz geben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

10 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Ich bin nun ein wenig weiter.

Ich habe zum testen die Variablen noch statisch festlegen lassen.

Später werden sie vom User eingegeben.

 

Das folgende Script ist mein erster Ansatz und ich hoffe das mir auf dieser Basis jemand weiter helfen kann.

Vielen Dank schon einmal.

 

#!/usr/bin/env bash
clear
#remove existing dev file
rm dev.txt

#get informations
#write informations into dev.txt
firstname=1
echo $firstname >> dev.txt

lastname=2
echo $lastname >> dev.txt

birthday=3
echo $birthday >> dev.txt

birthmonth=4
echo $birthmonth >> dev.txt

birthyear=5
echo $birthyear >> dev.txt

#declare array
#write values into array
declare -a infos0
mapfile -t infos0 < dev.txt

declare -a infos1
mapfile -t infos1 < dev.txt

#for every element of array
for (( i = 0 ; i < ${#infos0[@]} ; i++))
do
  #show content of element
  echo "Element [$i]: ${infos0[$i]}"
done

#declare variable
declare password

#for every element of array0
for (( i = 0 ; i < ${#infos0[@]} ; i++))
do
  #store removed array element in variable
  removed_value=${infos1[0]}

  #show removed element content
  echo removed_value=$removed_value

  #define array element to remove
  pos=0

  #remove element from array
  infos1=(${infos1[@]:0:$pos} ${infos1[@]:$(($pos + 1))})

  #add removed element at end of array
  infos1=("${infos1[@]}" $removed_value)

  #write content from first element of password in variable
  word=${infos0[$i]}
    #for every element of array1
    for (( i = 0 ; i < ${#infos0[@]} ; i++))
    do
      #combine variable and element of array1
      password=$word${infos1[$i]}
      echo password: $password

      #for every element of array1
      for (( i = 0 ; i < ${#infos0[@]} ; i++))
      do
        #combine variable and element of array1
        password=$password${infos1[$i]}
        echo password: $password
      done
    done
done

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Ein anderer, eventuell einfacherer, Ansatz:

Ich hänge die Variablen aneinander.

Ganz einfach so:

baum blume bär baum blume bär baum blume bär baum blume bär baum blume bär baum blume bär 

Und setze dann immer erst nach einem und dann nach drei Wörtern einen "cut". Also Beispielsweise für eine Wordlist einen Zeilenumbruch.

Dann sähe die Wordlist ungefähr so aus:

baum
blume bär baum
blume
bär
baum blume bär
baum
blume bär baum
blume
bär baum blume
bär
baum blume bär
baum
blume bär baum
blume

 

Vorgehen mit mehr als drei Wörtern:

Erst nach einem Wort den "cut" setzen, und anschließend nach $x Wörtern.

Wobei $x die Anzahl der gesamt zur verfügung stehenden Wörtern ist.

 

Damit habe ich alle möglichen Kombinationen aus verschiedenen Wörtern.

---

Jetzt muss noch mit eingebracht werden:

- Wörter dürfen sich wiederholen. (Beispiel: baumbaumbaum, baumbaumblume)

- Trennzeichen müssen mit einbezogen werden. (Beispiel: baumbaum baum, baum-baum.baum)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Ist vom Prinzip her eigentlich ganz einfach.

  • Wörter in ein Array einlesen
  • erlaubte Sonderzeichen in ein zweites Array einlesen
  • verschachtelte Schleifen nutzen, um die Inhalte auszugeben. (Beispiel für 3 Wörter plus dazwischen 2 Mögliche Sonderzeichen oder kein Sonderzeichen dazwischen)
  • Hinweis: ${#arr} = Anzahl der Elemente im Array
#Sonderzeichen-Array füllen (Welche Zeichen sollen möglich sein - auch kein Sonderzeichen)
declare -a sonderzeichen=("" "+" "-" "." ":")

#Array mit Wörtern füllen - der Einfachheit halber hier statisch vorgegeben
declare -a arr=("baum" "baer" "blume")

## durch Array "arr" gehen
for i in "${arr[@]}"
 do
 for j in "${sonderzeichen[@]}"
  do
  for k in "${arr[@]}"
  do
   for l in "${sonderzeichen[@]}"
   do
    for m in "${arr[@]}"
	do
	echo "${arr[$i]}" "${sonderzeichen[$j]}" "${arr[$k]}" "${sonderzeichen[$j]}" "${arr[$m]}" "\n"

done

Ob die Syntax stimmt, weiß ich nicht, da ich hier keine Bash zur Verfügung habe.

Vom Prinzip sollte es so in der Art aber eigentlich funktionieren.

Aufpassen muss man eventuell mit Buchstaben wie ä, ö und ü, sowie ß, ob diese richtig dargestellt werden.

Alternativ könnte es auch so gehen:

#Sonderzeichen-Array füllen (Welche Zeichen sollen möglich sein - auch kein Sonderzeichen)
declare -a sonderzeichen=("" "+" "-" "." ":")

#Array mit Wörtern füllen - der Einfachheit halber hier statisch vorgegeben
declare -a arr=("baum" "baer" "blume")

for ((i=0; i < ${#arr}; i++))
do
  for ((j=0; j < ${#sonderzeichen}; j++))
  do
    for ((k=0; k < ${#arr}; k++))
    do
      for ((l=0; l < ${#sonderzeichen}; l++))
      do
        for ((m=0; m < ${#arr}; m++))
        do
        echo "${arr[$i]}" "${sonderzeichen[$j]}" "${arr[$k]}" "${sonderzeichen[$j]}" "${arr[$m]}" "\n"

done

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...