Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Texte und Ebooks
Autor
Nachricht
Rausch_
Poster
Poster

Anmeldedatum: 03.11.2007
Beiträge: 164

[Text] Sicherere Hash-Verschlüsselung
Verfasst am: 16.01.2008, 14:09

wenn ein passwort oder ähnliches in eurem programm speichern wollt, ohne das man es einfach auslesen kann, nehmt ihr vermutlich einen MD5-hash.
nur leider kann man dann einfache kurtze passwörter auch sehr schnell bruteforcen, und längere kann man sich sich schlecht merken.
wenn man sich das ganze aber mal genauer überlegt, erkennt man, dass man ja den aus dem hash, nochmal einen hash ersetllen könnte, da er ja auch nur ein string ist.

ZiG hat Folgendes geschrieben:
Die Annahme ist zwar sehr stark verbreitet, ist aber nicht richtig.
Man muß bei einem doppelt oder salted Hash nicht versuchen die 32 Zeichen des Ausgangshash rauszubekommen, also cracken.

Sieh dir Programme wie PasswordsPro oder MDCrack an. Die können sehr wohl mit salted Hashes umgehen.

Ist auch ganz einfach.
Die Programme wiederholen einfach den Vorgang des hashens.
Hab ich auch schon paarmal für coding hackits programmiert.

Vorgang:
Plain generieren oder einlesen
plain umwandeln. (Doppelt, salted oder was ihr wollt)
Neuen Hash mit dem original vergleichen. Falls der übereinstimmt hat man ebenso den plain rausbekommen wie wenn man den einfachen MD5 Hash gecrackt hätte.
Natürlich dauert das länger als bei einem normalen MD5 Hash.


vorhin hab ich das ganze 20000 mal gemacht, es dauerte nur etwa 7 sec.

hier habt ihr mal einen beispiel code:
clsmd5 ist die md5-klasse.
Code:
Private Function multimd5(times As Long, ByVal text As String) As String
Dim md5 As New clsMD5
Dim i As Integer
For i = 1 To times
text = md5.DigestStrToHexStr(text)
Next
multimd5 = text
End Function


benuzen tut ihr das dann so:
hash erstellen:
Code:
multimd5(20, "password")


überprüfen:
Code:

If mmultimd5(20, "password") =  "cac43aed3585d7720c148ebeb9aa0076" Then MsgBox "Passwort Richtig!"


weiter so jetzt wollen wir aber auch noch andere verschlüsselungen benuzen
ich beschreibe einmal den weiteren verlauf mit unserem salted hash:
-sha1
-rc4
-sha256
-rc4
-base 64

so ab jetzt kommt alles in eine function GenerateCryptedHash:
als erstes nochmal unseren md5 code und ein paar deklarationen:
Code:

Public Function GenerateCryptedHash(ByVal toCrypt As String) As String
Dim MD5 As New clsMD5
Dim SHA1 As New clsSHA
Dim SHA256 As New clsSHA256
Dim i As Integer
For i = 1 To 20
toCrypt = MD5.DigestStrToHexStr(toCrypt)
Next

so machen ich mache einfach mal weiter, sollte ja nicht so schwer sein das zu verstehen:
Code:


For i = 1 To 20
toCrypt = SHA1.SHA1(toCrypt)
Next

toCrypt = RC4(toCrypt, """%&s=)!§§/³2""ö#'*ü<|!§§/|>+=")

For i = 1 To 20
toCrypt = SHA256.SHA256(toCrypt)
Next

toCrypt = RC4(toCrypt, "!§§/€??)+*#>>|<<%&§7§ad""""HJI")

toCrypt = Base64EncodeUnicode2(toCrypt)

GenerateCryptedHash = toCrypt


zum überprüfen machen wir das wie mit einem normalen hash:
Code:

If GenerateCryptedHash(<passwort>) = <hash> Then
MsgBox "Passwort Richtig!"
Else
MsgBox "Passwort Falsch!"
End If

und das wars dann auch schon
so hier noch die dl links
Verschlüsselung
BeispielProjekt

mfg rausch
_________________


Zuletzt bearbeitet von Rausch_ am 28.03.2008, 19:53, insgesamt 5-mal bearbeitet
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 16.01.2008, 16:41

Rausch hat Folgendes geschrieben:
das wäre dann ja perfekt, weil jemand der euer passwort knacken will, erst mal 32 zeichen buchstaben und zahlen bruten müsste, und wie ihr alle vermutlich wisst, geht es dann schneller das programm einfach selber zu coden.


Die Annahme ist zwar sehr stark verbreitet, ist aber nicht richtig.
Man muß bei einem doppelt oder salted Hash nicht versuchen die 32 Zeichen des Ausgangshash rauszubekommen, also cracken.

Sieh dir Programme wie PasswordsPro oder MDCrack an. Die können sehr wohl mit salted Hashes umgehen.

Ist auch ganz einfach.
Die Programme wiederholen einfach den Vorgang des hashens.
Hab ich auch schon paarmal für coding hackits programmiert.

Vorgang:
Plain generieren oder einlesen
plain umwandeln. (Doppelt, salted oder was ihr wollt)
Neuen Hash mit dem original vergleichen. Falls der übereinstimmt hat man ebenso den plain rausbekommen wie wenn man den einfachen MD5 Hash gecrackt hätte.
Natürlich dauert das länger als bei einem normalen MD5 Hash.


Idee ist trotzdem gut nur 20.000 mal hashen muß man wirklich nicht.
Am besten MD5 und SHA1 benutzen + Salt.
Dazwischen so Funktionen wie StrReverse oder UCase.

Den Hash im Programm nicht als Klartext speichern sondern Ascii.
Der Funktion/Sub zum Hash genieren und vergleichen, keinen auffälligen Namen geben.
_________________
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
RaG3!_
Poster
Poster

Anmeldedatum: 26.07.2007
Beiträge: 104


Verfasst am: 16.01.2008, 16:54

Dank dir für das Tutorial, aber bei mir hakts schon an der ersten Stelle. wie verschlüssel ich die Daten wie in meinem Programm in einem MD5-Hash?
_________________
MFG RaG3
 
Rausch_
Poster
Poster

Anmeldedatum: 03.11.2007
Beiträge: 164


Verfasst am: 16.01.2008, 17:12

@ZiG: mhmm mist xD
@RaG3: Hier gibts die MD5 Klasse
 
Rausch_
Poster
Poster

Anmeldedatum: 03.11.2007
Beiträge: 164


Verfasst am: 05.03.2008, 15:06

hab das ganze mal verbessert...
 
sollniss_
Coder
Coder

Anmeldedatum: 08.09.2007
Beiträge: 212


Verfasst am: 05.03.2008, 15:14

wenn du den hash mehrmals hashst vertausend(oder nochmehr)facht sich die chance einer koorlision...

und denn isses extrem einfach den hash zu cracken weils ja mehere lösungen gibt
_________________
http://sollniss.1x.to/

 
Rausch_
Poster
Poster

Anmeldedatum: 03.11.2007
Beiträge: 164


Verfasst am: 05.03.2008, 15:26

stimmt schon dass es einfach wäre den hash zu knacken, allerdings nur wenn man auch die GenerateCryptedHash funktion hat. wenn man aber die zahlen und passwörter und vll auch die reihnfolge etwas verändert, hat der cracker ja keine ahnung was er jetzt damit machen soll...
stell dir vor ich programmiere irgendein programm mit einem passwort, und du bist der böse cracker und hast auch schon den hash aus meinem proggramm ausgelesen. jetzt gibt es ja kein tool zum cracken von einem solchen hash oder ähnliches, also weißt du gar nicht was du cracken sollst.(außer du läst die form immer mit einem neuen passwort ausfüllen). wenn ich aber sage hier seht meine GenerateCryptedHash funktion an, dann kannst du auch ein bruteforce tool schreiben das dann vll. relativ schnell an das passwort kommt(wegen koorlision)
mfg
 
vblehrlinglol_
Newbie
Newbie

Anmeldedatum: 04.01.2008
Beiträge: 8


Verfasst am: 28.03.2008, 19:15

würde mir das gerne mal genauer anschauen, ein reupp wäre mir sehr hilfreich Smile
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 28.11.2007
Beiträge: 425


Verfasst am: 28.03.2008, 19:25

Das Tutorial steht im obersten Beitrag.
Du scheinst noch nicht lang dabei zu sein, es gibt jetzt keine Verwarnung.
_________________
 
vblehrlinglol_
Newbie
Newbie

Anmeldedatum: 04.01.2008
Beiträge: 8


Verfasst am: 28.03.2008, 23:20

c0re hat Folgendes geschrieben:
Das Tutorial steht im obersten Beitrag.
Du scheinst noch nicht lang dabei zu sein, es gibt jetzt keine Verwarnung.


Zitat:

so hier noch die dl links
Verschlüsselung
BeispielProjekt


BeispielProjekt , das wäre nice, aber kein ding^^
_________________


 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 28.11.2007
Beiträge: 425


Verfasst am: 28.03.2008, 23:37


Alles noch da.
http://rauschatvbx.ra.funpic.de/download/
_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Texte und Ebooks

Tags: hash, verschlüsselung, text, passwort, string

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Passwort Generator 1526 08.07.2010, 00:32
Keine neuen Beiträge Passwort Schutz? 879 25.10.2007, 06:31
Keine neuen Beiträge Das passwort an die E-Mail von mir senden? 562 17.10.2007, 21:18
Keine neuen Beiträge Passwort Generator by sollniss 1270 28.11.2008, 17:03
Keine neuen Beiträge TUT zur Passwort abfrage 1013 10.08.2007, 15:06
 



[ Time: 0.4242s ][ Queries: 121 (0.0521s) ][ GZIP on - Debug on ]