Give it a rest guys. This code has been in the public domain for years.
Public Function Access2000Password(ByVal Filename As String, Optional
bTrimNulls As Boolean = True) As String
' AUTHOR:
JT*********@programmer.net
' TERMS OF USE: Freeware
' This function will return the password of an Access
' 2000 database, and optionally, trim the nulls.
' The parameter Filename should contain the full name and
' location of the database for which you want the password.
Dim iFileNumber As Integer
Dim iFilePosition As Integer
Dim iKeyPosition As Integer
Dim iDecryptKey(13) As Integer
Dim strInputChar As String
Dim strPassword As String
' These 14 values are used to decrypt the value stored
' in the .mdb, in order to produce the password.
' Even though the values are entered in hexadecimal
' format, what is stored in the iDecryptKey variable is
' the ascii value.
iDecryptKey(0) = (&HEF)
iDecryptKey(1) = (&HEC)
iDecryptKey(2) = (&H34)
iDecryptKey(3) = (&H9C)
iDecryptKey(4) = (&HAF)
iDecryptKey(5) = (&H28)
iDecryptKey(6) = (&H7A)
iDecryptKey(7) = (&H8A)
iDecryptKey(8) = (&H3D)
iDecryptKey(9) = (&H7B)
iDecryptKey(10) = (&H9C)
iDecryptKey(11) = (&HDF)
iDecryptKey(12) = (&H1E)
iDecryptKey(13) = (&H13)
iKeyPosition = 0
iFileNumber = FreeFile
Open Filename For Binary Access Read As #iFileNumber ' Open file for input.
' Read every other character stored in positions 67-93
' of the input file.
For iFilePosition = 67 To 93 Step 2 'Read in Encrypted Password
Seek #iFileNumber, iFilePosition ' Set position.
strInputChar = Input(1, #iFileNumber) ' Read character.
' Take each of those 14 characters,
' do an xor bitwise comparison to it's corresponding
' "iDecryptKey" key, and store the resulting character.
' The xor operator accepts and returns ascii values,
' but does the comparison using binary values. So,
' for example:
' The first value to translate is asc(242).
' The first decryption code, iDecryptKey(0), is 134.
' In binary,
' The value to translate: 11110010
' The decryption code is: 10000110
' Xor compares each digit: If they're the same,
' the result is 0, if they're different, the result is 1.
' So the result, in our example, is binary 1110100.
' Xor returns the ascii value, 116, or lower case "t".
strPassword = strPassword & Chr(Asc(strInputChar) Xor iDecryptKey
(iKeyPosition)) 'Decrypt using Xor
iKeyPosition = iKeyPosition + 1 'increment pointer
Next iFilePosition
Close #iFileNumber ' Close file.
'Access2000Password = IIf(bTrimNulls, Replace(strPassword, Chr(0), ""),
strPassword)
End Function
Nick 'The Database Guy' wrote:
>Lyle, just read that through again, there is no need to be sarcastic!
I need it for reasons already stated.
Nick
>Hi, Nick.
[quoted text clipped - 31 lines]
>
Nick
--
Message posted via AccessMonster.com
http://www.accessmonster.com/Uwe/For...ccess/200701/1