Gå til innhold

Program for å finne alle mulige kombinasjoner av en rekke bokstaver?


Mr.Anki

Anbefalte innlegg

Videoannonse
Annonse

Snakker du ren matematikk her eller alle kombinasjoner som gir fornuftige ord? Hvis du snakker ren matematikk må du klargjøre premissene litt bedre. Hvor lang er rekken av bokstaver? Hvor lang kan/skal en kombinasjon være? Kan bokstaver gjentas? Skal kombinasjonene være unike i bare hvilke bokstaver som er med eller også i forhold til rekkefølgen? Eller er du bare ute etter et program som kan knekke et passord?

Endret av kjeklulf
Lenke til kommentar

Siden dette virker som et forsøk på å knekke et passord kan man vel gå ut fra at ordet alltid er 8 tegn langt(siden det sikkert er et krav ved laging av passordet) Man kan også anta at alle spesialtegn er gyldige, samt tall, og upper/lowercase. I tillegg kan man også gå utifra at samme tegn kan gjentas flere ganger.

Altså står man foran et ekstremt lite hyggelig tidsforbruk dersom man skal "brute force" knekke passordet.

Lenke til kommentar
Hei,

 

Lurer på om noen vet om et program som kan finne alle mulige kobinasjoner av en rekke meg bokstaver?

Jupp lagde et par varianter med vbscript for noen år siden.

 

Jeg lagde to varianter, den ene pøset bare ut med masse bokstaver og greier, mens den andre sjekker for duplikater, noe som selfølgelig kan ta lang tid.

 

Så lange man holder seg til 5-7 bokstaver så går det greit, men over det så begynner det å ta tid.

 

Vel jeg slenger nå bare koden ut:

Dim O : O = InputBox("Skriv inn ordet som skal stokkes om")
Dim t : t = CByte(InputBox("Skriv Inn hvor mange bokstaver som skal plukkes ut. Gyldige tall er fra 1 til det antallet bokstaver som er skrevet inn"))
Dim stavelse
Dim output, fileSystemObject
output = ""
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Set textFile = fileSystemObject.OpenTextFile((O & " - " & t & ".txt"), 8, True)
start O
Sub start(firstOrd)
barr firstOrd, ""
End Sub
Sub barr(rest, utplukk)
Dim i, uLen, rLen, hRest, hPlukk, Q
uLen = Len(utplukk) : rLen = Len(rest)
Set Q = new plukk
Q.settOrd rest
If uLen < t Then
For i = 1 to rLen
hRest = Q.getRest(i)
hPlukk = Q.getPlukk(i)
barr hRest, utplukk & hPlukk
Next
Else
'		If output = "" Then
'			output = utplukk
'		Else
'			output = output & VbCrLf & utplukk
'		End If

textFile.WriteLine utplukk
End If
End Sub
Class plukk
Dim ord
Sub settOrd(byval orae)
ord = orae
End Sub
Function getRest(m)
Dim T1, T2, oLen
oLen = Len(ord)
T1 = Left(ord, m-1)
T2 = Right(ord, (oLen -m))
getRest = T1 & T2
End Function
Function getPlukk(m)
getPlukk = Mid(ord, m, 1)
End Function
Sub plukkTa(ord, plukkTegn, n)
Dim oLen, T1, T2 
oLen = Len(ord)
If n >= oLen Then
n = oLen
T1 = Left(ord, (oLen -1))
plukkTegn = Right(ord, 1)
ord = T1
Else
If n = 1 Then
plukkTegn = Left(ord, 1)
T2 = Right(ord, (oLen -1))
ord = T2
Else
T1 = Left(ord, (n -1))
T2 = Right(ord, (oLen -n))
plukkTegn = Mid(ord, n, 1)
ord = T1 & T2
End If
End If
End Sub
End Class

 

Denne teksten skal lagres i en fil med filendelsen vbs. Du skriver inn et vilkårlig ord og angir hvor mange karakterer du vil plukke ut, så lagres resultatet i en tekstfil i samme mappe som fila ligger i.

Lenke til kommentar
Gjest Slettet+oiasdf79

Da kan vel jeg spørre i samme tråden om noen vet om et program som kan sjekke ut sammenhengen mellom tall og bokstaver?

 

Freebird...

Lenke til kommentar

Er dette rett?

Kommer ikke opp noe dokument.

 

Dim O : O = InputBox("sgsgaeal")
Dim t : t = CByte(InputBox("8"))
Dim stavelse
Dim output, fileSystemObject
output = ""
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
Set textFile = fileSystemObject.OpenTextFile((O & " - " & t & ".txt"), 8, True)
start O
Sub start(firstOrd)
barr firstOrd, ""
End Sub
Sub barr(rest, utplukk)
Dim i, uLen, rLen, hRest, hPlukk, Q
uLen = Len(utplukk) : rLen = Len(rest)
Set Q = new plukk
Q.settOrd rest
If uLen < t Then
For i = 1 to rLen
hRest = Q.getRest(i)
hPlukk = Q.getPlukk(i)
barr hRest, utplukk & hPlukk
Next
Else
'        If output = "" Then
'            output = utplukk
'        Else
'            output = output & VbCrLf & utplukk
'        End If

textFile.WriteLine utplukk
End If
End Sub
Class plukk
Dim ord
Sub settOrd(byval orae)
ord = orae
End Sub
Function getRest(m)
Dim T1, T2, oLen
oLen = Len(ord)
T1 = Left(ord, m-1)
T2 = Right(ord, (oLen -m))
getRest = T1 & T2
End Function
Function getPlukk(m)
getPlukk = Mid(ord, m, 1)
End Function
Sub plukkTa(ord, plukkTegn, n)
Dim oLen, T1, T2 
oLen = Len(ord)
If n >= oLen Then
n = oLen
T1 = Left(ord, (oLen -1))
plukkTegn = Right(ord, 1)
ord = T1
Else
If n = 1 Then
plukkTegn = Left(ord, 1)
T2 = Right(ord, (oLen -1))
ord = T2
Else
T1 = Left(ord, (n -1))
T2 = Right(ord, (oLen -n))
plukkTegn = Mid(ord, n, 1)
ord = T1 & T2
End If
End If
End Sub
End Class

Lenke til kommentar
Gjest Slettet+oiasdf79
Det må være dagens klareste spørsmål...

Det jeg mente er: For eksempel. Freebird = 6195529194 Her er tallene plukket ut fra plassering i alfabetet, men dersom det finnes andre logiske tall eller bokstavrekker er det en pluss om programmet sjekker de også.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...