Strona: [  << <   1   > >>  ]  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
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
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
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

13-01-2003 19:50
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       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
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
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
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
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
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
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
Pokaż profil err404  Wyślij email do err404        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
Pokaż profil err404  Wyślij email do err404        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
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1