fork download
  1. import sys
  2. import re
  3. import binascii
  4.  
  5. def hex_encode_vam_data(message):
  6. regex_str = '^(.*)<vam_data>(.*)</vam_data>(.*)$'
  7. pattern = re.compile(regex_str, re.DOTALL)
  8. match = pattern.match(message)
  9. if match:
  10. print("Javonz Debug ::: found match")
  11. try:
  12. # replace the binary in the XML with the hex encoded equivalent
  13. groups = match.groups()
  14. vam_bin = groups[1]
  15. hex_vam_bin = binascii.hexlify(vam_bin).upper()
  16. message = pattern.sub('{0}<vam_data>{1}</vam_data>{2}'
  17. .format(groups[0], hex_vam_bin, groups[2]),
  18. message)
  19. except Exception as ex:
  20. print("Javonz Debug ::: ERROR exception: '{0}'".format(ex))
  21. else:
  22. print("Javonz Debug ::: no match")
  23. return message
  24.  
  25.  
  26. message = b'\x00\x00<msg><vam_data>\r\n\t\x00\x12\x34\x56\xAB\xCD</vam_data>\x0A</msg>\x0A7DED\x02'
  27. print("Javonz Debug ::: message: {0}".format(repr(message)))
  28. message = hex_encode_vam_data(message)
  29. print("Javonz Debug ::: message: {0}".format(repr(message)))
  30. sys.exit(0)
Success #stdin #stdout 0.01s 23296KB
stdin
Standard input is empty
stdout
Javonz Debug ::: message: '\x00\x00<msg><vam_data>\r\n\t\x00\x124V\xab\xcd</vam_data>\n</msg>\n7DED\x02'
Javonz Debug ::: found match
Javonz Debug ::: message: '\x00\x00<msg><vam_data>0D0A0900123456ABCD</vam_data>\n</msg>\n7DED\x02'