Newsgroup: it.comp.lang.visual-basic
Titolo: Proteggere un database ed aprirlo in vb...

Ciao a tutti, spero in un vostro aiuto.
Tempo fa c'era gią un post di questo tipo, ma non sono riuscito a trovarlo.
In pratica mi servirebbe un aiuto.
Creo un database in access e gli imposto username e password e voglio
poterlo aprire da visualbasic.
Ho provato gią la cosa e utilizzando la seguente stringa di connessione cmq
non riesce:
"Provider=Microsoft.Jet.OLEDB.4.0;Password="pippo";User ID="pluto";Data
Source=c:\programmi\dailyreport\archivi\users.mdb"
Sapreste darmi delucidazioni e/o soluzioni a riguardo.
Grazie anticipatamente.
pinto...@libero.it

 Ho provato già la cosa e utilizzando la seguente stringa di connessione


 frazione di secondo?
Avevo già fatto una domanda simile anch'io tempo fa.
Sarei curioso di vedere come sproteggere da password
gli mdb: hai qualche riferimento da darmi?
________________________________________
James Tiberius Kirk, matricola SC 937-076 CEC
  Nato a Riverside, nello Iowa, USA, Terra
            il 1277.1 (26/03/2233)

 gli mdb: hai qualche riferimento da darmi?
X Access 97:
Function AccessPassword(Byval Filename As string) as string
Dim MaxSize, NextChar, MyChar, secretpos,TempPwd
Dim secret(13)
secret(0) = (&H86)
secret(1) = (&HFB)
secret(2) = (&HEC)
secret(3) = (&H37)
secret(4) = (&H5D)
secret(5) = (&H44)
secret(6) = (&H9C)
secret(7) = (&HFA)
secret(8) = (&HC6)
secret(9) = (&H5E)
secret(10) = (&H28)
secret(11) = (&HE6)
secret(12) = (&H13)
secretpos = 0
Open Filename For Input As #1 ' Apre il file in Input.
For NextChar = 67 To 79 Step 1 ' Carica la stringa crittata
Seek #1, NextChar ' posizionamento
MyChar = Input(1, #1) ' Legge i carateri
TempPwd = TempPwd & Chr(Asc(MyChar) Xor secret(secretpos))
' Decritta usando Xor
' secretpos = secretpos + incremento
Next NextChar
Close #1 ' Chiude il file.
AccessPassword = TempPwd ' Password in chiaro
End Function
Disclaimer:
Questo codice serve *SOLO* a scopo didattico(o se si dimentica la password),
qualunque altro scopo non va bene :-)
Ciao
--
Timothy Redaelli

 Questo codice serve *SOLO* a scopo didattico
Temo neppure a quello. A me legge correttamente solo il primo carattere
della password. ;-)
Ciao
*Roby*

 Ho provato già la cosa e utilizzando la seguente stringa di connessione


 ha scritto nel messaggio
news:n6a78.23107$3J1.7...@news2.tin.it...

Questo funza !!!! Acces 97
Function Pass97(txtFileName as String) as String
On Error GoTo errHandler
    Dim ch(18) As Byte, x As Integer
    Dim sec as Variant
    Dim txtPass as String
    'Used integers instead of hex :-)  Easier to read
    sec = Array(0, 134, 251, 236, 55, 93, 68, 156, 250, 198, 94, 40, 230,
19, 182, 138, 96, 84)
    Open txtFileNameFor Binary Access Read As #1 Len = 18
    Get #1, &H42, ch
    Close #1
    For x = 1 To 17
        txtPass= txtPass& Chr(ch(x) Xor sec(x))
    Next x
    Pass97 = txtPass
    Exit Sub
errHandler:
    MsgBox "ERROR occcured:" & vbCrLf & Err.Number & ":  " &
Err.Description, vbCritical, "ERROR"
    Exit Sub
End Sub
Access 2000:
Function Pass2000(txtFileName  as String) as String
    On Error GoTo errHandler
    Dim ch(40) As Byte
    Dim x As Integer, sec2,sec3, intChar As Integer, blnUse3 As Boolean
   Dim txtPass as String
    'Used integers instead of hex :-)  Easier to read
    sec2 = Array(0, 194, 117, 236, 55, 25, 202, 156, 250, 130, 208, 40, 230,
87, 56, 138, 96, 16, 26, 123, 54, 177, 252, 223, 177, 51, 122, 19, 67, 139,
33, 177, 51, 112, 239, 121, 91, 214, 59, 124, 42)
sec3 = Array(0, 229, 117, 236, 55, 62, 202, 156, 250, 165, 208, 40, 230,
112, 56, 138, 96, 55, 26, 123, 54, 150, 252, 223, 177, 20, 122, 19, 67, 172,
33, 177, 51, 87, 239, 121, 91, 241, 59, 124, 42)
    Open txtFileName For Binary Access Read As #1 Len = 40
    Get #1, &H42, ch
    Close #1
    'Check to see which key by running through first 6 letters of password
    'This is not foolproof by any means.
    For x = 1 To 6
      intChar = ch(x) Xor sec2(x)
         'This is kind of lame but it assumes that most passwords
         'are in this range of keyboard chars :-)
      If ((intChar < 32) Or (intChar > 126)) And (intChar <> 0) Then
         blnUse3 = True 'Set a flag
      End If
    Next x
    'Now solve for password
    For x = 1 To 40
         If blnUse3 = True Then
            intChar = ch(x) Xor sec3(x)
         Else
            intChar = ch(x) Xor sec2(x)
         End If
         txtPass= txtPass& Chr(intChar)
    Next x
    Pass2000 = txtPass
    Exit Sub
errHandler:
    MsgBox "ERROR occcured:" & vbCrLf & Err.Number & ":  " &
Err.Description, vbCritical, "ERROR"
    Exit Sub
End Sub
Ciao
--
Timothy Redaelli

 Questo funza !!!! Acces 97
Confermo. C'è solo da trasformare qualche riferimento da "sub" in
"function", ma la logica è OK.
Grazie
*Roby*