Skip to content

Instantly share code, notes, and snippets.

@hirman74
Forked from paalfe/CiscoKeyGen.py
Last active September 29, 2023 10:52
Show Gist options
  • Save hirman74/7973aaf259d378f328a0 to your computer and use it in GitHub Desktop.
Save hirman74/7973aaf259d378f328a0 to your computer and use it in GitHub Desktop.
This is a fork of Cisco IOU License Generator to run on Mac OSX. Make the file executable with " chmod +x CiscoKeyGen.py " and execute it " ./CiscoKeyGen.py ".
#! /usr/bin/python
print "\n*********************************************************************"
print "Cisco IOU License Generator - Kal 2011, python port of 2006 C version"
import os
import socket
import hashlib
import struct
# get the host id and host name to calculate the hostkey
#hostid=os.popen("hostid").read().strip() # for linux
hostid=str(os.popen('hostid')).split()[-1][2:-1] # for Mac OSX 10.9.3 Python 2.7.5
#hostid=str(os.popen('hostid','r',-1)).split()[-1][2:-1] # for win7 Python 3.4.1
hostname = socket.gethostname()
ioukey=int(hostid,16)
for x in hostname:
ioukey = ioukey + ord(x)
print "hostid=" + hostid +", hostname="+ hostname + ", ioukey=" + hex(ioukey)[2:]
# create the license using md5sum
iouPad1='\x4B\x58\x21\x81\x56\x7B\x0D\xF3\x21\x43\x9B\x7E\xAC\x1D\xE6\x8A'
iouPad2='\x80' + 39*'\0'
#md5input=iouPad1 + iouPad2 + struct.pack('!L', ioukey) + iouPad1
# below ammendment success for Mac OSX 10.9.3 Python 2.7.5
# from https://community.gns3.com/thread/3921#17178
md5input=iouPad1 + iouPad2 + struct.pack('!Q', ioukey) + iouPad1
iouLicense=hashlib.md5(md5input).hexdigest()[:16]
# add license info to $HOME/.iourc
print "\n*********************************************************************"
print "Create the license file $HOME/.iourc with this command:"
print " echo -e '[license]\\n" + hostname + " = " + iouLicense + ";'" + " | tee $HOME/.iourc "
print "\nThe command adds the following text to $HOME/.iourc:"
print "[license]\n" + hostname + " = " + iouLicense + ";"
# 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*********************************************************************"
@gnl-dev
Copy link

gnl-dev commented Sep 5, 2020

If you use Windows, replace line 10 by line 9.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment