R
rajarameshvarma
Hi....
I am trying to recover password of my access 2000 (.mdb) file. I need
the data very urgently but i forgot the password. I have tried some
softwares but none of them is giving morthan two characters.
and i have also tried using a logic in c#.net. But this also doesnt
work. logic is....
openFileDialog1.Title = "Select MS Access File to Reveal";
openFileDialog1.Filter = "MS Access Database (*.MDB)|*.MDB";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//Create a file stream from the selected file.
FileInfo fi=new FileInfo(openFileDialog1.FileName);
FileStream fs=fi.OpenRead();
//Read 200 bytes into an array from the specified file. We only
need the first few hundred bytes
int nBytes=200;
byte[] ByteArray=new byte[nBytes];
int nBytesRead=fs.Read(ByteArray, 0, nBytes);
fs.Close();
//find out which version of access the file is
string version = Convert.ToChar(ByteArray[156]).ToString() +
Convert.ToChar(ByteArray[157]).ToString() +
Convert.ToChar(ByteArray[158]).ToString();
string passwordEncypted = "";
byte[] bytLock; //this is our password from the file
byte[] bytKey; //this is the key to XOR against
int len; //length of the byte array
//if it's access 2000 or greater
if (version == "4.0")
{
bytKey = new byte[]
{0xE1,0xEC,0x3A,0x9C,0xA1,0x28,0x74,0x8A,0x33,0x7B,0x92,0xDF,0x10,0x13,0xA8,0xB1,0x53,0x79,0xF5,0x7C};
len = 20;
bytLock = new byte[20];
int p = 66;
int i = 0;
while (p < 105)
{
passwordEncypted = passwordEncypted +
Convert.ToChar(ByteArray[p]).ToString();
bytLock = ByteArray[p];
//bytLock = ByteArray;
p += 2; //lose every second character if it's version 4.0 (Access
2000)
i += 1;
}
}
else //it's access 97
{
bytKey = new byte[]
{0x86,0xFB,0xEC,0x37,0x5D,0x44,0x9C,0xFA,0xC6,0x5E,0x28,0xE6,0x13};
len = 13;
bytLock = new byte[13];
int p = 66;
int i = 0;
while (p < 79)
{
passwordEncypted = passwordEncypted +
Convert.ToChar(ByteArray[p]).ToString();
bytLock = ByteArray[p];
p += 1;
i += 1;
}
}
//check if there is a password set
if (System.Text.Encoding.ASCII.GetString(bytLock) ==
System.Text.Encoding.ASCII.GetString(bytKey))
MessageBox.Show("No password is set for this file.");
else
{
//xor the key and cipher together
byte[] key = new byte[len];
for (int i = 0; i < len; i++)
key =(byte)(bytLock ^ bytKey);
string plainText =
System.Text.Encoding.ASCII.GetString(key);
//if the password is less than 13 or 20 characters long, nulls are
added to the end
//to pad out the string. Strip these off to get the original
password
//int nullStart = plainText.IndexOf(((char)0).ToString());
plainText = plainText.Substring(0,20);
//plainText = plainText.Substring(0, 10);
MessageBox.Show(plainText);
but it is also not giving the correct password.
Can any one help me in this regard..
Thanks in advance
I am trying to recover password of my access 2000 (.mdb) file. I need
the data very urgently but i forgot the password. I have tried some
softwares but none of them is giving morthan two characters.
and i have also tried using a logic in c#.net. But this also doesnt
work. logic is....
openFileDialog1.Title = "Select MS Access File to Reveal";
openFileDialog1.Filter = "MS Access Database (*.MDB)|*.MDB";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//Create a file stream from the selected file.
FileInfo fi=new FileInfo(openFileDialog1.FileName);
FileStream fs=fi.OpenRead();
//Read 200 bytes into an array from the specified file. We only
need the first few hundred bytes
int nBytes=200;
byte[] ByteArray=new byte[nBytes];
int nBytesRead=fs.Read(ByteArray, 0, nBytes);
fs.Close();
//find out which version of access the file is
string version = Convert.ToChar(ByteArray[156]).ToString() +
Convert.ToChar(ByteArray[157]).ToString() +
Convert.ToChar(ByteArray[158]).ToString();
string passwordEncypted = "";
byte[] bytLock; //this is our password from the file
byte[] bytKey; //this is the key to XOR against
int len; //length of the byte array
//if it's access 2000 or greater
if (version == "4.0")
{
bytKey = new byte[]
{0xE1,0xEC,0x3A,0x9C,0xA1,0x28,0x74,0x8A,0x33,0x7B,0x92,0xDF,0x10,0x13,0xA8,0xB1,0x53,0x79,0xF5,0x7C};
len = 20;
bytLock = new byte[20];
int p = 66;
int i = 0;
while (p < 105)
{
passwordEncypted = passwordEncypted +
Convert.ToChar(ByteArray[p]).ToString();
bytLock = ByteArray[p];
//bytLock = ByteArray;
p += 2; //lose every second character if it's version 4.0 (Access
2000)
i += 1;
}
}
else //it's access 97
{
bytKey = new byte[]
{0x86,0xFB,0xEC,0x37,0x5D,0x44,0x9C,0xFA,0xC6,0x5E,0x28,0xE6,0x13};
len = 13;
bytLock = new byte[13];
int p = 66;
int i = 0;
while (p < 79)
{
passwordEncypted = passwordEncypted +
Convert.ToChar(ByteArray[p]).ToString();
bytLock = ByteArray[p];
p += 1;
i += 1;
}
}
//check if there is a password set
if (System.Text.Encoding.ASCII.GetString(bytLock) ==
System.Text.Encoding.ASCII.GetString(bytKey))
MessageBox.Show("No password is set for this file.");
else
{
//xor the key and cipher together
byte[] key = new byte[len];
for (int i = 0; i < len; i++)
key =(byte)(bytLock ^ bytKey);
string plainText =
System.Text.Encoding.ASCII.GetString(key);
//if the password is less than 13 or 20 characters long, nulls are
added to the end
//to pad out the string. Strip these off to get the original
password
//int nullStart = plainText.IndexOf(((char)0).ToString());
plainText = plainText.Substring(0,20);
//plainText = plainText.Substring(0, 10);
MessageBox.Show(plainText);
but it is also not giving the correct password.
Can any one help me in this regard..
Thanks in advance