加密原理:Access数据库的有效密码为13位,在不加密时,数据库的第67至9位为一固定的字符串,每位的ASCII码值分别为86,FBEC
37
, 5D,
44
,9C,FA,C6,5E,
28
,E6,
13
。加密时,分别用密码的每一位与67至79位的字符的ASCII码值进行异或运算,得到的一个新字符串,将它写回67至79位。
解密方法:将67至79位的字符的ASCII码值分别与 " 86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13 " 进行异或运算,即可得到密码。
加密原理:Access数据库的有效密码为13位,在不加密时,数据库的第67至9位为一固定的字符串,每位的ASCII码值分别为86,FBEC 37 , 5D, 44 ,9C,FA,C6,5E, 28 ,E6, 13 。加密时,分别用密码的每一位与67至79位的字符的ASCII码值进行异或运算,得到的一个新字符串,将它写回67至79位。
解密方法:将67至79位的字符的ASCII码值分别与 " 86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13 " 进行异或运算,即可得到密码。
解密方法:将67至79位的字符的ASCII码值分别与 " 86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13 " 进行异或运算,即可得到密码。
加密原理:Access数据库的有效密码为13位,在不加密时,数据库的第67至9位为一固定的字符串,每位的ASCII码值分别为86,FBEC 37 , 5D, 44 ,9C,FA,C6,5E, 28 ,E6, 13 。加密时,分别用密码的每一位与67至79位的字符的ASCII码值进行异或运算,得到的一个新字符串,将它写回67至79位。
解密方法:将67至79位的字符的ASCII码值分别与 " 86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13 " 进行异或运算,即可得到密码。
最近玩VC,就顺便写了下代码,除了access97找不到测试工具,其他均测试正常,直接贴代码吧,我不喜欢过多的描述
//
CrackAccessPassDlg.cpp : 实现文件
//
#include " stdafx.h "
#include " CrackAccessPass.h "
#include " CrackAccessPassDlg.h "
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
... {
public:
CAboutDlg();
// 对话框数据
enum ...{ IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
} ;
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
... {
}
void CAboutDlg::DoDataExchange(CDataExchange * pDX)
... {
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CCrackAccessPassDlg 对话框
CCrackAccessPassDlg::CCrackAccessPassDlg(CWnd * pParent /**/ /*=NULL*/ )
: CDialog(CCrackAccessPassDlg::IDD, pParent)
, m_filePath(_T( "" ))
... {
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCrackAccessPassDlg::DoDataExchange(CDataExchange * pDX)
... {
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_filePath);
}
BEGIN_MESSAGE_MAP(CCrackAccessPassDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
// }}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, & CCrackAccessPassDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
// CCrackAccessPassDlg 消息处理程序
BOOL CCrackAccessPassDlg::OnInitDialog()
...
//
#include " stdafx.h "
#include " CrackAccessPass.h "
#include " CrackAccessPassDlg.h "
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
... {
public:
CAboutDlg();
// 对话框数据
enum ...{ IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
} ;
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
... {
}
void CAboutDlg::DoDataExchange(CDataExchange * pDX)
... {
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CCrackAccessPassDlg 对话框
CCrackAccessPassDlg::CCrackAccessPassDlg(CWnd * pParent /**/ /*=NULL*/ )
: CDialog(CCrackAccessPassDlg::IDD, pParent)
, m_filePath(_T( "" ))
... {
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCrackAccessPassDlg::DoDataExchange(CDataExchange * pDX)
... {
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_filePath);
}
BEGIN_MESSAGE_MAP(CCrackAccessPassDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
// }}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, & CCrackAccessPassDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
// CCrackAccessPassDlg 消息处理程序
BOOL CCrackAccessPassDlg::OnInitDialog()
...