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