Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

  • Autor

Das stimmt, dann wäre vielleicht eine Begrenzung auf eine bestimmte Anzahl Wörter nötig.

Per Parameter am besten, aber hardkodiert reicht auch. Den Parameter kann ich mir selbst basteln.

 

 

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

  • Autor

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

 

  • Autor

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)

 

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

 

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.