hola.. tengo un problema con un fuerza bruta...
el tema es asi, tengo 6 letras y necesito ver las combinaciones de todas ellas...
pero no se como hacer a q no se repitan... xq asi el codigo es mucho mas lento :S
x ejemplo asdfgh
con este codigo primero aparece aaaaaa en vez de asdfgh y luego cambiarlas de lugar a x ejemplo asdfhg :S
colocar 2 command button, un timmer con intervalo 0
para hacer funcionar el code presionar el segundo command :P
Dim cont As Byte
Dim Letras As String
Dim Letra() As String
Dim a As Byte, b As Byte, c As Byte, d As Byte, e As Byte, f As Byte
Dim La As String, Lb As String, Lc As String, Ld As String, Le As String, Lf As String
Private Sub Command1_Click()
Letras = ""
Do While Text1.Text <> ""
Letras = Letras & Left(Text1.Text, 1) & "|"
Text1.Text = Right(Text1.Text, Len(Text1.Text) - 1)
Loop
Letra = Split(Letras, "|")
For a = 0 To 5
La = Letra(a)
For b = 1 To 5
Lb = Letra(b)
For c = 2 To 5
Lc = Letra(c)
For d = 3 To 5
Ld = Letra(d)
For e = 4 To 5
Le = Letra(e)
For f = 5 To 5
Lf = Letra(f)
SendKeys La & Lb & Lc & Ld & Le & Lf
SendKeys "{Enter}"
DoEvents
Next f
Next e
Next d
Next c
Next b
Next a
MsgBox "Termino"
End Sub
Private Sub Command2_Click()
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
If cont = 3 Then
Call Command1_Click
Timer1.Interval = 0
cont = 0
Else
cont = cont + 1
End If
End Sub
Hola, proba esto:
Option Explicit
Private Sub Combinaciones(Palabra As String, Optional strFixed As String)
Dim i As Integer
If Len(Palabra) <> 1 Then
For i = 1 To Len(Palabra)
Combinaciones Left$(Palabra, i - 1) & Mid$(Palabra, i + 1), strFixed & Mid$(Palabra, i, 1)
Next i
Else
List1.AddItem strFixed & Palabra
End If
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
Call Combinaciones("123")
End Sub
saludos.
jjaa gracias x el ejemplo! funciona de 10 asi tal cual lo pasaste ;)
yo pasaba a postear una solucion tb... pero es mas lammer xD
de todos modos la dejo x si les interesa =P
Private Sub Command1_Click()
Dim a As Byte
Dim b As Byte
Dim c As Byte
Dim d As Byte
Text1.Text = ""
For a = 1 To 4
For b = 1 To 4
For c = 1 To 4
For d = 1 To 4
If a = b Or a = c Or a = d Or b = c Or b = d Or c = d Then
Else
Text1.Text = Text1.Text & a & b & c & d & vbCrLf
End If
Next d
Next c
Next b
Next a
End Sub
No quieres que las letras se repitan? Pues será un programa poco eficiente no? porque si mi contraseña es por ejemplo: caucaso que lleva 2 "a" y 2 "c" no sé como la vas a hallar.
Lo más lógico es que las letras se repitan, sobre todo las vocales...
Un saludo.
si pero no es para sacar contraseñas... sino para hacer juegos de palabras