MultiFat Detector - per i pen drive multistrato FAT
Dall'esercizio proposto da Mario Pascucci (QUI), mi è venuta l'ispirazione per scrivere questo scriptino, che non fa altro che cercare, tramite sigfind, le signature 55AA delle partizioni FATx, e poi dagli offset, ricavati dalla moltiplicazione del numero di settore, trovato da sigfind, per 512 bytes, ricava il valore dei byte 32,33,34,35 delle FATx trovate e li converte in Big Endian, per poi calcolare la lunghezza totale della partizione in settori. Infine, crea tutte le immagini dd contenenti le possibili partizioni nascoste.
Sicuramente è grezzo, però abbastanza veloce, su 2Gb di pen-drive con tre strati, ci ha messo poco più di 20 minuti.
Mi piacerebbe renderlo multi File System, ma c'è da studiarsi bene i bytes che contengono i total sectors, dei vari file systems....e poi si potrebbe espanderlo con più features...comunque è un inizio ;)
#!/bin/bash # MultiFat detector by Nanni Bassetti - http://www.nannibassetti.com # It runs in this way: sh multiFat.sh disk.dd fat (e.g.) file=$1 fs=$2 # looking for the signatures date sigfind -t $fs $file > sigs.txt # taking only the sectors for i in $(cat sigs.txt | awk -F "Block:" '{print $2}'|awk '{print $1}') do offset=$(( $i*512 )) j=$(( j+1 )) start_byte_fat_len=$(echo $offset + 32 | bc) # controlling the word "FAT" inside the target partition fat_flag=$(xxd -s $offset -l 512 $file| grep -i FAT) if [ "$fat_flag" ] then # extracting bytes 32-35 from FAT xxd -s $start_byte_fat_len -l 4 $file | awk -F ":" '{print $2}' | xxd -p -r >lung.bin #converting in big endian dd if=lung.bin of=l1 skip=3 count=1 bs=1c dd if=lung.bin of=l2 skip=2 count=1 bs=1c dd if=lung.bin of=l3 skip=1 count=1 bs=1c dd if=lung.bin of=l4 skip=0 count=1 bs=1c cat l1 l2 l3 l4 > l.dat rm l1 rm l2 rm l3 rm l4 rm lung.bin #calculating the partition length len=$(cat l.dat|xxd -p | tr [:lower:] [:upper:]) # converting in decimal len2=$(echo "obase=10; ibase=16; $len" | bc) dd if=$file of=hidden$j.dd skip=$i count=$len2 bs=512 rm l.dat fi done ls -l *.dd date exit
Non scagliate i pomodori...è solo un piccolo esercizio ;) ! (Test sono graditi)
QUI c'è l'evoluzione del programmino...
|