rendered paste body#!/usr/bin/env python
"""
bcode - bacula[en|de]coder v1.0
bcode converts bacula native hashes to/from standard hashes
Usage: bcode [option] [hash]
Example:
bcode -b asdf==
bcode -x a1dd3
"""
import base64
import sys
import getopt
def tobase64(hash):
md5 = base64.b16decode(hash.upper())
return base64.b64encode(md5)[:-2]
def tohex(hash):
# Need to add == for padding because bacula strips this
md5 = base64.b64decode(hash + "==")
return base64.b16encode(md5).lower()
def invalid():
print
print "bcode requires option -b or -x"
print "for help use --help"
print
sys.exit(0)
def main():
# parse command line options
try:
opts, args = getopt.getopt(sys.argv[1:], "hb:x:", ["help", "base64=", "hex="])
except getopt.error, msg:
print msg
print "for help use --help"
sys.exit(2)
for opt, arg in opts:
if opt in ("-h", "--help"):
print __doc__
sys.exit(0)
if opt in ("-b", "--base64"):
print tobase64(arg)
if opt in ("-x", "--hex"):
print tohex(arg)
if len(opts) == 0:
invalid()
if __name__ == "__main__":
main()