From 06f3246b6342b0f0910a01be82689d9aca5aa1aa Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 21 Nov 2013 14:03:28 +0000 Subject: now it's safe to forget about mmap_sa forever git-svn-id: http://svn.miranda-ng.org/main/trunk@6954 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../Dbx_mmap_SA/Cryptors/Athena/UAthena.pas | 176 +++++++ .../Dbx_mmap_SA/Cryptors/Athena/athena.cfg | 38 ++ .../Dbx_mmap_SA/Cryptors/Athena/athena.dof | 136 ++++++ .../Dbx_mmap_SA/Cryptors/Athena/athena.dpr | 112 +++++ .../Dbx_mmap_SA/Cryptors/Athena/athena.rc | 28 ++ .../Dbx_mmap_SA/Cryptors/Athena/athena.res | Bin 0 -> 916 bytes .../Dbx_mmap_SA/Cryptors/Athena/make.bat | 27 ++ .../Cryptors/Athena/md5_mod256_unit.pas | 64 +++ .../Dbx_mmap_SA/Cryptors/Athena/md5_unit.pas | 212 +++++++++ .../Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj | 159 +++++++ .../Cryptors/RC4/rc4_10.vcxproj.filters | 30 ++ .../Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj | 162 +++++++ .../Cryptors/RC4/rc4_11.vcxproj.filters | 30 ++ .../Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj | 178 +++++++ .../Cryptors/RC4/rc4_12.vcxproj.filters | 30 ++ .../Dbx_mmap_SA/Cryptors/RC4/res/Version.rc | 38 ++ .../Dbx_mmap_SA/Cryptors/RC4/src/Version.h | 11 + .../Dbx_mmap_SA/Cryptors/RC4/src/cryptor.cpp | 133 ++++++ .../Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj | 254 ++++++++++ .../Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj.filters | 125 +++++ .../Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj | 257 ++++++++++ .../Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj.filters | 125 +++++ .../Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj | 257 ++++++++++ .../Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj.filters | 125 +++++ plugins/!Deprecated/Dbx_mmap_SA/res/db3x_mmap.rc | 275 +++++++++++ plugins/!Deprecated/Dbx_mmap_SA/res/logo.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/Dbx_mmap_SA/res/pass.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/Dbx_mmap_SA/res/version.rc | 38 ++ .../!Deprecated/Dbx_mmap_SA/src/commonheaders.h | 110 +++++ plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.cpp | 257 ++++++++++ plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.h | 76 +++ plugins/!Deprecated/Dbx_mmap_SA/src/dialogs.cpp | 526 +++++++++++++++++++++ plugins/!Deprecated/Dbx_mmap_SA/src/init.cpp | 152 ++++++ plugins/!Deprecated/Dbx_mmap_SA/src/options.h | 38 ++ plugins/!Deprecated/Dbx_mmap_SA/src/resource.h | 54 +++ plugins/!Deprecated/Dbx_mmap_SA/src/security.cpp | 358 ++++++++++++++ plugins/!Deprecated/Dbx_mmap_SA/src/stdafx.cpp | 18 + plugins/!Deprecated/Dbx_mmap_SA/src/version.h | 14 + 38 files changed, 4623 insertions(+) create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/UAthena.pas create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.cfg create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dof create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dpr create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.rc create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.res create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/make.bat create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_mod256_unit.pas create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_unit.pas create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj.filters create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj.filters create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj.filters create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/res/Version.rc create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/Version.h create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/cryptor.cpp create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj.filters create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj.filters create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj.filters create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/res/db3x_mmap.rc create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/res/logo.ico create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/res/pass.ico create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/res/version.rc create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/commonheaders.h create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.cpp create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.h create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/dialogs.cpp create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/init.cpp create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/options.h create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/resource.h create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/security.cpp create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/stdafx.cpp create mode 100644 plugins/!Deprecated/Dbx_mmap_SA/src/version.h (limited to 'plugins/!Deprecated') diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/UAthena.pas b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/UAthena.pas new file mode 100644 index 0000000000..15a9674e0c --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/UAthena.pas @@ -0,0 +1,176 @@ +unit UAthena; +{ + Athena: cryptor module for Miranda SecuredMMAP Database driver + Copyright 2007-2008 Klyde + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + + +interface +uses + md5_unit, windows; +Type + Arr = array of byte; + PArr = ^Arr; + + Function MD5_Mod(const s: AnsiString; block_count: byte): AnsiString; + Procedure MakeKey(key: PArr; len: word; const pwd: AnsiString); + Procedure EncryptData(key: PArr; data: PByte; size: LongWord); + Procedure DecryptData(key: PArr; data: PByte; size: LongWord); + +implementation +//============================================================================== +Function str_back(const s: AnsiString): AnsiString; +Var + i: integer; +Begin + result := ''; + for i := Length(s) downto 1 do result := result + s[i]; +end; +//============================================================================== +Function MD5_Mod(const s: AnsiString; block_count: byte): AnsiString; +Var + s1, s2, sb : AnsiString; + k : word; +Begin + sb := str_back(s); + s2 := ''; + For k := 1 to block_count do + Begin + s1 := md5(s + sb); + s2 := str_back(s2 + md5(s1+sb+s2)); + End; + result := s2; +end; +//============================================================================== +Procedure MakeKey(key: PArr; len: word; const pwd: AnsiString); +Var + s : AnsiString; + i : word; + dummy: integer; +Begin + if len > 64 then Len := ((Len div 16) + 1)*16 else Len := 64; + SetLength(key^, Len); + s := MD5_mod(pwd, len div 16); + for i := 1 to length(s) div 2 do + begin + val('$' + copy(s, i*2 - 1, 2),key^[i-1],dummy); + end; +end; +//============================================================================== +Procedure GetNENum(key: arr; var n1, n2: LongWord); +Var + i: LongWord; +Begin + n1 := 0; + n2 := 0; + for i := 0 to Length(key) - 1 do + Begin + n1 := n1 + key[i] + (i + 1)*(n1+1); + n2 := n2 + key[i] - (i + 1)*(n2+1); + end; + n1 := n1*2 + 1; + n2 := n2*2 + 3; +end; + +//============================================================================== +Procedure SimGamm(key: PArr; data: PByte; size: LongWord); +Var + kg : Arr; + i, n1, n2 : LongWord; + lk, k1, k2 : word; +Begin + lk := Length(key^); + SetLength(kg, lk); + for i := 0 to lk - 1 do kg[i] := key^[i]; + GetNENum(kg, n1, n2); + For i := 1 to size - 1 do + Begin + if (i mod lk) = 0 then GetNENum(kg, n1, n2); + k1 := (i+n1+7)*n2 mod lk; + k2 := (i+n2+3)*n1 mod lk; + + PByte(uint_ptr(data)+i)^ := PByte(uint_ptr(data)+i)^ xor kg[k1] xor kg[k2]; + + kg[k1] := kg[k1]*k1 + kg[k2] + i*k2; + kg[k2] := kg[k2]*k2 + kg[k1] + i*k1; + end; +end; +//============================================================================== +Procedure Left(key: PArr; data: PByte; size: LongWord); +Var + k : Arr; + i, n1, n2 : LongWord; + lk, k1, k2 : word; + +Begin + lk := Length(key^); + + SetLength(k, lk); + for i := 0 to lk - 1 do k[i] := key^[i]; + GetNENum(k, n1, n2); + //--------------------------------------------------------------------------- + k1 := (n2 + lk)*n1 mod lk; + k2 := (n1 + lk)*n2 mod lk; + data^ := data^ xor k[k1] xor k[k2]; + + //--------------------------------------------------------------------------- + For i := 1 to size - 1 do + Begin + k1 := (i+n1)*n2 mod lk; + k2 := (i+n2)*n1 mod lk; + + PByte(uint_ptr(data)+i)^ := PByte(uint_ptr(data)+i)^ xor ((PByte(uint_ptr(data)+i-1)^ xor k[k1]) xor k[k2]); + end; +end; +//============================================================================== +Procedure Right(key: PArr; data: PByte; size: LongWord); +Var + k : Arr; + i, n1, n2 : LongWord; + lk, k1, k2 : word; +Begin + lk := Length(key^); + SetLength(k, lk); + for i := 0 to lk - 1 do k[i] := key^[i]; + GetNENum(k, n1, n2); + //--------------------------------------------------------------------------- + For i := size - 1 downto 1 do + Begin + k1 := (i+n1)*n2 mod lk; + k2 := (i+n2)*n1 mod lk; + PByte(uint_ptr(data) + i)^ := PByte(uint_ptr(data)+i)^ xor ((PByte(uint_ptr(data) + i - 1)^ xor k[k1]) xor k[k2]); + end; + //--------------------------------------------------------------------------- + k1 := (n2 + lk)*n1 mod lk; + k2 := (n1 + lk)*n2 mod lk; + data^ := data^ xor k[k1] xor k[k2]; +end; +//============================================================================== +Procedure EncryptData(key: PArr; data: PByte; size: LongWord); +Begin + Left(key, data, size); + SimGamm(key, data, size); +end; +//============================================================================== +Procedure DecryptData(key: PArr; data: PByte; size: LongWord); +Begin + SimGamm(key, data, size); + Right(key, data, size); +end; +//============================================================================== +end. + diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.cfg b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.cfg new file mode 100644 index 0000000000..273efb4bc2 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.cfg @@ -0,0 +1,38 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"d:\program files\borland\delphi7\Projects\Bpl" +-LN"d:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dof b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dof new file mode 100644 index 0000000000..d43219d29e --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dof @@ -0,0 +1,136 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1049 +CodePage=1251 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dpr b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dpr new file mode 100644 index 0000000000..4824b9b01f --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.dpr @@ -0,0 +1,112 @@ +library athena; + +{ + Athena: cryptor module for Miranda SecuredMMAP Database driver + Copyright 2007-2008 Klyde + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +uses + UAthena, + WIndows; + +{$R *.res} + +type + TGenerateKey = function(key: PAnsiChar): PArr; stdcall; + TFreeKey = procedure(key: PArr); stdcall; + TEncryptMem = procedure(data: PByte; size: LongWord; key: PArr); stdcall; + + PCryptorInfo = ^TCryptorInfo; + TCryptorInfo = record + GenerateKey: TGenerateKey; + FreeKey: TFreeKey; + + EncryptMem: TEncryptMem; + DecryptMem: TEncryptMem; + + Name: PAnsiChar; + Info: PAnsiChar; + Author: PAnsiChar; + Site: PAnsiChar; + Email: PAnsiChar; + + version: dword; + + uid: word; + end; + +var + Info: TCryptorInfo; + + +function PLUGIN_MAKE_VERSION(a,b,c,d: Cardinal): integer; +begin + Result := (a shl 24) or (b shl 16) or (c shl 8) or d; +end; + +function GenerateKey(pwd: PAnsiChar): PArr; stdcall; +var + a: PArr; +begin + + new(a); + MakeKey(a, 512, pwd); + result := a; + +end; + +procedure FreeKey(key: PArr); stdcall; +begin + FreeMem(key); +end; + +procedure EncryptMem(data: PByte; size: LongWord; key: PArr); stdcall; +begin + if size <= 0 then exit; + EncryptData(key, data, size); +end; + +procedure DecryptMem(data: PByte; size: LongWord; key: PArr); stdcall; +begin + if size <= 0 then exit; + DecryptData(key, data, size); +end; + +function GetCryptor: PCryptorInfo; stdcall; +begin + Info.Name := 'Athena'; + Info.Author := 'Klyde'; + Info.Site := 'http://cityopen.ru/forum/journal.php?user=151'; + Info.Email := 'xxxmara@mail.ru'; + Info.Info := 'Secure alghoritm developed in russian universities'; + + Info.version := PLUGIN_MAKE_VERSION(0,0,3,0); + + Info.UID := $FEA8; + + Info.GenerateKey := GenerateKey; + Info.FreeKey := FreeKey; + Info.EncryptMem := EncryptMem; + Info.DecryptMem := DecryptMem; + + result := @Info; +end; + +exports GetCryptor; + +begin +end. diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.rc b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.rc new file mode 100644 index 0000000000..bc035ab02a --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.rc @@ -0,0 +1,28 @@ +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,0,3,0 + PRODUCTVERSION 0,0,3,0 + FILEFLAGSMASK $3F + FILEOS 4 + FILETYPE 2 + FILESUBTYPE 0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName","" + VALUE "Comments", "Secure alghoritm developed in russian universities"0 + VALUE "FileDescription", "Secure alghoritm developed in russian universities"0 + VALUE "FileVersion", "0, 0, 3, 0 "0 + VALUE "InternalName", "Athena"0 + VALUE "OriginalFilename", "Athena.dll"0 + VALUE "ProductName", "Athena"0 + VALUE "ProductVersion", "0, 0, 3, 0 "0 + VALUE "SpecialBuild", ".04.2010 "0 + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation",0,1200 + END +END \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.res b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.res new file mode 100644 index 0000000000..908733f3de Binary files /dev/null and b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/athena.res differ diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/make.bat b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/make.bat new file mode 100644 index 0000000000..438629ae85 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/make.bat @@ -0,0 +1,27 @@ +@echo off +set p1=%1 +set p2=%2 +if "%p1%" == "" (echo "please specify target platform by adding 'fpc' or 'fpc64 parameter to command line!'"&&pause&&goto :EOF) +if "%p2%" == "" (echo "please specify target output directory by adding 10 for bin10 or 11 for bin11 or 12 for bin12 to command line!'"&&pause&&goto :EOF) +if /i '%1' == 'fpc' ( + set OUTDIR="..\..\..\..\bin%2\Release\Plugins\Cryptors" + set FPCBIN=fpc.exe +) else if /i '%1' == 'fpc64' ( + set OUTDIR="..\..\..\..\bin%2\Release64\Plugins\Cryptors" + set FPCBIN=ppcrossx64.exe +) +set PROJECT=Athena + +if not exist %OUTDIR% mkdir %OUTDIR% +md tmp + +rem brcc32.exe %myopts% athena.rc -fooathena.res + +%FPCBIN% @..\..\..\Utils.pas\fpc.cfg %PROJECT%.dpr %3 %4 %5 %6 %7 %8 %9 +if errorlevel 1 exit /b 1 + +move .\tmp\%PROJECT%.dll %OUTDIR% +move .\tmp\%PROJECT%.map . +del /Q tmp\* +rd tmp +exit /b 0 diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_mod256_unit.pas b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_mod256_unit.pas new file mode 100644 index 0000000000..53b2d996da --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_mod256_unit.pas @@ -0,0 +1,64 @@ +unit md5_mod256_unit; +interface + +Uses + MD5_Unit, sysutils, classes, windows; +Const + MSize = 256; +Type + tiAr = array [0..255] of integer; + +Function MD5_Mod(s: String): String; +Function MD5_Matrix(s: string): tArr; +Function str_back(s: String): String; + +implementation +//============================================================================== +Function str_back(s: String): String; +Var + i: integer; +Begin + result := ''; + for i := Length(s) downto 1 do result := result + s[i]; +end; +//============================================================================== +Function MD5_Mod_back(s: String): String; +Var + s1, s2 : String; + k : word; +Begin + s1 := str_back(s)+s; + s2 := md5(str_back(s)+str_back(md5(s))+ + str_back(md5(s+s))+ + str_back(md5(s+s+s))+ + str_back(md5(s+s+s+s))+ + str_back(md5(s+s+s+'asddsa'+s))); + For k:=1 to trunc(sqrt(MSize))-1 do + Begin + s1 := md5(s1 + s2 + md5(s1+s1+s2+s) + md5(s2+s2+s1+s) + s); + s2 := str_back(s2 + str_back(md5(s1+s2+md5(s)))); + End; + result:=s2; +end; +//============================================================================== +Function MD5_Mod(s: String): String; +Var + s1, s2 : String; + k : word; +Begin + s1 := s + AnsiUpperCase(s) + AnsiLowerCase(s); + s2 := md5(s+md5(s)+md5(s+s)+md5(s+AnsiUpperCase(s)+s)+md5(s+AnsiLowerCase(s+s)+s)+md5(s+s+str_back(s+s+'qweewq'))); + For k:=1 to trunc(sqrt(MSize))-1 do + Begin + s1 := md5(s1 + str_back(s2) + md5(s1+s1+s2+s) + str_back(md5(s2+s2+s1+s)) + s); + s2 := str_back(s2 + md5(s1+AnsiUpperCase(s2+md5(s)))); + End; + result:=s2; +end; +//============================================================================== + +//============================================================================== +end. + + + diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_unit.pas b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_unit.pas new file mode 100644 index 0000000000..f9a130b729 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/Athena/md5_unit.pas @@ -0,0 +1,212 @@ +unit md5_unit; + +interface + +uses Windows; +Type + TMD5 = Array [0..15] of byte; + +function MD5(const s: AnsiString): AnsiString; +function MD5_arr(const s: AnsiString): TMD5; + +implementation +//============================================================================== +const + HexDigitChr : array [0..15] of AnsiChar = ('0','1','2','3','4','5','6','7', + '8','9','A','B','C','D','E','F'); + +function Int2Hex(Value:dword;Digits:integer=0):AnsiString; +var + i:cardinal; + buf:array [0..31] of AnsiChar; +begin + if Digits<=0 then + begin + Digits:=0; + i:=Value; + repeat + i:=i shr 4; + inc(Digits); + until i=0; + end; + + buf[Digits]:=#0; + repeat + Dec(Digits); + buf[Digits]:=AnsiChar(HexDigitChr[Value and $F]); + Value:=Value shr 4; + until Digits=0; + result:=buf; +end; +//============================================================================== +function MD5_arr(const s: AnsiString): TMD5; +var + a : TMD5; + LenHi, LenLo: longword; + Index: DWord; + HashBuffer : array[0..63] of byte; + CurrentHash : array[0..3] of DWord; + + procedure Burn; + begin + LenHi:= 0; LenLo:= 0; + Index:= 0; + FillChar(HashBuffer,Sizeof(HashBuffer),0); + FillChar(CurrentHash,Sizeof(CurrentHash),0); + end; + + procedure Init; + begin + Burn; + CurrentHash[0]:= $67452301; + CurrentHash[1]:= $efcdab89; + CurrentHash[2]:= $98badcfe; + CurrentHash[3]:= $10325476; + end; + + function LRot32(a, b: longword): longword; + begin + Result:= (a shl b) or (a shr (32-b)); + end; + + procedure Compress; + var + Data : array[0..15] of dword; + A, B, C, D: dword; + begin + Move(HashBuffer,Data,Sizeof(Data)); + A:= CurrentHash[0]; + B:= CurrentHash[1]; + C:= CurrentHash[2]; + D:= CurrentHash[3]; + + A:= B + LRot32(A + (D xor (B and (C xor D))) + Data[ 0] + $d76aa478,7); + D:= A + LRot32(D + (C xor (A and (B xor C))) + Data[ 1] + $e8c7b756,12); + C:= D + LRot32(C + (B xor (D and (A xor B))) + Data[ 2] + $242070db,17); + B:= C + LRot32(B + (A xor (C and (D xor A))) + Data[ 3] + $c1bdceee,22); + A:= B + LRot32(A + (D xor (B and (C xor D))) + Data[ 4] + $f57c0faf,7); + D:= A + LRot32(D + (C xor (A and (B xor C))) + Data[ 5] + $4787c62a,12); + C:= D + LRot32(C + (B xor (D and (A xor B))) + Data[ 6] + $a8304613,17); + B:= C + LRot32(B + (A xor (C and (D xor A))) + Data[ 7] + $fd469501,22); + A:= B + LRot32(A + (D xor (B and (C xor D))) + Data[ 8] + $698098d8,7); + D:= A + LRot32(D + (C xor (A and (B xor C))) + Data[ 9] + $8b44f7af,12); + C:= D + LRot32(C + (B xor (D and (A xor B))) + Data[10] + $ffff5bb1,17); + B:= C + LRot32(B + (A xor (C and (D xor A))) + Data[11] + $895cd7be,22); + A:= B + LRot32(A + (D xor (B and (C xor D))) + Data[12] + $6b901122,7); + D:= A + LRot32(D + (C xor (A and (B xor C))) + Data[13] + $fd987193,12); + C:= D + LRot32(C + (B xor (D and (A xor B))) + Data[14] + $a679438e,17); + B:= C + LRot32(B + (A xor (C and (D xor A))) + Data[15] + $49b40821,22); + + A:= B + LRot32(A + (C xor (D and (B xor C))) + Data[ 1] + $f61e2562,5); + D:= A + LRot32(D + (B xor (C and (A xor B))) + Data[ 6] + $c040b340,9); + C:= D + LRot32(C + (A xor (B and (D xor A))) + Data[11] + $265e5a51,14); + B:= C + LRot32(B + (D xor (A and (C xor D))) + Data[ 0] + $e9b6c7aa,20); + A:= B + LRot32(A + (C xor (D and (B xor C))) + Data[ 5] + $d62f105d,5); + D:= A + LRot32(D + (B xor (C and (A xor B))) + Data[10] + $02441453,9); + C:= D + LRot32(C + (A xor (B and (D xor A))) + Data[15] + $d8a1e681,14); + B:= C + LRot32(B + (D xor (A and (C xor D))) + Data[ 4] + $e7d3fbc8,20); + A:= B + LRot32(A + (C xor (D and (B xor C))) + Data[ 9] + $21e1cde6,5); + D:= A + LRot32(D + (B xor (C and (A xor B))) + Data[14] + $c33707d6,9); + C:= D + LRot32(C + (A xor (B and (D xor A))) + Data[ 3] + $f4d50d87,14); + B:= C + LRot32(B + (D xor (A and (C xor D))) + Data[ 8] + $455a14ed,20); + A:= B + LRot32(A + (C xor (D and (B xor C))) + Data[13] + $a9e3e905,5); + D:= A + LRot32(D + (B xor (C and (A xor B))) + Data[ 2] + $fcefa3f8,9); + C:= D + LRot32(C + (A xor (B and (D xor A))) + Data[ 7] + $676f02d9,14); + B:= C + LRot32(B + (D xor (A and (C xor D))) + Data[12] + $8d2a4c8a,20); + + A:= B + LRot32(A + (B xor C xor D) + Data[ 5] + $fffa3942,4); + D:= A + LRot32(D + (A xor B xor C) + Data[ 8] + $8771f681,11); + C:= D + LRot32(C + (D xor A xor B) + Data[11] + $6d9d6122,16); + B:= C + LRot32(B + (C xor D xor A) + Data[14] + $fde5380c,23); + A:= B + LRot32(A + (B xor C xor D) + Data[ 1] + $a4beea44,4); + D:= A + LRot32(D + (A xor B xor C) + Data[ 4] + $4bdecfa9,11); + C:= D + LRot32(C + (D xor A xor B) + Data[ 7] + $f6bb4b60,16); + B:= C + LRot32(B + (C xor D xor A) + Data[10] + $bebfbc70,23); + A:= B + LRot32(A + (B xor C xor D) + Data[13] + $289b7ec6,4); + D:= A + LRot32(D + (A xor B xor C) + Data[ 0] + $eaa127fa,11); + C:= D + LRot32(C + (D xor A xor B) + Data[ 3] + $d4ef3085,16); + B:= C + LRot32(B + (C xor D xor A) + Data[ 6] + $04881d05,23); + A:= B + LRot32(A + (B xor C xor D) + Data[ 9] + $d9d4d039,4); + D:= A + LRot32(D + (A xor B xor C) + Data[12] + $e6db99e5,11); + C:= D + LRot32(C + (D xor A xor B) + Data[15] + $1fa27cf8,16); + B:= C + LRot32(B + (C xor D xor A) + Data[ 2] + $c4ac5665,23); + + A:= B + LRot32(A + (C xor (B or (not D))) + Data[ 0] + $f4292244,6); + D:= A + LRot32(D + (B xor (A or (not C))) + Data[ 7] + $432aff97,10); + C:= D + LRot32(C + (A xor (D or (not B))) + Data[14] + $ab9423a7,15); + B:= C + LRot32(B + (D xor (C or (not A))) + Data[ 5] + $fc93a039,21); + A:= B + LRot32(A + (C xor (B or (not D))) + Data[12] + $655b59c3,6); + D:= A + LRot32(D + (B xor (A or (not C))) + Data[ 3] + $8f0ccc92,10); + C:= D + LRot32(C + (A xor (D or (not B))) + Data[10] + $ffeff47d,15); + B:= C + LRot32(B + (D xor (C or (not A))) + Data[ 1] + $85845dd1,21); + A:= B + LRot32(A + (C xor (B or (not D))) + Data[ 8] + $6fa87e4f,6); + D:= A + LRot32(D + (B xor (A or (not C))) + Data[15] + $fe2ce6e0,10); + C:= D + LRot32(C + (A xor (D or (not B))) + Data[ 6] + $a3014314,15); + B:= C + LRot32(B + (D xor (C or (not A))) + Data[13] + $4e0811a1,21); + A:= B + LRot32(A + (C xor (B or (not D))) + Data[ 4] + $f7537e82,6); + D:= A + LRot32(D + (B xor (A or (not C))) + Data[11] + $bd3af235,10); + C:= D + LRot32(C + (A xor (D or (not B))) + Data[ 2] + $2ad7d2bb,15); + B:= C + LRot32(B + (D xor (C or (not A))) + Data[ 9] + $eb86d391,21); + + Inc(CurrentHash[0],A); + Inc(CurrentHash[1],B); + Inc(CurrentHash[2],C); + Inc(CurrentHash[3],D); + Index:= 0; + FillChar(HashBuffer,Sizeof(HashBuffer),0); + end; + +procedure Update(const Buffer; Size: longword); +var + PBuf: ^byte; +begin + Inc(LenHi,Size shr 29); + Inc(LenLo,Size*8); + if LenLo < (Size*8) then Inc(LenHi); + PBuf:= @Buffer; + while Size> 0 do + begin + if (Sizeof(HashBuffer)-Index)<= DWord(Size) then + begin + Move(PBuf^,HashBuffer[Index],Sizeof(HashBuffer)-Index); + Dec(Size,Sizeof(HashBuffer)-Index); + Inc(PBuf,Sizeof(HashBuffer)-Index); + Compress; + end else + begin + Move(PBuf^,HashBuffer[Index],Size); + Inc(Index,Size); + Size:= 0; + end; + end; +end; + +procedure Final(var Digest); +begin + HashBuffer[Index] := $80; + if Index >= 56 then Compress; + PDWord(@HashBuffer[56])^ := LenLo; + PDWord(@HashBuffer[60])^ := LenHi; + Compress; + Move(CurrentHash, Digest, Sizeof(CurrentHash)); + Burn; +end; + +begin + Init; + Update(s[1], Length(s)); + Final(a); + result := a; +end; +//============================================================================== +function MD5(const s: AnsiString): AnsiString; +var + a : TMD5; + i : integer; +begin + a := MD5_arr(s); + result := ''; + for i := 0 to 15 do result := result + Int2Hex(a[i], 2); +end; + +end. diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj new file mode 100644 index 0000000000..b4485696b0 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj @@ -0,0 +1,159 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E38B4212-53BC-49A7-B821-9A99DB4774C6} + RC4 + + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)64\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)64\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Full + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Level3 + Size + false + + + true + Windows + true + true + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin10\lib + /PDBALTPATH:%_PDB% + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + false + + + true + Windows + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin10\lib + + + + + Full + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Level3 + Size + false + + + true + Windows + true + true + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin10\lib + /PDBALTPATH:%_PDB% + + + + + Disabled + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + false + + + true + Windows + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin10\lib + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj.filters b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj.filters new file mode 100644 index 0000000000..5842bc8c63 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_10.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {d9ef4bec-040d-4cca-8faa-698d1448fb23} + + + {27e27fc6-b7a7-4c5c-a051-e9cad5b16d52} + + + + + Source Files + + + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj new file mode 100644 index 0000000000..5cdc8d3a47 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj @@ -0,0 +1,162 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E38B4212-53BC-49A7-B821-9A99DB4774C6} + RC4 + + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + DynamicLibrary + MultiByte + true + v110_xp + + + DynamicLibrary + MultiByte + v110_xp + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)64\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)64\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Full + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Level3 + Size + false + + + true + Windows + true + true + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin11\lib + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + false + + + true + Windows + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin11\lib + false + + + + + Full + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Level3 + Size + false + + + true + Windows + true + true + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin11\lib + + + + + Disabled + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + false + + + true + Windows + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin11\lib + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj.filters b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj.filters new file mode 100644 index 0000000000..5842bc8c63 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_11.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {d9ef4bec-040d-4cca-8faa-698d1448fb23} + + + {27e27fc6-b7a7-4c5c-a051-e9cad5b16d52} + + + + + Source Files + + + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj new file mode 100644 index 0000000000..8b9f9cf7ce --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj @@ -0,0 +1,178 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E38B4212-53BC-49A7-B821-9A99DB4774C6} + RC4 + + + + DynamicLibrary + MultiByte + true + v120_xp + + + DynamicLibrary + MultiByte + v120_xp + + + DynamicLibrary + MultiByte + true + v120_xp + + + DynamicLibrary + MultiByte + v120_xp + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)64\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)64\Plugins\Cryptors\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Full + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Level3 + Size + false + + + true + Windows + true + true + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin12\lib + + + ..\..\..\..\include\msapi + NDEBUG;%(PreprocessorDefinitions) + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + EditAndContinue + false + + + true + Windows + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin12\lib + false + + + ..\..\..\..\include\msapi + _DEBUG;%(PreprocessorDefinitions) + + + + + Full + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Level3 + Size + false + + + true + Windows + true + true + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin12\lib + + + ..\..\..\..\include\msapi + NDEBUG;%(PreprocessorDefinitions) + + + + + Disabled + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + Level3 + false + + + true + Windows + $(IntDir)$(TargetName).lib + false + $(ProfileDir)..\..\..\..\bin12\lib + + + ..\..\..\..\include\msapi + _DEBUG;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj.filters b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj.filters new file mode 100644 index 0000000000..5842bc8c63 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/rc4_12.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {d9ef4bec-040d-4cca-8faa-698d1448fb23} + + + {27e27fc6-b7a7-4c5c-a051-e9cad5b16d52} + + + + + Source Files + + + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/res/Version.rc b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/res/Version.rc new file mode 100644 index 0000000000..5bfbab4754 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/res/Version.rc @@ -0,0 +1,38 @@ +// Microsoft Visual C++ generated resource script. +// +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + +#include "afxres.h" +#include "..\src\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __FILEVERSION_STRING + PRODUCTVERSION __FILEVERSION_STRING + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x0L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "FileDescription", __DESCRIPTION + VALUE "InternalName", __PLUGIN_NAME + VALUE "LegalCopyright", __COPYRIGHT + VALUE "OriginalFilename", __FILENAME + VALUE "ProductName", __PLUGIN_NAME + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/Version.h b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/Version.h new file mode 100644 index 0000000000..b3cf9b4129 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/Version.h @@ -0,0 +1,11 @@ +#define __MAJOR_VERSION 0 +#define __MINOR_VERSION 0 +#define __RELEASE_NUM 0 +#define __BUILD_NUM 1 + +#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM + +#define __PLUGIN_NAME "RC4" +#define __FILENAME "RC4.dll" +#define __DESCRIPTION "Old, very easy to crack stream cipher" +#define __COPYRIGHT "© 2012-13 Miranda NG Team" diff --git a/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/cryptor.cpp b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/cryptor.cpp new file mode 100644 index 0000000000..a673c11fe7 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/Cryptors/RC4/src/cryptor.cpp @@ -0,0 +1,133 @@ +#include + +#define buf_size 1024 + +typedef struct{ + void* (__stdcall *GenerateKey)(char* key); + 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 rc4_key +{ + BYTE state[256]; + BYTE x; + BYTE y; +} rc4_key; + +#define swap_byte(x,y) t = *(x); *(x) = *(y); *(y) = t + +void prepare_key(BYTE *key_data_ptr, size_t key_data_len, rc4_key *key) +{ + int i = 0; + BYTE t = 0; + BYTE index1 = 0; + BYTE index2 = 0; + BYTE* state = 0; + unsigned long counter = 0; + + state = &key->state[0]; + for(counter = 0; counter < 256; counter++) + state[counter] = (BYTE)counter; + key->x = 0; + key->y = 0; + index1 = 0; + index2 = 0; + for(counter = 0; counter < 256; counter++) + { + index2 = (key_data_ptr[index1] + state[counter] + index2) % 256; + swap_byte(&state[counter], &state[index2]); + index1 = (index1 + 1) % key_data_len; + } +} + +void rc4(BYTE *buffer_ptr, int buffer_len, rc4_key *key) +{ + BYTE t = 0; + BYTE x = 0; + BYTE y = 0; + BYTE* state = 0; + BYTE xorIndex = 0; + DWORD counter = 0; + BYTE old_state[256]; + + x = key->x; + y = key->y; + state = &key->state[0]; + memcpy(old_state, key->state, 256); + for(counter = 0; counter < (DWORD)buffer_len; counter++) + { + x = (x + 1) % 256; + y = (state[x] + y) % 256; + swap_byte(&state[x], &state[y]); + xorIndex = (state[x] + state[y]) % 256; + buffer_ptr[counter] ^= state[xorIndex]; + } + memcpy(key->state, old_state, 256); + //key->x = x; + //key->y = y; +} + + +void zero_fill(BYTE * pBuf, size_t bufSize) +{ + size_t i; + for(i = 0; i < bufSize; i++) + pBuf[i] = 0; +} + +void* __stdcall GenerateKey(char* pwd) +{ + rc4_key* key; + key = (rc4_key*)malloc(sizeof(rc4_key)); + zero_fill((BYTE*)key, sizeof(key)); + prepare_key((BYTE*)pwd, strlen(pwd), key); + return key; +} + +void __stdcall FreeKey(void* key) +{ + free(key); +} + +void __stdcall EncryptMem(BYTE* data, int size, void* key) +{ + rc4(data, size, (rc4_key*)key); +} + +void __stdcall DecryptMem(BYTE* data, int size, void* key) +{ + rc4(data, size, (rc4_key*)key); +} + +Cryptor cryptor = + { + GenerateKey, + FreeKey, + EncryptMem, + DecryptMem, + "RC4", + "Old, very easy to crack stream cipher.", + "Unknown", + "http://ru.wikipedia.org/wiki/RC4", + "nomail", + 0x00000100, + 0xDEAD + }; + + +extern "C" __declspec(dllexport) Cryptor* GetCryptor() +{ + return &cryptor; +} diff --git a/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj new file mode 100644 index 0000000000..7a548ce305 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj @@ -0,0 +1,254 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + Dbx_mmap_SA + {6D3DC604-9CA0-45A2-85D7-1EFE3309F23B} + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Disabled + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Use + commonheaders.h + Level3 + EditAndContinue + false + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + true + false + comctl32.lib;%(AdditionalDependencies) + $(IntDir)$(TargetName).lib + Windows + 0x5130000 + $(ProfileDir)..\..\bin10\lib + + + + + Disabled + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Use + commonheaders.h + Level3 + false + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + true + false + comctl32.lib;%(AdditionalDependencies) + $(IntDir)$(TargetName).lib + 0x5130000 + Windows + $(ProfileDir)..\..\bin10\lib + + + + + Full + AnySuitable + Size + true + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + true + Use + commonheaders.h + Level3 + false + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + comctl32.lib;%(AdditionalDependencies) + true + true + true + 0x5130000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin10\lib + /PDBALTPATH:%_PDB% + + + + + Full + AnySuitable + Size + true + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + true + Use + commonheaders.h + Level3 + false + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + comctl32.lib;%(AdditionalDependencies) + true + true + true + 0x5130000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin10\lib + /PDBALTPATH:%_PDB% + + + + + + + + + + + + + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + + + Create + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj.filters b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj.filters new file mode 100644 index 0000000000..ab9907fdb9 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_10.vcxproj.filters @@ -0,0 +1,125 @@ + + + + + {4faf3f6f-953b-4e0c-aa3a-246accd395cc} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {26f1ddd9-261b-4512-8da8-b3e786b0e35c} + h;hpp;hxx;hm;inl + + + {4eb47a45-3e87-400a-bfb3-05c2d9cbb32b} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {9b94a455-bdbc-497d-b375-18c090cccc36} + + + {9236b59b-8511-4248-adfd-5ad1f36788dc} + + + + + Source Files + + + Source Files + + + Source Files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Source Files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Source Files + + + Mmap files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Mmap files + + + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj new file mode 100644 index 0000000000..6f1fd99934 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj @@ -0,0 +1,257 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + Dbx_mmap_SA + {6D3DC604-9CA0-45A2-85D7-1EFE3309F23B} + + + + DynamicLibrary + Unicode + true + v110_xp + + + DynamicLibrary + Unicode + true + v110_xp + + + DynamicLibrary + Unicode + v110_xp + + + DynamicLibrary + Unicode + v110_xp + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Disabled + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Use + commonheaders.h + Level3 + EditAndContinue + false + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + true + false + comctl32.lib;%(AdditionalDependencies) + $(IntDir)$(TargetName).lib + Windows + 0x5130000 + $(ProfileDir)..\..\bin11\lib + false + + + + + Disabled + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Use + commonheaders.h + Level3 + false + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + true + false + comctl32.lib;%(AdditionalDependencies) + $(IntDir)$(TargetName).lib + 0x5130000 + Windows + $(ProfileDir)..\..\bin11\lib + + + + + Full + AnySuitable + Size + true + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + true + Use + commonheaders.h + Level3 + false + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + comctl32.lib;%(AdditionalDependencies) + true + true + true + 0x5130000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin11\lib + + + + + Full + AnySuitable + Size + true + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + true + Use + commonheaders.h + Level3 + false + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + comctl32.lib;%(AdditionalDependencies) + true + true + true + 0x5130000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin11\lib + + + + + + + + + + + + + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + + + Create + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj.filters b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj.filters new file mode 100644 index 0000000000..ab9907fdb9 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_11.vcxproj.filters @@ -0,0 +1,125 @@ + + + + + {4faf3f6f-953b-4e0c-aa3a-246accd395cc} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {26f1ddd9-261b-4512-8da8-b3e786b0e35c} + h;hpp;hxx;hm;inl + + + {4eb47a45-3e87-400a-bfb3-05c2d9cbb32b} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {9b94a455-bdbc-497d-b375-18c090cccc36} + + + {9236b59b-8511-4248-adfd-5ad1f36788dc} + + + + + Source Files + + + Source Files + + + Source Files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Source Files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Source Files + + + Mmap files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Mmap files + + + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj new file mode 100644 index 0000000000..8168d59428 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj @@ -0,0 +1,257 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + Dbx_mmap_SA + {6D3DC604-9CA0-45A2-85D7-1EFE3309F23B} + + + + DynamicLibrary + Unicode + true + v120_xp + + + DynamicLibrary + Unicode + true + v120_xp + + + DynamicLibrary + Unicode + v120_xp + + + DynamicLibrary + Unicode + v120_xp + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Disabled + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Use + commonheaders.h + Level3 + EditAndContinue + false + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + true + false + comctl32.lib;%(AdditionalDependencies) + $(IntDir)$(TargetName).lib + Windows + 0x5130000 + $(ProfileDir)..\..\bin12\lib + false + + + + + Disabled + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Use + commonheaders.h + Level3 + false + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + true + false + comctl32.lib;%(AdditionalDependencies) + $(IntDir)$(TargetName).lib + 0x5130000 + Windows + $(ProfileDir)..\..\bin12\lib + + + + + Full + AnySuitable + Size + true + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + true + Use + commonheaders.h + Level3 + false + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + comctl32.lib;%(AdditionalDependencies) + true + true + true + 0x5130000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin12\lib + + + + + Full + AnySuitable + Size + true + ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + true + Use + commonheaders.h + Level3 + false + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + comctl32.lib;%(AdditionalDependencies) + true + true + true + 0x5130000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin12\lib + + + + + + + + + + + + + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + ..\commonheaders.h + + + + + Create + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj.filters b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj.filters new file mode 100644 index 0000000000..ab9907fdb9 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/db3x_mmap_sa_12.vcxproj.filters @@ -0,0 +1,125 @@ + + + + + {4faf3f6f-953b-4e0c-aa3a-246accd395cc} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {26f1ddd9-261b-4512-8da8-b3e786b0e35c} + h;hpp;hxx;hm;inl + + + {4eb47a45-3e87-400a-bfb3-05c2d9cbb32b} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {9b94a455-bdbc-497d-b375-18c090cccc36} + + + {9236b59b-8511-4248-adfd-5ad1f36788dc} + + + + + Source Files + + + Source Files + + + Source Files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Source Files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Mmap files\Checker + + + Source Files + + + Mmap files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Mmap files + + + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/res/db3x_mmap.rc b/plugins/!Deprecated/Dbx_mmap_SA/res/db3x_mmap.rc new file mode 100644 index 0000000000..ddd13c7b17 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/res/db3x_mmap.rc @@ -0,0 +1,275 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\src\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Ðóññêèé (Ðîññèÿ) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_LOGIN DIALOGEX 0, 0, 190, 86 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW +CAPTION "Login to Miranda NG" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_HEADERBAR,"MHeaderbarCtrl",0x0,0,0,190,26 + CTEXT "EN",IDC_LANG,158,34,13,13,SS_CENTERIMAGE | NOT WS_GROUP + EDITTEXT IDC_USERPASS,21,34,128,14,ES_PASSWORD | ES_AUTOHSCROLL | WS_GROUP + DEFPUSHBUTTON "OK",IDOK,36,64,50,14 + PUSHBUTTON "Cancel",IDCANCEL,102,64,50,14 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,0,55,190,1 +END + +IDD_NEWPASS DIALOGEX 0, 0, 190, 102 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOPMOST | WS_EX_TOOLWINDOW +CAPTION "New password" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_HEADERBAR,"MHeaderbarCtrl",0x0,0,0,190,26 + CTEXT "EN",IDC_LANG,158,34,13,13,SS_CENTERIMAGE | NOT WS_GROUP + EDITTEXT IDC_USERPASS1,21,34,128,14,ES_PASSWORD | ES_AUTOHSCROLL + EDITTEXT IDC_USERPASS2,21,54,128,14,ES_PASSWORD | ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,36,84,50,14 + PUSHBUTTON "Cancel",IDCANCEL,100,84,50,14 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,0,77,190,1 +END + +IDD_CHANGEPASS DIALOGEX 0, 0, 190, 148 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOOLWINDOW +CAPTION "Change password" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_HEADERBAR,"MHeaderbarCtrl",0x0,0,0,190,26 + CTEXT "EN",IDC_LANG,158,42,13,13,SS_CENTERIMAGE | NOT WS_GROUP + EDITTEXT IDC_OLDPASS,21,42,128,14,ES_PASSWORD | ES_AUTOHSCROLL + EDITTEXT IDC_NEWPASS1,21,77,128,14,ES_PASSWORD | ES_AUTOHSCROLL + EDITTEXT IDC_NEWPASS2,21,98,128,14,ES_PASSWORD | ES_AUTOHSCROLL + DEFPUSHBUTTON "Change",IDOK,11,127,50,14 + PUSHBUTTON "Remove",IDREMOVE,69,127,50,14 + PUSHBUTTON "Cancel",IDCANCEL,126,127,50,14 + LTEXT "New password",IDC_NEWPASSINFO,11,66,163,10,0,WS_EX_TRANSPARENT + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME,0,119,190,1 + LTEXT "Old password",IDC_NEWPASSINFO2,11,31,140,10,0,WS_EX_TRANSPARENT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CHANGEPASS, DIALOG + BEGIN + TOPMARGIN, 7 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON2 ICON "logo.ico" +IDI_ICON3 ICON "pass.ico" +#endif // Ðóññêèé (Ðîññèÿ) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Àíãëèéñêèé (ÑØÀ) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_INSTALLINI DIALOGEX 0, 0, 212, 102 +STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_CONTROLPARENT +CAPTION "Install Database Settings" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Yes",IDOK,26,83,50,14 + PUSHBUTTON "No",IDCANCEL,81,83,50,14 + LTEXT "A file containing new database settings has been placed in the Miranda NG directory.",IDC_STATIC,5,5,202,16 + LTEXT "Do you want to import the settings now?",IDC_STATIC,5,69,202,8 + PUSHBUTTON "No to all",IDC_NOTOALL,136,83,50,14 + LTEXT "",IDC_ININAME,5,24,143,16,SS_NOPREFIX | SS_CENTERIMAGE + PUSHBUTTON "&View contents",IDC_VIEWINI,149,25,58,14 + LTEXT "Security systems to prevent malicious changes are in place and you will be warned before changes that are not known to be safe.",IDC_SECURITYINFO,5,43,202,24 +END + +IDD_WARNINICHANGE DIALOGEX 0, 0, 187, 113 +STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_CONTROLPARENT +CAPTION "Database Setting Change" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + LTEXT "Database settings are being imported from",IDC_STATIC,5,5,177,8 + CONTROL "",IDC_ININAME,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,5,13,177,8 + LTEXT "This file wishes to change the setting",IDC_STATIC,5,24,177,8 + CONTROL "",IDC_SETTINGNAME,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,12,33,170,8 + LTEXT "to the value",IDC_STATIC,5,42,177,8 + CONTROL "",IDC_NEWVALUE,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,12,51,170,8 + LTEXT "",IDC_SECURITYINFO,5,60,177,8 + LTEXT "Do you want to allow this change?",IDC_STATIC,5,71,177,8 + CONTROL "&Allow all further changes to this section",IDC_WARNNOMORE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,80,169,10 + DEFPUSHBUTTON "&Yes",IDYES,5,94,50,14 + PUSHBUTTON "&No",IDNO,59,94,50,14 + PUSHBUTTON "Cancel Import",IDCANCEL,123,94,59,14 +END + +IDD_INIIMPORTDONE DIALOGEX 0, 0, 186, 73 +STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_CONTROLPARENT +CAPTION "Database Import Complete" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + LTEXT "The import has completed from",IDC_STATIC,5,5,176,8 + CONTROL "",IDC_ININAME,"Static",SS_SIMPLE | SS_NOPREFIX | WS_GROUP,5,13,176,8 + LTEXT "What do you want to do with the file now?",IDC_STATIC,5,24,176,8 + PUSHBUTTON "&Recycle",IDC_RECYCLE,5,36,50,14 + PUSHBUTTON "&Delete",IDC_DELETE,68,36,50,14 + EDITTEXT IDC_NEWNAME,5,55,117,12,ES_AUTOHSCROLL + PUSHBUTTON "&Move/Rename",IDC_MOVE,124,54,57,14 + PUSHBUTTON "&Leave",IDC_LEAVE,131,36,50,14 +END + +IDD_OPTIONS DIALOGEX 0, 0, 318, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "Database encryption",IDC_ENC,4,87,307,96,0,WS_EX_RIGHT + CONTROL "",IDC_MODULES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,6,3,305,80 + LTEXT "Info:",IDC_STATIC,9,97,35,8,0,WS_EX_RIGHT + EDITTEXT IDC_INFO,49,97,256,21,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL + LTEXT "Author:",IDC_STATIC,9,123,35,8,0,WS_EX_RIGHT + EDITTEXT IDC_AUTHOR,49,123,256,12,ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER + LTEXT "Site:",IDC_STATIC,9,135,35,8,0,WS_EX_RIGHT + CONTROL "",IDC_SITE,"Hyperlink",WS_TABSTOP,49,135,256,12 + LTEXT "Email:",IDC_STATIC,9,147,35,8,0,WS_EX_RIGHT + CONTROL "",IDC_EMAIL,"Hyperlink",WS_TABSTOP,49,147,256,12 + LTEXT "Unique ID:",IDC_STATIC,9,166,35,8,0,WS_EX_RIGHT + EDITTEXT IDC_UID,49,166,256,12,ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_INSTALLINI, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 207 + TOPMARGIN, 5 + BOTTOMMARGIN, 97 + END + + IDD_WARNINICHANGE, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 182 + TOPMARGIN, 5 + BOTTOMMARGIN, 108 + END + + IDD_INIIMPORTDONE, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 181 + TOPMARGIN, 5 + BOTTOMMARGIN, 68 + END + + IDD_OPTIONS, DIALOG + BEGIN + LEFTMARGIN, 6 + RIGHTMARGIN, 311 + VERTGUIDE, 9 + VERTGUIDE, 44 + VERTGUIDE, 49 + VERTGUIDE, 193 + VERTGUIDE, 248 + VERTGUIDE, 305 + TOPMARGIN, 7 + BOTTOMMARGIN, 181 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\src\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include \0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Àíãëèéñêèé (ÑØÀ) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/!Deprecated/Dbx_mmap_SA/res/logo.ico b/plugins/!Deprecated/Dbx_mmap_SA/res/logo.ico new file mode 100644 index 0000000000..7602e30cbe Binary files /dev/null and b/plugins/!Deprecated/Dbx_mmap_SA/res/logo.ico differ diff --git a/plugins/!Deprecated/Dbx_mmap_SA/res/pass.ico b/plugins/!Deprecated/Dbx_mmap_SA/res/pass.ico new file mode 100644 index 0000000000..2e51427986 Binary files /dev/null and b/plugins/!Deprecated/Dbx_mmap_SA/res/pass.ico differ diff --git a/plugins/!Deprecated/Dbx_mmap_SA/res/version.rc b/plugins/!Deprecated/Dbx_mmap_SA/res/version.rc new file mode 100644 index 0000000000..5bfbab4754 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/res/version.rc @@ -0,0 +1,38 @@ +// Microsoft Visual C++ generated resource script. +// +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + +#include "afxres.h" +#include "..\src\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __FILEVERSION_STRING + PRODUCTVERSION __FILEVERSION_STRING + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x0L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "FileDescription", __DESCRIPTION + VALUE "InternalName", __PLUGIN_NAME + VALUE "LegalCopyright", __COPYRIGHT + VALUE "OriginalFilename", __FILENAME + VALUE "ProductName", __PLUGIN_NAME + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/commonheaders.h b/plugins/!Deprecated/Dbx_mmap_SA/src/commonheaders.h new file mode 100644 index 0000000000..877f0ff65d --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/commonheaders.h @@ -0,0 +1,110 @@ +/* + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright 2000-2003 Miranda ICQ/IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#define _CRT_SECURE_NO_WARNINGS + +#define _WIN32_WINNT 0x0501 + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +//own headers +#include "dbintf_sa.h" +#include "..\Db3x_mmap\src\database.h" +#include "resource.h" +#include "version.h" + +extern HINSTANCE g_hInst; +extern HGENMENU hSetPwdMenu; + +#ifdef __GNUC__ +#define mir_i64(x) (x##LL) +#else +#define mir_i64(x) (x##i64) +#endif + +//global procedures + +struct DlgStdInProcParam +{ + CDbxMmapSA *p_Db; + const TCHAR *pStr; +}; +INT_PTR CALLBACK DlgStdInProc(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam); + +struct DlgChangePassParam +{ + CDbxMmapSA *p_Db; + char *pszNewPass; +}; +INT_PTR CALLBACK DlgChangePass(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam); + +INT_PTR CALLBACK DlgStdNewPass(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam); +INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); + +void xModifyMenu(HGENMENU hMenu,long flags,const TCHAR* name, HICON hIcon); + +extern DBSignature dbSignature, dbSignatureSecured, dbSignatureNonSecured; + +extern LIST g_Dbs; + +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{ + TCHAR dllname[MAX_PATH]; + HMODULE hLib; + Cryptor* cryptor; +} CryptoModule; + +extern Cryptor* CryptoEngine; +extern void* key; diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.cpp b/plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.cpp new file mode 100644 index 0000000000..22921bcf40 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.cpp @@ -0,0 +1,257 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright 2012-13 Miranda NG project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "commonheaders.h" + +#define NeedBytes(n) if(bytesRemaining<(n)) pBlob=(PBYTE)DBRead(ofsBlobPtr,(n),&bytesRemaining) +#define MoveAlong(n) {int x=n; pBlob+=(x); ofsBlobPtr+=(x); bytesRemaining-=(x);} +#define VLT(n) ((n==DBVT_UTF8)?DBVT_ASCIIZ:n) + +DBSignature dbSignatureSecured = {"Miranda ICQ SD",0x1A}; +DBSignature dbSignatureNonSecured = {"Miranda ICQ SA",0x1A}; + +CDbxMmapSA::CDbxMmapSA(const TCHAR* tszFileName) : + CDb3Mmap(tszFileName) +{ +} + +int CDbxMmapSA::Load(bool bSkipInit) +{ + if (CDb3Base::Load(bSkipInit) != ERROR_SUCCESS) + return 1; + + if ( CheckDbHeaders()) + return 1; + + if (!bSkipInit) { + TCHAR* p = _tcsrchr(m_tszProfileName, '\\'); + if (!p) + return 1; + + if (m_bEncoding && !CheckPassword( LOWORD(m_dbHeader.version), p+1)) + return 1; + + InitDialogs(); + } + + return 0; +} + +int CDbxMmapSA::CheckDbHeaders() +{ + if ( memcmp(m_dbHeader.signature, &dbSignatureSecured, sizeof(m_dbHeader.signature)) == 0) + m_bEncoding = true; + else if ( memcmp(m_dbHeader.signature, &dbSignatureNonSecured, sizeof(m_dbHeader.signature)) == 0) + m_bEncoding = false; + else { + m_bEncoding = false; + if ( memcmp(m_dbHeader.signature,&dbSignature,sizeof(m_dbHeader.signature))) + return EGROKPRF_UNKHEADER; + if ( LOWORD(m_dbHeader.version) != 0x0700) + return EGROKPRF_VERNEWER; + } + if (m_dbHeader.ofsUser == 0) + return EGROKPRF_DAMAGED; + return 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +static DWORD __inline GetSettingValueLength(PBYTE pSetting) +{ + if(pSetting[0]&DBVTF_VARIABLELENGTH) return 2+*(PWORD)(pSetting+1); + return pSetting[0]; +} + +void CDbxMmapSA::EncodeContactSettings(HANDLE hContact) +{ + if (!hContact) + hContact = (HANDLE)m_dbHeader.ofsUser; + + DBContact *contact = (DBContact *)DBRead((DWORD)hContact, sizeof(DBContact), NULL); + if (contact->ofsFirstSettings) { + DBContactSettings *setting = (struct DBContactSettings *)DBRead(contact->ofsFirstSettings, sizeof(struct DBContactSettings), NULL); + DWORD offset = contact->ofsFirstSettings; + while( true ) { + DWORD ofsBlobPtr; + PBYTE pBlob; + int bytesRemaining; + DWORD len; + + ofsBlobPtr = offset + offsetof(struct DBContactSettings,blob); + pBlob = (PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining); + while(pBlob[0]) { + NeedBytes(1); + NeedBytes(1+pBlob[0]); + MoveAlong(1+pBlob[0]); + + NeedBytes(5); + + switch(pBlob[0]) { + case DBVT_DELETED: break; + case DBVT_BYTE: break; + case DBVT_WORD: + CryptoEngine->EncryptMem(pBlob+1, 2, key); + break; + + case DBVT_DWORD: + CryptoEngine->EncryptMem(pBlob+1, 4, key); + break; + + case DBVT_UTF8: + case DBVT_ASCIIZ: + case DBVT_BLOB: + NeedBytes(3+*(PWORD)(pBlob+1)); + len = *(PWORD)(pBlob+1); + + CryptoEngine->EncryptMem(pBlob+3, len, key); + break; + } + NeedBytes(3); + MoveAlong(1+GetSettingValueLength(pBlob)); + NeedBytes(1); + } + + if (!setting->ofsNext) + break; + + offset = setting->ofsNext; + setting = (struct DBContactSettings *)DBRead(setting->ofsNext, sizeof(struct DBContactSettings), NULL); + } + } +} + +void CDbxMmapSA::DecodeContactSettings(HANDLE hContact) +{ + if (!hContact) + hContact = (HANDLE)m_dbHeader.ofsUser; + + DBContact *contact = (DBContact *)DBRead((DWORD)hContact, sizeof(DBContact), NULL); + if (contact->ofsFirstSettings){ + DBContactSettings *setting = (struct DBContactSettings *)DBRead(contact->ofsFirstSettings, sizeof(struct DBContactSettings), NULL); + DWORD offset = contact->ofsFirstSettings; + while (true) { + DWORD ofsBlobPtr; + PBYTE pBlob; + int bytesRemaining; + DWORD len; + ofsBlobPtr = offset + offsetof(struct DBContactSettings,blob); + pBlob = (PBYTE)DBRead(ofsBlobPtr,1,&bytesRemaining); + while(pBlob[0]) { + NeedBytes(1); + NeedBytes(1+pBlob[0]); + //CopyMemory(szSetting,pBlob+1,pBlob[0]); szSetting[pBlob[0]] = 0; + MoveAlong(1+pBlob[0]); + + NeedBytes(5); + + switch(pBlob[0]) { + case DBVT_DELETED: break; + case DBVT_BYTE: break; + case DBVT_WORD: + CryptoEngine->DecryptMem(pBlob+1, 2, key); + break; + + case DBVT_DWORD: + CryptoEngine->DecryptMem(pBlob+1, 4, key); + break; + + case DBVT_UTF8: + case DBVT_ASCIIZ: + case DBVT_BLOB: + NeedBytes(3+*(PWORD)(pBlob+1)); + len = *(PWORD)(pBlob+1); + + CryptoEngine->DecryptMem(pBlob+3, len, key); + break; + } + NeedBytes(3); + MoveAlong(1+GetSettingValueLength(pBlob)); + NeedBytes(1); + } + + if (!setting->ofsNext) + break; + + offset = setting->ofsNext; + setting = (struct DBContactSettings *)DBRead(setting->ofsNext, sizeof(struct DBContactSettings), NULL); + } + } +} + +void CDbxMmapSA::EncodeEvent(HANDLE hEvent) +{ + DBEvent *dbe = (DBEvent*)DBRead((DWORD)hEvent,sizeof(DBEvent),NULL); + if (dbe->signature = DBEVENT_SIGNATURE) + CryptoEngine->EncryptMem(DBRead((DWORD)hEvent + offsetof(DBEvent,blob), dbe->cbBlob, NULL), dbe->cbBlob, key); +} + +void CDbxMmapSA::DecodeEvent(HANDLE hEvent) +{ + DBEvent *dbe = (DBEvent*)DBRead((DWORD)hEvent,sizeof(DBEvent),NULL); + if (dbe->signature = DBEVENT_SIGNATURE) + CryptoEngine->DecryptMem(DBRead((DWORD)hEvent + offsetof(DBEvent,blob), dbe->cbBlob, NULL), dbe->cbBlob, key); +} + +void CDbxMmapSA::EncodeContactEvents(HANDLE hContact) +{ + HANDLE hEvent = FindFirstEvent(hContact); + while (hEvent != 0) { + EncodeEvent(hEvent); + hEvent = FindNextEvent(hEvent); + } +} + +void CDbxMmapSA::DecodeContactEvents(HANDLE hContact) +{ + HANDLE hEvent = FindFirstEvent(hContact); + while (hEvent != 0) { + DecodeEvent(hEvent); + hEvent = FindNextEvent(hEvent); + } +} + +int CDbxMmapSA::WorkInitialCheckHeaders(void) +{ + if (m_bEncoding) { + cb->pfnAddLogMessage(STATUS_SUCCESS,TranslateT("Database is Secured MMAP database")); + + TCHAR* p = _tcsrchr(m_tszProfileName, '\\'); + if (!p) + return ERROR_BAD_FORMAT; + + if (!CheckPassword( LOWORD(m_dbHeader.version), p+1)) { + cb->pfnAddLogMessage(STATUS_FATAL,TranslateT("You are not authorized for access to Database")); + return ERROR_BAD_FORMAT; + } + + cb->pfnAddLogMessage(STATUS_SUCCESS,TranslateT("Secured MMAP: authorization successful")); + } + + if ( LOWORD(m_dbHeader.version) != 0x0700 && !m_bEncoding) { + cb->pfnAddLogMessage(STATUS_FATAL,TranslateT("Database is marked as belonging to an unknown version of Miranda")); + return ERROR_BAD_FORMAT; + } + + return ERROR_SUCCESS; +} diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.h b/plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.h new file mode 100644 index 0000000000..2358d55d69 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/dbintf_sa.h @@ -0,0 +1,76 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright 2012-13 Miranda NG project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include + +#include "..\Db3x_mmap\src\dbintf.h" + +struct CDbxMmapSA : public CDb3Mmap +{ + CDbxMmapSA(const TCHAR* tszFileName); + + int CheckPassword(WORD checkWord, TCHAR *szDBName); + int CheckDbHeaders(void); + + void ChangePwd(); + void EncryptDB(); + void DecryptDB(); + void RecryptDB(); + + int Load(bool bSkipInit); + + bool m_bEncoding, bEncProcess; + +protected: + virtual void EncodeCopyMemory(void *dst, void *src, size_t size); + virtual void DecodeCopyMemory(void *dst, void *src, size_t size); + virtual void EncodeDBWrite(DWORD ofs, void *src, int size); + virtual void DecodeDBWrite(DWORD ofs, void *src, int size); + + virtual int WorkInitialCheckHeaders(void); + +protected: + int CheckProto(HANDLE hContact, const char *proto); + + void EncoderInit(); + void EncodeContactEvents(HANDLE hContact); + void EncodeEvent(HANDLE hEvent); + void DecodeEvent(HANDLE hEvent); + void DecodeContactEvents(HANDLE hContact); + + void DecodeContactSettings(HANDLE hContact); + void EncodeContactSettings(HANDLE hContact); + + void WritePlainHeader(); + void WriteCryptHeader(); + + void EncodeAll(); + void DecodeAll(); + +public: + char encryptKey[255]; + size_t encryptKeyLength; + +private: + void InitDialogs(void); +}; diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/dialogs.cpp b/plugins/!Deprecated/Dbx_mmap_SA/src/dialogs.cpp new file mode 100644 index 0000000000..1b395658a2 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/dialogs.cpp @@ -0,0 +1,526 @@ +#include "commonheaders.h" +#include +#include +#include +#include + +#define MS_DB_CHANGEPASSWORD "DB/ChangePassword" + +extern LIST arCryptors; + +HGENMENU hSetPwdMenu; + +BOOL ShowDlgItem(HWND hwndDlg, int iIDCtrl, BOOL bShow) +{ + HWND hwndCtrl = GetDlgItem(hwndDlg, iIDCtrl); + if (!hwndCtrl) return FALSE; + + // Avoid flickering + if (bShow && IsWindowVisible(hwndCtrl)) + return TRUE; + + return ShowWindow(hwndCtrl, (bShow ? SW_SHOW : SW_HIDE)); +} + +BOOL EnableDlgItem(HWND hwndDlg, int iIDCtrl, BOOL bEnable) +{ + HWND hwndCtrl = GetDlgItem(hwndDlg, iIDCtrl); + if (!hwndCtrl) return FALSE; + + // Avoid flickering + if (IsWindowEnabled(hwndCtrl) == bEnable) + return (bEnable == FALSE); + + return EnableWindow(hwndCtrl, bEnable); +} + +BOOL IsDlgItemEnabled(HWND hwndDlg, int iIDCtrl) +{ + HWND hwndCtrl = GetDlgItem(hwndDlg, iIDCtrl); + if (!hwndCtrl) return FALSE; + return IsWindowEnabled(hwndCtrl); +} + +static int OptionsInit(void *obj, WPARAM wParam, LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = { sizeof(odp) }; + odp.position = -790000000; + odp.hInstance = g_hInst; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); + odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR; + odp.ptszTitle = LPGENT("Database Features"); + odp.ptszGroup = LPGENT("Database"); + odp.pfnDlgProc = DlgProcOptions; + odp.dwInitParam = (LPARAM)obj; + Options_AddPage(wParam, &odp); + return 0; +} + +INT_PTR ChangePassword(void* obj, LPARAM wParam, LPARAM lParam) +{ + CDbxMmapSA *p = (CDbxMmapSA*)obj; + + if (p->m_bEncoding) + p->ChangePwd(); + else + p->EncryptDB(); + + return 0; +} + +void xModifyMenu(HGENMENU hMenu,long flags,const TCHAR* name, HICON hIcon) +{ + CLISTMENUITEM mi = { sizeof(mi) }; + mi.flags = CMIM_FLAGS | CMIF_TCHAR; + mi.flags |= name ? CMIM_NAME : 0; + mi.flags |= hIcon ? CMIM_ICON : 0; + mi.flags |= flags; + mi.ptszName = (TCHAR*)name; + mi.hIcon = hIcon; + Menu_ModifyItem(hMenu, &mi); +} + +static IconItem iconList[] = +{ + { LPGEN("Database"), "database", IDI_ICON2 }, + { LPGEN("Change Password"), "password", IDI_ICON3 } +}; + +int InitMenus(void *obj, WPARAM, LPARAM) +{ + CDbxMmapSA *p = (CDbxMmapSA*)obj; + + HookEventObj(ME_OPT_INITIALISE, OptionsInit, obj); + + Icon_Register(g_hInst, LPGEN("Database"), iconList, SIZEOF(iconList)); + + // main menu item + CLISTMENUITEM mi = { sizeof(mi) }; + mi.flags = CMIM_ALL | CMIF_TCHAR; + mi.icolibItem = iconList[1].hIcolib; + mi.ptszName = (p->m_bEncoding) ? LPGENT("Change password") : LPGENT("Set password"); + mi.ptszPopupName = LPGENT("Database"); + mi.pszService = MS_DB_CHANGEPASSWORD; + mi.position = 500000000; + hSetPwdMenu = Menu_AddMainMenuItem(&mi); + return 0; +} + +void CDbxMmapSA::InitDialogs() +{ + HookEventObj(ME_SYSTEM_MODULESLOADED, InitMenus, this); + CreateServiceFunctionObj(MS_DB_CHANGEPASSWORD, ChangePassword, this); +} + +INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + HWND hwndList = GetDlgItem(hwndDlg, IDC_MODULES); + CDbxMmapSA *p_Db = (CDbxMmapSA*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + LVITEM item; + int i, iRow, iIndex; + NMLISTVIEW * hdr = (NMLISTVIEW *) lParam; + WORD uid; + + switch ( msg ) { + case WM_INITDIALOG: + TranslateDialogDefault( hwndDlg ); + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + p_Db = (CDbxMmapSA*)lParam; + { + HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 2, 0); + ImageList_AddIcon(hIml, LoadSkinnedIcon(SKINICON_OTHER_LOADED)); + ImageList_AddIcon(hIml, LoadSkinnedIcon(SKINICON_OTHER_NOTLOADED)); + ListView_SetImageList( hwndList, hIml, LVSIL_SMALL ); + + LVCOLUMN col; + col.pszText = NULL; + col.mask = LVCF_TEXT | LVCF_WIDTH; + col.fmt = LVCFMT_LEFT; + col.cx = 50; + ListView_InsertColumn(hwndList, 1, &col); + + col.pszText = TranslateT("Dll"); + col.mask = LVCF_TEXT | LVCF_WIDTH; + col.fmt = LVCFMT_LEFT; + col.cx = 1000; + ListView_InsertColumn(hwndList, 2, &col); + + col.pszText = TranslateT("Name"); + col.cx = 1000; + ListView_InsertColumn(hwndList, 3, &col); + + col.pszText = TranslateT("Version"); + col.cx = 1000; + ListView_InsertColumn(hwndList, 4, &col); + } + + ListView_SetExtendedListViewStyleEx(hwndList, 0, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES); + + uid = db_get_w(NULL, "SecureMMAP", "CryptoModule", 0); + + for (i = 0; i < arCryptors.getCount(); i++) { + TCHAR buf[100]; + + item.mask = LVIF_TEXT; + item.iItem = i; + item.iSubItem = 0; + item.pszText = NULL; + iRow = ListView_InsertItem(hwndList, &item); + + ListView_SetItemText(hwndList, iRow, 1, arCryptors[i]->dllname); + _tcsncpy(buf, _A2T(arCryptors[i]->cryptor->Name), SIZEOF(buf)); + ListView_SetItemText(hwndList, iRow, 2, buf); + mir_sntprintf(buf,SIZEOF(buf),_T("%d.%d.%d.%d"), HIBYTE(HIWORD(arCryptors[i]->cryptor->Version)), LOBYTE(HIWORD(arCryptors[i]->cryptor->Version)), HIBYTE(LOWORD(arCryptors[i]->cryptor->Version)), LOBYTE(LOWORD(arCryptors[i]->cryptor->Version))); + ListView_SetItemText(hwndList, iRow, 3, buf); + + if (uid == arCryptors[i]->cryptor->uid && p_Db->m_bEncoding) + ListView_SetCheckState(hwndList, i, 1); + + item.mask = LVIF_IMAGE; + item.iItem = iRow; + item.iSubItem = 0; + item.iImage = ( CryptoEngine == arCryptors[i]->cryptor && p_Db->m_bEncoding ) ? 0 : 1; + ListView_SetItem( hwndList, &item ); + } + + ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE); + ListView_SetColumnWidth(hwndList, 1, LVSCW_AUTOSIZE); + ListView_SetColumnWidth(hwndList, 2, LVSCW_AUTOSIZE); + ListView_SetColumnWidth(hwndList, 3, LVSCW_AUTOSIZE); + return TRUE; + + case WM_COMMAND: + if ( HIWORD(wParam) == STN_CLICKED ) { + switch (LOWORD(wParam)) { + case IDC_EMAIL: + case IDC_SITE: + { + char buf[512]; + char * p = &buf[7]; + lstrcpyA(buf,"mailto:"); + if ( GetWindowTextA(GetDlgItem(hwndDlg, LOWORD(wParam)), p, SIZEOF(buf) - 7)) { + CallService(MS_UTILS_OPENURL,0,(LPARAM) (LOWORD(wParam) == IDC_EMAIL ? buf : p)); + } + break; + } } } + break; + + case WM_NOTIFY: + if ( hdr && hdr->hdr.code == LVN_ITEMCHANGED && IsWindowVisible(hdr->hdr.hwndFrom) && hdr->iItem != (-1)) { + iIndex = hdr->iItem; + if (hdr->uNewState & 0x2000){ + for (i = 0; i < arCryptors.getCount(); i++) { + if (i != iIndex) ListView_SetCheckState(hwndList, i, 0); + } + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + if (hdr->uNewState & 0x1000){ + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + if (hdr->uNewState & LVIS_SELECTED){ + SetDlgItemTextA(hwndDlg, IDC_AUTHOR, arCryptors[iIndex]->cryptor->Author); + { + TCHAR* info_t = mir_a2t((char*)(arCryptors[iIndex]->cryptor->Info)); + SetDlgItemText(hwndDlg, IDC_INFO, TranslateTS(info_t)); + mir_free(info_t); + } + SetDlgItemTextA(hwndDlg, IDC_SITE, arCryptors[iIndex]->cryptor->Site); + SetDlgItemTextA(hwndDlg, IDC_EMAIL, arCryptors[iIndex]->cryptor->Email); + SetDlgItemTextA(hwndDlg, IDC_ENC, arCryptors[iIndex]->cryptor->Name); + SetDlgItemInt(hwndDlg, IDC_UID, arCryptors[iIndex]->cryptor->uid, 0); + } else { + SetDlgItemTextA(hwndDlg, IDC_AUTHOR, ""); + SetDlgItemTextA(hwndDlg, IDC_INFO, ""); + SetDlgItemTextA(hwndDlg, IDC_SITE, ""); + SetDlgItemTextA(hwndDlg, IDC_EMAIL, ""); + SetDlgItemTextA(hwndDlg, IDC_ENC, ""); + SetDlgItemTextA(hwndDlg, IDC_UID, ""); + } + + break; + } + if (((LPNMHDR)lParam)->code == PSN_APPLY ) { + int alg = -1; + for (i = 0; i < arCryptors.getCount(); i++) { + if (ListView_GetCheckState(hwndList, i)) { + alg = i; + break; + } + } + + if (alg > -1){ + if (!p_Db->m_bEncoding){ + db_set_w(NULL, "SecureMMAP", "CryptoModule", arCryptors[alg]->cryptor->uid); + p_Db->EncryptDB(); + } + else { + if (arCryptors[alg]->cryptor->uid != db_get_w(NULL, "SecureMMAP", "CryptoModule", -1)) { + db_set_w(NULL, "SecureMMAP", "CryptoModule", arCryptors[alg]->cryptor->uid); + p_Db->RecryptDB(); + } + } + } + else if (p_Db->m_bEncoding) + p_Db->DecryptDB(); + + uid = db_get_w(NULL, "SecureMMAP", "CryptoModule", 0); + + for (i = 0; i < arCryptors.getCount(); i++) { + if (uid == arCryptors[i]->cryptor->uid && p_Db->m_bEncoding) + ListView_SetCheckState(hwndList, i, 1); + + item.mask = LVIF_IMAGE; + item.iItem = i; + item.iSubItem = 0; + item.iImage = ( CryptoEngine == arCryptors[i]->cryptor && p_Db->m_bEncoding ) ? 0 : 1; + + ListView_SetItem( hwndList, &item ); + } + + return TRUE; + + } + break; + } + + return FALSE; +} + +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); + Lang[0] = toupper(Lang[0]); + Lang[1] = tolower(Lang[1]); + SetDlgItemTextA(hDlg, IDC_LANG, Lang); + } +} + +extern BOOL wrongPass; + +INT_PTR CALLBACK DlgStdInProc(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + TCHAR tszHeaderTxt[256]; + + switch(uMsg) { + case WM_INITDIALOG: + TranslateDialogDefault(hDlg); + { + HICON hIcon = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON2)); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_SETICON, ICON_SMALL, (LPARAM)hIcon); + + DlgStdInProcParam *param = (DlgStdInProcParam*)lParam; + SetWindowLongPtr(hDlg, GWLP_USERDATA, (LPARAM)param->p_Db); + + if (!wrongPass) { + mir_sntprintf(tszHeaderTxt, SIZEOF(tszHeaderTxt), _T("%s\n%s"), TranslateT("Please type in your password for"), param->pStr); + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), tszHeaderTxt); + } + else { + if (wrongPass > 2) { + HWND hwndCtrl = GetDlgItem(hDlg, IDC_USERPASS); + EnableWindow(hwndCtrl, FALSE); + hwndCtrl = GetDlgItem(hDlg, IDOK); + EnableWindow(hwndCtrl, FALSE); + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Too many errors!")); + } + else SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), 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: + switch( LOWORD(wParam)) { + case IDCANCEL: + EndDialog(hDlg,IDCANCEL); + break; + + case IDOK: + CDbxMmapSA *p_Db = (CDbxMmapSA*)GetWindowLongPtr(hDlg, GWLP_USERDATA); + p_Db->encryptKeyLength = GetDlgItemTextA(hDlg, IDC_USERPASS, p_Db->encryptKey, 254); + EndDialog(hDlg,IDOK); + } + break; + + case WM_TIMER: + LanguageChanged(hDlg); + return FALSE; + + case WM_DESTROY: + KillTimer(hDlg, 1); + DestroyIcon((HICON)SendMessage(hDlg, WM_GETICON, ICON_SMALL, 0)); + } + + return FALSE; +} + +INT_PTR CALLBACK DlgStdNewPass(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch(uMsg) { + case WM_INITDIALOG: + TranslateDialogDefault(hDlg); + SetWindowLongPtr(hDlg, GWLP_USERDATA, (LPARAM)lParam); + + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON2))); + + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Please enter your new password")); + + 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: + switch( LOWORD(wParam)) { + case IDCANCEL: + EndDialog(hDlg,IDCANCEL); + break; + + case IDOK: + CDbxMmapSA *p_Db = (CDbxMmapSA*)GetWindowLongPtr(hDlg, GWLP_USERDATA); + char pass1[255], pass2[255]; + if (GetDlgItemTextA(hDlg, IDC_USERPASS1, pass1, 254) < 3){ + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Password is too short!")); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_NCPAINT, 0, 0); + SetDlgItemTextA(hDlg,IDC_USERPASS1,""); + SetDlgItemTextA(hDlg,IDC_USERPASS2,""); + } + else { + GetDlgItemTextA(hDlg, IDC_USERPASS2, pass2, 254); + if (!strcmp(pass1, pass2)) { + p_Db->encryptKeyLength = strlen(pass1); + strcpy(p_Db->encryptKey, pass1); + EndDialog(hDlg,IDOK); + } + else { + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Passwords do not match!")); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_NCPAINT, 0, 0); + SetDlgItemTextA(hDlg,IDC_USERPASS1,""); + SetDlgItemTextA(hDlg,IDC_USERPASS2,""); + } + } + } + break; + + case WM_TIMER: + LanguageChanged(hDlg); + return FALSE; + + case WM_DESTROY: + KillTimer(hDlg, 1); + DestroyIcon((HICON)SendMessage(hDlg, WM_GETICON, ICON_SMALL, 0)); + return FALSE; + } + return FALSE; +} + +INT_PTR CALLBACK DlgChangePass(HWND hDlg, UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + static char* newPass; + CDbxMmapSA *p_Db = (CDbxMmapSA*)GetWindowLongPtr(hDlg, GWLP_USERDATA); + + switch(uMsg) { + case WM_INITDIALOG: + TranslateDialogDefault(hDlg); + + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_SETICON, 0, (LPARAM)LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON2))); + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Change password")); + { + DlgChangePassParam *param = (DlgChangePassParam*)lParam; + newPass = param->pszNewPass; + SetWindowLongPtr(hDlg, GWLP_USERDATA, (LPARAM)param->p_Db); + } + 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: + switch( LOWORD(wParam)) { + char pass1[255], pass2[255], oldpass[255]; + case IDOK: + GetDlgItemTextA(hDlg, IDC_OLDPASS, oldpass, 254); + if (strcmp(oldpass, p_Db->encryptKey)) { + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Wrong password!")); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_NCPAINT, 0, 0); + break; + } + + if (GetDlgItemTextA(hDlg, IDC_NEWPASS1, pass1, 254) < 3){ + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Password is too short!")); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_NCPAINT, 0, 0); + } + else { + GetDlgItemTextA(hDlg, IDC_NEWPASS2, pass2, 254); + if (!strcmp(pass1, pass2)) { + strcpy(newPass, pass1); + EndDialog(hDlg,IDOK); + } + else { + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Passwords do not match!")); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_NCPAINT, 0, 0); + } + } + break; + + case IDCANCEL: + EndDialog(hDlg,IDCANCEL); + break; + + case IDREMOVE: + GetDlgItemTextA(hDlg, IDC_OLDPASS, oldpass, 254); + if (strcmp(oldpass, p_Db->encryptKey)) { + SetWindowText(GetDlgItem(hDlg, IDC_HEADERBAR), TranslateT("Wrong password!")); + SendMessage(GetDlgItem(hDlg, IDC_HEADERBAR), WM_NCPAINT, 0, 0); + break; + } + EndDialog(hDlg, IDREMOVE); + } + break; + + case WM_TIMER: + LanguageChanged(hDlg); + return FALSE; + + case WM_DESTROY: + KillTimer(hDlg, 1); + DestroyIcon((HICON)SendMessage(hDlg, WM_GETICON, ICON_SMALL, 0)); + return FALSE; + } + return FALSE; +} diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/init.cpp b/plugins/!Deprecated/Dbx_mmap_SA/src/init.cpp new file mode 100644 index 0000000000..6b673fde1f --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/init.cpp @@ -0,0 +1,152 @@ +/* + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright 2000-2003 Miranda ICQ/IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "commonheaders.h" + +void InitSecurity(void); +void UnloadSecurity(void); + +int hLangpack; + +HINSTANCE g_hInst = NULL; + +PLUGININFOEX pluginInfo = { + sizeof(PLUGININFOEX), + __PLUGIN_NAME, + PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), + __DESCRIPTION, + __AUTHOR, + __AUTHOREMAIL, + __COPYRIGHT, + __AUTHORWEB, + UNICODE_AWARE | STATIC_PLUGIN, + // {28FF9B91-3E4D-4F1C-B47C-C641B037FF40} + {0x28ff9b91, 0x3e4d, 0x4f1c, {0xb4, 0x7c, 0xc6, 0x41, 0xb0, 0x37, 0xff, 0x40}} +}; + +LIST g_Dbs(1, HandleKeySortT); + +///////////////////////////////////////////////////////////////////////////////////////// + +// returns 0 if the profile is created, EMKPRF* +static int makeDatabase(const TCHAR *profile) +{ + std::auto_ptr db( new CDbxMmapSA(profile)); + if (db->Create() == ERROR_SUCCESS) { + db->CreateDbHeaders(dbSignatureNonSecured); + return 0; + } + + return EMKPRF_CREATEFAILED; +} + +// returns 0 if the given profile has a valid header +static int grokHeader(const TCHAR *profile) +{ + std::auto_ptr db( new CDbxMmapSA(profile)); + if (db->Load(true) != ERROR_SUCCESS) + return EGROKPRF_CANTREAD; + + return db->CheckDbHeaders(); +} + +// returns 0 if all the APIs are injected otherwise, 1 +static MIDatabase* LoadDatabase(const TCHAR *profile) +{ + // set the memory, lists & UTF8 manager + mir_getLP( &pluginInfo ); + + std::auto_ptr db( new CDbxMmapSA(profile)); + if (db->Load(false) != ERROR_SUCCESS) + return NULL; + + g_Dbs.insert(db.get()); + return db.release(); +} + +static int UnloadDatabase(MIDatabase* db) +{ + g_Dbs.remove((CDbxMmapSA*)db); + delete (CDbxMmapSA*)db; + return 0; +} + +MIDatabaseChecker* CheckDb(const TCHAR* profile, int *error) +{ + std::auto_ptr db( new CDbxMmapSA(profile)); + if (db->Load(true) != ERROR_SUCCESS) { + *error = EGROKPRF_CANTREAD; + return NULL; + } + + int chk = db->CheckDbHeaders(); + if (chk != ERROR_SUCCESS) { + *error = chk; + return NULL; + } + + *error = 0; + return db.release(); +} + +static DATABASELINK dblink = +{ + sizeof(DATABASELINK), + "dbx_mmap_sa", + _T("dbx secure mmap driver"), + makeDatabase, + grokHeader, + LoadDatabase, + UnloadDatabase, + CheckDb +}; + +///////////////////////////////////////////////////////////////////////////////////////// + +extern "C" __declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_DATABASE, MIID_LAST}; + +extern "C" __declspec(dllexport) int Load(void) +{ + InitSecurity(); + + RegisterDatabasePlugin(&dblink); + return 0; +} + +extern "C" __declspec(dllexport) int Unload(void) +{ + g_Dbs.destroy(); + UnloadSecurity(); + return 0; +} + +BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD dwReason, LPVOID reserved) +{ + g_hInst = hInstDLL; + return TRUE; +} diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/options.h b/plugins/!Deprecated/Dbx_mmap_SA/src/options.h new file mode 100644 index 0000000000..efabf3eba5 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/options.h @@ -0,0 +1,38 @@ +/* + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright 2000-2003 Miranda ICQ/IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include "resource.h" + +typedef enum { BT_DISABLED = 0, BT_START = 1, BT_EXIT = 2, BT_PERIODIC = 4} BackupType; +typedef enum { PT_DAYS, PT_HOURS, PT_MINUTES} PeriodType; + +typedef struct Options_tag { + int backup_types; + unsigned int period; + PeriodType period_type; + char folder[MAX_PATH]; + unsigned int num_backups; + BOOL disable_progress; +} Options; \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/resource.h b/plugins/!Deprecated/Dbx_mmap_SA/src/resource.h new file mode 100644 index 0000000000..7b13f6957d --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/resource.h @@ -0,0 +1,54 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by db3x_mmap.rc +// +#define IDC_NOTOALL 3 +#define IDREMOVE 3 +#define IDD_OPTIONS 101 +#define IDD_INSTALLINI 235 +#define IDD_WARNINICHANGE 236 +#define IDD_INIIMPORTDONE 237 +#define IDD_LOGIN 269 +#define IDD_NEWPASS 270 +#define IDI_ICON2 271 +#define IDI_ICON3 272 +#define IDC_LANG 274 +#define IDD_CHANGEPASS 275 +#define IDC_ININAME 1333 +#define IDC_VIEWINI 1334 +#define IDC_SECURITYINFO 1335 +#define IDC_SETTINGNAME 1336 +#define IDC_NEWVALUE 1337 +#define IDC_WARNNOMORE 1338 +#define IDC_DELETE 1339 +#define IDC_RECYCLE 1340 +#define IDC_NEWNAME 1341 +#define IDC_MOVE 1342 +#define IDC_LEAVE 1343 +#define IDC_HEADERBAR 1657 +#define IDC_USERPASS 1658 +#define IDC_ENC 1659 +#define IDC_USERPASS1 1659 +#define IDC_OLDPASS 1660 +#define IDC_USERPASS2 1661 +#define IDC_NEWPASSINFO 1679 +#define IDC_MODULES 1680 +#define IDC_NEWPASSINFO2 1680 +#define IDC_INFO 1682 +#define IDC_AUTHOR 1683 +#define IDC_NEWPASS1 1683 +#define IDC_SITE 1684 +#define IDC_NEWPASS2 1684 +#define IDC_EMAIL 1685 +#define IDC_UID 1686 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 276 +#define _APS_NEXT_COMMAND_VALUE 40018 +#define _APS_NEXT_CONTROL_VALUE 1685 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/security.cpp b/plugins/!Deprecated/Dbx_mmap_SA/src/security.cpp new file mode 100644 index 0000000000..6d41787d24 --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/security.cpp @@ -0,0 +1,358 @@ +// (C) Artem Shpynov aka FYR and Igonin Vitaliy aka chaos.persei, 2007 - 2008 + +#include "commonheaders.h" + +int wrongPass = 0; +void* key; + +Cryptor* CryptoEngine = NULL; + +LIST arCryptors(1); + +void zero_fill(BYTE * pBuf, size_t bufSize) +{ + size_t i; + for (i = 0; i < bufSize; i++) + pBuf[i] = 0; +} + +void InitSecurity() +{ + Cryptor* (__stdcall *GetCryptor)(); + + TCHAR tszPath[MAX_PATH]; + GetModuleFileName(g_hInst, tszPath, SIZEOF(tszPath)); + TCHAR *p = _tcsrchr(tszPath, '\\')+1; _tcscpy(p, _T("cryptors\\*.dll")); + + WIN32_FIND_DATA fd; + HANDLE hFile = FindFirstFile(tszPath, &fd); + while (hFile != INVALID_HANDLE_VALUE) { + mir_sntprintf(p, MAX_PATH - (p-tszPath), _T("cryptors\\%s"), fd.cFileName); + HMODULE hLib = LoadLibrary(tszPath); + if (hLib){ + GetCryptor = (Cryptor* (__stdcall *)()) GetProcAddress(hLib, "GetCryptor"); + if (GetCryptor){ + CryptoModule* newItem = (CryptoModule*) malloc(sizeof(CryptoModule)); + newItem->cryptor = GetCryptor(); + _tcsncpy(newItem->dllname, fd.cFileName, MAX_PATH); + newItem->hLib = hLib; + arCryptors.insert(newItem); + } + else FreeLibrary(hLib); + } + if (!FindNextFile(hFile, &fd)) + break; + } +} + +void UnloadSecurity() +{ + if (CryptoEngine) + CryptoEngine->FreeKey(key); + + for (int i = 0; i < arCryptors.getCount(); i++) { + FreeLibrary(arCryptors[i]->hLib); + free(arCryptors[i]); + } + arCryptors.destroy(); +} + +void CDbxMmapSA::EncoderInit() +{ + if (!m_bEncoding) return; + + encryptKey[encryptKeyLength] = 0; + key = CryptoEngine->GenerateKey(encryptKey); +} + +void CDbxMmapSA::EncodeCopyMemory(void * dst, void * src, size_t size ) +{ + memcpy(dst, src, size); + + if (m_bEncoding) + CryptoEngine->EncryptMem((BYTE *)dst, (int)size, key); +} + +void CDbxMmapSA::DecodeCopyMemory(void * dst, void * src, size_t size ) +{ + memcpy(dst, src, size); + + if (m_bEncoding) + CryptoEngine->DecryptMem((BYTE *)dst, (int)size, key); +} + +void CDbxMmapSA::EncodeDBWrite(DWORD ofs, void *src, int size) +{ + if (m_bEncoding) { + BYTE *buf = (BYTE*)GlobalAlloc(GPTR, sizeof(BYTE)*size); + EncodeCopyMemory(buf, src, size); + DBWrite(ofs, buf, (int)size); + GlobalFree(buf); + } + else DBWrite(ofs, src, (int)size); +} + +void CDbxMmapSA::DecodeDBWrite(DWORD ofs, void *src, int size) +{ + if (m_bEncoding) { + BYTE *buf = (BYTE*)GlobalAlloc(GPTR, sizeof(BYTE)*size); + DecodeCopyMemory(buf, src, size); + DBWrite(ofs, buf, (int)size); + GlobalFree(buf); + } + else DBWrite(ofs, src, (int)size); +} + +int bCheckingPass = 0; + +int CDbxMmapSA::CheckPassword(WORD checkWord, TCHAR *szDBName) +{ + if (bCheckingPass) + return 0; + + bCheckingPass = 1; + + int Found = 0; + for (int i = 0; i < arCryptors.getCount(); i++) { + if ( HIWORD(m_dbHeader.version) == arCryptors[i]->cryptor->uid){ + CryptoEngine = arCryptors[i]->cryptor; + Found = 1; + break; + } + } + if (!Found){ + MessageBox(0, TranslateT("Sorry, but your database encrypted with unknown module"), TranslateT("Error"), MB_OK | MB_ICONERROR); + bCheckingPass = 0; + return 0; + } + + while(1) { + DlgStdInProcParam param = { this, szDBName }; + int res = DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_LOGIN), NULL, DlgStdInProc, (LPARAM)¶m); + if (res == IDCANCEL) { + wrongPass = 0; + bCheckingPass = 0; + return 0; + } + if (encryptKeyLength < 1) + continue; + + EncoderInit(); + + WORD ver; + DecodeCopyMemory(&ver, &checkWord, sizeof(checkWord)); + if (ver == 0x5195) { + wrongPass = 0; + bCheckingPass = 0; + return 1; + } + wrongPass++; + } + + bCheckingPass = 0; +} + +int SelectEncoder() +{ + if (arCryptors.getCount() == 0){ + MessageBox(0, TranslateT("Crypto modules not found"), TranslateT("Error"), MB_OK | MB_ICONERROR); + return 1; + } + + WORD uid = db_get_w(NULL, "SecureMMAP", "CryptoModule", 0); + if (uid != 0) { + for (int i = 0; i < arCryptors.getCount(); i++) { + if (arCryptors[i]->cryptor->uid == uid) { + CryptoEngine = arCryptors[i]->cryptor; + return 0; + } + } + } + + db_set_w(NULL, "SecureMMAP", "CryptoModule", arCryptors[0]->cryptor->uid); + CryptoEngine = arCryptors[0]->cryptor; + return 0; +} + +void CDbxMmapSA::EncodeAll() +{ + for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { + EncodeContactEvents(hContact); + EncodeContactSettings(hContact); + } + + EncodeContactEvents(NULL); + EncodeContactSettings(NULL); +} + +void CDbxMmapSA::DecodeAll() +{ + for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { + DecodeContactEvents(hContact); + DecodeContactSettings(hContact); + } + DecodeContactEvents(NULL); + DecodeContactSettings(NULL); +} + +void CDbxMmapSA::WritePlainHeader() +{ + DWORD bytesWritten; + + memcpy(m_dbHeader.signature, &dbSignatureNonSecured, sizeof(m_dbHeader.signature)); + SetFilePointer(m_hDbFile,0,NULL,FILE_BEGIN); + WriteFile(m_hDbFile,m_dbHeader.signature,sizeof(m_dbHeader.signature),&bytesWritten,NULL); + + m_dbHeader.version = MAKELONG(0x0700, 0x0000); //no encryption + WriteFile(m_hDbFile,&m_dbHeader.version, sizeof(m_dbHeader.version),&bytesWritten,NULL); +} + +void CDbxMmapSA::WriteCryptHeader() +{ + DWORD bytesWritten; + + memcpy(m_dbHeader.signature, &dbSignatureSecured, sizeof(m_dbHeader.signature)); + SetFilePointer(m_hDbFile,0,NULL,FILE_BEGIN); + WriteFile(m_hDbFile,m_dbHeader.signature,sizeof(m_dbHeader.signature),&bytesWritten,NULL); + + WORD checkWord = 0x5195, cryptWord; + EncodeCopyMemory(&cryptWord, &checkWord, sizeof(checkWord)); + m_dbHeader.version = MAKELONG(cryptWord, CryptoEngine->uid); + WriteFile(m_hDbFile,&m_dbHeader.version, sizeof(m_dbHeader.version),&bytesWritten,NULL); +} + +void CDbxMmapSA::EncryptDB() +{ + int action = 0; + if (bEncProcess) + return; + + if (memcmp(m_dbHeader.signature, &dbSignatureSecured, sizeof(m_dbHeader.signature)) == 0){ + MessageBox(0, TranslateT("DB is already secured!"), TranslateT("Error"), MB_OK | MB_ICONERROR); + return; + } + + if (SelectEncoder()) + return; + + bEncProcess = 1; + + action = DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_NEWPASS), NULL, DlgStdNewPass, (LPARAM)this); + if (action != IDOK || !strlen(encryptKey)) { + bEncProcess = 0; + db_set_b(NULL, "SecureMMAP", "CryptoModule", 0); + return; + } + + EnterCriticalSection(&m_csDbAccess); + + m_bEncoding = 1; + EncoderInit(); + + EncodeAll(); + + LeaveCriticalSection(&m_csDbAccess); + + WriteCryptHeader(); + + xModifyMenu(hSetPwdMenu, 0, LPGENT("Change Password"), 0); + + bEncProcess = 0; +} + +void CDbxMmapSA::DecryptDB() +{ + char oldKey[255]; + strcpy(oldKey, encryptKey); + + if ( !CheckPassword( LOWORD(m_dbHeader.version), TranslateT("current database"))) { + strcpy(encryptKey, oldKey); + encryptKeyLength = strlen(oldKey); + return; + } + + WritePlainHeader(); + + EnterCriticalSection(&m_csDbAccess); + DecodeAll(); + LeaveCriticalSection(&m_csDbAccess); + + m_bEncoding = 0; + + zero_fill((BYTE *)encryptKey, sizeof encryptKey); + + xModifyMenu(hSetPwdMenu, 0, LPGENT("Set Password"), 0); + + db_set_w(NULL, "SecureMMAP", "CryptoModule", 0); + + CryptoEngine->FreeKey(key); + + CryptoEngine = NULL; +} + +void CDbxMmapSA::RecryptDB() +{ + EnterCriticalSection(&m_csDbAccess); + + DecodeAll(); + + CryptoEngine->FreeKey(key); + + SelectEncoder(); + + m_bEncoding = 1; + + EncoderInit(); + + EncodeAll(); + + WriteCryptHeader(); + + LeaveCriticalSection(&m_csDbAccess); +} + +void CDbxMmapSA::ChangePwd() +{ + char newpass[255] = {0}; + + DlgChangePassParam param = { this, newpass }; + int action = DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_CHANGEPASS), NULL, DlgChangePass, (LPARAM)¶m); + + if (action == IDCANCEL || (action == IDOK && !strlen(newpass))) + return; + + EnterCriticalSection(&m_csDbAccess); + + DecodeAll(); + + CryptoEngine->FreeKey(key); + + if (action == IDREMOVE){ + WritePlainHeader(); + + m_bEncoding = 0; + CryptoEngine = NULL; + db_set_w(NULL, "SecureMMAP", "CryptoModule", 0); + + zero_fill((BYTE *)encryptKey, sizeof encryptKey); + + xModifyMenu(hSetPwdMenu, 0, LPGENT("Set Password"), 0); + } + + if (action == IDOK){ + strcpy(encryptKey, newpass); + encryptKeyLength = strlen(newpass); + + m_bEncoding = 1; + + EncoderInit(); + + EncodeAll(); + + WriteCryptHeader(); + } + + zero_fill((BYTE *)newpass, sizeof newpass); + + LeaveCriticalSection(&m_csDbAccess); +} diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/stdafx.cpp b/plugins/!Deprecated/Dbx_mmap_SA/src/stdafx.cpp new file mode 100644 index 0000000000..e7e41dae3c --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/stdafx.cpp @@ -0,0 +1,18 @@ +/* +Copyright (C) 2012-13 Miranda NG Project (http://miranda-ng.org) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "commonheaders.h" \ No newline at end of file diff --git a/plugins/!Deprecated/Dbx_mmap_SA/src/version.h b/plugins/!Deprecated/Dbx_mmap_SA/src/version.h new file mode 100644 index 0000000000..c77ad2d7ed --- /dev/null +++ b/plugins/!Deprecated/Dbx_mmap_SA/src/version.h @@ -0,0 +1,14 @@ +#define __MAJOR_VERSION 0 +#define __MINOR_VERSION 7 +#define __RELEASE_NUM 5 +#define __BUILD_NUM 4 + +#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM + +#define __PLUGIN_NAME "Miranda NG mmap secure database driver" +#define __FILENAME "Dbx_mmap_SA.dll" +#define __DESCRIPTION "Provides Miranda database support: global settings, contacts, history, settings per contact. Enhanced modification with Encryption support." +#define __AUTHOR "Miranda-IM project, modification by FYR and chaos.persei, nullbie, Billy_Bons" +#define __AUTHOREMAIL "chaos.persei@gmail.com; ashpynov@gmail.com; bio@msx.ru; ghazan@miranda.im" +#define __AUTHORWEB "http://miranda-ng.org/p/Dbx_mmap_SA/" +#define __COPYRIGHT "© 2000-2011 Miranda IM project, 2012 Miranda NG project FYR, chaos.persei, induction, nullbie" -- cgit v1.2.3