elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error copiando u_char* con apis
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error copiando u_char* con apis  (Leído 2,368 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Error copiando u_char* con apis
« en: 26 Julio 2015, 23:48 pm »

Código
  1. u_char ip[4];
  2. u_char mac[6];
  3. /*for (int i = 0; i < 4; i++)
  4. ip[i]=pkt_data[i+28];
  5. for (int i = 0; i < 6; i++)
  6. mac[i] = pkt_data[i + 22];*/
  7.  
  8. _mbscpy_s(ip, _TRUNCATE, pkt_data +28);
  9. _mbscpy_s(mac, _TRUNCATE, pkt_data+22);

Salida con las apis (usando _mbscpy_s):

Citar
c0a81260cccccccccc
c0a81190ef684965a6
c0a81188329b236d40
c0a81260329b236d40
c0a81190ef684965a6
c0a81188329b236d40
c0a81260329b236d40
c0a81190ef684965a6
c0a81170188bc327db

Salida usando el for:

Citar
c0a812188329b236d40
c0a81260234d5f2697
c0a81c990ef684965a6
c0a81260234d5f2697
c0a812188329b236d40
c0a81c990ef684965a6
c0a812188329b236d40
c0a81260234d5f2697
c0a81c990ef684965a6

No funciona bien _mbscpy_s, ¿¿porque??

Saludos.

Edito: Creo que el fallo radica en que estoy usando UNICODE de juego de caracteres del proyecto, y la funcion como pone aqui:

https://msdn.microsoft.com/en-us/library/td1esda9.aspx

Es para multybyte, y para unicode  sería usar wcscpy_s, (pero ahi ya no sería un argumento de u_char*), ademas _mbscpy_s no da error, ¿que pasa?

Tambien añado que estoy cambiando el proyecto, pues donde antes ponia bucles sustituirlo por apis que hagan lo mismo, pero ya véis como me van de bien, lo mismo ocurre con _mbsicmp que compara u_char* con un u_char*, y dice si son iguales, tampoco me funciona, ¿porque?


« Última modificación: 26 Julio 2015, 23:55 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Error copiando u_char* con apis
« Respuesta #1 en: 26 Julio 2015, 23:57 pm »

Esa funcion es para copiar cadenas (conjunto de caracteres con su cero terminador) y ahi tenes dos arrays de enteros. Usa memcpy.


« Última modificación: 26 Julio 2015, 23:59 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Error copiando u_char* con apis
« Respuesta #2 en: 27 Julio 2015, 00:12 am »

Código
  1. memcpy(ip, pkt_data + 28, 4);
  2. memcpy(mac, pkt_data + 22, 6);

Solucionado, mil gracias eternal idol, eso me pasa por no haber usado nunca esa funcion.

Como usaba UNICODE, se me habia ocurrido una idea muy macabra para hacerlo con apis, que seria usar el _wcscpy sería pasar de u_char a wchar_t y luego otra vez a u_char, claro seria la peor solucion posible.

Jeje, pero oye ya me ahorro los bucles gracias a el memcpy :))))

Saludos.

Edito:

Ahora bien, como comparar cadenas usando la api:

Código
  1. bool lista_usuarios::contiene_mac(u_char* mac)
  2. {
  3. bool retorno = false;
  4. for each(host h in usuarios)
  5. {
  6. if (_mbsicmp(h.mac, mac) == -1)
  7. {
  8. retorno = true;
  9. break;
  10. }
  11. }
  12. return retorno;
  13. }

Antes usaba bucles para comparar caracter a caracter, pero ¿como puedo usar las api para comparar las cadenas?

Edito: solucionado, memcmp :))))

Saludos.
« Última modificación: 27 Julio 2015, 00:17 am por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Error copiando u_char* con apis
« Respuesta #3 en: 27 Julio 2015, 00:36 am »

Solucionado, mil gracias eternal idol, eso me pasa por no haber usado nunca esa funcion.

De nada, si nunca viste esta funcion no estaria mal dar un repaso a algun libro de C++.

Como usaba UNICODE, se me habia ocurrido una idea muy macabra para hacerlo con apis, que seria usar el _wcscpy sería pasar de u_char a wchar_t y luego otra vez a u_char, claro seria la peor solucion posible.

No podes usar funciones de cadena, no tenes cadenas con las que trabajar.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Error copiando u_char* con apis
« Respuesta #4 en: 27 Julio 2015, 01:33 am »

Citar
De nada, si nunca viste esta funcion no estaria mal dar un repaso a algun libro de C++.

Jejeje, pues la verdad la había visto muchas veces, pero pero pensé que lo que hacía era copiar cadenas y no entré a estudiar su definición pues ya conocía las funciones que hacían eso. Pero resulto que no compara cadenas, sino partes de esta, lo que buscaba.  :-[ :-[ :-[

 :D
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Copiando CD's
Software
Dark Shadow 2 2,075 Último mensaje 16 Mayo 2005, 11:35 am
por Dark Shadow
Introduccion a APIs y como evitar el uso de MSWINSCK.OCX con APIs
Programación Visual Basic
Achernar 5 4,764 Último mensaje 5 Julio 2007, 23:43 pm
por Achernar
Error copiando cadenas con strcpy (coredump)
Programación C/C++
rixi15 3 2,568 Último mensaje 4 Enero 2012, 15:24 pm
por Eternal Idol
Pasar de const u_char* a char* en c++ « 1 2 »
Programación C/C++
Kaxperday 10 5,768 Último mensaje 6 Julio 2015, 10:52 am
por Kaxperday
calcular ip checksum y paso de u_long a u_char falla
Programación C/C++
Kaxperday 1 1,571 Último mensaje 19 Septiembre 2015, 23:54 pm
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines