PROBLEMA BRUTE FORCE INTELLIGENTE

donaldduck2004

Utente Èlite
10,460
2,098
CPU
i9 9900k (stock)
Dissipatore
ND-H14
Scheda Madre
Z390 AORUS Pro
HDD
512GB SSD + 1TB + 2TB M2 SSD
RAM
CMK64GX4M2D3000C16
GPU
GV-N208TGAMING OC-11GC
Audio
Teac Ud-h01 + Lake Peole G103P + Fiio E17 (+ Asus Xonar Essence STX II 7.1)
Monitor
Acer Predator XB271HUbmiprz
PSU
XFX P1-750B-BEFX
Case
Anidees AI-06B-SP+ Aquaero 6 Pro + Aquacomputer farbwerk USB
OS
Windows Pro 11 64bit
Questa discussione mi pare più un esercizio di stile che un problema reale...
O.o

Seguo con interesse...
 

Filippo Mereu

Utente Attivo
1,035
702
CPU
Intel Core i5 6600k
Dissipatore
Corsair H110
Scheda Madre
Asrock Fatal1ty Z170 Gaming K6
HDD
Samsung 850 EVO 250Gb + Toshiba 3tb 7200rpm
RAM
G.SKILL Trident Z 16Gb (2x8Gb) 3000mhz CL15
GPU
Evga FTW GTX 1070
Audio
Purity Sound 3
Monitor
Asus VX279H 1080p 60hz
PSU
Evga Supernova 550 G2 80plus Gold
Case
Phanteks Eclipse P400
Periferiche
Cooler Master Quickfire Ultimate (Switch Brown + Led Red) - Mionix Naos 7000 - Edifier R1280T - Logitech G29 - Controller Xbox One Wireless
OS
Windows 10 Pro
Non ti so aiutare, ma seguo. :sisi:
 

Dolfo91

Utente Attivo
69
3
CPU
Intel (R) Core (TM) 2 Duo E6400
Scheda Madre
Cuba MS-7301
HDD
320 GB
RAM
2048 MB
GPU
ATI Radeon HD 4670
OS
Windows XP Media Center Edition
Il ciclo for è infatti proprio figlio di C... :P Addirittura puoi anche mettere in piedi sul risultato un controllo del tipo :
if
... In PASSWORD sono presenti le substringhe "querty" AND ("io" OR "oi") AND ("op" OR "po") AND....
Allora accetta il risultato. Es salva o stampa.

Si, giustamente con alcune condizioni if sull'output dei vari cicli for, si filtra il risultato finale. Anche perchè, se non sbaglio, con un algoritmo del genere si stamperebbero m^n stringhe (m corrisponde alla quantità degli elementi della lista, n al numero di caratteri della stringa generata) e considerando tutti i vari caratteri alfanumerici maiuscoli e minuscoli, la quantità finale di stringhe generate sarebbe davvero mostruosa.

Ad ogni modo, per interfacciare questo algoritmo con un software di terze parti azzardo a dire che un ipoteticamente possibile approccio potrebbe essere l'utilizzo dei suoi API, sempre qualora lo sviluppatore li distribuisca. Nel mio caso, ad es. utilizzo un'applicazione per DSP i cui progetti possono essere tranquillamente utilizzati ed interpretati correttamente anche da un altro paio di altri software, grazie all'API.
 
Ultima modifica:

sheik yerbouty

Nuovo Utente
8
0

sarò stronzo io ma non sono riuscito ad avviare il download, ma ad ogni modo mi ero precedentemente informato e più fonti diverse dicevano che non esistevano programmi che potessero aggirare bitlocker e l'unica era provare il brute force

vi aggiorno sulla situazione dopo che ho fatto il programmino che scrive le possibili combinazioni e sbatto concretamente la testa contro il problema :muro:
 

Dolfo91

Utente Attivo
69
3
CPU
Intel (R) Core (TM) 2 Duo E6400
Scheda Madre
Cuba MS-7301
HDD
320 GB
RAM
2048 MB
GPU
ATI Radeon HD 4670
OS
Windows XP Media Center Edition
Mi permetto di riaprire un attimo questa discussione per correggere una caz***a colossale da me detta nei giorni scorsi. Infatti, nella mia prima risposta dissi, riguardo alla tecnica del Brute Force, che il processo di generazione "non necessita affatto tanto tempo". Purtroppo però, la realtà dei fatti dimostra l'esatto contrario, soprattutto se, come qui è stato detto, si vogliano generare stringhe della lunghezza di 13 caratteri. Mi spiego meglio: visto che ritengo interessantissimo l'argomento qui trattato, in questi giorni mi sono informato meglio riguardo al metodo del Brute Force, alla sua implementazione, ecc. e mi sono pure permesso, nonostante non sia un vero e proprio programmatore, di scrivere un paio di script per testare quanto tempo un algoritmo di questo tipo possa necessitare per portare a compimento l'intero compito. Il risultato di questi test dimostra che le tempistiche di impiego non crescono linearmente rispetto al risultato prodotto: in altre parole, se dovessi ad esempio, generare delle stringhe da 6 caratteri, il tempo impiegato dall'algoritmo non equivalrebbe precisamente al doppio di quello che si impiegherebbe per generarle con solo 3 caratteri. Quindi, se in quest'ultimo caso il mio script impiega circa 15 secondi per generare tutte le possibili combinazioni, per generare tutte quelle che ne contengono 10 il tempo necessario si avvicina a 1,5 milioni di anni. Sicuramente con computer più performanti ed utilizzando linguaggi per programmare a più basso livello le tempistiche scenderebbero ma si continuerebbe comunque a parlare di anni, come unità temporale. Scusate, quindi, ancora una volta per lo sfondone e di nuovo in bocca al lupo all'autore di questa discussione.

EDIT
Non so se il regolamento di questo forum lo permette, però per chi vuole approfondire l'argomento su richiesta posso inviare entrambi gli script: il primo è stato scritto utilizzando Batch mentre il secondo utilizzando Python 2.7.
 
Ultima modifica:

Reysan

Utente Attivo
151
33
CPU
AMD Phenom II X6 1035T
Scheda Madre
Asus M3N78-VM
HDD
OCZ SSD III 240GB
RAM
DDR II 1066 MHz HyperX ~ 8GB
GPU
Nvidia Geforce 8200 500 MB Shared
Audio
Integrata
Monitor
Philps LCD 22"
PSU
Cinesata
Case
Vecchio cassettone
OS
W7 && Openmamba
certo il tempo non e' multiplo bensi subisce una crescita esponenziale... solo che 1.5 milioni di anni per stringhe a 10 cifre mi sembrano leggermente sovrastimati

facendo un rapido calcolo con calc mi vengono 105giorni circa :-)
 
Ultima modifica:
M

Mursey

Ospite
Aggiungo il problema di inserire fisicamente la stringa generata per vedere se funziona.
Visto che non siamo in una puntata di CSI, quello come lo fareste ?
 
  • Mi piace
Reazioni: Reysan

Reysan

Utente Attivo
151
33
CPU
AMD Phenom II X6 1035T
Scheda Madre
Asus M3N78-VM
HDD
OCZ SSD III 240GB
RAM
DDR II 1066 MHz HyperX ~ 8GB
GPU
Nvidia Geforce 8200 500 MB Shared
Audio
Integrata
Monitor
Philps LCD 22"
PSU
Cinesata
Case
Vecchio cassettone
OS
W7 && Openmamba
Aggiungo il problema di inserire fisicamente la stringa generata per vedere se funziona.
Visto che non siamo in una puntata di CSI, quello come lo fareste ?

É questo il vero problema
 

Dolfo91

Utente Attivo
69
3
CPU
Intel (R) Core (TM) 2 Duo E6400
Scheda Madre
Cuba MS-7301
HDD
320 GB
RAM
2048 MB
GPU
ATI Radeon HD 4670
OS
Windows XP Media Center Edition
certo il tempo non e' multiplo bensi subisce una crescita esponenziale... solo che 1.5 milioni di anni per stringhe a 10 cifre mi sembrano leggermente sovrastimati

facendo un rapido calcolo con calc mi vengono 105giorni circa :-)
Posso chiederti velocemente che calcolo hai fatto per ottenere questo risultato? Perchè è completamente diverso da quello che io ho ottenuto...
 

PowPaw

Utente Èlite
4,430
1,431
CPU
Amd fx 6300 @4.1 Ghz
Scheda Madre
Asus m5a97 le r2.0
HDD
Kingston SSDNow V300 (120gb) / WD caviar blue (1 tb)
RAM
Corsair vengeance 2x4 gb @1600 Mhz
GPU
Asus r9 270x DirectCU II
Audio
Integrata
Monitor
Samsung SD320
PSU
Thermaltake Berlin 630W (Sirtec, per fortuna)
Case
Itek Furia G5 (Noooo!!!)
OS
Win 7 Home Premium
Mi permetto di riaprire un attimo questa discussione per correggere una caz***a colossale da me detta nei giorni scorsi. Infatti, nella mia prima risposta dissi, riguardo alla tecnica del Brute Force, che il processo di generazione "non necessita affatto tanto tempo". Purtroppo però, la realtà dei fatti dimostra l'esatto contrario, soprattutto se, come qui è stato detto, si vogliano generare stringhe della lunghezza di 13 caratteri. Mi spiego meglio: visto che ritengo interessantissimo l'argomento qui trattato, in questi giorni mi sono informato meglio riguardo al metodo del Brute Force, alla sua implementazione, ecc. e mi sono pure permesso, nonostante non sia un vero e proprio programmatore, di scrivere un paio di script per testare quanto tempo un algoritmo di questo tipo possa necessitare per portare a compimento l'intero compito. Il risultato di questi test dimostra che le tempistiche di impiego non crescono linearmente rispetto al risultato prodotto: in altre parole, se dovessi ad esempio, generare delle stringhe da 6 caratteri, il tempo impiegato dall'algoritmo non equivalrebbe precisamente al doppio di quello che si impiegherebbe per generarle con solo 3 caratteri. Quindi, se in quest'ultimo caso il mio script impiega circa 15 secondi per generare tutte le possibili combinazioni, per generare tutte quelle che ne contengono 10 il tempo necessario si avvicina a 1,5 milioni di anni. Sicuramente con computer più performanti ed utilizzando linguaggi per programmare a più basso livello le tempistiche scenderebbero ma si continuerebbe comunque a parlare di anni, come unità temporale. Scusate, quindi, ancora una volta per lo sfondone e di nuovo in bocca al lupo all'autore di questa discussione.

EDIT
Non so se il regolamento di questo forum lo permette, però per chi vuole approfondire l'argomento su richiesta posso inviare entrambi gli script: il primo è stato scritto utilizzando Batch mentre il secondo utilizzando Python 2.7.

Certo! Perchè è un fattoriale quella del calcolo del numero di combinazioni possibili!
https://it.wikipedia.org/wiki/Fattoriale
Come vedi con il numero 3 hai sei possibili combinazioni. Con 6 diventano 720, quindi 120 volte! ;) xD
 

Dolfo91

Utente Attivo
69
3
CPU
Intel (R) Core (TM) 2 Duo E6400
Scheda Madre
Cuba MS-7301
HDD
320 GB
RAM
2048 MB
GPU
ATI Radeon HD 4670
OS
Windows XP Media Center Edition
Certo! Perchè è un fattoriale quella del calcolo del numero di combinazioni possibili!
https://it.wikipedia.org/wiki/Fattoriale
Come vedi con il numero 3 hai sei possibili combinazioni. Con 6 diventano 720, quindi 120 volte! ;) xD
Non ti seguo: vorresti dire che se volessi generare tutte le possibili combinazioni lunghe 3 caratteri, il risultato sarebbe 3! = 6 possibili combinazioni?
 

Reysan

Utente Attivo
151
33
CPU
AMD Phenom II X6 1035T
Scheda Madre
Asus M3N78-VM
HDD
OCZ SSD III 240GB
RAM
DDR II 1066 MHz HyperX ~ 8GB
GPU
Nvidia Geforce 8200 500 MB Shared
Audio
Integrata
Monitor
Philps LCD 22"
PSU
Cinesata
Case
Vecchio cassettone
OS
W7 && Openmamba
esatto.
per il calcolo, mi hai detto che per 3 caratteri il sistema impiega 15 secondi a calcolare 6 possibili combinazioni, giusto? quindi per calcolare una combinazione il sistema impiega 2.5sec (=15/6). fin qui
dovrebbe essere tutto chiaro.
una stringa di 10 caratteri genera 10! combinazioni,
ovvero detto in altri termini 10×9×8×7×6×5×4×3×2x1
=3628800 combinazioni. Il
tempo unitario era 2.5sec; quindi 3628800×2.5
=9072000 sec e' il tempo
totale. Si esegue quindi una conversione, dunque 9072000/60(sec)/60(min)/24(ore) si ottengono 105 giorni.

In realta' contiene dei grossi errori ed e' un tempo molto
sovrastimato perche':
- nei 15 secondi che il sistema impiega per trovare 3 soluzioni il sistema compie delle azioni di contorno (es. allocazione memoria, trasferimento dati dalla memoria alla cpu, comunizioni del dato all'output...). Il tempo che la cpu effettivamente impiega ad effettuare il calcolo sara' non so di 6 sec forse;
- il tempo poi sicuramente dipende dalla cpu (marca, modello e tecnologia di funzionamente)
- c'e' poi da considerare che tutte le moderne cpu non funzionano sempre a pieno regime, ma per la maggiorparte del tempo funzionano in modalita' di risparmio energetico, ma se esegui un applicativo pesante il sistema attinge al resto dei core che non usa o aumenta la frequanza a seconda del tipo, in soldoni il tempo di calcolo si riduce a 3 sec. quindi 0,5 sec per combinazione. Rifacendo il calcolo ti vengono 21 giorni.
Attenzione pero' che io ho sparato dei numeri... che comunque cosi' a occhio sinceramente mi pare sempre molto esagerato. Il funzionamento di una cpu moderna e' molto molto complesso.
Quei 15 sec con quale linguaggio l'hai ottenuto? per avere dei paragoni hai rieseguito un programma in C?
 

JonahAMD

Utente Attivo
188
11
CPU
4690k
Scheda Madre
Asus Z97-PRO
RAM
Kingston HyperX Fury
GPU
EVGA GTX 980
PSU
Seasonic X-750
Case
NZXT H440
OS
Windows 8.1
seguo anche io, sono interessato :)
 
  • Mi piace
Reazioni: Reysan

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!