avb_digest_patch.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/env python3
  2. # Copyright 2016, The Android Open Source Project
  3. #
  4. # Permission is hereby granted, free of charge, to any person
  5. # obtaining a copy of this software and associated documentation
  6. # files (the "Software"), to deal in the Software without
  7. # restriction, including without limitation the rights to use, copy,
  8. # modify, merge, publish, distribute, sublicense, and/or sell copies
  9. # of the Software, and to permit persons to whom the Software is
  10. # furnished to do so, subject to the following conditions:
  11. #
  12. # The above copyright notice and this permission notice shall be
  13. # included in all copies or substantial portions of the Software.
  14. #
  15. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18. # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  19. # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  20. # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  21. # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22. # SOFTWARE.
  23. #
  24. import argparse
  25. import os
  26. import pathlib
  27. # To input image as argument
  28. parser = argparse.ArgumentParser()
  29. parser.add_argument('--img', type=pathlib.Path)
  30. args = parser.parse_args()
  31. FILE = open(args.img,'rb+')
  32. image = FILE.read()
  33. # Get location of avb image
  34. avb_header = b'AVB0'
  35. find_avb_str = image.find(avb_header)
  36. offset = FILE.seek(find_avb_str + 972)
  37. # Generating random 64 bit bytes to replace AVB Digest
  38. random = os.urandom(64)
  39. FILE.write(random)
  40. # Print
  41. print("AVB HEADER OFFSET: ", find_avb_str)
  42. print("AVB Digest: ", random.hex())
  43. print("-----AVB Patched successfully-----")