Jump to content

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?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

10 Antworten auf diese Frage

Empfohlene Beiträge

  • 1
Gast OceanDrive

Einen Ansatz solltest du aber selbst schaffen oder?
Versuch es doch mal mit einer Datenstruktur ala Binärbaum.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 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

 

Diesen Beitrag teilen


Link zum Beitrag
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)

 

Diesen Beitrag teilen


Link zum Beitrag
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

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

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

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung