Aiuto programma in C :)

Alby_x188

Utente Attivo
22
0
CPU
Intel Core Duo Quad Q8300 2.5GHz
Scheda Madre
Ipiel-LA 3
HDD
500Gb
RAM
Elpida DDR3 2048Mb 2x3
GPU
HD Radeon 4350 880MHz 512 Mb
Audio
Realtek High Defition Audio Subwoofer 80Watt Philips + 2 casse 20Watt
Monitor
HP 2009v 22" LCD
PSU
500 Watt
Case
HP
OS
Windows 7 Home Edition 64bit
Salve raga del forum. E' da un po di tempo che vorrei scrivere un programma in C che, dato in input una stringa (numeri, lettere, maiuscole/minuscole, simboli...) il programma calcoli tutte le possibili combinazioni di simboli fin quando trova quelli digitata in input. Qualcuno potrebbe spiegarmi come fare? Niente codice già fatto, di quelli ne trovo a bizzeffe sul web. Bensì vorrei capire l'algoritmo, il ragionamento. Sul web molti consigliano dei cicli FOR nidificati, ma ancora non ne ho capito l'utilità. Postate, per piacere, guide, suggerimenti, consigli e quant'altro. Grazie :))
 
M

Mursey

Ospite
Per aiutarti occorre capire bene quello che vuoi.

Praticamente una specie di simulatore di password cracker ?
Dico simulatore perche', dovendo inserire la stringa, il programma non avrebbe bisogno di una ricerca del genere.

Spiegati meglio...
 

Alby_x188

Utente Attivo
22
0
CPU
Intel Core Duo Quad Q8300 2.5GHz
Scheda Madre
Ipiel-LA 3
HDD
500Gb
RAM
Elpida DDR3 2048Mb 2x3
GPU
HD Radeon 4350 880MHz 512 Mb
Audio
Realtek High Defition Audio Subwoofer 80Watt Philips + 2 casse 20Watt
Monitor
HP 2009v 22" LCD
PSU
500 Watt
Case
HP
OS
Windows 7 Home Edition 64bit
Vorrei fare un programma che provi tutte le permutazioni possibili di S simboli (mettero alfabeto, maiuscole/minuscole, simboli, numeri) finché non trova quelli inserito all'inizio in input. Mi puoi aiutare?
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Chiamerò "parole" le combinazioni di caratteri e "alfabeto" l'insieme dei simbolie caratteri da usare.
Il tuo algoritmo deve costruire tutte le parole possibili fino ad ottenere una parola uguale a quella inserita?
A priori sai già la lunghezza della parola da trovare o devi partire a provare le parole di lunghezza 1?
Esempio: la parola inserita è "ciao", e usi le sole lettere minuscole, parti da 'a' o da 'aaaa'?
Una volta chiarito questo punto puoi pensare a un approccio "a orologio", a ogni iterazione (a ogni test) modifichi l'ultimo carattere, una volta che arrivi all'ultimo simbolo dell'alfabeto, passi al simbolo successivo del penultimo carattere della parola e ripeti l'intero ciclo. Quando avrai permutato tutti i penultimi simboli, modifichi il terzultimo e ripeti l'intero processo per gli ultimi due simboli.
Non so se non stato chiaro, comunque pensa a come funziona un orologio a lancette o anche a uno digitale: l'ultima cifra (la seconda cifra dei secondi) cambia sempre ad ogni secondo, ogni volta che passa per zero, la prima cifra dei secondi sale di uno. E la prima cifra dei secondi, al posto di saltare a 6, torna a zero e fa scattare la seconda cifra dei minuti. E così via, il concetto è lo stesso.
Per implementarlo potresti usare un array contenente l'alfabeto da usare e dei puntatori che scorrono sull'array, i puntatori saranno i singoli simboli.
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Conta che per una parola di X caratteri ci sono X! combinazioni possibili. Ad esempio una parola di 5 caratteri ha 120 combinazioni.
 

Alby_x188

Utente Attivo
22
0
CPU
Intel Core Duo Quad Q8300 2.5GHz
Scheda Madre
Ipiel-LA 3
HDD
500Gb
RAM
Elpida DDR3 2048Mb 2x3
GPU
HD Radeon 4350 880MHz 512 Mb
Audio
Realtek High Defition Audio Subwoofer 80Watt Philips + 2 casse 20Watt
Monitor
HP 2009v 22" LCD
PSU
500 Watt
Case
HP
OS
Windows 7 Home Edition 64bit
Devo dissentire, Signore del Tempo. Il fattoriale vale per tutte le combinazioni senza ripetizione del simbolo. Se volessi trovare la stringa ACAB, dove la A si ripete, il fattoriale X! non basta
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Devo dissentire, Signore del Tempo. Il fattoriale vale per tutte le combinazioni senza ripetizione del simbolo. Se volessi trovare la stringa ACAB, dove la A si ripete, il fattoriale X! non basta
?
 

Alby_x188

Utente Attivo
22
0
CPU
Intel Core Duo Quad Q8300 2.5GHz
Scheda Madre
Ipiel-LA 3
HDD
500Gb
RAM
Elpida DDR3 2048Mb 2x3
GPU
HD Radeon 4350 880MHz 512 Mb
Audio
Realtek High Defition Audio Subwoofer 80Watt Philips + 2 casse 20Watt
Monitor
HP 2009v 22" LCD
PSU
500 Watt
Case
HP
OS
Windows 7 Home Edition 64bit
dati 3 elementi a, b, c come alfabeto. Combinazioni totali:

abc
acb
bca
bac
cab
cba

In tot. sono 6 combinazioni, ovvero 3!=6, come dici tu. Ma, se volessi trovare la stringa "aab", dove la "a" si ripete, questa non rientra nella formula. Non so se mi sono spiegato bene...
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Il numero di n-sequenze di k-elementi con ripetizioni è k^n.
Per cui il numero di parole di 5 simboli presi da un alfabeto di 26 simboli (caratteri alfabeto minuscolo) è 26^5, che è un numero molto grande. Non a caso il bruteforce come tecnica di hacking, oltre ad essere la più banale è anche la più pesante.
Comunque ti sei fatto una idea dell'algoritmo?
 

Alby_x188

Utente Attivo
22
0
CPU
Intel Core Duo Quad Q8300 2.5GHz
Scheda Madre
Ipiel-LA 3
HDD
500Gb
RAM
Elpida DDR3 2048Mb 2x3
GPU
HD Radeon 4350 880MHz 512 Mb
Audio
Realtek High Defition Audio Subwoofer 80Watt Philips + 2 casse 20Watt
Monitor
HP 2009v 22" LCD
PSU
500 Watt
Case
HP
OS
Windows 7 Home Edition 64bit
Un'idea si, ma metterla in pratica non sarà facile. Sto incominciando a disegnare un diagramma a blocchi per capirlo meglio
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Ti consiglio di analizzare bene come tu eseguiresti questa operazione. Ad esempio quando hai postato le possibilità di abc.
Poi utilizzi la rappresentazione che preferisci.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili