2024年4月19日发(作者:)
网络安全编程——编程题、简答题
Tcp server:#include #include #include
#pragma comment( lib, "ws2_" )
void main()
{ //参数声明
WSADATA
NewSocket;
SOCKADDR_IN ServerAddr; SOCKADDR_IN ClientAddr;
intClientAddrLen;intServerPort = 4000;
wsastarup(makeword(1,0),&wsadata)//初始化
windows socket
//创建socket
ServerSocket
IPPROTO_TCP);
_family = AF_INET;
_port = htons(ServerPort);
_addr.s_addr = htonl(INADDR_ANY);
bind(ServerSocket,
sizeof(ServerAddr)); //绑定
listen(ServerSocket, 5);//监听
do{NewSocket=accept(ServerSocket,(SOCKADDR*)&ClientA
ddr,&ClientAddrLen);CreateThread(NULL,
(void*)NewSocket, 0, NULL);//线程回调
}while (1);
recv(newsocket,receivebuffer,sizeof(receivebuffer)-1,0)//接收
send(newsocket, receive buffer,strlen(receivebuffer),0)//发送
closesocket (newsocket);
closesocket (serversocket);//关闭
wsacleanup()//释放
0, DealHandler,
(SOCKADDR*) &ServerAddr,
= socket(AF_INET, SOCK_STREAM,
wsaData; SOCKET ServerSocket; SOCKET
}
DWORD WINAPI DealHandler(void* sd_)
{intnRetval;SOCKET sd = (SOCKET)sd_;nRetval=DealReq(sd);
returnnRetval;}
连接请求:
connect(clientsocket,(socketaddr*)&serveraddr,sizef(servera
ddr);
抓包
#include "stdio.h"#include "Winsock2.h"#include
"time.h"#pragma comment(lib,"WS2_")
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
int main(intargc, char **argv)
{//定义参数
SOCKET SnifferSocket;intResult;char Packet[6000];WSADATA
wsaData;
Result = WSAStartup(MAKEWORD(2, 2), &wsaData); //初始化
SnifferSocket = socket(AF_INET, SOCK_RAW, IPPROTO_IP);//
创建原始socket
structsockaddr_in sock={0};structhostent *pHostent;char
Name[255];
_family = AF_INET;Result = gethostname(Name,
sizeof(Name)); //获取主机名
pHostent = gethostbyname(Name); //用主机名获取IP
memcpy(&_addr,
pHostent->h_length);
Result
Result
= bind(SnifferSocket, (PSOCKADDR) &sock,
sizeof(sock));//绑定
=ioctlsocket(SnifferSocket,
=
SIO_RCVALL,
0;structsockaddr_in
&dwBufferInLen);//设置混杂模式
intpacketcount
pHostent->h_addr_list[0],
from;//rendbintfromlen ;time_t temp;
while (true)
{fromlen=sizeof(from);
Result=recvfrom(SnifferSocket,Packet,,izeof(Packet),0);//读取
数据
packetcount++;time(&temp);if (packetcount==70) break;}
closesocket(SnifferSocket);WSACleanup();return 1;}
窗口
#include#include "resource.h"
BOOL WINAPI DlgProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE,
LPSTR, int)
{DialogBoxParam(
hInstance,// 实例句柄(LPCTSTR)IDD_DIALOG1, // 对话框资源
ID号NULL, // 父窗口句柄
DlgProc, // 消息处理函数0); // 对话框初始化的值,在
WM_INITDIALOG消息lParam参数中取出
return 0;}
char szLText[]="鼠标左键";char szOKText[]="OK
button";HWNDMyList;
BOOL WINAPI DlgProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{switch(message){
case WM_INITDIALOG:
MyList=GetDlgItem(hDlg, IDC_LIST1);
SendMessage(MyList, LB_ADDSTRING, NULL, (long)"初始化
了");
break;
case WM_LBUTTONDOWN: // 显示给用户, 向列表框控件中添
加文本
SendMessage(MyList, LB_ADDSTRING, NULL, (long)szLText);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
SendMessage(MyList,
(long)szOKText);
break;
case IDCANCEL: // 退出程序
EndDialog (hDlg, IDCANCEL);
break;
}
break;
}
return 0;
}
Tcp的特点
(1)面向流的投递服务
应用程序之间传输的数据可视为无结构的字节流(或位流),流
投递服务保证收发的字节顺序完全一致
2)面向连接的投递服务
数据传输之前,TCP模块之间需建立连接(类似虚电路),其后
的TCP报文在此连接基础上传输。
(2)可靠传输服务
接收方根据收到的报文中的校验和,判断传输的正确性:如果正
确,进行应答,否则丢弃报文。发送方如果在规定的时间内未能获得
应答报文,自动进行重传。
(4)缓冲传输
LB_ADDSTRING, NULL,
TCP模块提供强制性传输(立即传输)和缓冲传输两种手段。缓
冲传输允许将应用程序的数据流积累到一定的体积,形成报文,再进
行传输
(5)全双工传输
TCP模块之间可以进行全双工的数据流交换。
(6)流量控制
TCP模块提供滑动窗口机制,支持收发TCP模块之间的端到端流
量控制。
1、可靠性2. 面向连接3. 每次发送数据时,需要指定目的IP和端
口?4. 能一次接收半个或者多个包?5. 不支持广播或多播?6. 安全性
高
网络编程的主要特点
Windows是当今主流的操作系统,也是网络游戏主要的开发平台。
不论是网络游戏客户端开发还是服务器端开发,都有很多成功的网络
游戏作品运行于Windows操作系统上。是建立在TCP/IP协议基础的,
windows系统具有窗口、句柄、消息、事件、API几个概念,
windows是一个基于事件的消息驱动的操作系统
网络扫描器的主要功能
扫描目标主机识别其工作状态(开/关机)
识别目标主机端口的状态(监听/关闭)
识别目标主机系统及服务程序的类型和版本
根据已知漏洞信息,分析系统脆弱点
生成扫描结果报告
发布评论