[winpcap]抓来了IP包,然后分析得到的地址,如何是随机值啊帮小弟我看看

[winpcap]抓来了IP包,然后分析得到的地址,怎么是随机值啊。帮我看看

我设置的过滤字符串是:ip   and   udp
我把包数据的指针,保存在数组里。

CArray   <CPacket,CPacket>   arPacket;  


数组里的条目对应于   一个   listctrl.

当我单击listctrl一行时,想显示出IP目的地址和源地址。

但我程序显示出来的,好像都是随机值啊,根本不是我们网内常见的IP

代码:

我的抓包线程:

UINT   pcap_thread(LPVOID   Param)
{
int   rst;
struct   pcap_pkthdr   *header;
const   u_char   *pkt_data;
time_t   localetime;
int   y   =   0;
CString   timestr;

CAimsnifApp   *   papp   =   (CAimsnifApp   *   )   AfxGetApp();
CAimsnifDlg   *   pmaindlg   =   (   CAimsnifDlg   *)   papp-> m_pMainWnd;

while   (   bcaprunning   &&   (   rst   =   pcap_next_ex(   papp-> adhandle,   &header,   &pkt_data   )   )   > =   0   )
{


if   (   rst   =   0)
continue   ;
localetime   =   header-> ts.tv_sec   ;
CTime   tim   (localetime);
timestr   =   tim.Format( "%Y   %B   %d   %H:%M:%S ");
pmaindlg-> InsertItem(   timestr   ,pkt_data   );


}

把包保存到数组中
//   Insert   item   into   the   list.
bool   CAimsnifDlg::InsertItem(   CString   str,   const   u_char   *   pkt_data   )
{
CPacket   apkt;
apkt.SetPacket(   pkt_data   );
apkt.SetTimestr(   str   );
arPacket.SetAtGrow(   packet_count,apkt);
m_list.SetItemCountEx(   packet_count   );
//m_list.Invalidate();

packet_count++;
return   true;
}

//响应双击列表的时候,显示IP地址
void   CAimsnifDlg::OnNMDblclkListPacket(NMHDR   *pNMHDR,   LRESULT   *pResult)
{
POSITION   pos   =   m_list.GetFirstSelectedItemPosition();
int   item   =0;
if   (pos   ==   NULL)
{
TRACE( "My   god   ,no   item   was   selected!\n ");
}  
else
{
item   =m_list.GetNextSelectedItem(   pos   );

}
CString   strmsg;
const u_char   *   packet   =   arPacket.ElementAt(item).GetPacket();//从数组获取保存的包数据指针,这样可以么???
        struct   ip_header   *   ih   =(ip_header   *)   packet+   14;//ethernet






strmsg.Format(_T   ( "source_ip:%d.%d.%d.%d,destination_ip:%d.%d.%d.%d "),  
ih-> saddr.byte1,
ih-> saddr.byte2,
ih-> saddr.byte3,
ih-> saddr.byte4,
ih-> daddr.byte1,
ih-> daddr.byte2,
ih-> daddr.byte3,
ih-> daddr.byte4);
AfxMessageBox(   strmsg   );
*pResult   =   0;
}




------解决方案--------------------
分不少!给我三分之一就够了!

哈哈,LZ,我也正想学习学习这块呢?俺不会,不好意思呀!
------解决方案--------------------
笑~
又是winpcap唉
建议去看看SnifferFox的开源代码
很有帮助的~

作者的主页上有得下:

http://www.shaohui.org/snifferfox.html


------解决方案--------------------
ding
------解决方案--------------------