avb_digest_patch.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. if find_avb_str == -1:
  37. print("ERROR: AVB header not found in image")
  38. FILE.close()
  39. exit(1)
  40. offset = FILE.seek(find_avb_str + 972)
  41. # Generating random 64 bit bytes to replace AVB Digest
  42. random = os.urandom(64)
  43. FILE.write(random)
  44. FILE.close()
  45. # Print
  46. print("AVB HEADER OFFSET: ", find_avb_str)
  47. print("AVB Digest: ", random.hex())
  48. print("-----AVB Patched successfully-----")