#!/bin/sh PART=input.part BLUE='\033[1;34m' WHITE='\033[1;37m' NC='\033[0m' hd "$PART" | grep -E '^[0-9a-f]{8} d0 0d fe ed' --line-buffered | \ while read LINE; do echo "$WHITE$LINE$NC" OFFSET=`echo "$LINE" | cut -d' ' -f1` LENGTH=`echo "$LINE" | cut -d' ' -f7-10 | sed -e 's/ //g'` DTB="$OFFSET.dtb" DTS="$OFFSET.dts" echo "${BLUE}extracting $DTB$NC" OxOFFSET="0x$OFFSET" OxLENGTH="0x$LENGTH" dd if="$PART" of="$DTB" bs=1 skip=$((OxOFFSET)) count=$((OxLENGTH)) echo -n "${BLUE}decompiling$NC" dtc "$DTB" -I dtb -o "$DTS" -O dts > /dev/null 2>&1 echo " done" echo done