ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:39.24KB ,
资源ID:19758599      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19758599.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Raw Socket的嗅探器设计与实现选座题目及资料Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Raw Socket的嗅探器设计与实现选座题目及资料Word文档下载推荐.docx

1、 bool flag = ture;addrLocal 为本地地址: SOCKADDR_IN addrLocal;dwValue 为输入输出参数, 为 1 时执行, 0 时取消: DWORD dwValue = 1;TCP header structure:16 32 bit |-|-| | Source port | Destination port | | Sequence number | | Acknowledgement number | | Offset | Resrvd |U|A|P|R|S|F| Window | | Checksum | Urgent pointer | |

2、Option + Padding | | Data | 五. 实现 Sniffer 用 BCB6 写的一个 Simple Sniffer 的代码, 仅供参考. (需要在工程文件里加入WS2_32.LIB这个文件) /*/ /* CPP File: WMain.cpp /* Simple Sniffer by shadowstar /* #include #pragma hdrstop winsock2.hws2tcpip.hmstcpip.hnetmon.h#include WMain.h/- #pragma package(smart_init) #pragma resource *.dfm

3、TMainForm *MainForm;_fastcall TMainForm:TMainForm(TComponent* Owner) TForm(Owner) WSADATA WSAData;BOOL flag = true;int nTimeout = 1000;char LocalName16;struct hostent *pHost;/检查 Winsock 版本号 if (WSAStartup(MAKEWORD(2, 2), &WSAData) != 0) throw Exception(WSAStartup error!);/初始化 Raw Socket if (sock = s

4、ocket(AF_INET, SOCK_RAW, IPPROTO_RAW) = INVALID_SOCKET) socket setup error!/设置IP头操作选项 if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag) = SOCKET_ERROR) setsockopt IP_HDRINCL error!/获取本机名 if (gethostname(char*)LocalName, sizeof(LocalName)-1) = SOCKET_ERROR) gethostname error!/获取

5、本地 IP 地址 if (pHost = gethostbyname(char*)LocalName) = NULL) gethostbyname error!addr_in.sin_addr = *(in_addr *)pHost-h_addr_list0; /IP addr_in.sin_family = AF_INET;addr_in.sin_port = htons(57274);/把 sock 绑定到本地地址上 if (bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in) = SOCKET_ERROR) bind error!iSortDir

6、ection = 1; TMainForm() WSACleanup();void _fastcall TMainForm:btnCtrlClick(TObject *Sender) TListItem *Item;DWORD dwValue;int nIndex = 0;if (btnCtrl-Caption = &Start) dwValue = 1;/设置 SOCK_RAW 为SIO_RCVALL,以便接收所有的IP包 if (ioctlsocket(sock, SIO_RCVALL, &dwValue) !ioctlsocket SIO_RCVALL error!bStop = fal

7、se;btnCtrl-Caption = Stop;lsvPacket-Items-Clear();else dwValue = 0;bStop = true;/设置SOCK_RAW为SIO_RCVALL,停止接收 WSAIoctl SIO_RCVALL error!while (!bStop) if (recv(sock, RecvBuf, BUFFER_SIZE, 0) 0) nIndex+;ip = *(IP*)RecvBuf;tcp = *(TCP*)(RecvBuf + (ip.HdrLen & IP_HDRLEN_MASK);Item = lsvPacket-Add();Item-

8、Caption = nIndex;SubItems-Add(GetProtocolTxt(ip.Protocol);Add(inet_ntoa(*(in_addr*)&ip.SrcAddr);ip.DstAddr);Add(tcp.SrcPort);Add(tcp.DstPort);Add(ntohs(ip.TotalLen);Application-ProcessMessages();AnsiString _fastcall TMainForm:GetProtocolTxt(int Protocol) switch (Protocol) case IPPROTO_ICMP : /1 /* c

9、ontrol message protocol */ return PROTOCOL_STRING_ICMP_TXT;case IPPROTO_TCP : /6 /* tcp */ return PROTOCOL_STRING_TCP_TXT;case IPPROTO_UDP : /17 /* user datagram protocol */ return PROTOCOL_STRING_UDP_TXT;default :return PROTOCOL_STRING_UNKNOWN_TXT;/* Header File: WMain.h for WMain.cpp class TMainFo

10、rm #ifndef WMainH #define WMainH #define BUFFER_SIZE 65535 Classes.hppControls.hppStdCtrls.hppForms.hppComCtrls.hppExtCtrls.hppnetmon.hclass TMainForm : public TForm _published: / IDE-managed Components TPanel *Panel1;TButton *btnCtrl;TListView *lsvPacket;TLabel *Label1;void _fastcall btnCtrlClick(T

11、Object *Sender);void _fastcall lsvPacketColumnClick(TObject *Sender, TListColumn *Column);void _fastcall lsvPacketCompare(TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare);void _fastcall Label1Click(TObject *Sender);private: / User declarations AnsiString _fastcall GetProt

12、ocolTxt(int Protocol);public:SOCKET sock;SOCKADDR_IN addr_in;IP ip;TCP tcp;PSUHDR psdHeader;char RecvBufBUFFER_SIZE;bool bStop;int iSortDirection;int iColumnToSort;_fastcall TMainForm(TComponent* Owner);_fastcall TMainForm();extern PACKAGE TMainForm *MainForm;#endif IP, TCP 头及一些宏定义用了 netmon.h 的头, 这个

13、文件在 BCB6 的 include 目录下可以找得到, 其中与本程序相关内容如下: netmon.h / / IP Packet Structure typedef struct _IP union BYTE Version;BYTE HdrLen;BYTE ServiceType;WORD TotalLen;WORD ID;WORD Flags;WORD FragOff;BYTE TimeToLive;BYTE Protocol;WORD HdrChksum;DWORD SrcAddr;DWORD DstAddr;BYTE Options0; IP;typedef IP * LPIP;ty

14、pedef IP UNALIGNED * ULPIP;/ TCP Packet Structure typedef struct _TCP WORD SrcPort;WORD DstPort;DWORD SeqNum;DWORD AckNum;BYTE DataOff;BYTE Flags;WORD Window;WORD Chksum;WORD UrgPtr; TCP;typedef TCP *LPTCP;typedef TCP UNALIGNED * ULPTCP;/ upper protocols #define PROTOCOL_STRING_ICMP_TXT ICMP#define

15、PROTOCOL_STRING_TCP_TXT TCP#define PROTOCOL_STRING_UDP_TXT UDP#define PROTOCOL_STRING_SPX_TXT SPX#define PROTOCOL_STRING_NCP_TXT NCP#define PROTOCOL_STRING_UNKNOW_TXT UNKNOW这个文件也有人声称没有. mstcpip.h / Copyright (c) Microsoft Corporation. All rights reserved. #if _MSC_VER 1000 #pragma once /* Argument s

16、tructure for SIO_KEEPALIVE_VALS */ struct tcp_keepalive u_long onoff;u_long keepalivetime;u_long keepaliveinterval;/ New WSAIoctl Options #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2) #define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3) #define SIO_KEEPALIVE_V

17、ALS _WSAIOW(IOC_VENDOR,4) #define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5) #define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6) #define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7) #define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8) #define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9) #define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10) #define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11) / Values for use with SIO_RCVALL* options #define RCVALL_OFF 0 #define RCVALL_ON 1 #define RCVALL_SOCKETLEVELONLY 2 六. 小结 优点: 实现简单, 不需要做驱动程序就可实现抓包. 缺点: 数据包头不含帧信息, 不能接收到与 IP 同层的其它数据包, 如 ARP, RARP;没有对数据包进行进一步的分析。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1