Riferimento: Creare Brute Force ( Random,Ciclo e tramite una lista ) + Download Source di
Allora ... qualche "critica" costruttiva ... spero vorrai accettarla dato che può solo "migliorarti" (e farti anche capire meglio come la teoria sia più importante della pratica) ...
1) fare un bruteforce in VB6 è valido solamente a scopo "didattico" dato che la lentezza di questa soluzione non servirebbe a gestire i milioni di tentativi che sono quasi sempre necessari. Ci vorrebbe una vita (nel vero senso della parola) a trovare una password ...
2) un bruteforce che cerca password scrivendole in una lista, ovviamente, non serve a nulla. Quando le password si generano devono essere passate (in qualche modo) al programma che le utilizza, altrimenti è assolutamente inutile. Di fatto, i bruteforce sono abbastanza inutili perché ricorda che la maggior parte dei programmi che accettano password adottano semplici tecniche per fare in modo che un bruteforce sia inutile (ad esempio, usano un ritardo sempre maggiore tra le varie richieste in modo che diventi inutile provare dopo qualche decina di volte, o limitano il numero di tentativi prima di bloccare l'account)
3) la soluzione con i Timer di VB6 non è ottimale e impostare un timer ad 1 millisecondo non ha senso dato che la teoria dice che Windows non richiamerà mai il timer a intervalli così brevi. Il tempo minimo (che dipende dal timeslice del Sistema operativo) sarà di almeno 10 o 15 millisecondi. E' meglio utilizzare un ciclo for.
4) il tuo codice genera SEMPRE le stesse password random dato che hai utilizzato la funzione Rnd senza leggere la documentazione (quindi ignorando la TEORIA). La Rnd genera dei valori pseudorandom (a partire da un "seme") che sono ripetuti in sequenza. Se non modifichi il "seme" iniziale, avrai sempre la stessa sequenza. Il seme iniziale lo modifichi tramite l'istruzione Randomize associata al valore corrente del Timer (vedi la solita documentazione)
5) in VB6 scrivere
Dim v1, v2, v3, v4, v5, v6 As String
significa avere la variabile v6 di tipo String, ma le altre di tipo Variant sottotipo string, dato che la dichiarazione delle variabili è diversa da quella di altri linguaggi (la solita teoria). Dopo il programma funziona lo stesso, ma per altri motivi (conversione implicita fatta dal VB6) di cui tu ignori l'esistenza
6) Scrivere
Dim lista As String
per avere una stringa e poi
lista = List3.ListCount
utilizzando la stringa con un valore numerico non ha senso in programmazione. E' solo per le conversioni implicite di cui ti dicevo che funziona, ma sarà un errore se passerai ad altri linguaggi tipizzati come C#, C/C++ o anche VB.NET (e sarà un errore grave per ottenere un lavoro come programmatore ...)
7) hai scritto "ciclo if" ma di questo abbiamo già parlato ...
In bocca al lupo