Since I didn’t find it anywhere else… Avocent, who makes a heck of a lot of BMCs, and at times (like with Dell’s iDRAC, at least version 6) keeps encrypted passwords in (well, quite possible/probable OEM dependent) “/flash/data0/etc/avctpasswd” (don’t be fooled by the /etc/passwd file) using SHA1 hashed passwords converted into Base64.
I surmise this file is used to protect the real passwords that are stored in clear text elsewhere (among other place, in RAM.)
@:@:1:1:@:@:/bin/bash:0x0:0
root:y2VKyPNvhAAW8EOqPk4GeWUpcE0=:2:2:Administrator:/flash/data0/home/root:/bin/bash:0x1FF:1
deadbeef:P7BaFjs7ClrA9v3pSUGbYjYszwA=:3:0:@:/flash/data0/home/deadbeef:/bin/bash:0x1FF:1
xxxdellxxx:JEomstocR9Eyj4xqvFcTiQNDD3k=:4:0:@:/flash/data0/home/xxxdellxxx:/bin/bash:0x1FF:1
frankenstein:kA0wp2JHtjhBTDU6uo7DlKQThV4=:5:0:@:/flash/data0/home/frankenstein:/bin/bash:0x1F3:0
kcrw:x0hrTCpCdlkj8phYyQcbcmG8yfU=:6:0:@:/flash/data0/home/kcrw:/bin/bash:0x1FF:0
george_orwell:MgaZ38Cxsq9wVSMsmwNIZTDMgk8=:7:0:@:/flash/data0/home/george_orwell:/bin/bash:0x1F3:1
@:@:8:8:@:@:/bin/bash:0x0:0
@:@:9:9:@:@:/bin/bash:0x0:0
@:@:10:10:@:@:/bin/bash:0x0:0
@:@:11:11:@:@:/bin/bash:0x0:0
@:@:12:12:@:@:/bin/bash:0x0:0
@:@:13:13:@:@:/bin/bash:0x0:0
@:@:14:14:@:@:/bin/bash:0x0:0
@:@:15:15:@:@:/bin/bash:0x0:0
@:@:16:16:@:@:/bin/bash:0x0:0
This seemingly missing accounts are simply unused slots in the BMC, which allows 16 user defined accounts. A little python program to illustrate (the hashes below, from known passwords, match the hashes above):
from sha import sha
import base64
import hashlib
# for these known passwords, print out the hash
for passwd in "hprulez", "ecclectic", "calvin", "lagosi", "frued", "zen":
hash = base64.b64encode(hashlib.sha1(passwd).digest())
print passwd + " hash: " + hash
$ python p.py
hprulez = JEomstocR9Eyj4xqvFcTiQNDD3k=
ecclectic = x0hrTCpCdlkj8phYyQcbcmG8yfU=
calvin = y2VKyPNvhAAW8EOqPk4GeWUpcE0=
lagosi = kA0wp2JHtjhBTDU6uo7DlKQThV4=
frued = MgaZ38Cxsq9wVSMsmwNIZTDMgk8=
zen = P7BaFjs7ClrA9v3pSUGbYjYszwA=
(edit later) And for good measure, a stupid little password cracker that I used later when looking for a password that matched a specific hash ;) Use john the ripper or something unless situation is dire!
from sha import sha
import base64
import hashlib
import sys
# we're looking for this
prehash = 'XtdLbGTpY0nSIpw/uchvPXPOHpo='
try:
passwords = open(sys.argv[1]).read().split('\n')
except:
print "Usage: %s word-file"
sys.exit(1)
# print # for every... xth word
x = 1000000
n = 0
print "looking for password that when hashed matches " + prehash
for p in passwords:
n += 1
if p == "":
continue
hashy = base64.b64encode(hashlib.sha1(p).digest())
# print "pass:" + p + ":\t" , hashy
if hashy == 'XtdLbGTpY0nSIpw/uchvPXPOHpo=':
print "match: %s cracked (word # %s in file) ==> %s" % (hashy, n, p)
sys.exit(0)
if (n % x) == 0:
print n
sys.exit(1)
Sorry, the comment form is closed at this time.