X
ďťż

39225_1

Lemur zaprasza

Strona: [  >  ]  z  1     










Autor
Temat: Bezpieczne INI...











Viper87






Typ:
neutral

Postów: 490

Zarejestrowany: Oct 2002





Bezpieczne INI...


Mam pytanie-czy ktoś wie jak zapisać dane do pliku (taj jak do INI czy rejestru), ale w taki sposób, żeby użytkownik programu nie mógł "podejrzeć", co w takim pliku program zapisał?
Innymi słowy: Chcę utajnić przed użytkownikiem to, co program zapisuje sobie w plikach INI .



_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 







12-01-2003 21:26



 
    














Jelcyn

Admin forum






Typ:
admin

Postów: 895

Zarejestrowany: Apr 2002







Przykładowy niebezpieczny plik INI
Splash=1
AutoOpen=1
Music=0
MaxOpenWindows=20

Przykladowy zabezpieczony plik INI
1,1,0,20

Jak program ma 100 opcji to nikt sie nie skapnie co je co, ale ma to wade, ze Ty bedziesz mial problem bo 1 pomysla i caly program zglupieje. Mozesz np. co 3 bajt wpisywac losowa liczbe dla zmylenia przeciwnika



_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
*






13-01-2003 19:50



 
        
270849979   

6237704














Viper87






Typ:
neutral

Postów: 490

Zarejestrowany: Oct 2002







Jelcyn-wybacz, ale nie kapuję . Możesz jaśniej? Ja korzystam z sampla, którego Ci posłałem do zapisywania informacji do plików INI...



_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 







13-01-2003 21:42



 
    














Viper87






Typ:
neutral

Postów: 490

Zarejestrowany: Oct 2002







Może wyłożę kawę na ławę-chcę napisać program, do odpytywania kogos ze slowek. Tak to sobie pomyslalem, żeby tam był tryb nauczyciela i ktos podaje słówka w obcym języku i w naszym ich znaczenie. I tu jest problem-jak zapiszę to do zwykłego ini, to odpytywana osoba wystarczy, że taki plik INI podejrzy i KAPUT> Rozumiesz? Wiem, że np. w Delphi da się zrobić pliki o własnym rozszerzeniu-wyglądają po otwarciu jak np DLL i są w nich krzaczki, a program je dekoduje... A w VB czy da się coś takiego zrobić?



_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 







13-01-2003 23:02



 
    














Viper87






Typ:
neutral

Postów: 490

Zarejestrowany: Oct 2002







Dzięki. Tylko:
a.) jak taką baże dołączyć do VB?
b.)Co to jest XOR, ajk go użyć, jeśli to program (a chyba nie), to skąd go ściągnąć, jak to zaimplemetntować w programie?



_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 







14-01-2003 15:45



 
    














err404






Typ:
neutral

Postów: 14

Zarejestrowany: Nov 2002





Jedyne co możesz zrobić to.....


Zacząć pliki szyfrować a jak to możesz zrobić hmmm

poniżej zamieszcam ci kody modułów które pozwolą ci na bezpieczne szyfrowanie zawartości plików(szyfrowanie przez fukcje asc i chr - czyli operacje na wartosciach ASCII , może się skończyć źle jeżeli czytasz plik liniami, bo chr(13) to enter )

Kod modułu szyfrowania:
'---------------------------------------
Option Explicit
Function EncodeData(Text As String) As String

    Dim i As Integer, a As Integer
    Dim znakA As String, znakB As String, tmp As String
    Dim SubRepA As Integer, SubRepB As Integer, RepStr As Integer
    Dim LocalKey As String
    tmp = ""
    LocalKey = ""
    'ta petla pozwala na wygenerowanie klucza potrzebnego do zakodowania
    'ciagu znaku dowolnej dlugosci
    Do While Len(LocalKey) < Len(Text)
        LocalKey = LocalKey + Key
    Loop
    'Ta petla wykonuje kodowania
    For i = 1 To Len(Text)
        znakA = Mid(LocalKey, i, 1)
        SubRepA = InStr(1, Alphabet, znakA, vbBinaryCompare)
       
        znakB = Mid(Text, i, 1)
        SubRepB = InStr(1, Alphabet, znakB, vbBinaryCompare)
       
        RepStr = SubRepB + SubRepA
        If RepStr > Len(Alphabet) Then RepStr = RepStr - Len(Alphabet)
        tmp = tmp + Mid(Alphabet, RepStr, 1)
    Next i
    EncodeData = tmp
    Debug.Print tmp
End Function
'---------------------------------------
Kod Modułu deszyfrowania:
'---------------------------------------
Option Explicit
Function DecodeData(Text As String) As String

    Dim i As Integer
    Dim znakA As String, znakB As String, tmp As String
    Dim SubRepA As Integer, SubRepB As Integer, RepStr As Integer
    Dim LocalKey As String
    tmp = ""
    LocalKey = ""
    Do While Len(LocalKey) < Len(Text)
        LocalKey = LocalKey + Key
    Loop
    For i = 1 To Len(Text)
        znakA = Mid(LocalKey, i, 1)
        SubRepA = InStr(1, Alphabet, znakA, vbBinaryCompare)
       
        znakB = Mid(Text, i, 1)
        SubRepB = InStr(1, Alphabet, znakB, vbBinaryCompare)
     
        RepStr = SubRepB - SubRepA
        If RepStr < 1 Then RepStr = RepStr + Len(Alphabet)
        tmp = tmp + Mid(Alphabet, RepStr, 1)
    Next i
    DecodeData = tmp
End Function
'---------------------------------------
Kod modułu zmiennych globalnych
Option Explicit
Global Const Alphabet As String = "aąbcćdeęfghijklłmnńoópqrsśtuvwxyzżźAĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŻŹ0123456789~`!@#$%^&*()-=_+{}[]|:;',.<>/? """
Global Const Program_Key As String = "AxDf93fo9d1ueJpQtMslJdaU94yaiIpW"
Global User_Key As String
Global Key As String
'---------------------------------------
Kod modułu zarządzania kluczem
'---------------------------------------

Option Explicit

Sub ExtractKey()
    Dim i As Integer, a As Integer
    Dim znakA As String, znakB As String
    Dim SubRepA As Integer, SubRepB As Integer, RepStr As Integer
    Key = ""
    For i = 1 To 32
        znakA = Mid(Program_Key, i, 1)
        SubRepA = InStr(1, Alphabet, znakA, vbBinaryCompare)
       
        znakB = Mid(User_Key, i, 1)
        SubRepB = InStr(1, Alphabet, znakB, vbBinaryCompare)
       
        RepStr = SubRepA + SubRepB
        If RepStr > Len(Alphabet) Then RepStr = RepStr - Len(Alphabet)
        Key = Key + Mid(Alphabet, RepStr, 1)
    Next i
End Sub
Sub GenerateUserKey()
    'Funkcja generuje losowy klucz
    Dim i As Integer
    User_Key = ""
    For i = 1 To 32
        User_Key = User_Key + Mid(Alphabet, Int(Rnd * Len(Alphabet)) + 1, 1)
    Next i
   
End Sub
'---------------------------------------

ok jak już skopiujesz sobie te kody do jakiś modułów to.....

Muszisz podać Programowi twój kod użytkownika(zastanawiasz się po chuj takie to skomplikowane - a ja ci mówie że to zabezpiecza przed odczytaniem hex edytorem bo program w czasie pracy generuje wszystkie klucze a nie ma ich zapisanych w sobie)
ok tak czy inaczej to musi być jakiś string
w zasadzie dowolny (powinien miec 32 znaki-jeżeli nie to musisz zmienić kod w module odpowiedzialnym za generowanie i wyciaganie nowego klucza), bo fukcje szyfrowania i tak sobie go wydłużą(jezeli nic nie zmieniasz w kodzie wyciagajacym klucz to ta opcja działa tylko jeżeli kodujesz coś dłuższego niż 32 znaki) do długości szyfrowanych danych
ok teraz robisz taki patent w sekcji gdzie umieściłem zmienne globalne możesz do User_Key
dopisać coś w stylo Global Const User_Key ="Kocham Magde i Visual Basica"
albo lepiej zrobić patent taki że
w pierwszej linijce pliku zawrzeć jakiś string który będzie twoim kluczem
i teraz to będzie wyglądało tak
Sub LoadPlik()
Dim Filen as integer
Dim myStr as string
Filen=FreeFile'pobieramy nr uchwytu(pierwszy wolny normalnie 1 ale jak otwartych plikow jest wiecej niz 1 to juz nie jest tak wesolo free file zabezpiecza nas przed błedami)
open "plik.txt" for input as #filen'otwieramy plik do odczytu
  line input #filen, user_key'pobieramy klucz uzytkownika z pliku
  call ExtractKey()'tu prgram generuje klucz wlasciwy z klucza uzytkownika i klucza programu
  line input #filen, myStr'wczytuje linie do myStr
  myStr=Decode(myStr)i dekoduje ja w oparciu o klucze
'no i jakiś kod tam dalej
Close #filen
End Sub
Sub SavePlik()
Dim Filen as integer
Dim myStr as string
Filen=FreeFile
open "plik.txt" for output as #filen
  call GenerateUserKey()'generuje losowy klucz(dobra sprawa bo ciezko potencjalnemu crackerowi wpasc co sie zmienia bo zamienia sie cala zawartosc pliku przyy zapisie dzieki dynamicznej zmianie zawartosci klucza)
  print #filen, user_key' drukujemy klucz do pierwszej lini
  call ExtractKey()' karzemy sklecic nowy klucz z nowo wygenerowanego klucza uzytkownika
  myStr=Encode(myStr)'kodujemy dane
  print #filen, myStr'i fruuu je do pliku
  'no i jakiś kod tam dalej
Close #filen
End Sub


[Post edytowany dnia 15-01-2003 16:27 przez err404]






15-01-2003 16:01



 
      

1306176














err404






Typ:
neutral

Postów: 14

Zarejestrowany: Nov 2002







czasami zmienne tekstowe szyfrować możesz podwójnie potrójnie a nawet więcej razy
dim ms as string
ms="Ola"
ms=Encode(ms)'Pierwsze szyfrowanie
debug.print ms
ms=Encode(ms)'drugie
debug.print ms
Pamiętaj jedynie że logika nakazuje że przy dekodowaniu danym musisz całą droge przejść wstecz
P.S. nie szyfruj kluczy(chyba że jakimiś stałymi kluczami), bo zaszyfrowany klucz jest nie doodczytania przez program







15-01-2003 16:18



 
      

1306176














Viper87






Typ:
neutral

Postów: 490

Zarejestrowany: Oct 2002







Bardzo Ci dziękuję za ten post i ten o napisach na filmie-muszę przyzanć, że nie wiem czy je od razu zrozumiem. Na razie nie mam czasu. Trochę dużo tego



_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 







15-01-2003 16:32



 
    













Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20










Strona: [  >  ]  z  1     
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza