Link to home
Start Free TrialLog in
Avatar of mrwebmaster
mrwebmaster

asked on

Passward Problem I Need Help Bad !!!!!!!

NEED HELP BAD !!!!!
Two Questions

I have a mdb file that I have password protected now I cannot remember the password, nor find where I put the password I wrote down.
1-Is there any way of getting past this password to reopen my access database in design view ?
2-Is there software availiable for this ?
ASKER CERTIFIED SOLUTION
Avatar of Nevaar
Nevaar
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of mgrattan
mgrattan

If this is a database password (and not a user/group password) you can crack the password from another Access database by copying/pasting and running a simple vba function.  Is that what you need?
Here's the function you need if the password is only on the database:

'--------------------------------------------------
'   basDatabasePassword
'
'   Get the database password of a Jet 3.0/3.5 database.
'
'   --------------------------
'   This code is provided for the express purpose of destroying the burgeoning
'   shareware industry of Jet 3.x/3.5x database password crackers. You should
'   keep in mind that it is still quite illegal to break into a database you have
'   no authorization to view. Please don't do anything that would cause me to
'   have less respect for you than for the lifeless souls who try to charge money
'   for code of this nature on a "per database" basis.
'
'   TO USE:
'   1) Create a new module in any VBA host like Access, Excel, or Visual Basic
'   2) Hit <Ctrl+G> to get to the debug window
'   3) Run the following line of code in the debug window (replacing c:\foo.mdb with
'           the full path/name to your database:
'
'               ? StPasswordOfStDatabase("c:\foo.mdb")
'
'   The function will return the Database Password to you.
'
'   --------------------------
'   Sample code to allow you to prove to yourself that the function
'   works (the following code can be run from the debug window).
'   Change the password from 01234567890123456789 to any
'   arbitrary value 1-20 characters in length:
'
'   Set dbe = CreateObject("dao.dbengine.35")
'   Set db = dbe.CreateDatabase("c:\temp35.mdb", ";LANGID=0x0409;CP=1252;COUNTRY=0")
'   db.NewPassword "", "01234567890123456789"
'   db.Close: Set db = Nothing: Set dbe = Nothing
'   Debug.Print StPasswordOfStDatabase("c:\temp35.mdb")
'   --------------------------
'
'   (c) 1998 Trigeminal Software, Inc. All Rights Reserved
'--------------------------------------------------
Option Compare Binary
Option Explicit

Public Function StPasswordOfStDatabase(stDatabase As String) As String
    Dim hFile As Integer
    Dim ich As Integer
    Dim stBuffer As String
    Dim rgbytRaw() As Byte
    Dim rgbytPassword() As Byte
    Dim rgbytNoPassword() As Byte
   
    ' Create the byte array with the 20 bytes that are present when there
    ' is no database password
    rgbytNoPassword = ChrB(134) & ChrB(251) & ChrB(236) & ChrB(55) & ChrB(93) & _
                                ChrB(68) & ChrB(156) & ChrB(250) & ChrB(198) & ChrB(94) & _
                                ChrB(40) & ChrB(230) & ChrB(19) & ChrB(182) & ChrB(138) & _
                                ChrB(96) & ChrB(84) & ChrB(148) & ChrB(123) & ChrB(54)
                               
    ' Grab the 20 bytes from the real file whose password
    ' we are supposed to retrieve
    hFile = FreeFile
    Open stDatabase For Binary As #hFile
    Seek #hFile, 66 + 1
    rgbytRaw = InputB(20, #hFile)
    Close #hFile
   
    ' Enough prep, lets get the password now.
    ReDim rgbytPassword(0 To 19)
    For ich = 0 To 19
        rgbytPassword(ich) = rgbytRaw(ich) Xor rgbytNoPassword(ich)
    Next ich

    ' Add a trailing Null so one will always be found, even if the password is 20
    ' characters. Then grab up to the first null we find and return the password
    stBuffer = StrConv(rgbytPassword, vbUnicode) & vbNullChar
    StPasswordOfStDatabase = Left$(stBuffer, InStr(1, stBuffer, vbNullChar, vbBinaryCompare) - 1)
End Function


I have exactly the same code as posted by MGrattan as a "standard" module (couldn't remmeber where it came from but obviously is put to good use.

I do also have a very small (zipped) executable which you can run and nominate the database to "crack". Picked it up somewhere on the web some time ago. (The displayed textbox may NOT be big enough to display the complete password so scroll through it.

I could email it to you if you like (email address in profile)
Avatar of mrwebmaster

ASKER

mgrattan

I have tried running your code from the debug window in MS Access using, ? StPasswordOfStDatabase("c:\foo.mdb")
but substuting the path with the real one and I only get a beep. This had originalley had security level passwards set up in it.
What Next ? I am really stuck.
And yes this is my database I made a long time ago, My backup copy was distroied when I had to reformat my drive.



Well, a "security level password" indicates that you had group/user level security which is different than a "database password".  The VBA function I provided is only for deciphering a database password.  

I think if you check out lostpassword.com, as suggested by Nevaar, you will find a utility that will crack the password on a secured database.  I believe there is a trial version that will give you the first three letters of the password for a particular user.
One more thing; if you have Microsoft Visual Studio it comes with a tool that is used for version control.  You can "check in" your Access database to the version control program and then check it out again; this will usually strip the security for you....
mrwebmaster,

Do you need any further assistance?  Please let us know how things are going with this issue.

Mike.