From 01b2ca524d99640043f781780a8d0453c3f847d1 Mon Sep 17 00:00:00 2001 From: kasuganosoras Date: Tue, 25 Jun 2019 05:52:28 +0800 Subject: [PATCH] Add python version --- python-version/main.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 python-version/main.py diff --git a/python-version/main.py b/python-version/main.py new file mode 100755 index 0000000..a55d0b2 --- /dev/null +++ b/python-version/main.py @@ -0,0 +1,38 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +# 超微主板 IPMI 高级授权生成器 Python 实现版本 +import hmac +import binascii +import base64 +import sys +import re +from hashlib import sha1 + +def hex2bin(data): + return binascii.a2b_hex(data) + +def hash_hmac(key, code, sha1): + hmac_code = hmac.new(key, code, sha1) + return hmac_code.hexdigest() + +if __name__ == '__main__': + if len(sys.argv) == 1 or len(sys.argv) > 2: + print("Supermicro IPMI License Generator") + print("https://github.com/kasuganosoras/SuperMicro-IPMI-LicenseGenerator") + print("Argument is missing, please append your BMC-MAC after this command.") + print("Example: " + sys.argv[0] + " 0c:c4:7a:3e:2f:de") + exit() + mac = sys.argv[1].replace(":", "") + if re.match( r'^(\w+)$', mac): + key = hash_hmac(hex2bin("8544E3B47ECA58F9583043F8"), hex2bin(mac), sha1)[0:24] + s = 0 + result = "" + for i in range(0, len(key)): + s = s + 1 + result += key[i] + if s == 4 and i != len(key) - 1: + result += "-" + s = 0 + print(result) + exit() + print("Invalid Mac Address!") \ No newline at end of file