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 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.

    • more control on logging and info visualization (custom loglevel and stdout logfile redirection) to match this request.

  • 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.

py-kms_2018-11-15

  • 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_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.