- Optimized pretty-print messages process.
- Added -F FILESTDOUT option.
- Added deamonization options (via Etrigan project).
- py-kms GUI resurrected (and improved).
- Cleaned, cleaned, cleaned.
- Merging for Python2 / Python3 compatibility all-in-one.
- Added new options:
- Setup for multithreading support.
- Graphical improvements:
- added a ("really silly") tkinter GUI as an alternative to command line.
- Dockerized with sqlite-web.
- Fixed activation threshold.
- Renamed files, cosmetics and many other little big adjustments.
- Implemented some good modifications inspired by this other fork.
- Clean up code ( deleted no longer useful files randomHWID.py, randomEPID.py, timezones.py; erased useless functions and import modules )
- Reading parameters directly from a slightly modified KmsDataBase.xml ( created with LicenseManager 5.0 by Hotbird64 HGM ) with kmsDB2Dict.py
- Added support for Windows Server 2019 and Office 2019.
- Improved random EPID generation.
- Corrected this in kmsBase.py
- py-kms NOW is for Python3 too ( py3-kms ), the previous one ( written with Python2 ) is renamed py2-kms
- Repaired logging messages
- Added pretty processing messages
- Added option verbose logging in a file
- Updated "kmsBase.py" with new SKUIDs
- Added a brief guide "py-kms-Guide.pdf" ( replaced "client-activation.txt" )
- Added a well formatted and more complete list of volume keys "py-kms-ClientKeys.pdf" ( replaced "client-keys.txt" )
- Updated kmsBase.py (Matches LicenseManager 4.6.0 by Hotbird64 HGM)
- Fixed major bug on Response function
- Fixed Random PID Generator (thanks: mkuba50)
- Added missing UUID, credits: Hotbird64
- Added Windows Server 2016 in random PID generator
- Added Windows Server 2016 UUID
- Fixed GroupID and PIDRange
- Added Office 2016 CountKMSID
- Added Windows 10 UUID
- Added Client Activation Examples: "client-activation.txt"
- Added Volume Keys: "client-keys.txt"
- Added missing skuIds in file "kmsbase.py". Thanks (user_hidden)
- The server now outputs the hwid in use.
- The server hwid can be random by using parameter: "-w random". Example: "python server.py -w random"
- Included file "randomHWID.py" to generate random hwid on demand.
- Included file "randomPID.py" to generate random epid and hwid on demand.
- The server HWID can now be specified on the command line.
- The client will print the HWID when using the v6 protocol.
- Made the sqlite3 module optional.
- Changed the "log" flag to an "sqlite" flag and made a real log flag in preparation for when real request logging is implemented.
- Added RPC response decoding to the KMS client emulator.
- The v4 hash now uses the proper pre-expanded key.
- Modified the v4 code to use the custom aes module in order to make it more streamlined and efficient.
- Removed the need for the pre-computed table (tablecomplex.py) for v4 CMAC calculation, cutting the zip file size in half.
- Switched to getting the to-be-logged request time from the KMS server instead of the client.
- You can now specify the CMID and the Machine Name to use with the client emulator.
- Added a request-logging feature to the server. It stores requests in an SQLite database and uses the ePIDs stored there on a per-CMID basis.
- The client emulator now works for v4, v5, and v6 requests.
- The client emulator now also verifies the KMS v4 responses it receives.
- Added a client (work in progress) that right now can only generate and send RPC bind requests.
- Added a bunch of new classes to handle RPC client stuff, but I might just end up moving their functions back into the old classes at some point.
- Lots of other code shuffling.
- Made the verbose and debug option help easier to read.
- Added some server error messages.
- Made some really huge internal changes to streamline packet parsing.
- Added tons of new SKU IDs
- Added Office SKU IDs
- Small internal changes
- Made the rpcResponseArray in rpcRequest output closer to spec
- SKUID conversion: Converts the SKUID UUID into a human-readable product version for SKUIDs in its SKUID dictionary.
- Fancy new timezone conversion stuff.
- Enabled setting custom LCIDs.
- Data parsing is now handled by structure.py.
- Some other minor stuff you probably won't notice.
- Got rid of custom functions module (finally)
- Simplified custom functions module
- Got rid of "v4" subfolder
- Cleaned up a bunch of code
- Added timestamps to verbose output
- Made the verbose output look better
- Moved some stuff into verbose output
- Enabled server ePIDs of arbitrary length
- Permanently fixed machineName decoding
- Adheres closer to the DCE/RPC protocol spec
- Added client info to program output
- Small formatting changes
- First working release added to the Mega folder.