Deckard: Gracias a los users del foro y para que no os matéis buscando, el programa con interfaz gráfica está disponible [url=http://personales.ya.com/cinderl]Aqui[/url].
Gracias a Lecter23 y a Cinderl. Bueno, gracias a todos Xddd.
---------------------------------------------------------------------------
Hola.
Seguro que mas de uno de vosotros habéis sufrido cortes en la conexion con este router. A mi particularmente me suele pasar a partir de las 12 de la noche. Es raro, la mula sigue tirando, el ping hacia fuera responde, resuelve dns, pero no navegas. :o
Un par de cosas: En casa, para la mula y como servidor tengo un linux, asi q la version para resetear el 11g es para linux. Sería facil adaptarla a windows cambiando 3 cositas del código (es C), pero yo no lo voy a hacer. Solo pongo el código por si alguien lo quiere aprovechar, pero no voy a desarrollar nada mas ni voy a hacer mas versiones ni nada. Lo dicho... a mi me funciona y si lo queréis ahí está.
loginadsl.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 80
#define MAXDATASIZE 10000
int main(int argc, char *argv[])
{
int fd, numbytes;
char *pwd = argv[2];
struct hostent *he;
struct sockaddr_in server;
if (argc !=3) {
printf("Uso: %s <Dirección IP> <contraseña>
",argv[0]);
exit(-1);
}
if ((he=gethostbyname(argv[1]))==NULL){
printf("gethostbyname() error
");
exit(-1);
}
if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){
printf("socket() error
");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(server.sin_zero),8);
if(connect(fd, (struct sockaddr *)&server,
sizeof(struct sockaddr))==-1){
printf("connect() error
");
exit(-1);
}
char msg[1000] = "POST /cgi-bin/login.exe HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://192.168.2.1/
Accept-Language: es
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
Host: 192.168.2.1
Content-Length: ";
char msg2[1000] = "
Connection: Keep-Alive
Cache-Control: no-cache
pws=";
char mensaje[1000];
sprintf(mensaje,"%s%d%s%s",msg,strlen(pwd)+4,msg2,pwd);
send(fd,mensaje,strlen(pwd)+517,0);
close(fd);
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
restartadsl.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 80
#define MAXDATASIZE 10000
int main(int argc, char *argv[])
{
int fd, numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in server;
if (argc !=2) {
printf("Uso: %s <Dirección IP>
",argv[0]);
exit(-1);
}
if ((he=gethostbyname(argv[1]))==NULL){
printf("gethostbyname() error
");
exit(-1);
}
if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){
printf("socket() error
");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(server.sin_zero),8);
if(connect(fd, (struct sockaddr *)&server,
sizeof(struct sockaddr))==-1){
printf("connect() error
");
exit(-1);
}
send(fd,"GET /cgi-bin/restart.exe HTTP/1.1
",37,0);
close(fd);
}
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
El primer archivo es para hacer login, así que le pasais dos parámetros, la IP del router y la contraseña.
El segundo archivo es para resetear, solo pasais la ip.
He decidido separarlos en 2 por si tengo q hacer algún otro programa que opere con el router y que necesite el login, por lo que os recomiendo que hagais un script y lo metáis en el cron. Yo tengo este:
#!/bin/bash
loginadsl 192.168.2.1 xxxxxxx
sleep 2
restartadsl 192.168.2.1
#Donde 192.168.2.1 es la ip del router y xxxxxxx es el password
Un saludo y espero que os sirva.
[Editado el 3/1/2005 por deckard_29]
Gracias a Lecter23 y a Cinderl. Bueno, gracias a todos Xddd.
---------------------------------------------------------------------------
Hola.
Seguro que mas de uno de vosotros habéis sufrido cortes en la conexion con este router. A mi particularmente me suele pasar a partir de las 12 de la noche. Es raro, la mula sigue tirando, el ping hacia fuera responde, resuelve dns, pero no navegas. :o
Un par de cosas: En casa, para la mula y como servidor tengo un linux, asi q la version para resetear el 11g es para linux. Sería facil adaptarla a windows cambiando 3 cositas del código (es C), pero yo no lo voy a hacer. Solo pongo el código por si alguien lo quiere aprovechar, pero no voy a desarrollar nada mas ni voy a hacer mas versiones ni nada. Lo dicho... a mi me funciona y si lo queréis ahí está.
loginadsl.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 80
#define MAXDATASIZE 10000
int main(int argc, char *argv[])
{
int fd, numbytes;
char *pwd = argv[2];
struct hostent *he;
struct sockaddr_in server;
if (argc !=3) {
printf("Uso: %s <Dirección IP> <contraseña>
",argv[0]);
exit(-1);
}
if ((he=gethostbyname(argv[1]))==NULL){
printf("gethostbyname() error
");
exit(-1);
}
if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){
printf("socket() error
");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(server.sin_zero),8);
if(connect(fd, (struct sockaddr *)&server,
sizeof(struct sockaddr))==-1){
printf("connect() error
");
exit(-1);
}
char msg[1000] = "POST /cgi-bin/login.exe HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://192.168.2.1/
Accept-Language: es
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
Host: 192.168.2.1
Content-Length: ";
char msg2[1000] = "
Connection: Keep-Alive
Cache-Control: no-cache
pws=";
char mensaje[1000];
sprintf(mensaje,"%s%d%s%s",msg,strlen(pwd)+4,msg2,pwd);
send(fd,mensaje,strlen(pwd)+517,0);
close(fd);
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
restartadsl.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 80
#define MAXDATASIZE 10000
int main(int argc, char *argv[])
{
int fd, numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in server;
if (argc !=2) {
printf("Uso: %s <Dirección IP>
",argv[0]);
exit(-1);
}
if ((he=gethostbyname(argv[1]))==NULL){
printf("gethostbyname() error
");
exit(-1);
}
if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){
printf("socket() error
");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(server.sin_zero),8);
if(connect(fd, (struct sockaddr *)&server,
sizeof(struct sockaddr))==-1){
printf("connect() error
");
exit(-1);
}
send(fd,"GET /cgi-bin/restart.exe HTTP/1.1
",37,0);
close(fd);
}
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
El primer archivo es para hacer login, así que le pasais dos parámetros, la IP del router y la contraseña.
El segundo archivo es para resetear, solo pasais la ip.
He decidido separarlos en 2 por si tengo q hacer algún otro programa que opere con el router y que necesite el login, por lo que os recomiendo que hagais un script y lo metáis en el cron. Yo tengo este:
#!/bin/bash
loginadsl 192.168.2.1 xxxxxxx
sleep 2
restartadsl 192.168.2.1
#Donde 192.168.2.1 es la ip del router y xxxxxxx es el password
Un saludo y espero que os sirva.
[Editado el 3/1/2005 por deckard_29]

