import sys
import re
import binascii
def hex_encode_vam_data(message):
regex_str = '^(.*)<vam_data>(.*)</vam_data>(.*)$'
pattern = re.compile(regex_str, re.DOTALL)
match = pattern.match(message)
if match:
print("Javonz Debug ::: found match")
try:
# replace the binary in the XML with the hex encoded equivalent
groups = match.groups()
vam_bin = groups[1]
hex_vam_bin = binascii.hexlify(vam_bin).upper()
message = pattern.sub('{0}<vam_data>{1}</vam_data>{2}'
.format(groups[0], hex_vam_bin, groups[2]),
message)
except Exception as ex:
print("Javonz Debug ::: ERROR exception: '{0}'".format(ex))
else:
print("Javonz Debug ::: no match")
return message
message = b'\x00\x00<msg><vam_data>\r\n\t\x00\x12\x34\x56\xAB\xCD</vam_data>\x0A</msg>\x0A7DED\x02'
print("Javonz Debug ::: message: {0}".format(repr(message)))
message = hex_encode_vam_data(message)
print("Javonz Debug ::: message: {0}".format(repr(message)))
sys.exit(0)
aW1wb3J0IHN5cwppbXBvcnQgcmUKaW1wb3J0IGJpbmFzY2lpCgpkZWYgaGV4X2VuY29kZV92YW1fZGF0YShtZXNzYWdlKToKICAgIHJlZ2V4X3N0ciA9ICdeKC4qKTx2YW1fZGF0YT4oLiopPC92YW1fZGF0YT4oLiopJCcKICAgIHBhdHRlcm4gPSByZS5jb21waWxlKHJlZ2V4X3N0ciwgcmUuRE9UQUxMKQogICAgbWF0Y2ggPSBwYXR0ZXJuLm1hdGNoKG1lc3NhZ2UpCiAgICBpZiBtYXRjaDoKICAgICAgICBwcmludCgiSmF2b256IERlYnVnIDo6OiBmb3VuZCBtYXRjaCIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIHJlcGxhY2UgdGhlIGJpbmFyeSBpbiB0aGUgWE1MIHdpdGggdGhlIGhleCBlbmNvZGVkIGVxdWl2YWxlbnQKICAgICAgICAgICAgZ3JvdXBzID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICAgICAgdmFtX2JpbiA9IGdyb3Vwc1sxXQogICAgICAgICAgICBoZXhfdmFtX2JpbiA9IGJpbmFzY2lpLmhleGxpZnkodmFtX2JpbikudXBwZXIoKQogICAgICAgICAgICBtZXNzYWdlID0gcGF0dGVybi5zdWIoJ3swfTx2YW1fZGF0YT57MX08L3ZhbV9kYXRhPnsyfScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZ3JvdXBzWzBdLCBoZXhfdmFtX2JpbiwgZ3JvdXBzWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKICAgICAgICAgICAgcHJpbnQoIkphdm9ueiBEZWJ1ZyA6OjogRVJST1IgZXhjZXB0aW9uOiAnezB9JyIuZm9ybWF0KGV4KSkKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoIkphdm9ueiBEZWJ1ZyA6Ojogbm8gbWF0Y2giKQogICAgcmV0dXJuIG1lc3NhZ2UKCgptZXNzYWdlID0gYidceDAwXHgwMDxtc2c+PHZhbV9kYXRhPlxyXG5cdFx4MDBceDEyXHgzNFx4NTZceEFCXHhDRDwvdmFtX2RhdGE+XHgwQTwvbXNnPlx4MEE3REVEXHgwMicKcHJpbnQoIkphdm9ueiBEZWJ1ZyA6OjogbWVzc2FnZTogezB9Ii5mb3JtYXQocmVwcihtZXNzYWdlKSkpCm1lc3NhZ2UgPSBoZXhfZW5jb2RlX3ZhbV9kYXRhKG1lc3NhZ2UpCnByaW50KCJKYXZvbnogRGVidWcgOjo6IG1lc3NhZ2U6IHswfSIuZm9ybWF0KHJlcHIobWVzc2FnZSkpKQpzeXMuZXhpdCgwKQ==