@ -94,38 +94,42 @@ def extract_otps(args):
otps = [ ]
otps = [ ]
i = j = 0
i = j = 0
for line in ( line . strip ( ) for line in fileinput . input ( args . infile ) ) :
finput = fileinput . input ( args . infile )
if verbose : print ( line )
try :
if line . startswith ( ' # ' ) or line == ' ' : continue
for line in ( line . strip ( ) for line in finput ) :
i + = 1
if verbose : print ( line )
payload = get_payload_from_line ( line , i , args )
if line . startswith ( ' # ' ) or line == ' ' : continue
i + = 1
# pylint: disable=no-member
payload = get_payload_from_line ( line , i , args )
for raw_otp in payload . otp_parameters :
j + = 1
# pylint: disable=no-member
if verbose : print ( ' \n {} . Secret Key ' . format ( j ) )
for raw_otp in payload . otp_parameters :
secret = convert_secret_from_bytes_to_base32_str ( raw_otp . secret )
j + = 1
otp_type_enum = get_enum_name_by_number ( raw_otp , ' type ' )
if verbose : print ( ' \n {} . Secret Key ' . format ( j ) )
otp_type = get_otp_type_str_from_code ( raw_otp . type )
secret = convert_secret_from_bytes_to_base32_str ( raw_otp . secret )
otp_url = build_otp_url ( secret , raw_otp )
otp_type_enum = get_enum_name_by_number ( raw_otp , ' type ' )
otp = {
otp_type = get_otp_type_str_from_code ( raw_otp . type )
" name " : raw_otp . name ,
otp_url = build_otp_url ( secret , raw_otp )
" secret " : secret ,
otp = {
" issuer " : raw_otp . issuer ,
" name " : raw_otp . name ,
" type " : otp_type ,
" secret " : secret ,
" counter " : raw_otp . counter if raw_otp . type == 1 else None ,
" issuer " : raw_otp . issuer ,
" url " : otp_url
" type " : otp_type ,
}
" counter " : raw_otp . counter if raw_otp . type == 1 else None ,
if not quiet :
" url " : otp_url
print_otp ( otp )
}
if args . printqr :
if not quiet :
print_qr ( args , otp_url )
print_otp ( otp )
if args . saveqr :
if args . printqr :
save_qr ( otp , args , j )
print_qr ( args , otp_url )
if not quiet :
if args . saveqr :
print ( )
save_qr ( otp , args , j )
if not quiet :
otps . append ( otp )
print ( )
otps . append ( otp )
finally :
finput . close ( )
return otps
return otps
@ -146,7 +150,12 @@ def get_payload_from_line(line, i, args):
if verbose > 1 : print ( ' \n DEBUG: data_base64_fixed= {} ' . format ( data_base64 ) )
if verbose > 1 : print ( ' \n DEBUG: data_base64_fixed= {} ' . format ( data_base64 ) )
data = base64 . b64decode ( data_base64_fixed , validate = True )
data = base64 . b64decode ( data_base64_fixed , validate = True )
payload = protobuf_generated_python . google_auth_pb2 . MigrationPayload ( )
payload = protobuf_generated_python . google_auth_pb2 . MigrationPayload ( )
payload . ParseFromString ( data )
try :
payload . ParseFromString ( data )
except :
print ( ' \n ERROR: Cannot decode otpauth-migration migration payload. ' )
print ( ' data= {} ' . format ( data_base64 ) )
exit ( 1 ) ;
if verbose :
if verbose :
print ( ' \n {} . Payload Line ' . format ( i ) , payload , sep = ' \n ' )
print ( ' \n {} . Payload Line ' . format ( i ) , payload , sep = ' \n ' )