Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AleBallesta en 13 Junio 2015, 18:00 pm



Título: [SOLUCIONADO] Llamar a PHP desde C
Publicado por: AleBallesta en 13 Junio 2015, 18:00 pm
Holaa! (tanto tiempo). Estoy desarrollando un programa muy simple que simule ser un "Sistema de Contabilidad", pero que sea perfectamente funcional. Al empezar con la parte de usuarios y contraseñas, me surgio una duda: quiero llamar a la funcion md5() de PHP para comprobar que el usuario y contraseña sean validos. Estos datos estan guardados en forma de dos hash md5 en dos archivos y quiero que cuando se metan los datos del login, estos se pasen a dos hash md5 para comprobar si son iguales a los que estan en los archivos.
Alguien conoce alguna forma de ejecutar PHP desde C o de codificar un string en md5 desde C de forma sencilla?
Gracias.


Título: Re: Llamar a PHP desde C
Publicado por: engel lex en 13 Junio 2015, 19:10 pm
No conseguiste en google alguna librería para hacer md5 en c?

son muy comunes y simples


Título: Re: Llamar a PHP desde C
Publicado por: Peregring-lk en 13 Junio 2015, 21:48 pm
Aunque lo correcto es tirar por lo que ha dicho `engel lex` (buscar una librería), si estás en linux al menos, siempre puedes hacer una llamada a `system` con un script PHP utilizando el `she-bang`:

Código
  1. #!/usr/bin/php + opciones que sean necesarias.
  2.  
  3. // tus llamadas a md5()
  4.  
  5. // guardar el valor en un fichero
  6.  

Y luego tu código C++:

Código
  1. system("./script-php");
  2.  
  3. // Leemos el fichero escrito por el script

O también podrías crear un fichero temporal, y en la llamada a `system` redirigir la salida estándar de dicho script php a dicho fichero temporal. También puedes buscar algún wrapper de PHP para C++. O utilizar una librería para lanzar un proceso en vez de llamar a `system` (para hacer a la aplicación independiente de la plataforma), y utilizar sockets para comunicar PHP con C.

En fin... no se me ocurre nada más.


Título: Re: Llamar a PHP desde C
Publicado por: AleBallesta en 14 Junio 2015, 01:17 am
Graciaaas! Con respecto a lo de engel lex, busque, pero, comos siempre, me quedo la duda si esa era la forma mas "correcta" de hacerlo, ya que los resultados variaban bastante.
Voy a intentar lo de "system", me gustaria que el programa sea portable, pero si no puedo usar las funciones de md5 de C, no me va a quedar mas remedio.
Gracias por la ayuda.


Título: Re: Llamar a PHP desde C
Publicado por: Peregring-lk en 14 Junio 2015, 01:54 am
Puedes usar la librería openssl: http://stackoverflow.com/a/10324904/1794803


Título: Re: Llamar a PHP desde C
Publicado por: ThunderCls en 14 Junio 2015, 20:09 pm
Creo que estas complicando mucho algo que es demasiado simple, solo para obtener un MD5, pq tienes que acudir a PHP? :-\
Dependiendo de si estas en Linux/Windows cualquiera de estas te serviria:
 -> Usando una libreria (https://bobobobo.wordpress.com/2010/10/17/md5-c-implementation/) <-
 -> Usando la CryptoAPI (https://msdn.microsoft.com/en-us/library/windows/desktop/aa382380(v=vs.85).aspx) <-

Aunque si lo que quieres es portabilidad te recomiendo irte por la primera variante  ::)


Título: Re: Llamar a PHP desde C
Publicado por: AleBallesta en 14 Junio 2015, 23:04 pm
Gracias por responder. Por lo que veo, usar una libreria seria lo mas practico. A mi se me habia ocurrido usar PHP, porque me acorde de su funcion md5() cuando empece con la parte de usuarios y contraseñas.
Ahora toca buscar una libreria de md5 simple, ya que solo quiero convertir un string y nada mas (hay librerias que lo dividen en varias funciones distintas).
Gracias por la ayuda, por lo que a mi respecta, el tema esta solucionado: ya se llamar a PHP desde C y se que tengo que buscar librerias.
Gracias!