Avatar billede visualdeveloper Nybegynder
15. april 2005 - 19:43 Der er 63 kommentarer og
2 løsninger

MD5 hash til kode

Hej eksperter!
Jeg har denne login form....

Private Sub Command1_Click()
  Dim FilIndhold As String
  Dim FF As Long
  Dim strPath As String
  FF = FreeFile
  If File1.ListIndex >= 0 Then 'skal kun virke når du har MARKERET en fil
    strPath = File1.Path
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    Open strPath & File1.FileName For Input As #FF
      Line Input #FF, FilIndhold
    Close #FF
    If FilIndhold = "fjdskaj435684629/*4564*464g+254354+34*54364" And Text1.Text = "kode" Then
    Form2.Show
    Me.Hide
    Else
    Form2.Hide
    Me.Show
    MsgBox "Kunne ikke logge på kodeord eller fil er forkert !" & FilIndhold, vbCritical, "Fejl 1.01"
    End If
  Else
    MsgBox "Du skal først markere en fil !"
  End If
End Sub

men jeg har fundet ud af at man faktisk kan bryde den via en hexeditor...så derfor vil jeg gerne lave en MD5 hash af koden ???
hvordan gør jeg det ???
er der en der kan give mig en lille guide ?

En der kan skive en WinDLL om kan beregne MD5 og som kan kaldes fra VB !

Visualdeveloper !
Avatar billede ranglen Nybegynder
15. april 2005 - 20:00 #1
Avatar billede visualdeveloper Nybegynder
15. april 2005 - 20:58 #2
jeg forstår ikke særlig meget af dette eksempel....er der ikke en der bare kan skrive en winDLLsom kan beregne MD5 og som kan kaldes fra VB ?
Avatar billede visualdeveloper Nybegynder
15. april 2005 - 20:58 #3
det sagde arne_v han kunne?
Avatar billede ranglen Nybegynder
15. april 2005 - 21:00 #4
Du inkluderer blot cmd5.cls i dit projekt, så kalder du MD5("en streng") når du skal beregne hash værdien.

Funktionen returnerer hash'en
Avatar billede arne_v Ekspert
15. april 2005 - 21:00 #5
jeg arbejder på den

den er faktisk færdig - nu skal jeg bare lige teste den
Avatar billede visualdeveloper Nybegynder
15. april 2005 - 21:00 #6
ok
Avatar billede visualdeveloper Nybegynder
15. april 2005 - 21:07 #7
hvornår tror du den er klar ?
Avatar billede arne_v Ekspert
15. april 2005 - 21:09 #8
20 minutter
Avatar billede ranglen Nybegynder
15. april 2005 - 21:10 #9
Hvis du vil lege med den anden: add > class module > cmd5.cls

Dim md5 As CMD5
Set md5 = New CMD5
Text1.Text = md5.md5("kode")

Text1 indholder du md5 hashen til 'kode':

70375478134bc7187a0d5a0ffd59c283
Avatar billede visualdeveloper Nybegynder
15. april 2005 - 21:10 #10
ok....
Avatar billede arne_v Ekspert
15. april 2005 - 21:32 #11
hm - jeg har lidt problemer - jeg tror at du skal lege lidt med ranglens link
Avatar billede arne_v Ekspert
15. april 2005 - 22:27 #12
Nu virker det.

Men det drillede lidt. Jeg hader Unicode-ANSI-BSTR problemer !

http://www.vajhoej.dk/arne/eksperten/md5/md5.dll

Eksempel på brug:

Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

og

Private Sub Command1_Click()
    Text2.Text = MD5Hash(Text1.Text)
End Sub

(når der ikke er dir på lib så skal dll ligge i samme dir som exe, men det ved du
sikkert alt om)
Avatar billede arne_v Ekspert
15. april 2005 - 22:28 #13
Jeg smider også C++ koden op lidt senere.
Avatar billede visualdeveloper Nybegynder
16. april 2005 - 09:21 #14
mange tak c++ koden ???
Avatar billede visualdeveloper Nybegynder
16. april 2005 - 09:25 #15
kan jeg indsætte dette?

Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Command1_Click()
  Dim FilIndhold As String
  Dim FF As Long
  Dim strPath As String
  FF = FreeFile
  If File1.ListIndex >= 0 Then 'skal kun virke når du har MARKERET en fil
    strPath = File1.Path
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    Open strPath & File1.FileName For Input As #FF
      Line Input #FF, FilIndhold
    Close #FF
    If FilIndhold = "fjdskaj435684629/*4564*464g+254354+34*54364" And Text1.Text = MD5Hash Then
    Form2.Show
    Me.Hide
    Else
    Form2.Hide
    Me.Show
    MsgBox "Kunne ikke logge på kodeord eller fil er forkert !" & FilIndhold, vbCritical, "Fejl 1.01"
    End If
  Else
    MsgBox "Du skal først markere en fil !"
  End If
End Sub

eller hvordan bruger jeg det ?
Avatar billede arne_v Ekspert
16. april 2005 - 10:17 #16
C++ koden er til dem som selv vil compile DLL'en

declare skal i VB i et seperat module mens click hører til formen

nej

logikken er at programmet indeholder MD5Hash af det rigtige password og
så tester du:

if MD5Hash(detindtastedepassword) = "md5hashafdetrigtigepasword" then

De kan sagtens gå ind i EXE fil og se "md5hashafdetrigtigepasword" men
MD5 algoritmen gør at det ikke hjælper dem til at finde detrigtigepasword
Avatar billede ranglen Nybegynder
16. april 2005 - 11:31 #17
'Ulempen' med arnes's dll er så, at dll-filen skal distribueres sammen med dit program. Eller hvis 'hax0ren' skriver sin egen md5.dll, som altid spytter din hardcoded hash ud, så kommer han også forbi din kontrol. :o)
Avatar billede arne_v Ekspert
16. april 2005 - 11:38 #18
eller de kunne ændre MD5 værdien i EXE filen

eller de kunne disaamble hele applikatione, fjerne testet og assemble

hvis folk har programmeringsmæssige talenter så er det svært at
beskytte sig godt i det scenarie
Avatar billede ranglen Nybegynder
16. april 2005 - 11:39 #19
:-)
Avatar billede sjh Nybegynder
16. april 2005 - 12:52 #20
og hvad skal visualdeveloper så bruge det program til.. det er måske bare et program der skal bruges til lidt sjov.. og ikke sælges..

men som ranglen.. så ville jeg nok også bruge metode:
Kommentar: ranglen
15/04-2005 21:10:34
Avatar billede sjh Nybegynder
16. april 2005 - 13:00 #21
arne_v > Er der ikke fejl i din kode.. jeg kan ikke få den til at virke..

--------------------
Run-time error '48':
File not found: MD5
--------------------

Har også prøvet sådan:

Samme fejl
Private Declare Function MD5Hash Lib "MD5.dll" Alias "_MD5Hash@4" (ByVal s As String) As String

Samme fejl
Private Declare Function MD5Hash Lib "C:\MD5.dll" Alias "_MD5Hash@4" (ByVal s As String) As String
Avatar billede arne_v Ekspert
16. april 2005 - 13:18 #22
Jeg har testet det på både XP SP2 og NT4 SP6A.

Jeg mener ikke at der skal angives .dll

Så hvis ikke den er i PATH så prøv:

Private Declare Function MD5Hash Lib "C:\MD5" Alias "_MD5Hash@4" (ByVal s As String) As String
Avatar billede sjh Nybegynder
16. april 2005 - 13:21 #23
jo så får jeg bare: Run-time error '53': og ikke 48
Avatar billede sjh Nybegynder
16. april 2005 - 13:25 #24
Jeg har:

Windows 2000 5.00.2195
Service Pack 4

men hvis det er en Win32 dll så skulle der ikke være nogle problemmer med det..
Avatar billede sjh Nybegynder
16. april 2005 - 13:48 #25
Jeg kan se du har lavet en dll her som giver samme fejl: http://eksperten.dk/spm/420120#rid3957585
Avatar billede arne_v Ekspert
16. april 2005 - 14:03 #26
Prøv lige igen
Avatar billede sjh Nybegynder
16. april 2005 - 14:08 #27
Jeps.. så virker den.. :D
Avatar billede arne_v Ekspert
16. april 2005 - 14:10 #28
såre banalt

min web server var konfigureret til at betragte .dll filer som text filer - jeg
satte den bare om til atbetragte dem som binære filer
Avatar billede sjh Nybegynder
16. april 2005 - 14:19 #29
Hvis du bruger UPX compressor så kan den komme ned på 20kb.. ;)
Avatar billede sjh Nybegynder
16. april 2005 - 14:52 #30
når men nu til sagen..

' ---------------------------------- Form1 ----------------------------------
' Lav et nyt projekt med en Text1 og brug koden her..
' Dette program bruger du til at lave den MD5 Key som skal være i dit program.
Option Explicit

Private Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Form_Load()
  ' Den MD5 key som står i Text1.Text skal du bruge i dit program.
  Text1.Text = MD5Hash("kode") 'kode = 70375478134BC7187A0D5A0FFD59C283
End Sub
' ---------------------------------- Form1 ----------------------------------

' ------------------------------- Dit projekt -------------------------------
Option Explicit

Private Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Command1_Click()
  Dim FilIndhold As String
  Dim FF As Long
  Dim strPath As String
  FF = FreeFile
  If File1.ListIndex >= 0 Then 'skal kun virke når du har MARKERET en fil
    strPath = File1.Path
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    Open strPath & File1.FileName For Input As #FF
      Line Input #FF, FilIndhold
    Close #FF
  ' I dit projekt skal du så bruge den sådan.
  ' Fx. her skal du skrive "kode" i Text1.Text for at komme igennem.
  If FilIndhold = "fjdskaj435684629/*4564*464g+254354+34*54364" And MD5Hash(Text1.Text) = "70375478134BC7187A0D5A0FFD59C283" Then
    Form2.Show
    Me.Hide
    Else
    Form2.Hide
    Me.Show
    MsgBox "Kunne ikke logge på kodeord eller fil er forkert !" & FilIndhold, vbCritical, "Fejl 1.01"
    End If
  Else
    MsgBox "Du skal først markere en fil !"
  End If
End Sub
' ------------------------------- Dit projekt -------------------------------
Avatar billede visualdeveloper Nybegynder
16. april 2005 - 18:01 #31
er der ikke en der kan give mig den komplette kode ?
Avatar billede martin_moth Mester
16. april 2005 - 23:05 #32
se ovenfor
Avatar billede visualdeveloper Nybegynder
17. april 2005 - 10:14 #33
er det alt ?
Avatar billede visualdeveloper Nybegynder
17. april 2005 - 10:15 #34
jeg tjekker lige om det virker....og så kan jeg lige se på hvem der skal have points
Avatar billede visualdeveloper Nybegynder
17. april 2005 - 10:28 #35
virker ikke....

Run-time error '48':
File not found: MD5

hvorfor kan den ikke finde filen ?
Avatar billede arne_v Ekspert
17. april 2005 - 10:30 #36
enten angiv sti i lib angivelsen i declare

eller have MD5.dll i samme dir som din exe
Avatar billede sjh Nybegynder
17. april 2005 - 17:18 #37
visualdeveloper > Hvis du nu starter med at downloade filen igen : http://www.vajhoej.dk/arne/eksperten/md5/md5.dll

arne_v havede lavet en fejl på sin webserver: http://www.eksperten.dk/spm/610086#rid5486400
Avatar billede visualdeveloper Nybegynder
17. april 2005 - 20:40 #38
har md5 i samme dir som exe men virker stadig ikke ?
Avatar billede visualdeveloper Nybegynder
17. april 2005 - 20:44 #39
ok virker nu...men hvad skal jeg indtaste i text1 når jeg logger på ?
Avatar billede sjh Nybegynder
17. april 2005 - 20:47 #40
prøv at skrive "kode" uden ""
Avatar billede sjh Nybegynder
17. april 2005 - 20:49 #41
det gelder kun hvis din linje ser sådan ud:

If ... And MD5Hash(Text1.Text) = "70375478134BC7187A0D5A0FFD59C283" Then


koden her : 70375478134BC7187A0D5A0FFD59C283 svare til kode
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:03 #42
kan det ikke gøres til en lidt lettere kode som jeg evt selv kunne bestemme ?
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:05 #43
hvordan ændrer jeg kodeordet fra "kode" uden "" til fx "peter154" ?
Avatar billede sjh Nybegynder
18. april 2005 - 23:06 #44
Private Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Form_Load()
  ' Den MD5 key som står i Text1.Text skal du bruge i dit program.
  Text1.Text = MD5Hash("peter154") '<- peter154
End Sub
Avatar billede sjh Nybegynder
18. april 2005 - 23:11 #45
If ... And MD5Hash(Text1.Text) = "Den kode du får ved at køre ovenstående kode skal du skrive her" Then
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:26 #46
er ikke en MESTER til vb (endnu) kan du ikke indsætte det i denne kode...og så bliver det også snart tid til noget pointuddeling :

' ---------------------------------- Form1 ----------------------------------
' Lav et nyt projekt med en Text1 og brug koden her..
' Dette program bruger du til at lave den MD5 Key som skal være i dit program.
Option Explicit

Private Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Form_Load()
  ' Den MD5 key som står i Text1.Text skal du bruge i dit program.
  Text1.Text = MD5Hash("kode") 'kode = 70375478134BC7187A0D5A0FFD59C283
End Sub
' ---------------------------------- Form1 ----------------------------------

' ------------------------------- Dit projekt -------------------------------
Option Explicit

Private Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Command1_Click()
  Dim FilIndhold As String
  Dim FF As Long
  Dim strPath As String
  FF = FreeFile
  If File1.ListIndex >= 0 Then 'skal kun virke når du har MARKERET en fil
    strPath = File1.Path
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    Open strPath & File1.FileName For Input As #FF
      Line Input #FF, FilIndhold
    Close #FF
  ' I dit projekt skal du så bruge den sådan.
  ' Fx. her skal du skrive "kode" i Text1.Text for at komme igennem.
  If FilIndhold = "fjdskaj435684629/*4564*464g+254354+34*54364" And MD5Hash(Text1.Text) = "70375478134BC7187A0D5A0FFD59C283" Then
    Form2.Show
    Me.Hide
    Else
    Form2.Hide
    Me.Show
    MsgBox "Kunne ikke logge på kodeord eller fil er forkert !" & FilIndhold, vbCritical, "Fejl 1.01"
    End If
  Else
    MsgBox "Du skal først markere en fil !"
  End If
End Sub
' ------------------------------- Dit projekt -------------------------------
Avatar billede sjh Nybegynder
18. april 2005 - 23:30 #47
Udskift med denne linje:

If FilIndhold = "fjdskaj435684629/*4564*464g+254354+34*54364" And MD5Hash(Text1.Text) = "C4B00C5AE8EF5AC0EE1CE7C1673A8123" Then


Nu skal su skrive peter154 for at komme ind..
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:35 #48
ok...men er der ikke en metode hvor jeg selv kan ændre koden ?
Avatar billede sjh Nybegynder
18. april 2005 - 23:38 #49
Er du dårlig til at læse.. jeg syntes vi har skåret det meget ud i pap.. du skal læse hvad vi skriver ellers hjælper det ikke noget..

Jo du skal lave en nyt projekt i visual basic..

' ---------------------------------- Form1 ----------------------------------
' Lav et nyt projekt med en Text1 og brug koden her..
' Dette program bruger du til at lave den MD5 Key som skal være i dit program.
Option Explicit

Private Declare Function MD5Hash Lib "MD5" Alias "_MD5Hash@4" (ByVal s As String) As String

Private Sub Form_Load()
  ' Den MD5 key som står i Text1.Text skal du bruge i dit program.
  Text1.Text = MD5Hash("kode") 'kode = 70375478134BC7187A0D5A0FFD59C283
End Sub
' ---------------------------------- Form1 ----------------------------------
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:38 #50
ok har fundet ud af det nu... ændrer bare :
Private Sub Form_Load()
  ' Den MD5 key som står i Text1.Text skal du bruge i dit program.
  Text1.Text = MD5Hash("kode") 'kode = 70375478134BC7187A0D5A0FFD59C283
End Sub

til

Private Sub Form_Load()
  ' Den MD5 key som står i Text1.Text skal du bruge i dit program.
  Text1.Text = MD5Hash("peter155") 'kode = 70375478134BC7187A0D5A0FFD59C283
End Sub


nå men hvem skal så have pointssne ???
Avatar billede sjh Nybegynder
18. april 2005 - 23:40 #51
Ja se du kan jo godt ;)
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:47 #52
hehe har lige lavet dette fikse program:
(husk at ligge MD5.dll i samme dir)

www.home-maker.dk/MD5-Beregner.exe
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:49 #53
fint ik'...nå men arne_v og sjh må gerne lægge et svar...inden i morgen klokken 14.00 for der uddeler jeg pointsne ;)
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:50 #54
fedt at i gad at lave så meget...at arne_v gad at skrive en dll fil og at du gad at sammensætte koden ;) det skal i have god karma for ;)
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:51 #55
også et tak til dig ranglen uden din hexeditor havde jeg bare haft en binær kode...du må også gerne lægge et svar hvis du har lyst !
Avatar billede arne_v Ekspert
18. april 2005 - 23:53 #56
svar
Avatar billede sjh Nybegynder
18. april 2005 - 23:54 #57
Jeg syntes også godt du kan give ranglen nogle point for svar her fra: http://www.eksperten.dk/spm/608715
Avatar billede arne_v Ekspert
18. april 2005 - 23:55 #58
som opfølgning på 16/04-2005 11:38:53 skal jeg iøvrigt lige bemærke at one-way
systemer som f.eks. MD5 har en fordel selv tilpas snedige folk smutter
udenom. De får stadigvæk ikke fat i passwordet - og da folk har en tendens
til at bruge samme password til flere ting, så kan det være en meget værdifuld
egenskab.
Avatar billede arne_v Ekspert
18. april 2005 - 23:55 #59
sjh>

enig
Avatar billede visualdeveloper Nybegynder
18. april 2005 - 23:59 #60
ja...uddeler points i morgen kl 14... håber også han har lagt et svar !
Avatar billede visualdeveloper Nybegynder
19. april 2005 - 00:00 #61
ellers må jeg lige oprette et spg "pounts til ranglen"
Avatar billede sjh Nybegynder
19. april 2005 - 00:00 #62
ja ellers må du bare vente et par dage
Avatar billede visualdeveloper Nybegynder
19. april 2005 - 00:01 #63
ps.. til dig arne...har sendt dig en mail...til arne@vajoeg.dk om Uddanelse !
Avatar billede arne_v Ekspert
19. april 2005 - 00:03 #64
jeg har også svaret
Avatar billede visualdeveloper Nybegynder
19. april 2005 - 00:04 #65
tak ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester