| 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. | #!/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 <stdio.h>\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, <ARCHIVO>);
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();
} |