comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[C#] El cervanBot para underc0de

  • 2 Respuestas
  • 1939 Vistas

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

Desconectado Cervantes_xD

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« 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
« Respuesta #1 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
« Respuesta #2 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

 

¿Te gustó el post? COMPARTILO!



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

Iniciado por Alejandro9999

Respuestas: 0
Vistas: 1520
Último mensaje Junio 13, 2014, 04:18:26 pm
por Alejandro9999
[info] Ideas para encriptar ejecutables .net en runtime

Iniciado por Cyb3r2876

Respuestas: 0
Vistas: 1632
Último mensaje Enero 10, 2014, 07:45:51 am
por Cyb3r2876
[C#] Source de un programa para completar ofertas de offerwalls.

Iniciado por ragaza

Respuestas: 0
Vistas: 262
Último mensaje Mayo 19, 2018, 03:24:39 pm
por ragaza
Clase en c# para hacer consultas a Bases de datos

Iniciado por Devilboy

Respuestas: 5
Vistas: 6605
Último mensaje Febrero 25, 2011, 08:56:10 pm
por _katze_
Crear Aplicaciones en C# para subir videos de Youtube

Iniciado por Snifer

Respuestas: 0
Vistas: 1666
Último mensaje Febrero 24, 2011, 01:16:23 am
por Snifer