The library uu
is now deprecated.
See here
and here.
Even codecs relies on uu
. See here.
You should use binascii
:
c="02&DA($AO=R!A<F4@>6]U/P``"
import binascii
m = binascii.a2b_uu(c)
print(m)
Then you can read:
Hi! How are you?
.
You might need to implement uu encoding alone or to choose another library.
To write your own library, do:
def get_bits(num, start, end, length=64):
mask = 2**(end-start)-1
shift = length - (end-start) - start
return (num & (mask << shift)) >> shift
def decode_uu_charset(cipher_text):
plain_text = ""
three_characters = []
for character_group in list(zip(*[iter(cipher_text[1:len(cipher_text)])] * 4)):
character_group = "".join(character_group)
four_six_bits = []
for c in character_group:
c = bin((ord(c) - 32) % 64)[2:].zfill(6)
four_six_bits.append(c)
three_characters.append(
chr(int(str(bin(get_bits(int(four_six_bits[0], 2), 0, 6, 6))[2:].zfill(6)) +
str(bin(get_bits(int(four_six_bits[1], 2), 0, 2, 6))[2:].zfill(2)), 2))
)
three_characters.append(
chr(int(str(bin(get_bits(int(four_six_bits[1], 2), 2, 6, 6))[2:].zfill(4)) +
str(bin(get_bits(int(four_six_bits[2], 2), 0, 4, 6))[2:].zfill(4)), 2))
)
three_characters.append(
chr(int(str(bin(get_bits(int(four_six_bits[2], 2), 4, 6, 6))[2:].zfill(2)) +
str(bin(get_bits(int(four_six_bits[3], 2), 0, 6, 6))[2:].zfill(6)), 2))
)
for c in three_characters:
if ord(c) != 0:
plain_text += c
return plain_text
plain_text = decode_uu_charset("02&DA($AO=R!A<F4@>6]U/P``")
print(plain_text)
You should read
Hi! How are you?
.