4月7日
来源:互联网 发布:多文件编程vs 编辑:程序博客网 时间:2024/04/29 18:01
l Sniffer程序的重构(基于Win32 控制台程序)
Sniffer的原理是利用网卡的混杂状态下对全部经过网卡的数据包的IP头进行分析,可以查看到端口、协议、IP地址。
TCP与IP头的数据结构:
typedef struct _IPHeader //20字节的IP头
{
UCHAR iphVerlen; //版本号和头长度(各占4位)
UCHAR ipTOS; //服务类型
USHORT ipLength; //封包总长度,即整个IP报的长度
USHORT ipID; //封包标识,惟一标识发送的每一个数据报
USHORT ipFlags; //标志
UCHAR ipTTL; //生存时间,就是TTL
UCHAR ipProtocol; //协议,可能是TCP、UDP、ICMP等
USHORT ipChecksum; //校验和
ULONG ipSource; //源IP
ULONG ipDestination; //目标IP地址
}IPHeader,*PIPHeader;
typedef struct _TCPHeader //20字节的TCP头
{
USHORT sourcePort; //16位源端口号
USHORT destinationPort; //16位目的端口号
ULONG sequenceNumber; //32位序列号
ULONG acknowledgeNumber; //32确认号
UCHAR dataoffset; //高4位表示数据偏移
UCHAR flags; //6位标志位
// TCP_FIN 0x01
// TCP_SYN 0x02
// TCP_RST 0x04
// TCP_PSH 0x08
// TCP_ACK 0x10
// TCP_URG 0x20
// TCP_ACE 0x40
// TCP_CWR 0x80
USHORT windows; //16位窗口的大小
USHORT checksum; //16位校验和
USHORT urgentPointer; //16位紧急数据偏移量
}TCPHeader,*PTCPHeader;
初始化socket库(建立一个独立的类):
包含winsock2.h ,链接WS2_32.lib ( #pragma comment(lib,WS2_32) )
WSADATA WSAStartup() WSAClearup()
解构TCP头:
根据TCP头中的数据记录的Sourceport、Destinationport进行分析。
例:端口21 80所代表的服务
Ntohs() 将一个ushort类型的数据从网络字节序转为主机的字节序
Htons() 将一个ushort类型的数据从主机的字节序转为网络字节序
解构IP头:
根据IP头中的数据记录的ipsource地址、ipdestination、ipprotocol(IPPROTO_IP IPPROTO_TCP IPPROTO_UDP)地址进行分析,根据IP头中记录的不同协议进行下一步的解构,计算IP头的长度,确定偏移量,确定其他头的位置进行下一步的解构。
in_addr数据用于储存IP地址的数据(网络字节序)
inet_addr() 将本地的字节序转为网络字节序
inet_ntoa() 将网络字节序转为本地的字节序
接收经过网卡的数据报
SOCKET socket() SOCK_RAW 创建socket
SOCKADDR_IN 记录socket所要用的信息,用于绑定
Gethostname() 获取主机名
Gethostbyname() 获取主机的hostent
if(bind(sRaw,(PSOCKADDR)&addr_in,sizeof(addr_in) == SOCKET_ERROR)
return;
//绑定socket
DWORD dwValue =1;
if(ioctlsocket(sRaw,SIO_RCVALL,&dwValue) != 0)
return;
//控制socket的输入与输出的方式
char buff[1024];
int nRet;
while(TRUE)
{
nRet = recv(sRaw,buff,1024,0); //接收经过网卡的数据包
if(nRet>0)
DecodeIPPacket(buff);
}
closesocket(sRaw); //关闭socket
- 4月7日
- 4月7日
- 7月4日
- 7月4日
- 7月4日
- 7月4日
- 7月4日开篇
- 4月7日 信号
- 4月7日整理
- 【婷】 4月7日
- week6--4月7日
- 公元2004年7月4日
- 2007年4月7日-报到
- 工作笔记(7月4日)
- 2009年4月7日
- 2009年4月7日
- 2008年7月4日
- 2010年4月7日星期三
- 今天在CSDN安家了!
- 4月6日
- Hadoop入门(转)
- 要走了。。。
- 微软下周将发布XP SP3 开机仅需35秒
- 4月7日
- 字符串转换为货币型
- 关于window.status属性的设置
- 戴尔在淘宝建首个"戴尔淘宝官方旗舰店"
- Linux 常用命令
- LuaPlus学习(二)
- IT业10年生死鉴
- WinDebug z在VMWare中的使用
- 开张大吉