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

#491
Nada:

Código (cpp) [Seleccionar]
BYTE *bMacAddr = (BYTE*)&MacAddr;
for (int i = 0; i < (int)PhyAddrLen; i++)
{
printf("%i", (int)bMacAddr[i]);
}


Salida:

6071175415229

Lejos de la cadena, mostrando enteros no obtendré un char*. Y para meterlo en sprintf..

Código (cpp) [Seleccionar]
for (int i = 0; i < (int)PhyAddrLen; i++)
{
printf("%i", (int)bMacAddr[i]);
sprintf(buf, "%c", (int)bMacAddr[i]);
printf("%c", buf[0]);
}


Probaré otros métodos.

Gracias de todas formas.
#492
Código (cpp) [Seleccionar]
BYTE *bMacAddr = (BYTE*)&MacAddr;
//for (int i = 0; i < (int)PhyAddrLen; i++)
// printf("%x", bMacAddr[i]);
//*(mac) = (char*)bMacAddr;
//printf("\n%s\n", (int)*(mac));
char buf[30];
char ok[40]="";


for (int i = 0; i < (int)PhyAddrLen; i++)
printf("%c", (char)(int)bMacAddr[i]);

printf("\n");
for (int i = 0; i < (int)PhyAddrLen; i++)
{
sprintf(buf, "%c", (int)bMacAddr[i]);
printf("%c", buf);
strcat(ok, buf);
}

//sprintf(buf, "%s", MacAddr);
printf("\n%s\n", ok);


No hay manera. 3 intentos 3 veces muestra basura.

Edito: Acabo de probar con _itoa y tampoco funciona, no hay manera.

Saludos.
#493
Imposible:

Código (cpp) [Seleccionar]
BYTE *bMacAddr = (BYTE*)&MacAddr;
for (int i = 0; i < (int)PhyAddrLen; i++)
printf("%x", bMacAddr[i]);
//*(mac) = (char*)bMacAddr;
//printf("\n%s\n", (int)*(mac));

//const int n = sprintf(NULL, 0, "%lu", MacAddr);
char buf[30];
sprintf(buf, "\n%s", MacAddr);
printf("\n%s\n", buf);


Ya lo probé antes y tampoco funciona, no hay manera he buscado ningún código funciona, al final lo acabaré pasando a u_char* y que lo **.

Edito: Produce error en el sprintf, "stack around the variable buff was corrupted".

Saludos.
#494
Pero imprimir ints por pantalla no me hará conseguir la cadena char*.
#495
Evidentemente ya busqué documentación incluyendo en MSDN.

Incluso ese mismo link, que para nada resuelve la duda, puesto que lo que hace es mostrar los bytes de la MAC usando un for, ya dije anteriormente que eso lo hacía sin problemas, y que el problema y duda por la que creé el hilo es porque quiero pasar de U_LONG a char* o string, no quiero mostrar Bytes por pantalla.

Dudo que la basura contenga los bytes de la MAC, puesto que "WinSock 2.0" no creo que tenga mucho que ver en ello.

Saludos.
#496
Eso pensé pero no sé porque no funcionó:

Código (cpp) [Seleccionar]
BYTE *bMacAddr = (BYTE*)&MacAddr;
*(mac) = (char*)bMacAddr;
printf("%s\n", *(mac));


La salida es:

<G◄6ÿ↔╠╠╠╠╠╠╠╠╠╠☻☻☻☻WinSock 2.0

Paso MacAddr que es U_LONG[2] a una cadena de bytes, que se almacena en bMacAddr, luegoesa cadena de Bytes trato de convertirla a una cadena Char*, pero al mostrar la salida sale basura, notar que al mostrar los bytes de bMacAddr en un for, la salida es correcta, mostrando la Mac.

Saludos.
#497
Línea 8, es de un código que saqué de esta función de la winpcap, aún no se que hace exactamente pero creo que ahí está la clave para hacer la conversión:

Código (cpp) [Seleccionar]
/* From tcptraceroute, convert a numeric IP address to a string */
#define IPTOSBUFFERS    12
char *iptos(u_long in)
{
   static char output[IPTOSBUFFERS][3*4+3+1];
   static short which;
   u_char *p;

   p = (u_char *)&in;
   which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
   _snprintf_s(output[which], sizeof(output[which]), sizeof(output[which]),"%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
   return output[which];
}]



Pero tampoco funciona, ¿que puedo hacer?, dejando de lado errores (que no sale ninguno), ¿no se puede pasar de Byte* a Char* de alguna manera?, esa es la pregunta de este hilo, y el código que he subido un intento de implementación fallido, si seguimos buscando errores en él no llegaremos a ninguna parte.

Saludos.
#498
Desarrollo Web / Re: ¿Como alquilar servidor?
26 Junio 2015, 21:48 PM
La idea es coger un servidor de un país sin apenas leyes. Pues no sé si será legal.

Porque la idea del proxy sería modificar los HTML, e inyectar javascript para por ejemplo visitar una pagina que me interese, o incluso para reenviar los datos de un form a otra página y poder recoger datos como el login, como mostró Chema Clonso en la DefCon en este video.

[youtube=640,360]https://www.youtube.com/watch?v=0QT4YJn7oVI[/youtube]

Lo que hace es alquilar un proxy, avisar que el tráfico a través de el será recopilado, y se pone a inyectar js maliciosos, que puede usar para múltiples funcionalidades, si el lo hizo será legal.

La pregunta real es.. ¿cómo lo hizo?

Saludos.
#499
Hola gracias por las respuestas, el programa compilaba con éxito, os muestro lo que tengo y la salida:

Código (cpp) [Seleccionar]
char buffer[20];
sprintf(buffer, "%llu", MacAddr);//convertimos el long long a char
*mac = buffer;//copiamos la direccion

printf("%s\n", *mac);//lo mostramos

static char output[IPTOSBUFFERS][3 * 4 + 3 + 1];
static short which;
u_char *p;

p = (u_char *)&MacAddr;
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
_snprintf_s(output[which], sizeof(output[which]), sizeof(output[which]), "%d%d%d%d%d%d", p[0], p[1], p[2], p[3], p[4], p[5]);
printf("%s", output[which]);
*mac = output[which];
system("pause");
/*printf("%s", (char*)&MacAddr);
*mac = (char*)&MacAddr;
BYTE *bMacAddr = (BYTE*)&MacAddr;
(mac) = (char*)bMacAddr;
for (int i = 0; i < (int)PhyAddrLen; i++)
{
printf("%x", bMacAddr[i]);
*(mac[i]) = (char)bMacAddr[i];
}*/


Citar8434662936278192
6071175415229

No obtengo nada, ahora estoy mirando la funcion iptos.

Saludos, sigo en ello.
#500
Código (cpp) [Seleccionar]
if (SendARP(destino, origen, MacAddr, &PhyAddrLen) == NO_ERROR)
{
if (PhyAddrLen)
{
*mac = (char*)&MacAddr;
/*BYTE *bMacAddr = (BYTE*)&MacAddr;
*(mac) = (char*)bMacAddr;
for (int i = 0; i < (int)PhyAddrLen; i++)
{
//printf("%x", bMacAddr[i]);
//*(mac[i]) = (char)bMacAddr[i];
}*/
return true;
}
}


MacAddr es un long que contiene la direccion mac, y necesito esa direccion mac en char*, mac es un char** que recibe de argumento.

*mac = (char*)&MacAddr;

No funciona, ¿que puedo hacer para el cambio?.

Saludos.