Data hiding: inversione di byte o bit

Leggendo il post di Denis mi è venuto in mente di riprendere lo script che pubblicai tempo fa su CFI ML e metterlo a disposizione di chiunque voglia studiare nuove tecniche di data hiding basate sull’inversione della posizione dei byte.

Per capire meglio come avviene l’inversione basta guardare bene questa immagine

E’ come se il file si guardasse allo specchio. In questo modo il primo byte diventa l’ultimo, il secondo il penultimo e così via fino a invertire completamente la posizione di tutti i byte che compongono il file.

Il sorgente è scaricabile da qui: mirror.sh

#!/bin/bash

## Reverse bytes
## by Gianni ‘guelfoweb’ Amato

## This script is released under the terms of the GNU GPL v3

usage(){
echo “usage: $0 [ source ] [ target ]”
}

if [ $# -lt 2 ]; then
usage
exit -1
fi

if [ ! -f $1 ]; then
echo “source file not found: $1″
usage
exit 0
fi

if [ -f $2 ]; then
echo “target file exists: $2″
usage
exit 0
fi

BYTEIN=`wc –byte $1 | cut -d” ” -f1`    #Byte count file input
echo “reverse current $1 in $2″
echo “writing $BYTEIN byte(s) in $2″

for i in `seq 1 $BYTEIN`
do
SKIP=$(($BYTEIN – $i))    #Decreases by one
dd if=$1 skip=$SKIP count=1 bs=1 >> $2 2> /dev/null
echo -ne “.”
done

BYTEOUT=`wc –byte $2 | cut -d” ” -f1`    #Byte count file output
if [ $BYTEIN = $BYTEOUT ]; then    #Byte verify
echo
echo “finished!”
else
echo
echo “error: invalid byte(s)”
fi
exit 0

usage: bash mirror.sh [ source ] [ target ]

La soluzione descritta da Denis è ancora più diabolica: anzichè lavorare sui byte propone l’inversione dei bit. Per i dettagli vi rimando al post sul suo blog.

Buono studio!

Questa voce è stata pubblicata in code, forensics, tool e contrassegnata con , . Contrassegna il permalink.

I commenti sono chiusi.