Skip to content
This repository was archived by the owner on Mar 6, 2022. It is now read-only.

Commit

Permalink
Support selective extraction of partitions
Browse files Browse the repository at this point in the history
  • Loading branch information
chirayudesai committed Sep 16, 2019
1 parent d69244d commit ee936ee
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions extract_android_ota_payload.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ def parse_payload(payload_f, partition, out_f):
else:
raise PayloadError('Unhandled operation type (%d)' % operation.type)

def main(filename, output_dir):
def main(filename, output_dir, partition):
if filename.endswith('.zip'):
print("Extracting 'payload.bin' from OTA file...")
ota_zf = zipfile.ZipFile(filename)
Expand All @@ -116,6 +116,8 @@ def main(filename, output_dir):
payload.Init()

for p in payload.manifest.partitions:
if (partition is not None and p.partition_name != partition):
continue
name = p.partition_name + '.img'
print("Extracting '%s'" % name)
fname = os.path.join(output_dir, name)
Expand All @@ -131,15 +133,26 @@ def main(filename, output_dir):
try:
filename = sys.argv[1]
except:
print('Usage: %s payload.bin [output_dir]' % sys.argv[0])
print('Usage: %s payload.bin [output_dir] [partition_name]' % sys.argv[0])
sys.exit()

try:
output_dir = sys.argv[2]
except IndexError:
output_dir = os.getcwd()

try:
partition = sys.argv[3]
except IndexError:
try:
if not os.path.exists(sys.argv[2]):
partition = sys.argv[2]
else:
partition = None
except IndexError:
partition = None

if not os.path.exists(output_dir):
os.makedirs(output_dir)

main(filename, output_dir)
main(filename, output_dir, partition)

0 comments on commit ee936ee

Please sign in to comment.