Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Rhinorhino on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

VB Password Forgotten

Status
Not open for further replies.

needadvice

Programmer
Joined
Apr 7, 2002
Messages
145
Location
US
Is there any way to get past a forgotten VB password?
 
Is this security implemented by Access security, or by a programmers own homegrown security?

Is the password at the account level, ie, it asks you user name/password, or is it just a password on the database?

What version of Access are you using?
Robert Berman
Data Base consultant
Vulcan Software Services
thornmastr@yahoo.com
 
It's a password put on in the Accss VB password facility.
You can put a password on the database, which asks for the password when you sign on. You can also put a password on the VB code, which will prompt whenever you try to get into the code. The database password can be side stepped by opening the database in exclusive mode. This does not work for the VB password. In effect you need to put in the password to change or delete it. That's my perdicament.
Microsoft won't help.
Any ideas?
 
NeedAdvice,

There is no way to access to VBA, once you 4get it, means 4get ur code's............

Sorry

Try to Write every thing again.
 
It seems to me this is one fantastic way to hurt yourself. The best way to deal with keeping users out of your code is distributing it as an MDE file, however, before throwing in the towel, consider creating an empty database.

From your protected (worthless) database save the object(s) to a text file(s).

From your new database import the objects from your text file.
Robert Berman
Data Base consultant
Vulcan Software Services
thornmastr@yahoo.com
 
Thanks for the help. I haven't totally given up on remembering the password. I'll also try some of your ideas.
Luckly, this is a small and finished program and I'm glad I learned this lesson here. From now on, I'll keep my passwords written down and locked up.
It could have been much worse.
Thanks again.
 
You haven't told us what Access version you're using.

If 97, try copying/pasting the following into another database, then
calling the function from the debug window with something like this:

? accesspassword97("c:\my documents\db1.mdb")
Code:
Function AccessPassword97(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   ' Open file for input.

For NextChar = 67 To 79 Step 1 'Read in Encrypted Password

  Seek #1, NextChar           ' Set position.
  MyChar = Input(1, #1)       ' Read character.
  TempPwd = TempPwd & Chr(Asc(MyChar) Xor secret(secretpos))  'Decrypt using Xor
  secretpos = secretpos + 1   'increment pointer

Next NextChar
Close #1   ' Close file.

AccessPassword97 = TempPwd

End Function

'****************************************************************************************************

The following will do the same for an Access2000 database.
Source was (back in March 2001):
Code:
Public Function Access2000Password(ByVal Filename As String, Optional bTrimNulls As Boolean = True) As String

 ' AUTHOR: JTRockville@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
 
Wow, I remembered the password. I'll keep this code for future reference but hope I'll never need it.
Thanks, this was a good lesson.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top