Ayuda envío archivo a web con C vía http

Iniciado por Kaxperday, 20 Julio 2014, 12:23 PM

0 Miembros y 1 Visitante están viendo este tema.

ivancea96

Pásame por mp algun dato de tu server, y si quieres, luego lo intento. Si va, te doy la cabecera. Sinó, a lo mejor es cosa del php.

daryo

#41
probaste en un servidor en localhost?
para windows recomiendo: http://www.wampserver.com/en/
para linux https://www.apachefriends.org/index.html

haz el mismo proceso de enviar por post con un navegador
en firefox con hackbar puedes enviar variables posts:
https://addons.mozilla.org/es/firefox/addon/hackbar/

luego con http headers(extension para ver cabezeras que envia el navegador) prueba copiando todas las cabezeras
https://addons.mozilla.org/es/firefox/addon/live-http-headers/

ni idea con los demas navegadores usoo firefox si no analisa el trafico con wireshark
buenas

Kaxperday

Gracias a ambos por la respuesta, te he enviado un mp ivancea, pero no me aparece en la bandeja de salida, lo he vuelto a intentar y me ha dicho que ya lo había mandado antes, pero sigue sin aparecer nada xD

Respecto a lo del servidor local veo que es una buena idea, aunque no sabemos si se comportará por igual que el server web que tengo, de todas formas mañana lo probaré haber que tal, según parece es igual que el server web, pongo contenidos en la carpeta como hacía en public_html y conecto a localhost.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

#43
Estuve probando con mis clases http, y mirando las cabeceras del navegador, y esto es lo necesario para enviar:

POST /XXX HTTP/1.1
Host: XXX
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

nombre=archivo&contenido=info


Así debería ir. Creo que fuí yo el que antes propuso lo de quitar el content-type, así que lo siento xD

Kaxperday

Te llegaron mis mensajes privados? Es que no me aparece nada en la bandeja de entrada, he separado el script para subir archivo del index.php, esta en el directorio public_html, y se llama script.php, tiene esto:


<?php
$nombre
=htmlspecialchars($_POST["nombre"]);
$contenido=htmlspecialchars($_POST["contenido"]);
$fp=fopen("./archivos/" $nombre ".a","at");
fwrite($fp,$contenido);
fclose($fp);
?>


Ahora conecto a ese script, lo que tengo en el post es esto:

len=strlen("nombre=post_ok&contenido=exito");
        itoa(len,cad,10);

        strcpy(buffer,"POST /script.php HTTP/1.0\r\n");
        strcat(buffer,"Host: mipagina.freedom.com\r\n");
        //strcat(buffer,"Referer: http://www.mipagina.freedom.com/index.php\r\n");
        strcat(buffer,"Content-type: application/x-www-form-urlencoded\r\n");
        strcat(buffer,"Content-length: ");
        strcat(buffer,cad);
        strcat(buffer,"\r\n\r\n");
        strcat(buffer,"nombre=post_ok&contenido=exito");
        printf("%s\n",buffer);


Pero no sube archivo al ejecutar el programa sigue sin ir xd
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

ivancea96

Asegúrate de que le llega. Haz que tu php por ejemplo, escriba en un archivo cuando alguien se le conecta.

Descarta el PHP. Este es correcto.

Existe la posibilidad de que no se envíe bien, no se.

Prueba a poner HTTP/1.1.

No se que puede pasar.

daryo

probaste copiar todas las cabezeras del navegador? como puse en el comentario anterior
buenas

Kaxperday

#47
He probado a crear un archivo prueba.php que escribe en un archivo prueba.a de tal forma para comprobar que llega información:


<?php
$prueba
=htmlspecialchars($_POST["prueba"]);
$fp=fopen("./archivos/prueba.a","wt");
fwrite($fp,$prueba);
fclose($fp);
?>



Sin éxito, puse el 1.1 y nada ni una variable coge, te llegaron los mp ivancea? xD

Ahora respecto a lo de daryo no se como va eso de las cabeceras del navegador, la verdad acabo de instalarme una extension en el filezilla que pusistes, y para que me vale eso? No pude ver ninguna cabecera de POST, de todas formas no es necesario pues el programa C debería ser capaz de enviar datos a la web sin necesidad de intermediarios.

Que cojones me voy a istalar el wire haber que sale xD...

Edito: Puedo verificar que reconoce conexiones a la ip del servidor TCP puerto 80, hay también paquetes de respuesta del server, pero no consigo encontrar la cabecera en ningún paquete.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

daryo

calma calma xD te lo dire por pasos para las extensiones  para firefox(no hay filezillas xD)  que te pase:

1.una te servira para hacer la peticion post por el navegador(hackbar para verla presiona F9 dale click a enable post data pones las variables y le das execute) eso enviara por post las variables.

2. con la otra para ver las cabezeras que envia el navegador(live http header)presiona alt  en el menu herramientas live http headers  te saldra una ventanita y cuando recarges la pagina del navegador o le des execute en la extension del hackbar te mostrara todas las cabezeras

3.esas cabezeras serian las que luego copiarias tal cual en tu programa

en cuanto a lo de wireshark lo dije como opcion secundaria es un poco mas complicado pero es casi lo mismo en el wireshark en filtros le das http luego con el navegador que prefieras abres la web envias la petiicion y el paquete que la ip concuerde lo analisas.
buenas

Kaxperday

#49
Aaaaamigo ya se porque no las veía porque la extensión lo que hace es mostrarte lost GET y POST que se realizan en el navegador, es decir hay que cargar al menos páginas para que aparezcan esas cabeceras, me fui a hotmail.com por ejemplo y me salieron muuchos POST y GET  :D como cosa mala, aquí pique uno:


POST / HTTP/1.1
Host: ocsp.digicert.com
User-Agent: Mozilla/5.0 (Windows XX 9.5; WOW64; rv:29.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Length: 115
Content-Type: application/ocsp-request
Connection: keep-alive
0q0o0M0K0I0 +


Lo que hace darme cuenta de que parece que sea necesario cosas como el agente de navegación, idioma, y demás de todas formas este que he pillado no es de "application/x-www-form-urlencoded" asi que no creo que tenga que ser en lo demás igual, bueno sigo indagando.

Edito: Nótese que esta linea:


POST / HTTP/1.1


Nosotros teníamos

POST /script.php HTTP/1.1

Haciendo referencia al archivo que ejecutará el php, allí no hace referencia a nada, quizás sea index.php por defecto, sino que php recogerá sus variables.

Edito: Acabo de usar el programa que muestra los GET y POST que me dijiste en en el mozilla xD, y probé con una busqueda en google, entonces mostraba las cabecera, wireshark también las mostraba, pero cuando ejecuto mi programa no aparece la cabecera por ningún lado. Raro.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.