我在用WinPcap捕获数据包的时候,不知道如何区分数据包是自己发出去的,还是从网口接收到的。我直接捕获的是Ethernet包,里面只有源mac地址和目的mac地址。但是WireShark里面可以显示出,一个包是不是本机发出的。
请问各位高手,在这种情况下如何区分捕获的数据包,究竟是发出的?还是收到的?WireShark是如何知道的呢?
请问各位高手,在这种情况下如何区分捕获的数据包,究竟是发出的?还是收到的?WireShark是如何知道的呢?
解决方案 »
- 对话框的覆盖
- 简单的D3D转换问题
- 看了the c++ language programming 第六章 有问题了程序看懂 程序我已经打出来了 各位大虾 请赐教 谢谢 分不够再开
- 各位,介绍几个讨论SDK的论坛吧
- 如何实现CListCtrl的每行高度不一样,我知道要用drawitem,但是最好有代码?
- 请问,大家发布自己的软件的时候都是用什么做安装包的?
- 我怎么在一个单文档的框架上让程序自动关闭所以此程序弹出的对话框??包括多层钳套
- 关于MFC中的CView视图输出控制
- 大家好,为什么我win7上的mfc程序在xp运行就特别卡
- 低级问题,希望有人理我
- 界面设计 在tab控件中添加list 控件后初始化报错
- WinPcap捕获的数据包如何区分方向?
void CSquallPacketCap::DealWithPacket(CTime Tm,ULONG Len, BYTE* pBuf)
{
//注意看这里!!
TRACE("\n\n %s, %d \nFrom [%s] To [%s] \n",
Tm.Format("%H:%M:%S"),Len,
MacToString(&pBuf[6]),MacToString(&pBuf[0]));}CString CSquallPacketCap::MacToString(BYTE* Mac)
{
CString str;
str.Format("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x",Mac[0],Mac[1],Mac[2],Mac[3],Mac[4],Mac[5]);
return str;
}
你不是知道目标mac地址和源mac地址了么?
先查一下自己机器的mac地址。
如果源mac等于本机mac,则是自己发出去的。
如果目标mac等于本机mac,则是自己收到的。
包头的前6个字节是目的MAC, 紧接着的是源MAC地址.
但是要注意特殊情况, 比如是某些程序构造的裸数据包, 那就可能区分不了源和目的了.