diff --git a/scripts/update_device.py b/scripts/update_device.py
index 18968aa..f515140 100755
--- a/scripts/update_device.py
+++ b/scripts/update_device.py
@@ -35,11 +35,10 @@
 import threading
 import xml.etree.ElementTree
 import zipfile
+import shutil
 
 from six.moves import BaseHTTPServer
 
-import update_payload.payload
-
 
 # The path used to store the OTA package when applying the package from a file.
 OTA_PACKAGE_PATH = '/data/ota_package'
@@ -323,19 +322,25 @@
 
 
 def PushMetadata(dut, otafile, metadata_path):
-  payload = update_payload.Payload(otafile)
-  payload.Init()
+  header_format = ">4sQQL"
   with tempfile.TemporaryDirectory() as tmpdir:
     with zipfile.ZipFile(otafile, "r") as zfp:
       extracted_path = os.path.join(tmpdir, "payload.bin")
       with zfp.open("payload.bin") as payload_fp, \
               open(extracted_path, "wb") as output_fp:
-          # Only extract the first |data_offset| bytes from the payload.
-          # This is because allocateSpaceForPayload only needs to see
-          # the manifest, not the entire payload.
-          # Extracting the entire payload works, but is slow for full
-          # OTA.
-        output_fp.write(payload_fp.read(payload.data_offset))
+        # Only extract the first |data_offset| bytes from the payload.
+        # This is because allocateSpaceForPayload only needs to see
+        # the manifest, not the entire payload.
+        # Extracting the entire payload works, but is slow for full
+        # OTA.
+        header = payload_fp.read(struct.calcsize(header_format))
+        magic, major_version, manifest_size, metadata_signature_size = struct.unpack(header_format, header)
+        assert magic == b"CrAU", "Invalid magic {}, expected CrAU".format(magic)
+        assert major_version == 2, "Invalid major version {}, only version 2 is supported".format(major_version)
+        output_fp.write(header)
+
+        shutil.copyfileobj(payload_fp, output_fp, manifest_size + metadata_signature_size)
+
 
       return dut.adb([
           "push",
diff --git a/scripts/update_payload/payload.py b/scripts/update_payload/payload.py
index 4abd63e..8771ee4 100644
--- a/scripts/update_payload/payload.py
+++ b/scripts/update_payload/payload.py
@@ -152,6 +152,19 @@
     self.Init()
 
   @property
+  def metadata_hash(self):
+    return self.manifest_hasher.digest()
+
+  @property
+  def payload_hash(self):
+    hasher = hashlib.sha256()
+    self.payload_file.seek(0)
+    hasher.update(self.payload_file.read(self.metadata_size))
+    self.payload_file.seek(self.header.metadata_signature_len, io.SEEK_CUR)
+    hasher.update(self.payload_file.read(self.total_data_length))
+    return hasher.digest()
+
+  @property
   def is_incremental(self):
     return any([part.HasField("old_partition_info") for part in self.manifest.partitions])
 
