#!/usr/bin/perl use Getopt::Std; my %argx; getopt("a:g:h",\%argx); sub help{ print qq{ [+] tarants 0.2b || C1c4Tr1Z [+] Uso: $0 [-gh] -a [archivo] [+] Opcionales: -g out guardar output pruba (C). -h ayuda. }; exit(0); } sub output{ my $out=shift(@_); my $gena=shift(@_); print "[+]Output: $out $/"; open(GOUT, "> $out") || die "[-]$! << EOF\n"; print GOUT "#include \n"; gen($gena); print GOUT $retchar; print GOUT qq{int main(){ void (*shell)() = (void *)shellcode; shell(); exit(1); } /* generated by tarants v0.2b */}; close(GOUT); print $retchar; print "[+] << EOF\n"; } sub gen($){ $narch=shift; $n=1; open(ARCHIVO,$narch) || die "[-]$! << EOF\n"; @chars=split(undef, ); close(ARCHIVO); $retchar="\nchar shellcode[]=\n\t\""; foreach $char(@chars){ chomp($char); $char=~s/([^*])/sprintf("\\x%02x", ord($1))/seg; if($n!=15){ $retchar.= $char; $n++ }else{ $retchar.= $char."\"\n\t\""; $n=1; } } $retchar.= "\";\n\n"; return $retchar; } if($argx{g} && $argx{a}){ if(!$argx{a}){ print STDERR "[-]No se especifico el archivo.. << EOF\n"; exit(0); }else{ output($argx{g},$argx{a}); } } if($argx{a} && !$argx{g}){ gen($argx{a}); print $retchar; } if(!$argx{a} || $argx{h}){ help(); }