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 - Kaxperday

#441
Programación C/C++ / Re: Algo heavy en C++
13 Julio 2015, 13:29 PM
Pero.. ¿con mutex lo que hago no es detener un proceso (async o thread) para centrarme en otro? Es decir, cuando haga el lock el otro proceso se detendría y podría añadir los hosts pero en ese tiempo el otro proceso estaría muerto, no me parece tampoco muy buena solución.

De todas formas seguiré leyendo acerca de ello a ver si lo acabo entendiendo.

Básicamente lo que sé es que es un método de pasarse la pelota entre procesos, y no sería lo más eficiente, quizás podríamos saltarlo y que funcionara. O utilizar otro método como variables volatiles globales, ¿podría funcionar?

Saludos.
#442
Bueno, me resulta curiosa y cuanto menos oportuna la noticia, pues hace a penas 2 días vi un documental sobre cómo se escapaba de prisiones y como consiguió albergar tal inmensa fortuna...

Así que cuando ví que se escapaba, pensé que era una noticia vieja de cuando le capturaron por primera vez, pero no es que el tipo se acababa de escapar de la prisión por un tunel que habían cavado desde una casa a 1,5km de distancia.

Ese tipo asesinó a miles de personas y su cartel no para de corromper a las fuerzas del poder, amenazándolas de muerte.

Lo que realmente me preocupa es hay gente que lo apoya, y lo tiene como un héroe o un ídolo, la verdad les faltan varias reflexiones a esas personas. O quizás probar la propia medicina que están promoviendo.

Hoy ha salido el mayor delincuente del mundo de la cárcel, por segunda vez, creo que para una persona que ha cometido tales atrocidades y ha creado un ejército de asesinos  sin piedad dedicado a la extorsión, la droga y la corrupción, ojalá acabe en Guantánamo pronto y sus hijos que quieren seguir sus pasos también.

Recordad: "Lo único necesario para que el mal triunfe es que los hombre buenos no hagan nada". Edmund Burke.  ;)

http://www.elmundo.es/america/2015/07/12/55a20bf0ca474100478b456c.html

Saludos.
#443
Programación C/C++ / Algo heavy en C++
12 Julio 2015, 20:58 PM
Hola miren, quiero realizar un MITM a la red, para ello me estoy sirviendo de wpcap.

Tengo la lista de usuarios en la red con su ip y mac asociada.

Ahora bien ya se como mandar mensajes ARP response para engañarlos y que me manden los datos a mí, el problema viene ahora.

Los mensajes ARP respose se los mando a los usuarios de una lista donde tengo las ips y sus macs de los usuarios de la red.

Lo que quiero es pasar el vector donde tengo las ips y macs a una funcion para que mande ARP responses a los hosts, pero a la vez quiero estar monitoreando el tráfico y añadiendo nuevos miembros a esa lista, y en caso de que uno falle o no responda ni un paquete en X tiempo quitarlo, si el numero de hosts es menor a X también se detendría, no sé si sería buena idea hacer 2 asyncs o threads.

Uno para mandar ARP responses y envenenar la red y otro que mientras me actualice la lista de hosts con sus ip y mac, la duda es:

¿Si tengo 2 asyncs que comparten una variable en este caso una clase que contiene un vector con la lista de usuarios, y una me está añadiendo y eliminando elementos mientras otra está trabajando con ellos, ¿fallaría el programa o no?

Ya os digo usar 2 asyncs o threads, uno escanea y actualiza la red y otro hace el spoofing.

Nada más, sino también se me ocurre meterlo todo en una función pero no sería igual de elegante y quedaría un poco gorda.

Saludos.
#444
Pero que quieres hacer, ¿eliminar los acentos o cambiar los carácteres por vocales sin acento?

Edito: no puedes igualar una cadena a un caracter.

Tendrías que coger un elemento de la cadena, ejemplo cadena[0].

Saludos.

Prueba esto:

Código (cpp) [Seleccionar]

string cadena = "hola quiero eliminar los caráceteres acentuados de ésta cadéna";
remove(cadena.begin(), cadena.end(), 'á');
remove(cadena.begin(), cadena.end(), 'é');
remove(cadena.begin(), cadena.end(), 'í');
remove(cadena.begin(), cadena.end(), 'ó');
remove(cadena.begin(), cadena.end(), 'ù');
printf("%s", cadena.c_str());


Salida:

Citarhola quiero eliminar los carceteres acentuados de sta cadna

:xD :xD :xD :xD
#445
Los acentos los llevan solo las vocales, hay 5 vocales. Las vocales con acento representan 5 carácteres que están fuera del rango ASCII.

Código (cpp) [Seleccionar]
printf("%d %d %d %d %d", 'á', 'é', 'í', 'ó', 'ú');

La salida es:

-31 -23 -19 -13 -6

Simplemente cuando encuentre un caracter con uno de esos valores lo tienes que sustituir por el caracter ASCII de la vocal sin acentuación.

Código (cpp) [Seleccionar]
if(caracter==-31)
{
caracter='a';
}


Edito: o que leches, simplemente:

Código (cpp) [Seleccionar]
if(caracter=='á')
{
caracter='a';
}


Creo haber entendido que quiere quitar los acentos para sustituirlos por vocales sin acentos. Si quieres eliminar los acentos de una cadena, utiliza este método para identificarlos y luego simplemente copia caracter a caracter en otra cadena, utilizando a ser posible reserva de memoria dinámica.

Saludos.
#446
Pues según esto ya lo estoy haciendo:

http://codigomaldito.blogspot.mx/2005/12/funciones-inline.html

//Clase con funciones INLINE
#include <iostream>
using std::cout;
using std::endl;
class Prueba
{
private:
  int x;
public:
  Prueba(int val = 0)
    {
      x = val;
    }
  void Establecer(int valor)
  {
    x = valor;
  }
  int Obtener ()
  {
    return x;
  }
};


Aunque como dice ivancea es mejor dejar sólo las declaraciones en la cabecera y las definiciones en el cpp.  :P

Saludos.
#447
Entonces quieres decir que lo mejor es ponerlo en el ".cpp", lo imaginaba pero no se me hace "bonito" verlo así. De todas formas lo tendré en cuenta para no hacerlo compilar más de una vez.

Saludos.
#448
y entonces no hay alguna forma de meterlo en un archivo de cabecera (todo el contenido de la clase) sin que eso ocurra, o algún método más eficiente?.

Saludos.
#449
Hola de nuevo  :xD :xD, tengo una clase definida en la cabecera, pero al poner sus métodos dentro de la cabecera (archivo ".h") me da error sin embargo al poner sus métodos en el ".cpp" no da error, ¿que solución puedo tomar?.

Código (cpp) [Seleccionar]
struct host
{
public:
u_char ip[4];
u_char mac[6];
};

class lista_usuarios
{
public:
vector<host> usuarios;
bool contiene_host(u_char* ip, u_char* mac);
void insertar_host(u_char* ip, u_char* mac);
};

void lista_usuarios::insertar_host(u_char* ip, u_char* mac)
{
int cont = 0, cant = 0;

for (int i = 0; i < usuarios.size(); i++)
{
cont = 0;
for (int j = 0; j < 4; j++)
if (ip[j] != usuarios[i].ip[j])
{
cont++;
break;
}

for (int j = 0; j < 6; j++)
if (mac[j] != usuarios[i].mac[j])
{
cont++;
break;
}
if (cont == 2)
cant++;
}

if (cant == usuarios.size())
{
host usuario;
for (int j = 0; j < 4; j++)
usuario.ip[j] = ip[j];
for (int j = 0; j < 6; j++)
usuario.mac[j] = mac[j];
usuarios.push_back(usuario);
}
}


Cuando pongo esto en "capturador.h" me sale el siguiente error:

CitarError   8   error LNK2005: ya se definió "public: void __thiscall lista_usuarios::insertar_host(unsigned char *,unsigned char *)" (?insertar_host@lista_usuarios@@QAEXPAE0@Z) en main.obj

Ya os digo que simplemente al mover el método a el ".cpp" se corrige el error, pero ¿porque no me deja meterlo en la cabecera? No hay más definiciones que yo sepa XD

Saludos y gracias como siempre.

Edito_ Estoy en ello:

https://support.microsoft.com/en-us/kb/148652/es

Edito: Solucionado de rara manera ahora entiendo el error:

http://www.cplusplus.com/forum/beginner/30800/

El último comentario lo explica, lo que hice fue meter el metodo en el cuerpo de la funcion y quitar su declaracion cambiandola por la del cuerpo del método:

Código (cpp) [Seleccionar]
class lista_usuarios
{
private:
vector<host> usuarios;
public:
//bool contiene_host(u_char* ip, u_char* mac);
//void añadir_host(u_char* ip, u_char* mac);
//void eliminar_host(u_char* ip, u_char* mac);

void lista_usuarios::añadir_host(u_char* ip, u_char* mac)
{
int cont = 0, cant = 0;

for (int i = 0; i < usuarios.size(); i++)
{
cont = 0;
for (int j = 0; j < 4; j++)
if (ip[j] != usuarios[i].ip[j])
{
cont++;
break;
}

for (int j = 0; j < 6; j++)
if (mac[j] != usuarios[i].mac[j])
{
cont++;
break;
}
if (cont == 2)
cant++;
}

if (cant == usuarios.size())
{
host usuario;
for (int j = 0; j < 4; j++)
usuario.ip[j] = ip[j];
for (int j = 0; j < 6; j++)
usuario.mac[j] = mac[j];
usuarios.push_back(usuario);
}
};

};


Funciona, aunque no creo que sea el mejor método (pero al menos ya lo tengo en el ".h").

Saludos.
#450
Ok, lo tendré en cuenta, muchas gracias ivancea, nos vemos.

Saludos.