Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Provare tutte le combinazioni possibili (AIUTO)
Forum - C# / VB.NET - Provare tutte le combinazioni possibili (AIUTO)

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
skaterpowa (Normal User)
Newbie


Messaggi: 3
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 17:27
Sabato, 16/04/2011
Salve,
Sto creando un programma che non conoscendo il contenuto della textbox (cioè la password) la deve trovare tramite il login, provando tutte le combinazioni possibili. Il problema è che non so creare il ciclo che prova tutte le combinazioni possibili (numeri, lettere): che sarebbe:



If textbox1.text = "afdvk" then
button1.enabled = true

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
textbox1.text = "a"
textbox1.text = "b"
textbox1.text = "c"
'ecc...
textbox1.text = "aa"
textbox2.text = "ab"
'ecc...
textbox1.text = "aaa"
textbox2.text = "aba"
textbox1.text = "aca"
textbox2.text = "ada"
'ecc...
End Sub




Fino a 2 o 3 caratteri almeno... Mi interesserebbe quindi fare ciò, ma invece di mettere ogni volta "textbox1.text = "a", "b", "c"" ecc, sarebbe meglio un ciclo che li racchiude tutti, che però non so fare. Se qualcuno sarebbe disposto ad aiutarmi me ne sarebbe grato.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:00
Sabato, 16/04/2011

nono, fallo a mano fino a password di lunghezza 32, andrà molto più veloce.

quando hai finito posta il codice.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:29
Sabato, 16/04/2011
Testo quotato

Postato originariamente da HeDo:


nono, fallo a mano fino a password di lunghezza 32, andrà molto più veloce.

quando hai finito posta il codice.


:rotfl::rotfl:
il sorgente più lungo della storia

PM Quote
Avatar
simoz (Normal User)
Rookie


Messaggi: 21
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 21:33
Sabato, 16/04/2011
Non ho capito che cosa intendi....lo puoi rispiegare meglio:-?:-?:-?

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 21:41
Sabato, 16/04/2011
Ti serve un random.. però quello che vuoi fare ha anche un lato insolito di sé..
comunque in pratica nel timer, ogni carattere in base alla lunghezza che ti serve dev'essere generata o una lettera o un numero quindi si potrebbe fare così:

Codice sorgente - presumibilmente VB.NET

  1. Dim Rand As Integer
  2. Dim WriteWord As Char
  3. Dim MAX_VALUE As Integer 'Qui metti le lettere della password generata
  4. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  5. Dim rnd As New Random
  6.         For I = 1 To MAX_VALUE
  7.             Rand = rnd.Next(1, 36)
  8.             If Rand > 26 Then
  9.                 Rand -= 26
  10.                 WriteWord = Rand
  11.             Else
  12.                 Select Case Rand
  13.                     Case 1 : WriteWord = "a"
  14.                     Case 2 : WriteWord = "b"
  15.                     Case 3 : WriteWord = "c"
  16.                     Case 4 : WriteWord = "d"
  17.                     Case 5 : WriteWord = "e"
  18.                     Case 6 : WriteWord = "f"
  19.                     Case 7 : WriteWord = "g"
  20.                     Case 8 : WriteWord = "h"
  21.                     Case 9 : WriteWord = "i"
  22.                     Case 10 : WriteWord = "j"
  23.                     Case 11 : WriteWord = "k"
  24.                     Case 12 : WriteWord = "l"
  25.                     Case 13 : WriteWord = "m"
  26.                     Case 14 : WriteWord = "n"
  27.                     Case 15 : WriteWord = "o"
  28.                     Case 16 : WriteWord = "p"
  29.                     Case 17 : WriteWord = "q"
  30.                     Case 18 : WriteWord = "r"
  31.                     Case 19 : WriteWord = "s"
  32.                     Case 20 : WriteWord = "t"
  33.                     Case 21 : WriteWord = "u"
  34.                     Case 22 : WriteWord = "v"
  35.                     Case 23 : WriteWord = "w"
  36.                     Case 24 : WriteWord = "x"
  37.                     Case 25 : WriteWord = "y"
  38.                     Case 26 : WriteWord = "z"
  39.                 End Select
  40.             End If
  41.             TextBox1.Text += WriteWord
  42.         Next
  43. End Sub


Così fatto la TextBox conterrà la password di lettere tante quanto è il valore MAX_VALUE, ovviamente quando vuoi tu le lettere devono essere resettate altrimenti poi la TextBox accavalla le password..

P.S. Il tuo codice invece la riscrive e basta, questo penso faccia proprio al caso tuo

PM Quote
Avatar
skaterpowa (Normal User)
Newbie


Messaggi: 3
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 12:53
Domenica, 17/04/2011
Quindi se faccio così:
Codice sorgente - presumibilmente VB.NET

  1. Dim Rand As Integer
  2. Dim WriteWord As Char
  3. Dim MAX_VALUE As Integer 'Qui metti le lettere della password generata
  4. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  5. Dim rnd As New Random
  6.         For I = 1 To MAX_VALUE
  7.             Rand = rnd.Next(1, 36)
  8.             If Rand > 36 Then
  9.                 Rand -= 36
  10.                 WriteWord = Rand
  11.             Else
  12.                 Select Case Rand
  13.                     Case 1 : WriteWord = "a"
  14.                     Case 2 : WriteWord = "b"
  15.                     Case 3 : WriteWord = "c"
  16.                     Case 4 : WriteWord = "d"
  17.                     Case 5 : WriteWord = "e"
  18.                     Case 6 : WriteWord = "f"
  19.                     Case 7 : WriteWord = "g"
  20.                     Case 8 : WriteWord = "h"
  21.                     Case 9 : WriteWord = "i"
  22.                     Case 10 : WriteWord = "j"
  23.                     Case 11 : WriteWord = "k"
  24.                     Case 12 : WriteWord = "l"
  25.                     Case 13 : WriteWord = "m"
  26.                     Case 14 : WriteWord = "n"
  27.                     Case 15 : WriteWord = "o"
  28.                     Case 16 : WriteWord = "p"
  29.                     Case 17 : WriteWord = "q"
  30.                     Case 18 : WriteWord = "r"
  31.                     Case 19 : WriteWord = "s"
  32.                     Case 20 : WriteWord = "t"
  33.                     Case 21 : WriteWord = "u"
  34.                     Case 22 : WriteWord = "v"
  35.                     Case 23 : WriteWord = "w"
  36.                     Case 24 : WriteWord = "x"
  37.                     Case 25 : WriteWord = "y"
  38.                     Case 26 : WriteWord = "z"
  39.                     Case 27 : WriteWord = "1"
  40.                     Case 28 : WriteWord = "2"
  41.                     Case 29 : WriteWord = "3"
  42.                     Case 30 : WriteWord = "4"
  43.                     Case 31 : WriteWord = "5"
  44.                     Case 32 : WriteWord = "6"
  45.                     Case 33 : WriteWord = "7"
  46.                     Case 34 : WriteWord = "8"
  47.                     Case 35 : WriteWord = "9"
  48.                     Case 36 : WriteWord = "0"
  49.                 End Select
  50.             End If
  51.             TextBox1.Text += WriteWord
  52.         Next
  53. End Sub



Mi prova quindi qualsiasi combinazione senza sapere il contenuto della textbox1, giusto?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:11
Domenica, 17/04/2011
Quello è un algoritmo non deterministico, almeno in linea di principio: potrebbe non provare mai tutte le combinazioni, così come potrebbe trovare la combinazione giusta in meno tempo rispetto a un brute-force. Inoltre, essendo incluso in un timer, la sua frequenza di esecuzione è nettamente inferiore a un ciclo di altro genere. Usate i timer a sproposito...

La soluzione è banale se sapessi usare almeno i costrutti iterativi, che sono tra le nozioni basilari di qualsiasi linguaggio. Nel forum non vieni per chiedere codice, ma per un aiuto su qualcosa che non hai capito. Se prima non fai lo sforzo di imparare, però, è inutile.
http://totemslair.org/guide/viewchapter.php?guida=vb&id=9
E il successivo.

PM Quote
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Segnala al moderatore
Postato alle 17:54
Domenica, 17/04/2011
Effettivamente con un ciclo Do Loop si arriverebbe più velocemente, ma il programma sarebbe impallato finché non trova la soluzione.. mentre almeno il timer fa girare intanto il programma..

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 18:25
Domenica, 17/04/2011
Testo quotato

Postato originariamente da R0gerBlack:

Effettivamente con un ciclo Do Loop si arriverebbe più velocemente, ma il programma sarebbe impallato finché non trova la soluzione.. mentre almeno il timer fa girare intanto il programma..



quando uno viene da vb6 e non sa nulla di nulla succede questo.
un po di studio e queste sparate random non si farebbero.

Ultima modifica effettuata da HeDo il 17/04/2011 alle 18:26
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo