Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Cisco IOU License Generator. Originally found at http://www.routingloops.co.uk/cisco/gns3-v1-1-install-on-ubuntu-14-04-lts/, I have done a few changes to it. 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()
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
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*********************************************************************"
@DJDumlao

This comment has been minimized.

Copy link

@DJDumlao DJDumlao commented Sep 23, 2015

I'm getting this error SyntaxError: Missing parentheses in call to 'print' Python version 3.5

@ghost

This comment has been minimized.

Copy link

@ghost ghost commented Dec 15, 2015

this a great video work for me
https://www.youtube.com/watch?v=QLVGxa4jEDI

@dudu99

This comment has been minimized.

Copy link

@dudu99 dudu99 commented Feb 26, 2016

thanks

@vargasjj

This comment has been minimized.

Copy link

@vargasjj vargasjj commented Nov 26, 2016

I think Python updated python3 libraries and now it's not running.
I'm using Ubuntu 14. I get error:

File "CiscoIOUKeygen.py", line 2
print "*********************************************************************"
^
SyntaxError: Missing parentheses in call to 'print'

I tried to add parentheses to the print lines, but now i get error:

Traceback (most recent call last):
File "CiscoIOUKeygen.py", line 18, in
md5input=iouPad1 + iouPad2 + struct.pack('!L', ioukey) + iouPad1
TypeError: Can't convert 'bytes' object to str implicitly

Any ideas?

@bluephoenix71

This comment has been minimized.

Copy link

@bluephoenix71 bluephoenix71 commented Jan 26, 2017

I think you need to use python2 and not python3, I encountered this before and someone from a different site said to use the python2.

@simonfbroad

This comment has been minimized.

Copy link

@simonfbroad simonfbroad commented Mar 31, 2017

ubuntu 16.04, worked straight out box, copy-and-paste, thanks for the script.

@Manzarabbas

This comment has been minimized.

Copy link

@Manzarabbas Manzarabbas commented Apr 8, 2017

i have cousing this problem.Please solve this.

gns3@gns3-iouvm:$ cd /opt/gns3/images/iou/
gns3@gns3-iouvm:
$ /opt/gns3/images/iou/$ python3 CiscoIOUKeygen.py
File"CiscoKeygen.py",line 2
Print " ******************************************************"

^
syntaxError:Missing parentheses in call to 'print'

@biken00r

This comment has been minimized.

Copy link

@biken00r biken00r commented Jun 16, 2017

In python 3.x print is a function. You must use python 2.X and not 3.x. Or you can change code. Ex print "blablabla" to print("blablabla")
Also you can just change #!/usr/bin/python to #!/usr/bin/python2 and try run

@sraj1984

This comment has been minimized.

Copy link

@sraj1984 sraj1984 commented Jul 18, 2017

Try this those who are using pyth ver 3..really hats off this man
https://www.ipvanquish.com/2016/09/25/how-to-generate-cisco-iou-licence-on-gns3-vm-with-python-3/

@itlas245

This comment has been minimized.

Copy link

@itlas245 itlas245 commented Feb 7, 2018

It was not very clear to me but now I understand why there is no windows version of this script.

You need to run it from the shell of your GNSVM and not from your main operating system.

https://gns3.com/api/v2/assets/photo/56a8ef00d4b43d841df7a131/booted%20into%20gns3%20vm.PNG

Here are some simple instructions using GNS3 2.1.3 (Fairly sure its Python 3 and not Python 2)

In the GNS Shell type,

wget http://www.ipvanquish.com/download/CiscoIOUKeygen3f.py

python3 CiscoIOUKeygen3f.py

You should see your license key on the screen, it will look something like...

[license]
gns3vm = 73635fd3b0a13ah0;

Type this into GNS3 Edit - Preferences - IOS on UNIX (The big white box)
Don't forget to end the license with the ; after your license key.

[license]
gns3vm = 73635fd3b0a13ah0;

@petecory

This comment has been minimized.

Copy link

@petecory petecory commented Feb 21, 2018

To make this work do the following on the VM you are running IOU/IOL on.
I use nano - so be sure you have that installed with the following command:
apt-get install nano

Next Move to the directory you are running IOU from:
In EVE-NG it is this --> cd /opt/unetlab/addons/iol/bin

Create the python script:
nano key.py
<Paste the above script in to this file, if using putty just right click to paste.>
press Ctrl-O to save
press Ctrl-X to exit

now run the script:
python2 key.py

you will get some output.
now create your license file:
nano iourc
Paste the two lines in there for the license file, the first line is [license]
press Ctrl-O to save
press Ctrl-X to exit

You may also need to make the iourc file executable:
chmod +x iourc

now paste the line starting with grep in the console.

That should be it and the IOL should start now.

@tiagonrocha

This comment has been minimized.

Copy link

@tiagonrocha tiagonrocha commented May 6, 2020

Many thanks for your help.

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