Keep in mind that this project is not intended for production use. Feel free to use it to test your own systems or maybe even learn something from the protocol structure. :)
py-kms is a port of node-kms created by cyrozap, which is a port of either the C#, C++, or .NET implementations of KMS Emulator. The original version was written by CODYQX4 and is derived from the reverse-engineered code of Microsoft's official KMS. This version of py-kms is for itself a fork of the original implementation by SystemRage, which was abandoned early 2021.
v4
, v5
, and v6
KMS requests.Docker
, systemd
and many more...sqlite
for persistent data storage (with a simple web-based explorer).The wiki has been completly reworked and is now available on readthedocs.io. It should provide you all the necessary information about how to setup and to use py-kms , all without clumping this readme. The documentation also houses more details about activation with py-kms and how to get GVLK keys.
python3 pykms_Server.py [IPADDRESS] [PORT]
, the default IPADDRESS is ::
( all interfaces ) and the default PORT is 1688
. Note that both the address and port are optional. It's allowed to use IPv4 and IPv6 addresses. If you have a IPv6-capable dual-stack OS, a dual-stack socket is created when using a IPv6 address. In case your OS does not support IPv6, make sure to explicitly specify the legacy IPv4 of 0.0.0.0
!docker run -d --name py-kms --restart always -p 1688:1688 ghcr.io/py-kms-organization/py-kms
.python3 pykms_Server.py -h
and python3 pykms_Client.py -h
.