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

Posted on 2002-06-19
Last Modified: 2008-03-06
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 ?
Question by:mrwebmaster

Accepted Solution

Nevaar earned 400 total points
ID: 7093864
LVL 14

Expert Comment

ID: 7093964
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?
LVL 14

Expert Comment

ID: 7093976
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


Expert Comment

ID: 7094346
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)
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.


Author Comment

ID: 7105216

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.

LVL 14

Expert Comment

ID: 7105360
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, 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.
LVL 14

Expert Comment

ID: 7115028
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....
LVL 14

Expert Comment

ID: 7125403

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


Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

In the previous article, Using a Critera Form to Filter Records (, the form was basically a data container storing user input, which queries and other database objects could read. The form had to remain op…
When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now