# Changelog ## py-kms_2022-12-16 - Added support for new web-gui into Docker - Implemented whole-new web-based GUI with Flask - Removed old GUI (Etrigan) from code and resources - Removed sqliteweb - Removed Etrigan (GUI) ## py-kms_2022-12-07 - Added warning about Etrigan (GUI) being deprecated - More docs (do not run on same machine as client) - Added Docker support for multiple listen IPs - Added graceful Docker shutdowns ## py-kms_2021-12-23 - More Windows 10/11 keys - Fixed some deprecation warnings - Fixed SO_REUSEPORT platform checks - Fixed loglevel "MININFO" with Docker - Added Docker healthcheck - Added UID/GID change support for Docker - Dependabot alerts ## py-kms_2021-10-22 - Integrated Office 2021 GLVK keys & database - Docker entrypoint fixes - Updated docs to include SQLite stuff - Fix for undefined timezones - Removed LOGFILE extension checks - Added support for Windows 11 ## py-kms_2021-10-07 - Helm charts for Kubernetes deployment - Windows 2022 updates - Faster Github Action builds ## py-kms_2021-11-12 - Addded GHCR support - Docs table reformatted - Updated GUI - Windows Sandbox fix - Added contribution guidelines - Docker multiarch - Reshot screenshots in docs ## py-kms_2020-10-01 - Sql database path customizable. - Sql database file keeps different AppId. - Support for multi-address connection. - Added timeout send / receive. ## py-kms_2020-07-01 - py-kms Gui: now matches all cli options, added modes onlyserver / onlyclient, added some animations. - Added suboptions FILEOFF and STDOUTOFF of -F. - Created option for asynchronous messages. - Cleaned options parsing process. ## py-kms_2020-02-02 - Optimized pretty-print messages process. - Added -F FILESTDOUT option. - Added deamonization options (via [Etrigan](https://github.com/SystemRage/Etrigan) project). - py-kms GUI resurrected (and improved). - Cleaned, cleaned, cleaned. ## py-kms_2019-05-15 - Merging for Python2 / Python3 compatibility all-in-one. - Added new options: - timeout, [logsize](https://github.com/SystemRage/py-kms/pull/21). - more control on logging and info visualization (custom loglevel and stdout logfile redirection) to match [this](https://github.com/SystemRage/py-kms/issues/22) request. - Setup for multithreading support. - Graphical improvements: - added a (_"really silly"_) tkinter GUI as an alternative to command line. - [Dockerized](https://github.com/SystemRage/py-kms/pull/20) with sqlite-web. - Fixed activation threshold. - Renamed files, cosmetics and many other little big adjustments. ## py-kms_2018-11-15 - Implemented some good modifications inspired by [this](https://github.com/ThunderEX/py-kms) 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](https://github.com/SystemRage/py-kms/issues/8) in kmsBase.py ## py-kms_2018-03-01 - *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* ## py-kms_2017-06-01 - *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" )* ## py-kms_2016-12-30 - *Updated kmsBase.py (Matches LicenseManager 4.6.0 by Hotbird64 HGM)* ## py-kms_2016-08-13 - *Fixed major bug on Response function* - *Fixed Random PID Generator (thanks: mkuba50)* ## py-kms_2016-08-12 - *Added missing UUID, credits: Hotbird64* - *Added Windows Server 2016 in random PID generator* ## py-kms_2016-08-11 - *Added Windows Server 2016 UUID* - *Fixed GroupID and PIDRange* - *Added Office 2016 CountKMSID* ## py-kms_2015-07-29 - *Added Windows 10 UUID* ## py-kms_2014-10-13 build 3: - *Added Client Activation Examples: "client-activation.txt"* - *Added Volume Keys: "client-keys.txt"* ## py-kms_2014-10-13 build 2: - *Added missing skuIds in file "kmsbase.py". Thanks (user_hidden)* ## py-kms_2014-10-13 build 1: - *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.* ## py-kms_2014-03-21T232943Z: - *The server HWID can now be specified on the command line.* - *The client will print the HWID when using the v6 protocol.* ## py-kms_2014-01-03T032458Z: - *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.* ## py-kms_2014-01-03T025524Z: - *Added RPC response decoding to the KMS client emulator.* ## py-kms_2013-12-30T064443Z: - *The v4 hash now uses the proper pre-expanded key.* ## py-kms_2013-12-28T073506Z: - *Modified the v4 code to use the custom aes module in order to make it more streamlined and efficient.* ## py-kms_2013-12-20T051257Z: - *Removed the need for the pre-computed table (tablecomplex.py) for v4 CMAC calculation, cutting the zip file size in half.* ## py-kms_2013-12-16T214638Z: - *Switched to getting the to-be-logged request time from the KMS server instead of the client.* ## py-kms_2013-12-16T030001Z: - *You can now specify the CMID and the Machine Name to use with the client emulator.* ## py-kms_2013-12-16T021215Z: - *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.* ## py-kms_2013-12-14T230215Z - *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.* ## py-kms_2013-12-08T051332Z: - *Made some really huge internal changes to streamline packet parsing.* ## py-kms_2013-12-06T034100Z: - *Added tons of new SKU IDs* ## py-kms_2013-12-05T044849Z: - *Added Office SKU IDs* - *Small internal changes* ## py-kms_2013-12-04T010942Z: - *Made the rpcResponseArray in rpcRequest output closer to spec* ## py-kms_2013-12-01T063938Z: - *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.* ## py-kms_2013-11-27T061658Z: - *Got rid of custom functions module (finally)* ## py-kms_2013-11-27T054744Z: - *Simplified custom functions module* - *Got rid of "v4" subfolder* - *Cleaned up a bunch of code* ## py-kms_2013-11-23T044244Z: - *Added timestamps to verbose output* - *Made the verbose output look better* ## py-kms_2013-11-21T014002Z: - *Moved some stuff into verbose output* - *Enabled server ePIDs of arbitrary length* ## py-kms_2013-11-20T180347Z: - *Permanently fixed machineName decoding* - *Adheres closer to the DCE/RPC protocol spec* - *Added client info to program output* - *Small formatting changes* ## py-kms_2013-11-13: - *First working release added to the Mega folder.*