#!/bin/bash # # Auteur: # j0rn - cmdlime chez gmail # # Usage: # ./shellcode_extractor -s helloworld.asm # # ou 'helloworld.asm' est la source nasm # il ne doit pas y avoir de .data, juste # une partie code, un shellcode quoi... # # ou # # ./shellcode_extractor -f helloworld # # ou 'helloworld' est un binaire ELF # dont on sait qu'il aura peut etre des # chances de nous donner quelque chose ;p # (typiquement un shellcode compilé ELF) # if [ $# -ne 2 ] then echo "Usage: $(basename $0) [-s .asm source|-f ELF binary]" exit 1 fi getopts "s:f:" flag case $flag in s) sourcefile="$2" binaire="$(basename $sourcefile .asm)" objet="$binaire.o" echo "source : $sourcefile" echo "objet : $objet" echo "binaire : $binaire" nasm -f elf $sourcefile -o $objet && ld $objet -o $binaire && taille=$(($(echo 0x$(readelf -t $binaire 2>&1 | awk '/.text/ {getline; print $4}')))) && od -An -j96 -N$taille -w$taille -tx1 $binaire | sed -e 's| |\\x|g' && rm -f $objet $binaire ;; f) binaire=$2 echo "binaire : $binaire" taille=$(($(echo 0x$(readelf -t $binaire 2>&1 | awk '/.text/ {getline; print $4}')))) && od -An -j96 -N$taille -w$taille -tx1 $binaire | sed -e 's| |\\x|g' ;; *) echo "Usage: $(basename $0) [-s .asm source|-f ELF binary]" exit 1 ;; esac exit 0