RodYang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年9月11日

摘要: ◆使用strtok函数分割。原型:char *strtok(char *s, char *delim);strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。 所有delim中包含的字符都会被滤掉,并将 阅读全文
posted @ 2013-09-11 01:45 RodYang 阅读(800) 评论(0) 推荐(0) 编辑

2013年9月4日

摘要: 注意:这篇文档取自tcpdump的指南。原始的版本www.tcpdump.org找到。wpcap的过滤器是以已声明的谓词语法为基础的。过滤器是一个ASCII字符串,它包含了一个过滤表达式。pcap_compile()把这个表达式编译成内核级的包过滤器。这个表达式会选择那些数据包将会被堆存。如果表达式没有给出,那么,网络上所有的包都会被内核过滤引擎所认可。不然,只有那些表达式为'true'的包才会被认可。这个表达式包含了一个或多个原语。原语通常包含了id(名字或序列),这些id优先于限定词。以下是三种不同的限定词:输入(type)指明了哪些东西是id所代表的。可能的输入是host 阅读全文
posted @ 2013-09-04 06:14 RodYang 阅读(1000) 评论(0) 推荐(0) 编辑

摘要: #include #include #include #ifdef WIN32 #include #include #else #include #include #include #define CRITICAL_SECTION pthread_mutex_t #define _vsnprintf vsnprintf#endif//Log{#define MAXLOGSIZE 20000000#define MAXLINSIZE 16000#include #include #include char logfilen... 阅读全文
posted @ 2013-09-04 04:28 RodYang 阅读(313) 评论(0) 推荐(0) 编辑

2013年9月3日

摘要: Winpcap是一个强大的网络开发库,可以实现许多功能:获取可用的网络适配器;获取指定适配器信息(比如名称和描述信息);捕获指定网卡的数据封包;发送数据封包;过滤捕获的包以获取特定包等。首先到http://www.winpcap.org/install/default.htm下载安装winpcap驱动和DLL组件。然后到http://www.winpcap.org/devel.htm.下载winpcap开发包,解压到指定目录,这里我解压到C:\WpdPack_4_0_2\WpdPack,可以看到里面包含了:Lib,Include,文档和示例程序。首先创建一个C++控制台程序,设置如下:1)在“ 阅读全文
posted @ 2013-09-03 02:58 RodYang 阅读(767) 评论(0) 推荐(1) 编辑

2013年8月22日

摘要: #include "stdafx.h"#include #include #pragma comment(lib,"ws2_32.lib")short myntohs(short s){ BYTE high=(BYTE)s>>8; BYTE lower=(BYTE)s; s=(lower<<8)+high; return s;}short myntohs1(short s){ __asm { movzx eax,word ptr [ebp+8] mov ch,al shr ax,8 o... 阅读全文
posted @ 2013-08-22 14:17 RodYang 阅读(268) 评论(0) 推荐(0) 编辑

2013年8月21日

摘要: 在看C/C++的书或者试题时,有时会见到利用word或dword定义的变量,第一次看到的时候并不知其是什么,更不用说word或dword占几个字节了。幸好在VC安装文件夹下有相关的定义。如C:\Program Files\Microsoft Visual Studio\VC98\Include查看头文件WINDEF.H的定义:typedef unsigned longDWORD;typedef intBOOL;typedef unsigned charBYTE;typedef unsigned shortWORD;typedef floatFLOAT;typedef FLOAT*PFLOAT; 阅读全文
posted @ 2013-08-21 15:08 RodYang 阅读(1738) 评论(0) 推荐(0) 编辑

摘要: 下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用......以太帧头格式结构体,共14个字节: typedef struct ether_header { unsigned char ether_dhost[6];//目的MAC地址 unsigned char ether_shost[6];//源MAC地址 unsigned short ether_type;//协议类型 }ETHHEADER,*PETHHEADER;IPv4报头格式结构体,共20个字节:typede... 阅读全文
posted @ 2013-08-21 09:23 RodYang 阅读(1610) 评论(0) 推荐(0) 编辑

摘要: 解析IPV4报文和IPV6报文的checksum的算法:校验和(checksum)算法,简单的说就是16位累加的反码运算:计算函数如下:我们在计算时是主机字节序,计算的结果封装成IP包时是网络字节序,注意这两者之间的区别,我们在从IP包里读取要转化为主机字节序,往IP包里存入时要转化为网络字节序在存入。UINT32 Checksum(UINT32 cksum, VOID *pBuffer, UINT32 size){INT8 num = 0;UINT8 *p = (UINT8 *)pBuffer;if ((NULL == pBuffer) || (0 == size)){return cksu 阅读全文
posted @ 2013-08-21 08:50 RodYang 阅读(3499) 评论(0) 推荐(1) 编辑

2013年8月17日

摘要: 我就不管是按“位”(bit)取反相加,还是 按“1的补码”相加了,总之就是把需要进行校验的“字串”加(+)起来,把这相加的 结果取反当做“校验和” (Checksum), 比如,相加的结果是0101,那么“校验和”就是1010,验证的时候呢,就是0101+1010 = 1111,取反后, 就是0——如果验证得“零”(0),就是正确的!先将checksum字段置零,然后按16位分组,计算2进制反码和,最后再求和的反码!为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在检验和字段中。当收到一份I 阅读全文
posted @ 2013-08-17 23:55 RodYang 阅读(11641) 评论(0) 推荐(0) 编辑

2013年8月15日

该文被密码保护。 阅读全文
posted @ 2013-08-15 21:52 RodYang 阅读(0) 评论(0) 推荐(0) 编辑