From 526ef595969bc48746c7e3c80694cfe7993b97b0 Mon Sep 17 00:00:00 2001 From: ElenaSubbotina Date: Mon, 18 Jul 2016 18:53:11 +0300 Subject: [PATCH] ECMACrypt .. --- .gitignore | 4 + ASCOfficeDocxFile2/X2tConverter_win_test.sln | 69 ++- ASCOfficePPTXFile/PPTXLib/PPTXFormat.vcproj | 1 + OfficeCryptReader/source/ECMACryptReader.cpp | 30 +- OfficeCryptReader/source/ECMACryptReader.h | 28 +- .../win32/ECMACryptReader.vcproj | 2 +- OfficeCryptTransform/CryptTransform.h | 2 +- X2tConverter/src/ASCConverters.cpp | 8 +- X2tConverter/test/win32Test/X2tTest.vcproj | 507 ++++++++++++++++++ 9 files changed, 590 insertions(+), 61 deletions(-) create mode 100644 X2tConverter/test/win32Test/X2tTest.vcproj diff --git a/.gitignore b/.gitignore index 7ada628e74..d0d1852fc3 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,7 @@ ASCOfficeXlsFile2/win32/_ASCOfficeXlsFile2_i.c ASCOfficeXlsFile2/win32/_ASCOfficeXlsFile2_p.c ASCOfficeXlsFile2/win32/dlldata.c OfficeUtils/win32/OfficeUtilsLib/OfficeUtilsLib/ReadMe.txt +*.obj +*.pdb +*.tlb +*.idb diff --git a/ASCOfficeDocxFile2/X2tConverter_win_test.sln b/ASCOfficeDocxFile2/X2tConverter_win_test.sln index 74c8d76d11..534cc074ac 100644 --- a/ASCOfficeDocxFile2/X2tConverter_win_test.sln +++ b/ASCOfficeDocxFile2/X2tConverter_win_test.sln @@ -16,13 +16,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "graphics", "..\DesktopEdito EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cximage", "..\DesktopEditor\cximage\CxImage\cximage_vs2005.vcproj", "{BC52A07C-A797-423D-8C4F-8678805BBB36}" ProjectSection(ProjectDependencies) = postProject - {43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7} - {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} - {0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3} - {40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E} - {9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E} - {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} {818753F2-DBB9-4D3B-898A-A604309BE470} = {818753F2-DBB9-4D3B-898A-A604309BE470} + {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} = {FFDA5DA1-BB65-4695-B678-BE59B4A1355D} + {9A037A69-D1DF-4505-AB2A-6CB3641C476E} = {9A037A69-D1DF-4505-AB2A-6CB3641C476E} + {40A69F40-063E-43FD-8543-455495D8733E} = {40A69F40-063E-43FD-8543-455495D8733E} + {0588563C-F05C-428C-B21A-DD74756628B3} = {0588563C-F05C-428C-B21A-DD74756628B3} + {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} + {43A0E60E-5C4A-4C09-A29B-7683F503BBD7} = {43A0E60E-5C4A-4C09-A29B-7683F503BBD7} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jasper", "..\DesktopEditor\cximage\jasper\jasper_vs2005.vcproj", "{FFDA5DA1-BB65-4695-B678-BE59B4A1355D}" @@ -63,28 +63,29 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "X2tTest", "..\X2tConverter\test\win32Test\X2tTest.vcproj", "{355A22F4-1394-4B82-B2F1-FF0ECFB9E3EF}" ProjectSection(ProjectDependencies) = postProject {C5371405-338F-4B70-83BD-2A5CDF64F383} = {C5371405-338F-4B70-83BD-2A5CDF64F383} - {41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1} - {BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36} - {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} - {F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363} - {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} - {BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E} - {94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A} - {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} - {50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429} - {609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812} - {21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0} - {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} - {C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56} - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} - {AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345} - {36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302} - {A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0} - {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} - {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} - {7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15} - {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C} = {C27E9A9F-3A17-4482-9C5F-BF15C01E747C} {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} = {77DDC8D7-5B12-4FF2-9629-26AEBCA8436D} + {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} = {CBEDD0D1-10A8-45C1-AF81-8492F40964CA} + {7B27E40E-F70A-4A74-A77C-0944D7931D15} = {7B27E40E-F70A-4A74-A77C-0944D7931D15} + {DF861D33-9BC1-418C-82B1-581F590FE169} = {DF861D33-9BC1-418C-82B1-581F590FE169} + {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} = {37CA072A-5BDE-498B-B3A7-5E404F5F9BF2} + {A100103A-353E-45E8-A9B8-90B87CC5C0B0} = {A100103A-353E-45E8-A9B8-90B87CC5C0B0} + {36636678-AE25-4BE6-9A34-2561D1BCF302} = {36636678-AE25-4BE6-9A34-2561D1BCF302} + {AF2D00A7-A351-4700-AE88-C1D9ADE29345} = {AF2D00A7-A351-4700-AE88-C1D9ADE29345} + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} + {C739151F-5384-41DF-A1A6-F089E2C1AD56} = {C739151F-5384-41DF-A1A6-F089E2C1AD56} + {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} = {DACBE6CA-E089-47D1-8CE7-C7DB59C15417} + {21663823-DE45-479B-91D0-B4FEF4916EF0} = {21663823-DE45-479B-91D0-B4FEF4916EF0} + {609ED938-3CA8-4BED-B363-25096D4C4812} = {609ED938-3CA8-4BED-B363-25096D4C4812} + {50E20601-4A8D-4AFB-8870-63828D328429} = {50E20601-4A8D-4AFB-8870-63828D328429} + {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} = {E5A67556-44DA-4481-8F87-0A3AEDBD20DD} + {94954A67-A853-43B1-A727-6EF2774C5A6A} = {94954A67-A853-43B1-A727-6EF2774C5A6A} + {BEE01B53-244A-44E6-8947-ED9342D9247E} = {BEE01B53-244A-44E6-8947-ED9342D9247E} + {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} = {9CAA294E-58C3-4CEB-ABA0-CB9786CA5540} + {F8274B05-168E-4D6E-B843-AA7510725363} = {F8274B05-168E-4D6E-B843-AA7510725363} + {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} = {617F9069-5E37-4B80-9A3A-E77AFC4CC7AD} + {BC52A07C-A797-423D-8C4F-8678805BBB36} = {BC52A07C-A797-423D-8C4F-8678805BBB36} + {41BED424-4EAF-4053-8A5F-1E2A387D53D1} = {41BED424-4EAF-4053-8A5F-1E2A387D53D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XlsFormat", "..\ASCOfficeXlsFile2\source\win32\XlsFormat.vcproj", "{77DDC8D7-5B12-4FF2-9629-26AEBCA8436D}" @@ -103,6 +104,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OdfFormatWriterLib", "..\AS EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Oox2OdfConverter", "..\ASCOfficeOdfFileW\source\win32\Oox2OdfConverter.vcproj", "{BEE01B53-244A-44E6-8947-ED9342D9247E}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ECMACryptReader", "..\OfficeCryptReader\win32\ECMACryptReader.vcproj", "{C27E9A9F-3A17-4482-9C5F-BF15C01E747C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -532,6 +535,18 @@ Global {BEE01B53-244A-44E6-8947-ED9342D9247E}.ReleaseOpenSource|Win32.ActiveCfg = Release|x64 {BEE01B53-244A-44E6-8947-ED9342D9247E}.ReleaseOpenSource|x64.ActiveCfg = Release|x64 {BEE01B53-244A-44E6-8947-ED9342D9247E}.ReleaseOpenSource|x64.Build.0 = Release|x64 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|Win32.ActiveCfg = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|Win32.Build.0 = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Debug|x64.ActiveCfg = Debug|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Release|Win32.ActiveCfg = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Release|Win32.Build.0 = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.Release|x64.ActiveCfg = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseASC|Win32.ActiveCfg = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseASC|Win32.Build.0 = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseASC|x64.ActiveCfg = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseOpenSource|Win32.ActiveCfg = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseOpenSource|Win32.Build.0 = Release|Win32 + {C27E9A9F-3A17-4482-9C5F-BF15C01E747C}.ReleaseOpenSource|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ASCOfficePPTXFile/PPTXLib/PPTXFormat.vcproj b/ASCOfficePPTXFile/PPTXLib/PPTXFormat.vcproj index 58d6853e8c..668650104f 100644 --- a/ASCOfficePPTXFile/PPTXLib/PPTXFormat.vcproj +++ b/ASCOfficePPTXFile/PPTXLib/PPTXFormat.vcproj @@ -491,6 +491,7 @@ > diff --git a/OfficeCryptReader/source/ECMACryptReader.cpp b/OfficeCryptReader/source/ECMACryptReader.cpp index 2c412b4c77..ce189556c1 100644 --- a/OfficeCryptReader/source/ECMACryptReader.cpp +++ b/OfficeCryptReader/source/ECMACryptReader.cpp @@ -34,7 +34,7 @@ #include "../../Common/3dParty/pole/pole.h" #include "../../Common/DocxFormat/Source/Base/Types_32.h" -#include "../../DesktopEditor/xml/include/xmlutils.h" +#include "../../Common/DocxFormat/Source/XML/xmlutils.h" #include "../../OfficeCryptTransform/CryptTransform.h" @@ -86,7 +86,7 @@ std::wstring ReadUnicodeLP(POLE::Stream *pStream) return res; } -void ReadMapEntry(POLE::Stream *pStream, CryptReader::_mapEntry & m) +void ReadMapEntry(POLE::Stream *pStream, ECMACryptReader::_mapEntry & m) { if (!pStream) return; @@ -98,7 +98,7 @@ void ReadMapEntry(POLE::Stream *pStream, CryptReader::_mapEntry & m) for (int i = 0 ; i < refCount; i++) { - CryptReader::_refComponent r; + ECMACryptReader::_refComponent r; pStream->read((unsigned char*)&r.type, 4); r.ref = ReadUnicodeLP(pStream); @@ -107,7 +107,7 @@ void ReadMapEntry(POLE::Stream *pStream, CryptReader::_mapEntry & m) m.dataSpaceName= ReadUnicodeLP(pStream); } //-------------------------------------------------------------- -bool CryptReader::DecryptFile(std::wstring file_name, std::wstring folder_out, std::wstring password) +bool ECMACryptReader::DecryptOfficeFile(std::wstring file_name, std::wstring folder_out, std::wstring password) { POLE::Storage *pStorage = new POLE::Storage(file_name.c_str()); @@ -147,15 +147,16 @@ bool CryptReader::DecryptFile(std::wstring file_name, std::wstring folder_out, s return false; } } - Decryptor decryptor(1); - decryptor.SetCryptData(keyData.saltValue, keyData.encryptedVerifierHashInput, keyData.encryptedVerifierHashValue); + //Decryptor decryptor(1); - if (!decryptor.SetPassword(password)) - { - delete pStorage; - return false; - } + //decryptor.SetCryptData(keyData.saltValue, keyData.encryptedVerifierHashInput, keyData.encryptedVerifierHashValue); + + //if (!decryptor.SetPassword(password)) + //{ + // delete pStorage; + // return false; + //} //pStream = new POLE::Stream(pStorage, "DataSpaces/DataSpaceMap"); // савершенно ненужная инфа //if (pStream) @@ -186,6 +187,7 @@ bool CryptReader::DecryptFile(std::wstring file_name, std::wstring folder_out, s while (true) { + break; } delete pStream; @@ -198,9 +200,9 @@ bool CryptReader::DecryptFile(std::wstring file_name, std::wstring folder_out, s return result; } -bool CryptReader::ReadEncryptionInfo(std::string & xml_string) +bool ECMACryptReader::ReadEncryptionInfo(const std::string & xml_string) { - XmlUtils1::CXmlLiteReader xmlReader; + XmlUtils::CXmlLiteReader xmlReader; if (!xmlReader.FromStringA(xml_string)) return false; @@ -256,7 +258,7 @@ bool CryptReader::ReadEncryptionInfo(std::string & xml_string) } } } - return true; } + return true; } diff --git a/OfficeCryptReader/source/ECMACryptReader.h b/OfficeCryptReader/source/ECMACryptReader.h index 5411771fdf..364b302492 100644 --- a/OfficeCryptReader/source/ECMACryptReader.h +++ b/OfficeCryptReader/source/ECMACryptReader.h @@ -34,11 +34,11 @@ #include #include -class CryptReader +class ECMACryptReader { public: - void DecryptFile(std::wstring file_name, std::wstring folder_out, std::wstring password); + bool DecryptOfficeFile(std::wstring file_name, std::wstring folder_out, std::wstring password); struct _keyEncryptor { @@ -57,21 +57,21 @@ public: std::string encryptedVerifierHashValue; std::string encryptedKeyValue; }; - //struct _refComponent - //{ - // int type; - // std::wstring ref; - //}; - //struct _mapEntry - //{ - // std::vector<_refComponent> refComponents; - // std::wstring dataSpaceName; - //}; + struct _refComponent + { + int type; + std::wstring ref; + }; + struct _mapEntry + { + std::vector<_refComponent> refComponents; + std::wstring dataSpaceName; + }; private: - bool ReadEncryptionInfo(std::string & xmlString); + bool ReadEncryptionInfo(const std::string & xmlString); - //std::vector<_mapEntry> mapEntries; + std::vector<_mapEntry> mapEntries; //-------------------------------------------------------------- _keyEncryptor keyData; std::string encryptedHmacKey; diff --git a/OfficeCryptReader/win32/ECMACryptReader.vcproj b/OfficeCryptReader/win32/ECMACryptReader.vcproj index fed7902f7e..973a9136f0 100644 --- a/OfficeCryptReader/win32/ECMACryptReader.vcproj +++ b/OfficeCryptReader/win32/ECMACryptReader.vcproj @@ -40,7 +40,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +