网络编程
文章平均质量分 64
cosmoslife
多媒体编程、网络编程、系统编程、网络安全编程
展开
-
TDI防火墙框架(开源)
出于个人爱好想写一个防火墙,利用业余时间来完善这份代码,当实现了TDI防火墙的整体框架的时候发现TDI驱动居然无法捕获到ICMP封包(如果想捕获ICMP封包还必须用别的办法,比如HOOK某个NDIS的发包接口),发现这种情况觉得没有再继续写下去的必要了。现在将该驱动源码放出来供大家参考学习,希望对一部分人有帮助话说回来:拦截TCP、UDP、RawIp还是很好用的。参考了部分科莫多防火墙转载 2013-03-27 15:42:22 · 1762 阅读 · 0 评论 -
NDIS网络数据监控程序NDISMonitor(2)-----驱动与应用的中间层NdisHook
本工程是驱动vpcknt的一个封闭层而已,比较简单。一、导出的API接口分析1、Start(1)加载驱动vpcknt.sys。vpcknt.sys是从工程的资源文件中通过CreateDriverFileFromAppResources加载的。(所以启动NDIS时金山杀毒软件会警告)得到驱动文件后调用StartVersionedDeviceDriver把驱动.sys加载。 (加载转载 2012-10-09 19:39:25 · 765 阅读 · 0 评论 -
NDIS网络数据监控程序NDISMonitor(1)-----驱动程序(编译过程与源码讲解)
一、编译过程弄了半天终于编译通过了,看来驱动的开发确实没有应用来得简单啊。由于DDK提供的ndis.h有4个,什么时候要调用哪个我确实不清楚:(1)我先用#include 结果报错了:[plain] view plaincopy1>1>errors in directory e:\g2\fft\usbdri~1\ndismo~1\ndismo~4\d转载 2012-10-09 19:38:49 · 1521 阅读 · 0 评论 -
使用NDIS驱动监测以太网络活动
本论文提供了NDIS的基本的理解,应用程序如何与驱动程序交互,发挥驱动程序最佳性能。本论文也说明了使用例子驱动(PACKET.SYS)监测以太网的应用程序。本论文不是帮助程序员开发网络驱动而是帮助他使用这样的驱动。引言 从计算机被发明以来,对大多数编程人员来说,编写设备驱动都是令人着迷的。开发驱动是为了满足特定应用的需要。这个目的导致大量不同种类的驱动被开发出来,例如打印机驱动转载 2012-10-09 19:34:37 · 1025 阅读 · 0 评论 -
异步非阻塞套接字Winsock开发网络通信程序的经典入门
对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手。许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清,只知其所以而不知起所以然。 异步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而同步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。 阻塞套接字是转载 2012-10-09 19:14:49 · 588 阅读 · 0 评论 -
htonl(),htons(),inet_addr(),inet_ntoa()函数
htonl() 简述: 将主机的无符号长整形数转换成网络字节顺序。 #include u_long PASCAL FAR htonl( u_long hostlong); hostlong:主机字节顺序表达的32位数。 注释: 本函数将一个32位数从主机字节顺序转换成网络字节顺序。 返回值: htonl原创 2012-08-27 14:12:08 · 594 阅读 · 0 评论 -
网络字节序与主机字节序
不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感原创 2012-08-27 14:12:35 · 434 阅读 · 0 评论 -
A simple IOCP Server/Client Class
原文地址:http://www.codeproject.com/Articles/10330/A-simple-IOCP-Server-Client-ClassDownload demo project v.1.16 - 64.66 KbDownload source v1.16 - 154.59 KbDownload other client/server implementations usi原创 2012-08-29 22:16:23 · 1791 阅读 · 0 评论 -
网络字节顺序和机器顺序什么区别
网络字节顺序和机器顺序什么区别 存在两种字节顺序:NBO与HBO网络字节顺序NBO(Network Byte Order):按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。主机字节顺序(HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关转载 2012-07-18 08:47:01 · 515 阅读 · 0 评论 -
网络数据包捕获与发送的多重实现 (学习)
注:本文已发表在2008年第10期《黑客防线》,转载请注明来源。 对网络数据进行研究,归根到底离不开对数据包的捕获和发送这两个关键环节,而其他操作都是建立在这个基础上的。捕获数据包有多种方法,常见的有原始套接字和Libpcap(它在Windows下的版本是WinPcap);而发送数据包同样可以使用原始套接字,但更好的方式是使用Libnet,操作简单、功能强大、使用方便、效果稳定,实转载 2012-07-08 02:11:58 · 1189 阅读 · 0 评论 -
EPO+插缝植入用户自定义代码的一种方法
EPO+插缝植入用户自定义代码的一种方法2008-10-04 19:45以前听很多人问如何零字节插入,就是在一个pe内写入了我们的代码后,pe文件并不增加大小.可想而知道这种方法的隐蔽性.那么我们怎么才能把一些代码加入pe,而使它的大小不发生改变呢.还好windows的这个格式对齐给我们提供了可能性.pe中的节以一定的基数(也称对齐因数)对齐,而这种对齐导致的最直观转载 2012-06-21 00:24:05 · 758 阅读 · 0 评论 -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
原文地址:http://www.vckbase.com/index.php/wv/1471.html有源码下载地址这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!・¥%……・!”)。闲话少说,我们先看一下技术背景:Internet的迅速发展以及转载 2012-10-15 15:36:10 · 1567 阅读 · 0 评论 -
C/C++网络编程中的TCP保活
在默认的情况下,TCP连接是没有保活的心跳的。这就是说,当一个TCP的socket,客户端与服务端谁也不发送数据,会一直保持着连接。这其中如果有一方异常掉线,另一端永远也不可能知道。这对于一些服务型的程序来说,将是灾难性的后果。 所以,必须对创建的socket,启用保活心跳,即Keepalive选项。启用Keepalive 对于WIN32或者Linux平台来说,设置so转载 2012-09-25 15:56:25 · 1158 阅读 · 0 评论 -
读取网卡信息IP,MAC的GetAdaptersInfo函数
#include #include #include #pragma comment(lib, "Ws2_32.lib")#pragma comment(lib, "Iphlpapi.lib")#pragma comment(lib, "Netapi32.lib")int main(){ IP_ADAPTER_INFO AdapterInfo[16原创 2012-11-23 12:15:46 · 1419 阅读 · 0 评论 -
编写断点续传和多线程下载模块
概述 在当今的网络时代,下载软件是使用最为频繁的软件之一。几年来,下载技术也在不停地发展。最原始的下载功能仅仅是个“下载”过程,即从WEB服务器上连续地读取文件。其最大的问题是,由于网络的不稳定性,一旦连接断开使得下载过程中断,就不得不全部从头再来一次。 随后,“断点续传”的概念就出来了,顾名思义,就是如果下载中断,在重新建立连接后,跳过已经下载的部分,而只下载还没有下载的部分转载 2013-03-21 22:42:49 · 869 阅读 · 0 评论 -
IP Helper API 简介
IP Helper 是一套用于管理本地网络设置的API。使用这一套API可以方便的改变计算机的网络设置或者提取有关的信息。而且它还提供了一种消息机制,能够在本地计算 机的网络设置发生改变时通知应用程序。实际上,它不仅仅能够提取本机的网络设置信息,还能够获得网络上其它计算机的IP使用情况和MAC地址。从最简单的开始最简单的是查看计算机上的网络设置是什么而不修改。提取网卡信息hInst转载 2013-03-21 22:41:03 · 1134 阅读 · 0 评论 -
http头中set-cookie选项的解释
我们在一些留言本、BBS讨论区发贴时常会出现这种现象:当进入发贴界面时 在要求填写用户名和密码的地方就已经自动地填上了你的资料。这是什么会事呢?这是因为程序中引入了COOKIE技术的缘故。原来在你第一次登录时,程序就 已在你的电脑中安装了一个COOKIE信息包,在你今后登陆时电脑就自动检索你的COOKIE并取出信息包的信息供程序调用,所以出现上面所述的现象。COOKIE只不过是CGI程序要求浏转载 2013-03-21 22:30:36 · 1840 阅读 · 0 评论 -
HTTP 协议标头
一、HTTP码应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功地接受、理解和采纳3.3xx:重定向,为了完成请求,必须进一步执行的动作4.4xx:客户端错误,请求包含语法错误或者请求无法实现5.5xx:服务器错误,服务器不能实现一种转载 2013-03-21 22:30:04 · 667 阅读 · 0 评论 -
通过 WMI 改变网卡的IP地址 ChangeIP.vbs
这是第一个版本,就是实现换IP功能,只换第一个发现的,如果只有一个网卡的话可以用这个view plaincopy to clipboardprint? '/*========================================================================= ' * Intro 通过 WMI 改变网卡的IP地转载 2013-03-21 22:08:26 · 1522 阅读 · 0 评论 -
用wmi来实现修改ip地址
Vista下面没有办法使用DhcpNotifyConfigChange 来通知适配器配置的改变,尝试用wmi来实现修改ip地址,c++源码如下(.Net2003下面编译运行通过):#define _WIN32_DCOM#i nclude #i nclude #i nclude "atlbase.h"# pragma comment(lib, "wbemuuid.转载 2013-03-21 18:59:48 · 1786 阅读 · 0 评论 -
不重启Windows更改IP地址的多种实现
原文地址:http://www.vckbase.com/index.php/wv/645有很多网友都遇到过更改IP地址但是要重启机器的问题,在这里,为大家介绍几种不重启Windows直接更改IP地址的方法。首先是调用DhcpNotifyConfigChange的方法,后面还有修改注册表跟使用"iphlpapi"的方法。 一、未公开函数:DhcpNotifyConfigChange转载 2013-03-21 15:55:28 · 916 阅读 · 0 评论 -
用NotifyAddrChange获得IP改变通知
HANDLE hand = WSACreateEvent(); overlap.hEvent = WSACreateEvent(); ret = NotifyAddrChange(&hand, &overlap); if ( WaitForSingleObject(overlap.hEvent, INFINITE) == WAIT_OBJECT_0 ) pri原创 2013-03-21 13:23:33 · 2454 阅读 · 0 评论 -
多网卡获取IP之VC篇
方法:C语言获取网卡方法之WSAIoctl函数在WinSock中可以通过调用WSAIoctl()函数,通过设置标志为SIO_GET_INTERFACE_LIST 的方法获取网络接口信息。其函数在MSDN定义如下:int WSAIoctl( SOCKET s, // SOCKET句柄 DWORD dwIoControlCode, // 控制代码,SIO_GET_INTER转载 2013-02-28 14:35:41 · 4645 阅读 · 1 评论 -
VC++不重起Windows直接更改IP地址
转载地址:http://www.cctry.com/thread-3653-1-1.html源代码运行效果图如下:源代码下载:设置IP地址只需要更改注册表中关于适配器的相应设置,但更改后需要重新启动系统才能生效,而AddIPAddress函数只能添加IP而不是更改当前的IP,我们在Windows NT/2000界面上操作不需要重新启动就可以生效,那系统到底做了什转载 2013-01-22 17:47:33 · 947 阅读 · 0 评论 -
描端口代码
int main(){ WSADATA wsData; SOCKET sock = INVALID_SOCKET; struct sockaddr_in addr; char Ip[16] = {0}; u_short Prot = 16999; char data[2048] = { 0 }; int nRel =原创 2012-12-13 14:38:48 · 605 阅读 · 0 评论 -
读取本机DNS信息GetNetworkParams函数
//// Link with IPHlpAPI.lib//#include #include #include #pragma comment(lib, "iphlpapi.lib")int main(){ FIXED_INFO * FixedInfo; ULONG ulOutBufLen; DWORD dwRetV原创 2012-11-23 12:16:35 · 2287 阅读 · 0 评论 -
编程获得本地网卡信息
编程获得本地网卡信息2008-10-17 15:20在网络编程中获得网卡的某些信息是必要的,比如网卡名称.MAC地址等.这也是最基本的.所以写了这个小程序并封装成了模块,可以在以后用到的时候直接调用!//--------------------------------------------------------------------------------转载 2012-06-21 00:22:51 · 925 阅读 · 0 评论 -
通过ip获得远程主机的MAC
通过ip获得远程主机的MAC2008-10-17 17:39 过ip地址获得远程主机的ip,基本上也和上文一样是基础类的技术。注意本文技术只限于同局域网主机.//---------------------------------------------------------------------------------------------------转载 2012-06-21 00:22:27 · 974 阅读 · 0 评论 -
arp攻击器
arp攻击器2008-10-23 17:53#include #include #include #include "packet32.h"#pragma comment(lib, "packet.lib") #pragma comment(lib, "WS2_32.lib")#pragma comment(lib, "Iphlpapi.转载 2012-06-21 00:20:58 · 1159 阅读 · 0 评论 -
应用层通信协议开发浅析
1.通信协议的概念及其要素在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(Service Data Unit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(Protocol Data Unit,PDU),封装过程实际上是为SDU增加转载 2012-05-16 14:10:41 · 619 阅读 · 0 评论 -
WinSock完成端口I/O模型
关于重叠I/O,参考《WinSock重叠I/O模型》;关于完成端口的概念及内部机制,参考译文《深度探索I/O完成端口》。完成端口对象取代了WSAAsyncSelect中的消息驱动和WSAEventSelect中的事件对象,当然完成端口模型的内部机制要比WSAAsyncSelect和WSAEventSelect模型复杂得多。IOCP内部机制如下图所示: 在WinSock中编写完成转载 2012-05-16 14:06:57 · 679 阅读 · 0 评论 -
深度探索I/O完成端口
引言要想编写一个高性能的服务器应用程序,必须实现一个高效的线程模型。让太少或者太多的服务器线程来处理客户的请求,都可能导致性能问题。例如,如果一个服务器创建单个线程来处理所有的请求,那么客户端可能长期等待而得不到响应,因为服务器同一时刻只能忙于处理一个请求。当然单个线程也能并发处理多个请求,当I/O操作被启动时,它可以从一个请求切换到另一个请求,但是这种结构相当复杂,并且不能充分利用多处理器的转载 2012-05-16 14:01:43 · 649 阅读 · 0 评论 -
《A Simple IOCP Server/Client Class》整改
一.项目概述1.pre:预编译器文件stdafx。 2.app:MFC主线程。 BOOL CIOCPApp::InitInstance() { // …… CIOCPDlg dlg; // main dialog // …… } 3.rc:资源文件。 4.gui:主对话框以及转载 2012-05-16 11:48:18 · 1171 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇) .
当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。转载 2012-05-14 17:43:42 · 455 阅读 · 0 评论 -
TCP --recv函数相关
在TCP连接中,recv等函数默认为阻塞模式(block),即直到有数据到来之前函数不会返回(socket默认是阻塞模式,如果连接正常,recv要等到接收到数据后才返回,如果对方没有发数据过来,就会一直阻塞),而我们有时则需要一种超时机制使其在一定时间后返回而不管是否有数据到来,这里我们就会用到setsockopt()函数: int setsockopt(int s, int lev转载 2012-05-14 17:59:30 · 543 阅读 · 0 评论 -
IOCP原理 .
要想彻底征服IOCP,并应用好IOCP这个模型,首先就让我们穿越到遥远的计算机青铜器时 代(以出现PC为标志),那时候普通的PC安装的还是DOS平台,微软公司主要靠这个操作系统在IT界的原始丛林中打拼,在DOS中编写程序,不得不与很 多的硬件直接打交道,而最常操作的硬件无非是键盘、声显卡、硬盘等等,这些设备都有一个特点就是速度慢,当然是相对于PC平台核心CPU的速度而言,尤其 是硬盘这个机械电子设转载 2012-05-14 17:51:23 · 463 阅读 · 0 评论 -
1IOCP背景知识--重叠I/O理解 .
为了不必等待I/O完成后,程序逻辑才能自由往下执行,在系统上出现了“重叠I/O”来实现异步I/O。重叠I/O有两层含义:异步、重叠。异步实现方式:程序调用完I/O函数后立即返回,程序逻辑继续往下执行,同时程序创建一个线程“监听”I/O操作完成的通知。这样程序和I/O操作就实现了“异步”执行。重叠的含义不必等到上一个I/O操作的完成通知就可以调用下一个I/O操作,这些I/O操作堆叠在一起等待完成。而转载 2012-05-14 17:50:50 · 504 阅读 · 0 评论 -
IOCP编程之重叠IO
其实这个标题有点“标题党”的味道,为了大家搜索方便我故意冠以IOCP编程之名,其实重叠IO编程并不一定需要IOCP,而IOCP编程就一定需要重叠IO。是不是已经被这句话给绕晕了?总之是为了更好的应用IOCP,所以要理解重叠IO。这篇文章的核心就是讨论重叠IO的来龙去脉。在很久很久以前,在用C语言写DOS程序的年代,就有了很完整的IO标准库支撑,printf输出字符到屏幕,fopen,fwrit转载 2012-05-14 17:50:28 · 560 阅读 · 0 评论 -
长连接与短连接
长连接与短连接所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。 短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。 比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。转载 2012-05-14 17:41:16 · 697 阅读 · 0 评论 -
单播,广播,组播
当前的网络中有三种通讯模式:单播、广播、组播(多播),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。一、单播:主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用IP单播协议。网络中的路由器和交转载 2012-05-30 16:25:43 · 694 阅读 · 0 评论