# your code goes here
#! /usr/bin/python
print ( "*********************************************************************" )
print ( "Cisco IOU License Generator - Kal 2011, python port of 2006 C version" )
print ( "Modified to work with python3 by c_d 2014" )
import os
import socket
import hashlib
import struct
# get the host id and host name to calculate the hostkey
hostid= "ac45d0c9"
hostname = "gns3-iouvm"
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 = b'\x 4B\x 58\x 21\x 81\x 56\x 7B\x 0D\x F3\x 21\x 43\x 9B\x 7E\x AC\x 1D\x E6\x 8A'
iouPad2 = b'\x 80' + 39 *b'\0 '
md5input= iouPad1 + iouPad2 + struct .pack ( '!L' , ioukey) + iouPad1
iouLicense= hashlib.md5 ( md5input) .hexdigest ( ) [ :16 ]
print ( "\n Add the following text to ~/.iourc:" )
print ( "[license]\n " + hostname + " = " + iouLicense + ";\n " )
print ( "You can disable the phone home feature with something like:" )
print ( " echo '127.0.0.127 xml.cisco.com' >> /etc/hosts\n " ) # your code goes here
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCiMhIC91c3IvYmluL3B5dGhvbgpwcmludCgiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIikKcHJpbnQoIkNpc2NvIElPVSBMaWNlbnNlIEdlbmVyYXRvciAtIEthbCAyMDExLCBweXRob24gcG9ydCBvZiAyMDA2IEMgdmVyc2lvbiIpCnByaW50KCJNb2RpZmllZCB0byB3b3JrIHdpdGggcHl0aG9uMyBieSBjX2QgMjAxNCIpCmltcG9ydCBvcwppbXBvcnQgc29ja2V0CmltcG9ydCBoYXNobGliCmltcG9ydCBzdHJ1Y3QKCiMgZ2V0IHRoZSBob3N0IGlkIGFuZCBob3N0IG5hbWUgdG8gY2FsY3VsYXRlIHRoZSBob3N0a2V5Cmhvc3RpZD0iYWM0NWQwYzkiCmhvc3RuYW1lID0gImduczMtaW91dm0iCmlvdWtleT1pbnQoaG9zdGlkLDE2KQpmb3IgeCBpbiBob3N0bmFtZToKIGlvdWtleSA9IGlvdWtleSArIG9yZCh4KQpwcmludCgiaG9zdGlkPSIgKyBob3N0aWQgKyIsIGhvc3RuYW1lPSIrIGhvc3RuYW1lICsgIiwgaW91a2V5PSIgKyBoZXgoaW91a2V5KVsyOl0pCgojIGNyZWF0ZSB0aGUgbGljZW5zZSB1c2luZyBtZDVzdW0KaW91UGFkMSA9IGInXHg0Qlx4NThceDIxXHg4MVx4NTZceDdCXHgwRFx4RjNceDIxXHg0M1x4OUJceDdFXHhBQ1x4MURceEU2XHg4QScKaW91UGFkMiA9IGInXHg4MCcgKyAzOSpiJ1wwJwptZDVpbnB1dD1pb3VQYWQxICsgaW91UGFkMiArIHN0cnVjdC5wYWNrKCchTCcsIGlvdWtleSkgKyBpb3VQYWQxCmlvdUxpY2Vuc2U9aGFzaGxpYi5tZDUobWQ1aW5wdXQpLmhleGRpZ2VzdCgpWzoxNl0KCnByaW50KCJcbkFkZCB0aGUgZm9sbG93aW5nIHRleHQgdG8gfi8uaW91cmM6IikKcHJpbnQoIltsaWNlbnNlXVxuIiArIGhvc3RuYW1lICsgIiA9ICIgKyBpb3VMaWNlbnNlICsgIjtcbiIpCnByaW50KCJZb3UgY2FuIGRpc2FibGUgdGhlIHBob25lIGhvbWUgZmVhdHVyZSB3aXRoIHNvbWV0aGluZyBsaWtlOiIpCnByaW50KCIgZWNobyAnMTI3LjAuMC4xMjcgeG1sLmNpc2NvLmNvbScgPj4gL2V0Yy9ob3N0c1xuIikjIHlvdXIgY29kZSBnb2VzIGhlcmU=