[C#] El cervanBot para underc0de

  • 2 Respuestas
  • 2747 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Cervantes_xD

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[C#] El cervanBot para underc0de

  • en: Agosto 22, 2011, 09:57:06 am
Bueno, pues en MitM ya lo tengo posteado xD

Es el mismo bot que estoy haciendo pero con modificaciones para UC, ya que el comando principal lo he implementado que es el de poder ver los post recientes en un foro SMF 2.0 como este y como mitm. Obviamente el cargo de Admin se lo dejo a ANTRAX que es el admin del canal, pero el code estará aquí para quien quiera bajarlo y ver las chapuzas que he hecho (LOL)

Código: C#
  1. //Program.cs
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using SocketsC;
  7.  
  8. namespace SocketsC
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             Socket cliente = You are not allowed to view links. Register or Login Socket();
  15.             cliente.Connect();
  16.         }
  17.     }
  18. }
  19.  

Código: C#
  1. //getWebDoc.cs
  2. using System.Web;
  3. using System.Net;
  4. using System.IO;
  5. using System.Text;
  6.  
  7.  
  8. namespace SocketsC
  9. {
  10.     class getWebDoc
  11.     {
  12.         public static void getDocMitM(ref List<String> noticias)
  13.         {
  14.             int ultimos = 0;
  15.             StringBuilder final = You are not allowed to view links. Register or Login StringBuilder("");
  16.  
  17.             if (noticias == null)
  18.             {
  19.                 noticias = You are not allowed to view links. Register or Login List<String>();
  20.             }
  21.             else
  22.                 if (noticias.Count != 0)
  23.                     noticias.RemoveAt(0);
  24.  
  25.             try
  26.             {
  27.  
  28.                 String baseUri = "http://www.underc0de.org/foro/SSI.php?ssi_function=recentTopics";
  29.                 HttpWebRequest connection =
  30.                 (HttpWebRequest)HttpWebRequest.Create(baseUri);
  31.  
  32.                 connection.Method = "GET";
  33.                 HttpWebResponse response =
  34.                 (HttpWebResponse)connection.GetResponse();
  35.  
  36.                 StreamReader sr =
  37.                 You are not allowed to view links. Register or Login StreamReader(response.GetResponseStream(),
  38.                 Encoding.UTF8);
  39.  
  40.                 String respuesta;
  41.  
  42.                 while (!sr.EndOfStream)
  43.                 {
  44.                     respuesta = sr.ReadLine();
  45.                     //Console.WriteLine(respuesta);
  46.                     try
  47.                     {
  48.                         if (respuesta.Length > 5)
  49.                         {
  50.                             if (respuesta.Substring(0, 6) == "\t\t\t\t\t[")
  51.                             {
  52.                                 //Console.WriteLine(respuesta);
  53.                                 sr.ReadLine();
  54.                                 sr.ReadLine();
  55.                                 respuesta = sr.ReadLine();
  56.                                 int i = 0;
  57.  
  58.                                 while (respuesta.ElementAt<char>(i) != '\"')
  59.                                     i++;
  60.                                 i++;
  61.  
  62.                                 while (respuesta.ElementAt<char>(i) != '\"')
  63.                                 {
  64.                                     final.Append(respuesta.ElementAt<char>(i));
  65.                                     i++;
  66.                                 }
  67.  
  68.                                 final.Append(" - ");
  69.                                 i = i+2;
  70.  
  71.                                 while (respuesta.ElementAt<char>(i) != '<')
  72.                                 {
  73.                                     final.Append(respuesta.ElementAt<char>(i));
  74.                                     i++;
  75.                                 }
  76.                                 final.Append("\r\n");
  77.                                 noticias.Add(final.ToString());
  78.                                 final.Clear();
  79.                                
  80.                                 ultimos++;
  81.                                 if (ultimos == 5)
  82.                                 {
  83.                                     break;
  84.                                 }
  85.                             }
  86.                         }
  87.                     }
  88.                     catch { }
  89.                 }
  90.                 sr.Dispose();
  91.                 sr.Close();
  92.             }
  93.             catch
  94.             {
  95.                 Console.WriteLine("No se ha podido obtener documento");
  96.             }
  97.         }        
  98.     }
  99. }
  100.  

Código: C#
  1. //Socket.cs
  2. using System;
  3. using System.Threading;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Net.Sockets;
  8. using System.IO;
  9.  
  10. namespace SocketsC
  11. {
  12.     class Socket
  13.     {
  14.         string admin = "ANTRAX";
  15.         string publicos = "Publicos: <!help> <!MD5 cadena> <!news>\r\n";
  16.         string privados = "Privados: <quit> <exit> <reconnect>\r\n";
  17.  
  18.         TcpClient socketForServer;
  19.         string server = "ifg.ircnode.com";
  20.         int puerto = 6667;
  21.         string canal = "#underc0de";
  22.         StreamReader streamReader;
  23.         StreamWriter streamWriter;
  24.         String usuario = "";
  25.         String comando;
  26.         int salidaApp = 0;
  27.         List<String> noticias = You are not allowed to view links. Register or Login List<String>();
  28.  
  29.         public static int numPalabras(string cad)
  30.         {
  31.             int pal = 1;
  32.             int i = 0;
  33.             try
  34.             {
  35.                 while (i < cad.Length)
  36.                 {
  37.                     if (cad.ElementAt<char>(i) == ' ')
  38.                     {
  39.                         pal++;
  40.                         //Console.WriteLine((int)cad.ElementAt<char>(i));
  41.                     }
  42.                     i++;
  43.                 }
  44.             }
  45.             catch
  46.             { }
  47.             return pal;
  48.         }
  49.  
  50.         public static string MD5(string password)
  51.         {
  52.             System.Security.Cryptography.MD5CryptoServiceProvider x = You are not allowed to view links. Register or Login System.Security.Cryptography.MD5CryptoServiceProvider();
  53.             byte[] bs = System.Text.Encoding.UTF8.GetBytes(password);
  54.             bs = x.ComputeHash(bs);
  55.             System.Text.StringBuilder s = You are not allowed to view links. Register or Login System.Text.StringBuilder();
  56.             foreach (byte b in bs)
  57.             {
  58.                 s.Append(b.ToString("x2").ToLower());
  59.             }
  60.             password = s.ToString();
  61.             return password;
  62.         }
  63.  
  64.         public void getComUser(String orden, ref String user, ref String command)
  65.         {
  66.             try
  67.             {
  68.                 String commandPri = "";
  69.                 //Capturando el comando
  70.                 command = "";
  71.                 int i = 1;
  72.                 while (orden.ElementAt<char>(i) != ':')
  73.                 {
  74.                     i++;
  75.                 }
  76.                 i++;
  77.                 command = orden.Substring(i, orden.Length - i);
  78.                 if (numPalabras(command) > 1)
  79.                 {
  80.                     i = 0;
  81.                     while (command.ElementAt<char>(i) != ' ')
  82.                     {
  83.                         i++;
  84.                     }
  85.                    
  86.                     commandPri = command.Substring(0, i);
  87.                     //Console.WriteLine(commandPri);
  88.                 }
  89.                
  90.  
  91.                 //Capturando el user
  92.                 user = "";
  93.                 i = 1;
  94.                 while (orden.ElementAt<char>(i) != '!')
  95.                 {
  96.                     i++;
  97.                 }
  98.                 user = orden.Substring(1, i-1);
  99.                 Console.WriteLine(user+"/"+command);
  100.  
  101.                 if (command == "quit")
  102.                 {
  103.                     if (user == admin)
  104.                     {
  105.                         streamWriter.WriteLine("PART "+canal+"\r\n");
  106.                         streamWriter.Flush();
  107.                         streamWriter.WriteLine("QUIT\r\n");
  108.                         streamWriter.Flush();
  109.                         streamWriter.Close();
  110.                         streamReader.Close();
  111.                         salidaApp = 1;
  112.                     }
  113.                 }
  114.                 if (commandPri == "!MD5")
  115.                 {
  116.                     i = 0;
  117.                     while (command.ElementAt<char>(i) != ' ')
  118.                         i++;
  119.                     i++;
  120.  
  121.                     streamWriter.WriteLine("PRIVMSG "+canal+" :" + user + ": " + MD5(command.Substring(i, command.Length - i)));
  122.                     streamWriter.Flush();
  123.                 }
  124.                 if (command == "reconnect")
  125.                 {
  126.                     if (user == admin)
  127.                     {
  128.                         streamWriter.WriteLine("JOIN " + canal + "\r\n");
  129.                         streamWriter.Flush();
  130.                     }
  131.                 }
  132.                 if (command == "exit")
  133.                 {
  134.                     if (user == admin)
  135.                     {
  136.                         streamWriter.WriteLine("PART " + canal + "\r\n");
  137.                         streamWriter.Flush();
  138.                     }
  139.                 }
  140.                 if (command == "!news")
  141.                 {
  142.                     getWebDoc.getDocMitM(ref noticias);
  143.                     while(noticias.Count != 0)
  144.                     {
  145.                         string notAct = noticias.ElementAt<String>(0);
  146.                         streamWriter.WriteLine("PRIVMSG " + canal + " :" + notAct);
  147.                         streamWriter.Flush();
  148.                         noticias.RemoveAt(0);
  149.                     }
  150.                 }
  151.                 if (command == "!help")
  152.                 {
  153.                     streamWriter.WriteLine("PRIVMSG " + canal + " :" + user);
  154.                     streamWriter.Flush();
  155.                     streamWriter.WriteLine("PRIVMSG "+ canal + " :" + publicos);
  156.                     streamWriter.Flush();
  157.                     streamWriter.WriteLine("PRIVMSG " + canal + " :" + privados);
  158.                     streamWriter.Flush();
  159.                 }
  160.  
  161.             }
  162.             catch
  163.             {
  164.                 //Console.WriteLine("Crap");
  165.             }
  166.         }
  167.  
  168.         public void Connect()
  169.         {
  170.              
  171.             try
  172.             {  
  173.                 //Creamos un TcpCliente y le pasamos
  174.                 //el server y el puerto.
  175.                 socketForServer = You are not allowed to view links. Register or Login TcpClient(server, puerto);
  176.             }
  177.             catch
  178.             {
  179.                 Console.WriteLine(
  180.                 "No se pudo conectar a {0}:{1}", server, puerto);
  181.                 return;
  182.             }
  183.  
  184.  
  185.             //aqui es lo mismo que en el server. Usamos StreamWriter y Reader.
  186.             NetworkStream networkStream = socketForServer.GetStream();
  187.  
  188.             streamReader =
  189.                   You are not allowed to view links. Register or Login System.IO.StreamReader(networkStream);
  190.  
  191.             streamWriter =
  192.                   You are not allowed to view links. Register or Login System.IO.StreamWriter(networkStream);
  193.  
  194.             try
  195.             {
  196.                 //Básico para la conexión
  197.                 String salida;
  198.                 String outputString = streamReader.ReadLine();
  199.                 Console.WriteLine(outputString);
  200.                 outputString = streamReader.ReadLine();
  201.                 Console.WriteLine(outputString);
  202.  
  203.                 streamWriter.WriteLine("PASS miclavedered1"); //1.- Clave de red
  204.                 streamWriter.Flush();
  205.                 streamWriter.WriteLine("NICK cervanBot\r\n"); //2.- Nick del bot
  206.                 streamWriter.Flush();
  207.                 //A partir de aquí el servidor comenzará a enviar PINGS
  208.                 outputString = streamReader.ReadLine();
  209.                 salida = outputString.Substring(0, 4);
  210.                 Console.WriteLine(outputString);
  211.                 if (salida == "PING")
  212.                 {
  213.                     streamWriter.WriteLine("PONG" + outputString.Substring(4, outputString.Length - 4));
  214.                     streamWriter.Flush();
  215.                 }
  216.                 streamWriter.WriteLine("USER cervbot tolmoon tolsun :Bot Cervantes\r\n");
  217.                             //3.- Nombre de usuario. Ya desde aquí oficialmente estás dentro de la red
  218.                 streamWriter.Flush();
  219.  
  220.                 outputString = streamReader.ReadLine();
  221.                 salida = outputString.Substring(0, 4);
  222.                 Console.WriteLine(outputString);
  223.                 if (salida == "PING")
  224.                 {
  225.                     streamWriter.WriteLine("PONG" + outputString.Substring(4, outputString.Length - 4));
  226.                     streamWriter.Flush();
  227.                 }
  228.                 streamWriter.WriteLine("JOIN "+canal+"\r\n"); //4.- Nos unimos al canal
  229.  
  230.                 streamWriter.Flush();
  231.  
  232.                 while (true)
  233.                 {
  234.                     outputString = streamReader.ReadLine();
  235.                     salida = outputString.Substring(0, 4);
  236.                     if (salida == "PING")
  237.                     {
  238.                         Console.WriteLine(outputString);
  239.                         streamWriter.WriteLine("PONG" + outputString.Substring(4, outputString.Length - 4));
  240.                         streamWriter.Flush();
  241.                         //Respondiendo a los PINGS
  242.                     }
  243.                     else
  244.                         getComUser(outputString, ref usuario, ref comando);
  245.                     if (salidaApp == 1)
  246.                         break;
  247.                 }
  248.              
  249.             }
  250.             catch
  251.             {
  252.                 Console.WriteLine("Exception reading from Server");
  253.                 //Se cagó el socket
  254.             }
  255.             finally
  256.             {
  257.                 networkStream.Close();
  258.             }
  259.         }
  260.  
  261.     }
  262. }
  263.  

Espero que les guste y que no me fusilen por las cagadas que de seguro tendrá el code xD pero sobretodo no quería usar regex y me he quebrado la cabeza para lograrlo. No obstante, mereció la pena x)

Un saludo.
« Última modificación: Mayo 27, 2014, 09:46:43 pm por Expermicid »
You are not allowed to view links. Register or Login

Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python

Re:[C#]El cervanBot para underc0de

  • en: Agosto 22, 2011, 10:54:39 am
Lindo code, muy elaborado ;)
You are not allowed to view links. Register or Login

Desconectado _katze_

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:[C#]El cervanBot para underc0de

  • en: Diciembre 07, 2011, 10:15:55 pm
trata de implementar DISPOSABLE, sino los socket pueden dar error, o si ai un error inesperado y no controlado puede aver un cuelgue en muchos casos, en fin..detalles

 

Microsoft lanza Code Hunt, un juego para aprender programación

Iniciado por Alejandro_99

Respuestas: 0
Vistas: 2540
Último mensaje Junio 13, 2014, 04:18:26 pm
por Alejandro_99
Las mejores herramientas para todo desarrollador principiante de .NET byfudmario

Iniciado por fudmario

Respuestas: 5
Vistas: 3778
Último mensaje Marzo 19, 2020, 03:12:13 pm
por francisxt
Crear Aplicaciones en C# para subir videos de Youtube

Iniciado por Snifer

Respuestas: 0
Vistas: 2685
Último mensaje Febrero 24, 2011, 01:16:23 am
por Snifer
Cheat-Sheet C# - Hoja guía para que no se me olvide

Iniciado por Denisse

Respuestas: 1
Vistas: 858
Último mensaje Agosto 08, 2020, 07:53:44 pm
por lotus
[info] Ideas para encriptar ejecutables .net en runtime

Iniciado por Cyb3r2876

Respuestas: 0
Vistas: 2648
Último mensaje Enero 10, 2014, 07:45:51 am
por Cyb3r2876