Create a gist now

Instantly share code, notes, and snippets.

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.

Show comment Hide comment
@DJDumlao

DJDumlao Sep 23, 2015

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

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

@ghost

This comment has been minimized.

Show comment Hide comment
@ghost

ghost Dec 15, 2015

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

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.

Show comment Hide comment
@dudu99

dudu99 Feb 26, 2016

thanks

dudu99 commented Feb 26, 2016

thanks

@vargasjj

This comment has been minimized.

Show comment Hide comment
@vargasjj

vargasjj 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?

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.

Show comment Hide comment
@bluephoenix71

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

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.

Show comment Hide comment
@simonfbroad

simonfbroad Mar 31, 2017

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

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.

Show comment Hide comment
@Manzarabbas

Manzarabbas 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'

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.

Show comment Hide comment
@biken00r

biken00r 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

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.

Show comment Hide comment
@sraj1984

sraj1984 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/

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.

Show comment Hide comment
@itlas245

itlas245 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;

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;

@towwey

This comment has been minimized.

Show comment Hide comment
@towwey

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

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

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