md5 decrypt
Pagina: « vorige 1 2 3 4 volgende »
Maar ik weet verder ook niet hoe md5 precies werkt, word het letter voor letter omgezet, dan lijkt het me te decoden, als een a bijvoorbeeld altijd ekgjrogejg is dan kan je het omzetten :P mja, denk niet dat dat het geval is :P
@ Joost. Een Root-user op een Unix-systeem?
Ja heb ik maar geen zin om het helemaal te gaan uitpluizen, hou er niet zo van eigenlijk, het is niet voor niets 1 richtingsverkeer ;)
Allen: Kijk eens op de wikipedia pagina van MD5: http://nl.wikipedia.org/wiki/MD5 ?
Het enige veilige is een eigen encryptie te gebruiken... ;-)
Chris Kortaan schreef op 10.08.2009 14:19:
Het enige veilige is een eigen encryptie te gebruiken... ;-)
Men probeert dat vaak, maar men zal dan wel extensief moeten gaan test-hacken wil het veilig zijn. Er zijn veel "eigen encrypties" uitgebracht, maar weinig encrypties houden het vol.
De grootste zwakte in een encryptie is dat er meestal een patroon in zit. Het is te voorspellen wat een bit doet wanneer het door de encryptie gaat. Ook al gooi je er bit-wise operators overheen, het is en blijft een statische procedure; het verandert niet.
Als voorbeeld had ik bijvoorbeeld een challenge op een challenge-pagina waarbij bytes afhankelijk van hun ASCII waarde 1 of 3 waardes (rekening houdende met de positie waar ze staan in de string) werden opgeteld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<int> vecMessage; // Initialize message vector
vector<int> vecEncrypted; // Initialize encrypted message vector
cout << "Enter message to encrypt: \n";
string strMessage;
getline(cin, strMessage);
// Reverse string by pushing individual characters into vector stack
for(int i = 0; i < strMessage.length(); i++)
{
int c = strMessage.at(i); // Convert char to int
vecMessage.push_back(c); // Push to the back of the vector stack
}
vector<int>::reverse_iterator rit; // Initialize vector iterator
int position = 0; // Initialize position variable
// Encrypt the invidivual characters
for(rit = vecMessage.rbegin(); rit < vecMessage.rend(); ++rit)
{
if(*rit % 2 == 0)
vecEncrypted.push_back((*rit + 1 + position)); // Push encrypted value into vector stack
if(*rit % 2 == 1)
vecEncrypted.push_back((*rit + 3 + position)); // Push encrypted value into vector stack
position++; // Increment position value
}
// Read out the vector stack which holds encrypted characters BACKWARDS to give proper (difficult output)
for(int v = (vecEncrypted.size() - 1); v >= 0; v--)
cout << hex << vecEncrypted[v]; // Display in HEX mode
cin.clear();
cin.ignore(255, '\n');
cin.get();
return 0;
}
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<int> vecMessage; // Initialize message vector
vector<int> vecEncrypted; // Initialize encrypted message vector
cout << "Enter message to encrypt: \n";
string strMessage;
getline(cin, strMessage);
// Reverse string by pushing individual characters into vector stack
for(int i = 0; i < strMessage.length(); i++)
{
int c = strMessage.at(i); // Convert char to int
vecMessage.push_back(c); // Push to the back of the vector stack
}
vector<int>::reverse_iterator rit; // Initialize vector iterator
int position = 0; // Initialize position variable
// Encrypt the invidivual characters
for(rit = vecMessage.rbegin(); rit < vecMessage.rend(); ++rit)
{
if(*rit % 2 == 0)
vecEncrypted.push_back((*rit + 1 + position)); // Push encrypted value into vector stack
if(*rit % 2 == 1)
vecEncrypted.push_back((*rit + 3 + position)); // Push encrypted value into vector stack
position++; // Increment position value
}
// Read out the vector stack which holds encrypted characters BACKWARDS to give proper (difficult output)
for(int v = (vecEncrypted.size() - 1); v >= 0; v--)
cout << hex << vecEncrypted[v]; // Display in HEX mode
cin.clear();
cin.ignore(255, '\n');
cin.get();
return 0;
}
Al verander je +1 + position en +3 + position in >> 1 >> position en >> 3 >> position (bit-wise), dan nog is de encryptie te analyseren.
Voor als nog is een hash-cryptografie de beste oplossing om iets te verzegelen.
EDIT: Ja, dit heb ik in C++ geschreven.
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Hij zit redelijk complex in elkaar en is dan ook niet geschreven in 5 minuten. Vooral het decoderen was een redelijk drama vanwege de dingen die ik deed. Het is echter wel gelukt, en de mensen die het hebben geprobeerd hebben hem nooit kunnen kraken. Zie "http://www.sitedeals.nl/scripting-php-asp-javascript/63360-probeer-dit-maar-te-kraken.html".
Ik zou je haast encoded mijn wachtwoord durven geven, aangezien ik er vrijwel zeker van ben dat jij hem niet kraakt in enkele weken. (Tegen de tijd dat jij hem hebt gekraakt, zit ik waarschijnlijk alweer 2 passwords verder...)
Overigens is dat ding van mij gewoon in PHP gemaakt ^_^
Anders kan je zeggen: Ik heb een encryptie gemaakt, kraak het maar en je krijgt 1000.000 E: "ABCDEFGHIJKLMNOPQRSTUVWXY10934Z". Het is een woord dat bestaat tussen de 3 en 5 letters :').
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Chris is op die site daar al meerdere keren op aangesproken
Ik heb nl. zo'n tool alle karakters afgaat en ik heb pas een MD5 password van 4 letters gekraakt, maar dat duurde wel meer als een uur.
Conclusie: het werkt wel, maar snel gaat het niet.
Gewijzigd op 01/01/1970 01:00:00 door Roel -
Roel schreef op 11.08.2009 00:06:
MD5 valt wel te kraken met een tool zonder woordenboek...
Ik heb nl. zo'n tool alle karakters afgaat en ik heb pas een MD5 password van 4 letters gekraakt, maar dat duurde wel meer als een uur.
Conclusie: het werkt wel, maar snel gaat het niet.
Ik heb nl. zo'n tool alle karakters afgaat en ik heb pas een MD5 password van 4 letters gekraakt, maar dat duurde wel meer als een uur.
Conclusie: het werkt wel, maar snel gaat het niet.
Jesus waarom moeten al die fucking noobs hier op dit forum andere noobs komen wijs maken dat md5 kan worden gekraakt!!!!!
DIT IS ONMOGELIJK! EN VOOR ALLE ANDERE NOOBIES DIE HIER NOG WILLEN TEGEN IN GAAN, NEE!!!! DIT KAN NIET! LEG JE ER BIJ NEER! AAAAARH, KOM SLECHT VAN ZO'N REACTIES!
MD5 is niet te kraken alleen te Brute-force dus je hebt gelijk maar moet dat op deze manier ?
Misschien er gewoon niet naar kijken of het negeren.
De sfeer word er zo niet beter op.
Ik heb GaMeR13 de URL gegeven en enkele encrypties, hij mag ze proberen te kraken. Mochten anderen dat ook nog willen doen, stuur maar een PM. Bij genoeg animo zet ik 'm wel publiekelijk online.
Voor eens en altijd: MD5 is NIET te kraken. Je kunt alléén dmv een Rainbow Table of MD5 Hash Generator bruteforcen. De huidige norm die word aangeraden voor wachtwoorden, zorgt ervoor dat de gemiddelde huis-tuin-keuken PC/Laptop er meerdere jaren over doet om een simpel wachtwoord van ongeveer 6 tekens te vinden.
Het is énkel mogelijk om (met veel moeite) een MD5-collision te genereren, je kunt hem niet decoderen.
Pas met de komst van qantum PC's, die meer berekeningen kunnen maken per seconde dan de "normale/ouderwetse" PC's, zullen ze sneller worden gevonden.
Overigens, ik hoor veel mensen zeggen "SHA*** is vele malen veiliger!!". Bullshit. MD5 of SHA bruteforcen maakt geen hol uit. Als je eenmaal dat proces start, zul je er
Chris Kortaan schreef op 10.08.2009 14:19:
Het enige veilige is een eigen encryptie te gebruiken... ;-)
Dus niet dus.
Dat is juist onveiliger. Bij een password lijkt het misschien veilig, maar dan heb je geen referenties. Als je honderd passwords hebt (en eventueel ook zelf mag genereren) dan is de kans al heel veel groter dat die encryptie te kraken valt. En je maakt zo'n encryptie om er veel me te encrypten, dus die honderd passwords zouden er moeten zijn.
Chris Kortaan schreef op 11.08.2009 08:14:
Overigens, ik hoor veel mensen zeggen "SHA*** is vele malen veiliger!!". Bullshit. MD5 of SHA bruteforcen maakt geen hol uit. Als je eenmaal dat proces start, zul je er vroeg of laat toch wel achterkomen. Het enige wat écht veilig is, is een wachtwoord te genereren en te encoderen met een eigen encryptie programma die niet voor het publiek toegankelijk is, of te werken met een SALT.
Bepaalde SHA methodes duurt het langer om te brute-force'n dan bij MD5. Dus in principe zou dat veiliger zijn. Want je kunt ook geintjes inbouwen dat eenmaal in de week het password gereset moet worden. Dan heb je d'r ook niks aan het brute-force'n (aannemend dat het brute-force met simpele middelen minimaal één week beslaat).
En stuur mij ook maar die PM, wil wel zien wat je hebt.
Verder heeft Chris over de rainbow tables en brute-forcen zeker gelijk. Er zit echter een verschil in tijd tussen het brute-forcen van MD5 en SHA*** . En natuurlijk speelt het gebruik van een SALT mee, maar ook dat maakt het slechts een beetje veiliger. Bij een static salt duurt het gewoon langer om te brute-forcen.
En ook ik meld me aan voor de PM.
Ik wil ook wel eens een poging wagen. PM mij ook maar :)!
Even een test-case gemaakt. Met MHASH 3 verschillende sorten encrypties gebruikt, ieder 500.000 encrypties laten maken (random) van 8 tekens in totaal. Dit zijn de resultaten.
Quote:
500000 MD5: 5.51872
500000 SHA1: 6.43932
500000 SHA256: 6.69901
500000 SHA1: 6.43932
500000 SHA256: 6.69901
Het script wat ik heb gebruikt, en wat ik aan jullie wil vragen is om dit ook even te draaien en hier te plaatsen zodat we wat meer resultaten hebben (aangezien dit een Laptop is die z'n rekenkracht redelijk is verloren...): Wel even MHASH als extensie aanzetten indien je windows gebruikt(!).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
/*
* MD5 & SHA Timert.
* Laat zien hoeveel (micro) seconds het duurt om een halve miljoen hashes aan te maken.
* © voor zo'n klein dingetje? Naah...
*/
$start = microtime(true);
for($i = 0; $i < 500000; $i++)
{
mhash(MHASH_MD5,'blaat'.rand(1000, 9999));
}
$end = microtime(true);
echo '500000 MD5: '.number_format($end-$start, 5).'<br />';
flush();
$start = microtime(true);
for($i = 0; $i < 500000; $i++)
{
mhash(MHASH_SHA1, 'blaat'.rand(1000, 9999));
}
$end = microtime(true);
echo '500000 SHA1: '.number_format($end-$start, 5).'<br />';
flush();
$start = microtime(true);
for($i = 0; $i < 500000; $i++)
{
mhash(MHASH_SHA256, 'blaat'.rand(1000, 9999));
}
$end = microtime(true);
echo '500000 SHA256: '.number_format($end-$start, 5);
[/code]
[i]Edit: [ignore][php]-tags ipv [code][/ignore]-tags gebruikt...[/i]
/*
* MD5 & SHA Timert.
* Laat zien hoeveel (micro) seconds het duurt om een halve miljoen hashes aan te maken.
* © voor zo'n klein dingetje? Naah...
*/
$start = microtime(true);
for($i = 0; $i < 500000; $i++)
{
mhash(MHASH_MD5,'blaat'.rand(1000, 9999));
}
$end = microtime(true);
echo '500000 MD5: '.number_format($end-$start, 5).'<br />';
flush();
$start = microtime(true);
for($i = 0; $i < 500000; $i++)
{
mhash(MHASH_SHA1, 'blaat'.rand(1000, 9999));
}
$end = microtime(true);
echo '500000 SHA1: '.number_format($end-$start, 5).'<br />';
flush();
$start = microtime(true);
for($i = 0; $i < 500000; $i++)
{
mhash(MHASH_SHA256, 'blaat'.rand(1000, 9999));
}
$end = microtime(true);
echo '500000 SHA256: '.number_format($end-$start, 5);
[/code]
[i]Edit: [ignore][php]-tags ipv [code][/ignore]-tags gebruikt...[/i]
md5(md1(md2(md3(md4(md5(md6(sha1(sha2(md6(md5(md4(md3(md2(md1
Dan denk ik niet dat iemand je paswoord zal kraken..
MD6 is volgens mij nog in BETA.
Jammer alleen dat MD1-3 niet bestaat en 4 verouderd is. aff :(
Quote:
500000 MD5: 5.51872
500000 SHA1: 6.43932
500000 SHA256: 6.69901
500000 SHA1: 6.43932
500000 SHA256: 6.69901
Hier op mijn laptop doet ie er:
500000 MD5: 1.74385
500000 SHA1: 1.81067
500000 SHA256: 1.99885
Gewijzigd op 01/01/1970 01:00:00 door Zero XT