Avatar billede visualdeveloper Nybegynder
11. april 2005 - 21:06 Der er 41 kommentarer og
1 løsning

Er dette sikkert nok ?

Hej eksperter.

Jeg har lavet 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


Jeg ville egentlig bare høre om den var sikker nok, om der er nogle måder man kan "hacke" sig ind på form2 ?

Kan det evt. laves mere sikkert ??
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 21:20 #1
Form1 -> Nøglefil og Kodeord...if nøglefil og kodeord (rigtigt) then...me.hide & form2.show....kan det virkelig være sikkert nok ?
Avatar billede ranglen Nybegynder
11. april 2005 - 21:33 #2
Hvem vil du sikre dig mod? En som har styr på sin debugger, kommer nok relativt nemt forbi.

Første forhindring: hvor i din kode laver du kontrollen? Det er relativt nemt at finde. Der kan f.eks. sættes breakpoint når filen indlæses, henter teksten i boksen, eller når du viser din msgbox.

Anden forhindring: hvad skal der stå i filen og textboksen? Det er også nemt, da du sammenligner direkte med det, som der skal stå. Her laver man typisk en masse sjove beregninger, hvor resultatet skal passe med det der indtastes.
Avatar billede bccinlove Nybegynder
11. april 2005 - 21:36 #3
som jeg læser din kode har du hard-coded kodeordet - dvs at man ikke kan komme ind med mindre man kender denne kode - yderst sikkert, da koden vil forekomme binært i din eksekverbare fil = umulig at knække!
Men modsat kan du jo heller ikke ændre koden ud at re-kompilere dit program!
Avatar billede ranglen Nybegynder
11. april 2005 - 21:49 #4
"umulig at knække"

Det var godt nok noget af en påstand at komme med :)
Avatar billede bccinlove Nybegynder
11. april 2005 - 21:52 #5
hvordan vil du knække en hardcoded adgangskode?
Avatar billede ranglen Nybegynder
11. april 2005 - 21:54 #6
Den står jo i clear text. Så med en debugger er det en smal sag.
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 21:54 #7
hvad mener du med binær og hardcoded osv. ???
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 21:58 #8
til dig ranglen...hvordan vil du helt precist have det til at se ud ?
Avatar billede bccinlove Nybegynder
11. april 2005 - 21:59 #9
ok - hvis du er så god til at knække kode fra en binær fil så knæk den her
http://tms.adsl.dk/knakker.exe
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:00 #10
hvad mener du med binær fil ?
Avatar billede haverslev Novice
11. april 2005 - 22:02 #11
visualdeveloper > har du en kommentar til :http://www.eksperten.dk/spm/603592 ?
Avatar billede bccinlove Nybegynder
11. april 2005 - 22:02 #12
nå men hvis du kompilere din adgangskode ind i programmet er den hardcoded og fremstår derefter KUN binært i exe filen...

kan ikke knækkes - det vil ranglen nok også finde ud af omlidt
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:03 #13
ok....nu har jeg forstået det....hvorfor siger ranglen så at det skulle være så nemt at cracke ??
Avatar billede bccinlove Nybegynder
11. april 2005 - 22:04 #14
det ved jeg ikke!
Det han taler om giver ikke mening for mig...
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:06 #15
men jeg synes selv at jeg har lavet det smart med en nøglefil...som heder key.encode
er der andet jeg kan kalde den efter key. ? Jeg vil ikke bare kalde den en txt fil...som man bare kan åbne i notesblok !
Avatar billede bccinlove Nybegynder
11. april 2005 - 22:11 #16
sålænge at der blot står tekst i filen er det ligemeget hvad du kalder den - den vil altid kunne åbnes af en teksteditor.
Ellers skal du kryptere teksten - fx ved at lægge 2 bogstaver til hvert tegn når du skriver filen og trække dem fra igen når du læser den (find selv på en krypteringsalgoritme der er smart)
Avatar billede ranglen Nybegynder
11. april 2005 - 22:13 #17
Et hurtigt kig med en hexeditor giver mig

duerdabareforheldig666

Om det er denne streng, kan jeg ikke sige med sikkerhed. Jeg har ikke kørt filen, og har ikke VMware og debugger hos mig lige nu
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:13 #18
kan du ikke hjælpe mig "lidt" med det...forstår det NOGENLUNDE fx..hvis jeg har koden ABC så bliver den til AjjBjjCjj ?
Hvordan klarer jeg det i vb (se min kode i spørgsmålet) ?
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:14 #19
shit hvordan gjorde du det ranglen ?
Avatar billede bccinlove Nybegynder
11. april 2005 - 22:16 #20
ranglen = udmærket!
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:17 #21
hvordan gjorde du det ?
Avatar billede bccinlove Nybegynder
11. april 2005 - 22:17 #22
det er faktisk ikke så svært.

Han har sikkert bare åbnet .exe i UltraEdit eller noget...
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:24 #23
ok....har du så nogle forslag til hvordan man kan gøre sin kode "ubrydelig" ???
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:38 #24
jeg har lige "knækket" mit eget program LOL...er der ikke en der har en smart metode til at få det lidt sværere at bryde koden ?
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:44 #25
kunne man evt...kryptere filen eller koden ???
Avatar billede arne_v Ekspert
11. april 2005 - 22:50 #26
En meget anvendt metode er slet ikke at gemme passwordet men at gemme en
hash af passwordet. MD5 eller lignende.

Det er ret svært selvom man kender hash værdien at finde et password som
giver samme hash.
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 22:55 #27
hvis du gad at beskrive lidt nærmere hvordan man gør det i VB ville det være alle tiders !
Avatar billede visualdeveloper Nybegynder
11. april 2005 - 23:21 #28
eller bare et link til en side hvor der (på dansk) står hvordan man gør det der med Hash og MD5
Avatar billede sjh Nybegynder
11. april 2005 - 23:25 #29
ubrydelig.. det kan man ikke, så vil du heller ikke selv kunne bruge den..

men du kan gøre din "kode" usynlig...



Option Explicit

Private Sub Form_Load()
Dim i As Integer
Dim intAsc As Integer
Dim strOut As String
Dim strKode As String

  strKode = "Eksperten.dk" ' <- Her skriver du den kode som skal være usynlig.

  For i = 1 To Len(strKode)
    intAsc = Asc(Mid$(strKode, i, 1))
    strOut = strOut & " Chr$(" & intAsc & ") &"
  Next
  strOut = "strKode =" & Left$(strOut, Len(strOut) - 2)

  ' Den stump kode som kommer ud her, skal du bare bruge i dit program.
  Text1.Text = strOut


  '------------- Her er den stump kode du skal bruge i dit program -------------
  ' fx. her står der Eksperten.dk i strKode men du kan ikke se det før du køre dit program..
  strKode = Chr$(69) & Chr$(107) & Chr$(115) & Chr$(112) & Chr$(101) & Chr$(114) & _
            Chr$(116) & Chr$(101) & Chr$(110) & Chr$(46) & Chr$(100) & Chr$(107)
End Sub

  strKode = Chr$(69) & Chr$(107) & Chr$(115) & Chr$(112) & Chr$(101) & Chr$(114) & _
            Chr$(116) & Chr$(101) & Chr$(110) & Chr$(46) & Chr$(100) & Chr$(107)
If FilIndhold = "fjdskaj435684629/*4564*464g+254354+34*54364" And Text1.Text = strKode Then
Avatar billede ranglen Nybegynder
12. april 2005 - 01:03 #30
sjh, men den er stadig gemt som clear text. Arnes metode med md5 er meget bedre, da det her kræver bruteforcing eller ændring i koden for at knække det
Avatar billede visualdeveloper Nybegynder
12. april 2005 - 09:08 #31
ok...i må lige forklare mig hvordan man laver en MD5 ??
Avatar billede arne_v Ekspert
12. april 2005 - 09:21 #32
Der må være fler muligheder.

Finde en ActiveX komponent som kan gøre det.

Finde en Win32 DLL som kan gøre det.

Selv kode en Win32 DLL og bruge den.

Kode det direkte i VB.
Avatar billede martin_moth Mester
12. april 2005 - 10:38 #34
Eftersom det er mig der har skrevet 75% af ovenstående kode, må jeg vel komme emd en kommentar ;o)

Lav en algoritme.
Brug f.eks. ASC-værdierne på kodeorder. Meget simpelt:

  Kodeoret er "Hej".

  Når kodeordet tastes i programmet når det køres, læser du det tegn for tegn.

  Hvis fx:

  Ansi-koden for det første tegn svarer til et "H"
  Ansikoden for det næste tegn + 2 svarer til "g"
  Ansikoden for det sidste tegn minus ansikoden for det midterste er 5
  længden af kodeordet er 3

  Så accepteres kodeordet...

Om det kan klares med en debugger ved jeg ikke, kender ikke noget til det ranglen har gang i, men jeg tvivler!
Avatar billede martin_moth Mester
12. april 2005 - 10:40 #35
Til ovenstående skal du bruge Asc() funktionen i VB - den er indbygget.
Men vær opfindsom, find selv på en snedigere algoritme. F.eks. kan du konvertere en ansikode til et hexi-decimal tal, tage sinus til længden af kodeordet eller hvad ved jeg
Avatar billede ranglen Nybegynder
12. april 2005 - 22:17 #36
svar til "men jeg tvivler"

Er det seriøs tvivlen?

Med debuggeren undersøger vi hvad der foregår i koden. Lad os reverse engineer din lille algoritme:

Tegn 1: er givet direkte i koden: 'H'
Tegn 2: 'g' - 2 = 'e'
Tegn 3: x - 'e' = 5 <> x = 5 + 'e' = 'j'
Samlet længe: 3

Koden er derfor: Hej

Men selvfølgelig, jo mere opfindsom man er, jo sværere er den at knække.


-- Simpel kontrol med md5:

HVIS hardcoded_md5 = md5(bruger_indtastet_kode) SÅ 'kode godtaget'
ELSE 'forsøg igen'
Avatar billede arne_v Ekspert
12. april 2005 - 22:23 #37
Man kan formentligt komme et godt stykke vej med en hjemmebrygget obfuskering.

Men hvorfor sidde og hjemmebrygge noget, når nogle af verdens bedste matematikere
har arbejdet på at udvikle systemer som er meget bedre.

Meget bedre fordi:
  - de er meget grundigt testede
  - der er (for de flestes vedkommende) ikke bedre angreb en brute force
  - sikkerheden afhænger ikke af algoritmens hemligholdelse
Avatar billede sjh Nybegynder
13. april 2005 - 00:24 #38
ranglen > det du siger med "stadig gemt som clear text" det passer nu ikke.. du kan jo prøve at MAKE denne kode stump, og prøv at se om du kan finde den i din exe-file

Private Sub Form_Load()
Dim strKode As String
  strKode = Chr$(69) & Chr$(107) & Chr$(115) & Chr$(112) & Chr$(101) & Chr$(114) & _
              Chr$(116) & Chr$(101) & Chr$(110) & Chr$(46) & Chr$(100) & Chr$(107)
 
  MsgBox strKode
End Sub
Avatar billede ranglen Nybegynder
13. april 2005 - 00:28 #39
Hvis du sætter dig ned med en debugger, og stepper koden igennem, så kommer tegnene et efter et. Det er en smal sag at hive det kodeord ud
Avatar billede sjh Nybegynder
13. april 2005 - 00:42 #40
ja måske med en debugger.. men så køre du jo også selve programmet.. men tager du en hex editor så kan du ikke se hvad der står..


ellers skulle visualdeveloper se lidt på den her:

Create and Validate License Keys
http://www.frez.co.uk/freecode.htm#licensekeys
Avatar billede visualdeveloper Nybegynder
13. april 2005 - 19:27 #41
hej igen....arne_v....kan du ikke beskrive lidt om hvordan jeg laver en MD5 ved at kode det direkte i VB eller i en WIN32 DLL ..
Avatar billede visualdeveloper Nybegynder
14. april 2005 - 14:44 #42
sorry jeg tager pointsne selv...men mit spørgsmål er desværre kommet lidt for langt ned blandt de andre...jeg opretter et nyt med flere points !
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