Skip to content

Instantly share code, notes, and snippets.

@secretsidequest
Forked from paalfe/CiscoKeyGen.py
Created May 1, 2026 14:11
Show Gist options
  • Select an option

  • Save secretsidequest/84f272a04a822fcdc2dca09b9d7fde73 to your computer and use it in GitHub Desktop.

Select an option

Save secretsidequest/84f272a04a822fcdc2dca09b9d7fde73 to your computer and use it in GitHub Desktop.
Updated for Python3
#!/usr/bin/env python3
import hashlib
import socket
import struct
import subprocess
def main():
print("\n*********************************************************************")
print("Cisco IOU License Generator - Kal 2011, python port of 2006 C version")
print("2026 - Updated to Python 3")
# get the host id and host name to calculate the hostkey
hostid = subprocess.run(['hostid'], capture_output=True, text=True).stdout.strip()
hostname = socket.gethostname()
ioukey = int(hostid, 16) + sum(ord(c) for c in hostname)
print(f"hostid={hostid}, hostname={hostname}, ioukey={ioukey:x}")
# create the license using md5sum
iou_pad1 = b"\x4b\x58\x21\x81\x56\x7b\x0d\xf3\x21\x43\x9b\x7e\xac\x1d\xe6\x8a"
iou_pad2 = b"\x80" + 39 * b"\0"
md5_input = iou_pad1 + iou_pad2 + struct.pack("!L", ioukey) + iou_pad1
iou_license = hashlib.md5(md5_input).hexdigest()[:16]
# add license info to $HOME/.iourc
print("\n*********************************************************************")
print("Create the license file $HOME/.iourc with this command:")
print(f" echo -e '[license]\\n{hostname} = {iou_license};' | tee $HOME/.iourc")
print("\nThe command adds the following text to $HOME/.iourc:")
print(f"[license]\n{hostname} = {iou_license};")
# disable phone home feature
print("\n*********************************************************************")
print("Disable the phone home feature with this command:")
print(
" grep -q -F '127.0.0.1 xml.cisco.com' /etc/hosts || "
"echo '127.0.0.1 xml.cisco.com' | sudo tee -a /etc/hosts"
)
print("\nThe command adds the following text to /etc/hosts:")
print("127.0.0.1 xml.cisco.com")
print("\n*********************************************************************")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment