返回首页
当前位置: 主页 > 网络技术 >

新版无锡广电有线通登录程序

时间:2010-05-27 17:02来源: 作者: 点击:
最近无锡广电有线通有大幅度变化,原来的程序已经不能用了,今天发布新的程序。请大家多多指教。首先来在vi下编辑C文件wxcatv.c:#include #include #include #include #include #include #include #i
  最近无锡广电有线通有大幅度变化,原来的程序已经不能用了,今天发布新的程序。
请大家多多指教。

首先来在vi下编辑C文件wxcatv.c:
#include
#include
#include
#include
#include
#include
#include
#include

#define WEBSERVPORT 80
#define MAXDATASIZE 4096

#define TEST_HOST "www.thmz.com"
#define POST_HOST "10.161.255.21"
#define POST_USID "######" //输入6位帐号
#define POST_PASS "######" //输入6位密码

#define TEST_MSG
"GET / HTTP/1.1rn
Accept: image/gif, image/jpeg, image/pjpeg, */*rn
Accept-Language: zh-cnrn
Accept-Encoding: gzip, deflatern
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)rn
Host: %srn
Connection: Keep-Alivernrn"

#define TEST_RET
"HTTP/1.1 302 Moved Temporarilyrn
Cache-Control: no-cachern
Location: http://%srn
Content-Type: text/htmlrn
Content-Length: 0rn
Connection: closernrnrn"

#define POST_MSG
"POST / HTTP/1.1rn
Accept: image/gif, image/jpeg, image/pjpeg, */*rn
Referer: http://%s/rn
Accept-Language: zh-cnrn
Content-Type: application/x-www-form-urlencodedrn
Accept-Encoding: gzip, deflatern
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)rn
Host: %srn
Content-Length: 51rn
Connection: Keep-Alivern
Cache-Control: no-cachernrn
DDDDD=%s&upass=%s&0MKKey=%B5%C7%C2%BC+Login"

int testlink(void)
{
int iloop;
int sockfd;
struct hostent *host;
struct sockaddr_in serv_addr;
int ret;
int iLength;
char buf[MAXDATASIZE];
char *Message;
char *received;

for(;;)
{
if((host = gethostbyname(TEST_HOST)) == NULL)
{
iloop ++;
if (iloop > 15)
{
perror("testLink gethostbyname error");
return(1);
}
sleep(2);
}
else
{
break;
}
}

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("testLink socket error");
return(1);
}

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(WEBSERVPORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero), 8);
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
{
perror("testLink connect error");
return(1);
}

if ((Message = malloc(MAXDATASIZE)) == NULL)
{
perror("testLink malloc Message error");
return(1);
}
sprintf(Message, TEST_MSG, TEST_HOST);
send(sockfd, Message, strlen(Message), 0);
realloc(Message, sizeof(Message));

iLength = recv(sockfd, buf, sizeof(buf), 0);
buf[iLength] = ';

close(sockfd);

if ((received = malloc(MAXDATASIZE)) == NULL)
{
perror("testLink malloc received error");
return(1);
}
sprintf(received, TEST_RET, POST_HOST);

ret = strncmp(buf, received, iLength);

realloc(received, sizeof(received));

return(ret);
}

int logonyxt(void)
{
int sockfd;
struct hostent *host;
struct sockaddr_in serv_addr;
int ret;
int iLength;
char buf[MAXDATASIZE];

char *Message;

if((host = gethostbyname(POST_HOST)) == NULL)
{
perror("logonyxt gethostbyname error");
return(1);
}

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("logonyxt socket error");
return(1);
}

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(WEBSERVPORT);
serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
bzero(&(serv_addr.sin_zero), 8);
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
{
perror("logonyxt connect error");
return(1);
}

if ((Message = malloc(MAXDATASIZE)) == NULL)
{
perror("logonyxt malloc Message error");
return(1);
}
sprintf(Message, POST_MSG, POST_HOST, POST_HOST, POST_USID, POST_PASS);
send(sockfd, Message, strlen(Message), 0);
realloc(Message, sizeof(Message));

iLength = recv(sockfd, buf, sizeof(buf), 0);
buf[iLength] = ';

close(sockfd);
return(0);
}

int main(void)
{
if (testlink() == 0)
{
return(logonyxt());
}
return(0);
}


现在编译c文件
#cc wxcatv.c -o wxcatv

将wxcatv 拷贝到/usr/bin/目录下

接下来在vi下编辑SH文件catv:

#! /bin/bash

#
#

case "$1" in
*start)
exec /usr/bin/wxcatv
exit 0
;;
*)
echo $"Usage: $0 {start}"
exit 1
;;
esac

保存到/etc/init.d目录下
分别连接到rc3 rc5目录下创建自启动。

现在可以了自动连接了。

在红帽AS4、CentOS下通过。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
推荐内容