Update supermicro.php

This commit is contained in:
Volker 2021-06-29 09:44:18 +02:00 committed by GitHub
parent a370366996
commit 82a0633afc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,43 +1,34 @@
<?php <?php
class Supermicro { class Supermicro {
private function getBin($hexdata) const SUPERMICRO_OOB_PRIVATE_KEY_HEX = '8544E3B47ECA58F9583043F8';
/**
* @param string $BMC_MAC
* @return string
*/
public function getLicense(string $BMC_MAC, bool $source = false)
{ {
$bindata = ""; $key = $this->getKey($BMC_MAC);
for ($i = 0;$i < strlen($hexdata);$i += 2) { return $source ? $key : implode(
$bindata .= chr(hexdec(substr($hexdata, $i, 2))); ' - ',
} array_slice(
return $bindata; str_split(
$key, 4
), 0, 6
)
);
} }
private function getKey($dmac) protected function getKey(string $BMC_MAC)
{ {
return substr(hash_hmac("sha1", $this->getBin($dmac), hex2bin('8544E3B47ECA58F9583043F8')), 0, 24); return hash_hmac(
} 'sha1',
hex2bin(
public function getLicense($mac, $source = false) preg_replace(
{ '![^A-F0-9]!i', '', $BMC_MAC
$mac = str_replace(":", "", $mac); )
if(preg_match("/^[a-z0-9]{12}$/", $mac)) { ), hex2bin(self::SUPERMICRO_OOB_PRIVATE_KEY_HEX)
$key = $this->getKey($mac); );
if(empty($key)) {
return false;
}
if($source) {
return $key;
}
$s = 0;
$result = "";
for($i = 0;$i < strlen($key);$i++) {
$s++;
$result .= $key[$i];
if($s == 4 && $i !== strlen($key) - 1) {
$result .= "-";
$s = 0;
}
}
return $result;
}
return false;
} }
} }