<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Supermicro%2FOOB</id>
	<title>Supermicro/OOB - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Supermicro%2FOOB"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Supermicro/OOB&amp;action=history"/>
	<updated>2026-04-28T13:58:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=Supermicro/OOB&amp;diff=5800&amp;oldid=prev</id>
		<title>Kenneth: Created page with &quot;== License Key ==  ---  : Supermicro IPMI License Key (for updating BIOS) = HMAC-SHA1-96(INPUT: MAC address of BMC, SECRET KEY: 85 44 E3 B4 7E CA 58 F9 58 30 43 F8)  https://p...&quot;</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Supermicro/OOB&amp;diff=5800&amp;oldid=prev"/>
		<updated>2021-01-01T19:43:33Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== License Key ==  ---  : Supermicro IPMI License Key (for updating BIOS) = HMAC-SHA1-96(INPUT: MAC address of BMC, SECRET KEY: 85 44 E3 B4 7E CA 58 F9 58 30 43 F8)  https://p...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== License Key ==&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
: Supermicro IPMI License Key (for updating BIOS) = HMAC-SHA1-96(INPUT: MAC address of BMC, SECRET KEY: 85 44 E3 B4 7E CA 58 F9 58 30 43 F8)&lt;br /&gt;
&lt;br /&gt;
https://pbs.twimg.com/media/DdXliGRXcAESVzv.jpg&lt;br /&gt;
&lt;br /&gt;
Peter Kleissner on Twitter: &amp;quot;Supermicro IPMI License Key (for updating BIOS) = HMAC-SHA1-96(INPUT: MAC address of BMC, SECRET KEY: 85 44 E3 B4 7E CA 58 F9 58 30 43 F8)… https://t.co/L5jjPh8oMP&amp;quot; - https://twitter.com/kleissner/status/996955400787423232?lang=en&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Supermicro enforces a vendor-lock in on BIOS updates via IPMI, even though they publish the update files for free here. The only free alternative is to time-travel to 1995 and boot from a DOS disk to supply the update. All other options (including the Supermicro Server Manager) require a license.&lt;br /&gt;
&lt;br /&gt;
They published BIOS updates to address Spectre and Meltdown vulnerabilities, yet make it almost impossible to actually perform the update. Even if you go their suggested way, buying a key from an authorized Supermicro reseller people on the internet report it’s difficult and time consuming getting them. I was quoted 25 EUR and an estimated 2 weeks delivery time.&lt;br /&gt;
&lt;br /&gt;
You buy a brand new product, it has a known vulnerability and you should pay for the update?! This is simply NOT acceptable. As the owner of my device I shall be free to update it. Therefore, I spent exactly 1 night reverse engineering this thing to figure out the license key algorithm. tl;dr here is the algorithm to generate those license keys:&lt;br /&gt;
&lt;br /&gt;
MAC-SHA1-96(INPUT: MAC address of BMC, SECRET KEY: 85 44 E3 B4 7E CA 58 F9 58 30 43 F8)&lt;br /&gt;
&lt;br /&gt;
Anybody can create the license key on https://cryptii.com (Bytes - HMAC - 2 Bytes) by typing on the left side (select Bytes) the MAC address of the IPMI (the BMC), select in the middle HMAC and SHA-1, enter the secret key and on the right side the License Key will appear!&lt;br /&gt;
&lt;br /&gt;
This was successfully tested with Supermicro mainboards from 2013-2018. It appears they have not changed the algorithm and use the same “secret”. The first 6 groups go in here:&lt;br /&gt;
&lt;br /&gt;
Update 1/14/2019: The Twitter user @astraleureka posted this code perl code which is generating the license key:&lt;br /&gt;
&lt;br /&gt;
license.pl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
# perl -MCPAN -e &amp;quot;install Digest::HMAC_SHA1&amp;quot;&lt;br /&gt;
use strict;&lt;br /&gt;
use Digest::HMAC_SHA1 &amp;#039;hmac_sha1&amp;#039;;&lt;br /&gt;
my $key  = &amp;quot;\x85\x44\xe3\xb4\x7e\xca\x58\xf9\x58\x30\x43\xf8&amp;quot;;&lt;br /&gt;
my $mac  = shift || die &amp;#039;args: mac-addr (i.e. 00:25:90:cd:26:da)&amp;#039;;&lt;br /&gt;
my $data = join &amp;#039;&amp;#039;, map { chr hex $_ } split &amp;#039;:&amp;#039;, $mac;&lt;br /&gt;
my $raw  = hmac_sha1($data, $key);&lt;br /&gt;
printf &amp;quot;%02lX%02lX-%02lX%02lX-%02lX%02lX-%02lX%02lX-%02lX%02lX-%02lX%02lX\n&amp;quot;, (map { ord $_ } split &amp;#039;&amp;#039;, $raw);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
license.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo -n &amp;#039;bmc-mac&amp;#039; | xxd -r -p | openssl dgst -sha1 -mac HMAC -macopt hexkey:8544E3B47ECA58F9583043F8 | awk &amp;#039;{print $2}&amp;#039; | cut -c 1-24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 $ echo -n &amp;#039;ac-1f-xx-xx-xx-xx&amp;#039; | license.sh&lt;br /&gt;
 6a71xxxxxxxxxxxxxxxxf788&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reverse Engineering Supermicro IPMI – peterkleissner.com - https://peterkleissner.com/2018/05/27/reverse-engineering-supermicro-ipmi/&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Bash script:&lt;br /&gt;
&lt;br /&gt;
license.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
function hash_mac {&lt;br /&gt;
  mac=&amp;quot;$1&amp;quot;&lt;br /&gt;
  key=&amp;quot;8544e3b47eca58f9583043f8&amp;quot;&lt;br /&gt;
  sub=&amp;quot;\x&amp;quot;&lt;br /&gt;
  #convert mac to hex&lt;br /&gt;
  hexmac=&amp;quot;\x${mac//:/$sub}&amp;quot;&lt;br /&gt;
  #create hash&lt;br /&gt;
  code=$(printf &amp;quot;$hexmac&amp;quot; | openssl dgst -sha1 -mac HMAC -macopt hexkey:&amp;quot;$key&amp;quot;)&lt;br /&gt;
  #echo &amp;quot;$mac&amp;quot;&lt;br /&gt;
  #echo &amp;quot;$hexmac&amp;quot;&lt;br /&gt;
  #echo &amp;quot;$code&amp;quot;&lt;br /&gt;
  echo &amp;quot;${code:9:4}-${code:13:4}-${code:17:4}-${code:21:4}-${code:25:4}-${code:29:4}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
# hex output with input&lt;br /&gt;
hash_mac &amp;quot;$1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
activate.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# perl -MCPAN -e &amp;quot;install Digest::HMAC_SHA1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MAC=`ipmitool lan print | grep &amp;quot;MAC Address&amp;quot; | awk &amp;#039;{print $4}&amp;#039;`&lt;br /&gt;
#KEY=`./license.pl $MAC`&lt;br /&gt;
KEY=`./license.sh $MAC`&lt;br /&gt;
./sum -c ActivateProductKey --key $KEY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: https://www.virtuallifestyle.nl/2016/08/better-way-update-supermicro-bios-via-ipmi/&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Or all in one:&lt;br /&gt;
&lt;br /&gt;
activate.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
function hash_mac {&lt;br /&gt;
  mac=&amp;quot;$1&amp;quot;&lt;br /&gt;
  key=&amp;quot;8544e3b47eca58f9583043f8&amp;quot;&lt;br /&gt;
  sub=&amp;quot;\x&amp;quot;&lt;br /&gt;
  #convert mac to hex&lt;br /&gt;
  hexmac=&amp;quot;\x${mac//:/$sub}&amp;quot;&lt;br /&gt;
  #create hash&lt;br /&gt;
  code=$(printf &amp;quot;$hexmac&amp;quot; | openssl dgst -sha1 -mac HMAC -macopt hexkey:&amp;quot;$key&amp;quot;)&lt;br /&gt;
  #DEBUG&lt;br /&gt;
  #echo &amp;quot;$mac&amp;quot;&lt;br /&gt;
  #echo &amp;quot;$hexmac&amp;quot;&lt;br /&gt;
  #echo &amp;quot;$code&amp;quot;&lt;br /&gt;
  echo &amp;quot;${code:9:4}-${code:13:4}-${code:17:4}-${code:21:4}-${code:25:4}-${code:29:4}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
MAC=$( ipmitool lan print | grep &amp;quot;MAC Address&amp;quot; | awk &amp;#039;{print $4}&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
# hex output with input&lt;br /&gt;
KEY=$(hash_mac &amp;quot;$MAC&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
./sum -c ActivateProductKey --key $KEY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improved:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
function hash_mac {&lt;br /&gt;
  mac=&amp;quot;$1&amp;quot;  # upper case or lower case, doesn&amp;#039;t matter&lt;br /&gt;
  key=&amp;quot;8544e3b47eca58f9583043f8&amp;quot;&lt;br /&gt;
  #convert mac to hex&lt;br /&gt;
  echo &amp;quot;$mac&amp;quot; | grep &amp;#039;:&amp;#039; &amp;gt; /dev/null&lt;br /&gt;
  if [ $? -ne 0 ] ; then&lt;br /&gt;
    hexmac=&amp;quot;\x${mac:0:2}\x${mac:2:2}\x${mac:4:2}\x${mac:6:2}\x${mac:8:2}\x${mac:10:2}&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    sub=&amp;quot;\x&amp;quot;&lt;br /&gt;
    hexmac=&amp;quot;\x${mac//:/$sub}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
  #create hash&lt;br /&gt;
  code=$(printf &amp;quot;$hexmac&amp;quot; | openssl dgst -sha1 -mac HMAC -macopt hexkey:&amp;quot;$key&amp;quot;)&lt;br /&gt;
  #echo &amp;quot;$mac&amp;quot;&lt;br /&gt;
  #echo &amp;quot;$hexmac&amp;quot;&lt;br /&gt;
  #echo &amp;quot;$code&amp;quot;&lt;br /&gt;
  echo &amp;quot;${code:9:4}-${code:13:4}-${code:17:4}-${code:21:4}-${code:25:4}-${code:29:4}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage: $0 [MAC]&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# hex output with input&lt;br /&gt;
hash_mac &amp;quot;$1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>