diff options
Diffstat (limited to 'plugins/Dbx_mmap_SA/Dbtool/src/encryption.cpp')
-rw-r--r-- | plugins/Dbx_mmap_SA/Dbtool/src/encryption.cpp | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/plugins/Dbx_mmap_SA/Dbtool/src/encryption.cpp b/plugins/Dbx_mmap_SA/Dbtool/src/encryption.cpp deleted file mode 100644 index 1e7b264efa..0000000000 --- a/plugins/Dbx_mmap_SA/Dbtool/src/encryption.cpp +++ /dev/null @@ -1,299 +0,0 @@ -// (C) Artem Shpynov aka FYR and Igonin Vitaliy aka chaos.persei, 2007 - 2008
-
-#include "dbtool.h"
-
-typedef struct{
- void* (__stdcall *GenerateKey)(char* pwd);
- void (__stdcall *FreeKey)(void* key);
- void (__stdcall *EncryptMem)(BYTE* data, int size, void* key);
- void (__stdcall *DecryptMem)(BYTE* data, int size, void* key);
-
- char* Name;
- char* Info;
- char* Author;
- char* Site;
- char* Email;
-
- DWORD Version;
-
- WORD uid;
-} Cryptor;
-
-typedef struct{
- char dllname[255];
- HMODULE hLib;
- Cryptor* cryptor;
-} CryptoModule;
-
-BOOL CALLBACK DlgStdInProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
-char encryptKey[255];
-size_t encryptKeyLength;
-
-int wrongPass = 0;
-void* key;
-
-Cryptor* CryptoEngine = NULL;
-
-int ModulesCount = 0;
-CryptoModule* Modules[100];
-
-
-void zero_fill(BYTE * pBuf, size_t bufSize)
-{
- size_t i;
- for(i = 0; i < bufSize; i++)
- pBuf[i] = 0;
-}
-
-void InitSecurity()
-{
- HMODULE hLib;
- WIN32_FIND_DATAA fd;
-
- Cryptor* (__stdcall *GetCryptor)();
-
- {
- TCHAR szMirandaDir[MAX_PATH];
- szMirandaDir[ 0 ] = 0;
- TCHAR *str2;
- GetModuleFileName(NULL,szMirandaDir,SIZEOF(szMirandaDir));
- str2 = _tcsrchr(szMirandaDir,'\\');
- if ( str2 != NULL )
- *str2=0;
- _tchdir(szMirandaDir);
- }
-
- HANDLE hFile = FindFirstFileA(".\\plugins\\cryptors\\*.dll", &fd);
-
- AddToStatus(STATUS_MESSAGE,TranslateT("Scanning cryptors directory"));
-
- ModulesCount = 0;
- while (hFile != INVALID_HANDLE_VALUE)
- {
- char tmp[MAX_PATH], buf[255];
- strcpy(tmp, ".\\plugins\\cryptors\\");
- strcat(tmp, fd.cFileName);
-
- hLib = LoadLibraryA(tmp);
- if(hLib){
- GetCryptor = (Cryptor* (__stdcall *)()) GetProcAddress(hLib, "GetCryptor");
- if(GetCryptor){
- TCHAR Name[100], Version[100], DllName[100];
-
-
- Modules[ModulesCount] = (CryptoModule*) malloc(sizeof(CryptoModule));
- Modules[ModulesCount]->cryptor = GetCryptor();
- strcpy(Modules[ModulesCount]->dllname, fd.cFileName);
- Modules[ModulesCount]->hLib = hLib;
-
- _snprintf(buf,SIZEOF(buf),"%d.%d.%d.%d", HIBYTE(HIWORD(Modules[ModulesCount]->cryptor->Version)), LOBYTE(HIWORD(Modules[ModulesCount]->cryptor->Version)), HIBYTE(LOWORD(Modules[ModulesCount]->cryptor->Version)), LOBYTE(LOWORD(Modules[ModulesCount]->cryptor->Version)));
-
- mbstowcs(Name, Modules[ModulesCount]->cryptor->Name, 100);
- mbstowcs(Version, buf, 100);
- mbstowcs(DllName, Modules[ModulesCount]->dllname, 100);
-
- AddToStatus(STATUS_MESSAGE,TranslateT("Cryptor loaded: %s [%s] (%s)"), Name, Version, DllName);
-
- ModulesCount++;
- }else{
- FreeLibrary(hLib);
- }
- }
- if(ModulesCount >= 100) break;
- if (!FindNextFileA(hFile, &fd)) break;
- }
-
- AddToStatus(STATUS_MESSAGE,TranslateT("%d crypto modules loaded"), ModulesCount);
-}
-
-void UnloadSecurity()
-{
- int i;
-
- if(CryptoEngine) CryptoEngine->FreeKey(key);
-
- for(i = 0; i < ModulesCount; i++)
- {
- FreeLibrary(Modules[i]->hLib);
- free(Modules[i]);
- }
-}
-
-void EncoderInit()
-{
- encryptKey[encryptKeyLength] = 0;
- key = CryptoEngine->GenerateKey(encryptKey);
-}
-
-void EncodeCopyMemory(BYTE * dst, void * src, size_t size )
-{
- memcpy(dst, src, size);
- CryptoEngine->EncryptMem(dst, (int)size, key);
-}
-
-void DecodeCopyMemory(BYTE * dst, void * src, size_t size )
-{
- memcpy(dst, src, size);
- CryptoEngine->DecryptMem(dst, (int)size, key);
-}
-
-
-void EncodeMemory(BYTE * mem, size_t size)
-{
- CryptoEngine->EncryptMem(mem, (int)size, key);
-}
-
-void DecodeMemory(BYTE * mem, size_t size)
-{
- CryptoEngine->DecryptMem(mem, (int)size, key);
-}
-
-int bCheckingPass = 0;
-
-int CheckPassword(WORD checkWord, WORD cryptorUID, char * szDBName)
-{
- WORD ver;
- int res;
-
- if(bCheckingPass) return 0;
- bCheckingPass = 1;
-
- {
- int i;
- int Found = 0;
- for(i = 0; i < ModulesCount; i++) {
- if(cryptorUID == Modules[i]->cryptor->uid){
- CryptoEngine = Modules[i]->cryptor;
- Found = 1;
- break;
- }
- }
- if (!Found){
- AddToStatus(STATUS_FATAL, TranslateT("Sorry, but your database encrypted with unknown module"), MB_OK);
- bCheckingPass = 0;
- return 0;
- }
- }
-
- {
- wchar_t Name[100], Author[100];
-
- mbstowcs(Name, CryptoEngine->Name, 100);
- mbstowcs(Author, CryptoEngine->Author, 100);
-
- AddToStatus(STATUS_MESSAGE, TranslateT("Database encrypted with %s by %s"), Name, Author);
- }
-
- while(1){
- res = DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_LOGIN), NULL, (DLGPROC)DlgStdInProc, (LPARAM)szDBName);
- if(res == IDCANCEL)
- {
- wrongPass = 0;
- bCheckingPass = 0;
- return 0;
- }
- if(encryptKeyLength < 1) continue;
- EncoderInit();
- DecodeCopyMemory((BYTE*)&ver, &checkWord, sizeof(checkWord));
- if(ver == 0x5195)
- {
- wrongPass = 0;
- bCheckingPass = 0;
- return 1;
- }
- wrongPass++;
- }
-
- bCheckingPass = 0;
-}
-
-
-UINT oldLangID = 0;
-void LanguageChanged(HWND hDlg)
-{
- UINT LangID = (UINT)GetKeyboardLayout(0);
- char Lang[3] = {0};
- if (LangID != oldLangID)
- {
- oldLangID = LangID;
- GetLocaleInfoA(MAKELCID((LangID & 0xffffffff), SORT_DEFAULT), LOCALE_SABBREVLANGNAME, Lang, 2);
- SetDlgItemTextA(hDlg, IDC_LANG, Lang);
- }
-}
-
-BOOL CALLBACK DlgStdInProc(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam)
-{
- switch(uMsg)
- {
- case WM_INITDIALOG:
- {
- HWND hwndCtrl;
- TranslateDialogDefault(hDlg);
-
- if(lParam && !wrongPass) SetDlgItemTextA(hDlg, IDC_DBNAME, (LPCSTR)lParam);
- if(wrongPass)
- {
- if (wrongPass > 2)
- {
- hwndCtrl = GetDlgItem(hDlg, IDC_USERPASS);
- EnableWindow(hwndCtrl, FALSE);
- hwndCtrl = GetDlgItem(hDlg, IDOK);
- EnableWindow(hwndCtrl, FALSE);
-
- SetDlgItemText(hDlg, IDC_LOGININFO, TranslateT("Too many errors!"));
-
- }
- else
- {
- SetDlgItemText(hDlg, IDC_LOGININFO, TranslateT("Password is not correct!"));
- }
- }
- oldLangID = 0;
- SetTimer(hDlg,1,200,NULL);
- LanguageChanged(hDlg);
- return TRUE;
- }
-
- case WM_CTLCOLORSTATIC:
- {
- if ((HWND)lParam == GetDlgItem(hDlg, IDC_LANG))
- {
- SetTextColor((HDC)wParam, GetSysColor(COLOR_HIGHLIGHTTEXT));
- SetBkMode((HDC)wParam, TRANSPARENT);
- return (BOOL)GetSysColorBrush(COLOR_HIGHLIGHT);
- }
-
- return FALSE;
- }
-
- case WM_COMMAND:
- {
- UINT uid = LOWORD(wParam);
-
- if(uid == IDOK){
- if (!GetWindowLongPtr(hDlg,GWLP_USERDATA))
- {
- encryptKeyLength = GetDlgItemTextA(hDlg, IDC_USERPASS, encryptKey, 254);
- EndDialog(hDlg,IDOK);
- }else{
-
- }
- }else if(uid == IDCANCEL){
- EndDialog(hDlg,IDCANCEL);
- }
- }
- case WM_TIMER:
- {
- LanguageChanged(hDlg);
- return FALSE;
- }
- case WM_DESTROY:
- {
- KillTimer(hDlg, 1);
- return FALSE;
- }
- }
-
- return FALSE;
-}
|