网安实验4-2. 端口复用测试实验

实验内容】

    1.阅读p143-144,理解端口复用技术。

实验环境:

主机A为客户端,操作系统为win7IP地址为172.16.15.1

主机B为服务端,操作系统为win7IP地址为172.16.0.15

实验结果:

(1)客户端木马程序发送信息给服务端:

服务器上的控制台,识别到木马程序,回传信息给客户端:

 

客户端上的控制台:

 

(2)客户端非木马程序发送信息给服务端:

    服务器上的控制台,识别到是非木马程序,回传信息给客户端:

 

客户端上的控制台:

 

    2.完成p144-146实例,回答实验思考问题。

(2)木马的数据包的特征值是什么?数据包的第一个字符为”y”

(3)服务器代码如下:

#include<stdio.h>
#include<WINSOCK2.H>  //加入socket的头文件与链接库
#pragma comment(lib,"Ws2_32.lib")  //端口复用程序包含监听与连接两种功能的Socket
void proc(LPVOID d);  //工作线程
int main(int argc,char * argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);  //socket版本
SOCKADDR_IN a,b;
//一个是用于外部监听的地址,另一个是接收到accept时用于处理接收的结构
a.sin_family=AF_INET;
a.sin_addr.s_addr=inet_addr(argv[1]);
a.sin_port=htons(80);
SOCKET c;
c = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //int socket( int af, int type, int protocol);
bool l = TRUE;  //这个l有什么用呢?
setsockopt(c,SOL_SOCKET,SO_REUSEADDR,(char *)&l,sizeof(l)); //实现端口的重绑定
bind(c,(sockaddr *)&a,sizeof(a)); //c和a绑定
listen(c,100);   //监听
while(1)
{
int x;
x = sizeof(b);
SOCKET d=accept(c,(sockaddr *)&b,&x);  //d是当接收到连接时用的Socket
   //监听的socket只有一个,而处理接收到的Socket可有多个,个数由连接数决定
 
 
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)proc,(LPVOID)d,0,0); //开始处理线程
}
closesocket(c);
return 0;
}
void proc(LPVOID d)
{
SOCKADDR_IN sa;   //用于连接web 80端口的Socket结构,
 
sa.sin_family = AF_INET;
sa.sin_addr.s_addr=inet_addr("127.0.0.1");
sa.sin_port=htons(80);
SOCKET web=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
conne
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值