Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: vivachapas en 29 Diciembre 2008, 20:42 pm



Título: combinaciones VB
Publicado por: vivachapas en 29 Diciembre 2008, 20:42 pm
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
Código
  1. Dim cont As Byte
  2. Dim Letras As String
  3. Dim Letra() As String
  4. Dim a As Byte, b As Byte, c As Byte, d As Byte, e As Byte, f As Byte
  5. Dim La As String, Lb As String, Lc As String, Ld As String, Le As String, Lf As String
  6.  
  7. Private Sub Command1_Click()
  8. Letras = ""
  9.  
  10. Do While Text1.Text <> ""
  11. Letras = Letras & Left(Text1.Text, 1) & "|"
  12. Text1.Text = Right(Text1.Text, Len(Text1.Text) - 1)
  13. Loop
  14.  
  15. Letra = Split(Letras, "|")
  16.  
  17. For a = 0 To 5
  18.   La = Letra(a)
  19.    For b = 1 To 5
  20.        Lb = Letra(b)
  21.        For c = 2 To 5
  22.            Lc = Letra(c)
  23.            For d = 3 To 5
  24.               Ld = Letra(d)
  25.                For e = 4 To 5
  26.                    Le = Letra(e)
  27.                    For f = 5 To 5
  28.                       Lf = Letra(f)
  29.                        SendKeys La & Lb & Lc & Ld & Le & Lf
  30.                        SendKeys "{Enter}"
  31.                        DoEvents
  32.                    Next f
  33.                Next e
  34.            Next d
  35.        Next c
  36.    Next b
  37. Next a
  38.  
  39. MsgBox "Termino"
  40.  
  41. End Sub
  42.  
  43. Private Sub Command2_Click()
  44. Timer1.Interval = 1000
  45. End Sub
  46.  
  47. Private Sub Timer1_Timer()
  48. If cont = 3 Then
  49. Call Command1_Click
  50. Timer1.Interval = 0
  51. cont = 0
  52. Else
  53. cont = cont + 1
  54. End If
  55. End Sub
  56.  


Título: Re: combinaciones VB
Publicado por: seba123neo en 30 Diciembre 2008, 00:43 am
Hola, proba esto:

Código
  1. Option Explicit
  2.  
  3. Private Sub Combinaciones(Palabra As String, Optional strFixed As String)
  4.    Dim i As Integer
  5.    If Len(Palabra) <> 1 Then
  6.        For i = 1 To Len(Palabra)
  7.            Combinaciones Left$(Palabra, i - 1) & Mid$(Palabra, i + 1), strFixed & Mid$(Palabra, i, 1)
  8.        Next i
  9.    Else
  10.        List1.AddItem strFixed & Palabra
  11.    End If
  12. End Sub
  13.  
  14. Private Sub Form_Load()
  15.    Me.AutoRedraw = True
  16.    Call Combinaciones("123")
  17. End Sub

saludos.


Título: Re: combinaciones VB
Publicado por: vivachapas en 30 Diciembre 2008, 01:10 am
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

Código
  1. Private Sub Command1_Click()
  2. Dim a As Byte
  3. Dim b As Byte
  4. Dim c As Byte
  5. Dim d As Byte
  6.  
  7. Text1.Text = ""
  8.  
  9. For a = 1 To 4
  10.    For b = 1 To 4
  11.        For c = 1 To 4
  12.            For d = 1 To 4
  13.                If a = b Or a = c Or a = d Or b = c Or b = d Or c = d Then
  14.                Else
  15.                Text1.Text = Text1.Text & a & b & c & d & vbCrLf
  16.                End If
  17.            Next d
  18.        Next c
  19.    Next b
  20. Next a
  21. End Sub
  22.  


Título: Re: combinaciones VB
Publicado por: Spider-Net en 30 Diciembre 2008, 01:15 am
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.


Título: Re: combinaciones VB
Publicado por: vivachapas en 30 Diciembre 2008, 01:17 am
si pero no es para sacar contraseñas... sino para hacer juegos de palabras