危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18982259

实战UDP通信

在做各类黑客程序,包括木马、扫描工具以及我们经常使用的各类渗透测试工具的过程中,无一不涉及到网络编程。熟悉网络编程不仅对于我们进行程序开发十分重要,而且可以让我们更加熟悉这些黑客类工具的原理,有利于我们从本质上了解这些原理。本篇文章中,危险漫步将为大家介绍网络通信中的UDP通-的编程过程以及方法,实现一款点对点聊天工具。

开发平台VC6.0,采用win32控制台编程。首先我们编写一个名为CCoinn的类来将用到的网络函数放到一起。在进行各种操作之前,我们首先要包含网络通信的头文件winsock.h以及lib静态库文件wsock32.lib。lib文件的包含代码为:#pragma comment(lib,”wsock3 2.lib”)。在头文件中我们声明3个函数:

ListenThread(void *data),用于创建坚挺数据的线程;SendMsg(char *Msg, int Len,char *host,short port),用于发送数据的函数;Listen(int PortNum),用于监听端口。同时创建一个SOCKET的对象ListenSocket用于监听数据是否到来。头文件的详细代码大家可以查看附带的头文件。

下面开始实现这个类。对于类来说应该首先完成构造函数以及析构函数,构造函数用于完成数据的初始化,析构函数用于实现资源的释放。我们首先将ListenSocket设置为INVALID_SOCKET的初始化据,然后初始化网络通信。

其中MAKEWORD用于制定网络通信的版本,WSAStartup用于初始化网络通信。构造函数完成后我们就需要实现析构函数,这里析构函数的主要作用就是关闭网络连接,同时释放所使用的网络资源。

监听线程的代码大家自行参考源代码,下面我们就需要在maln函数中间这些函数代码组织起来使用,来实现数据通信。首先我们确定一下程序监听使用的端口号以及发送数据使用的端口号,这里就是用3001和3000两个端口,由于危险漫步是在本地测试,所以IP地址设置为127.0.0.1。

这是其中的一个通信端,另一个通信端只需要将两个端口号互换即可。这样一个简单的UDP通信程序就完成了,我们这里不区分客户端与服务器段,是对等的通信模式,测试结果。