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是一个基于事件的消息驱动的操作系统

网络扫描器的主要功能

扫描目标主机识别其工作状态(开/关机)

识别目标主机端口的状态(监听/关闭)

识别目标主机系统及服务程序的类型和版本

根据已知漏洞信息,分析系统脆弱点

生成扫描结果报告