Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 878 Bytes

README.md

File metadata and controls

27 lines (21 loc) · 878 Bytes

identifile

A small wrapper around libmagic to identify a file at every byte offset. It is useful for finding file system images embedded in firmware upgrade images, or identifying file (fragments) recovered after a file system/hard drive crash, among other uses. Basically, it is a fast (and not Linux-specific) version of

#!/usr/bin/env bash

skipdata="yes"
if [ "$1" = "-d" ]; then skipdata=""; shift; fi

file="${1:?Specify a file}"
fsize=$( [ -r "$file" ] && stat -c %s "$file" ) || { echo "Unable to read $file"; exit; }

for (( i = 0; $i < $fsize; i++ ))
do
   type="$( dd if="$file" bs=1 skip=$i count=4096 2>/dev/null | file - )"
   type="${type#*: }"
   if [ "$skipdata" -a "$type" = "data" ]; then continue; fi
   printf 'offset = %d type = %s\n' $i "$type"
done

The origin home page (with downloads) is here.