我们用原始套接字(raw-socket)能截获局域网内的所有数据,但是这些数据都是IP包
如果用winpcap能截获MAC侦,如果局域网的连接设备是switch(路由器,交换机)的话,就只能截获流经本机的MAC侦
哎~~~本人菜鸟一只,忘高手指点指点。
谢谢!
如果用winpcap能截获MAC侦,如果局域网的连接设备是switch(路由器,交换机)的话,就只能截获流经本机的MAC侦
哎~~~本人菜鸟一只,忘高手指点指点。
谢谢!
解决方案 »
- InstallShield for Microsoft Visual C++ 6
- 程序使用odbc连接内存不断增长
- VS2005用atl项目制作activeX控件在网页上不能显示的问题?
- 请教下C++Builder和VC++有什么区别?
- 求教: CARRAY 赋值出错 错误0xc00005
- 请问是否存在发送arp信息的api?
- 在VC中怎样设置显示文本的字体
- 大家好,有问题请教老手们!!!真心谢谢!!!
- WINDOWS的API和COM在WINDOWS编程中的地位和作用?
- 给Windows加一个DeskBand
- 对于内存映射文件的操作,请大虾们多多指点下
- MFC中是通过什么方法实现 派生类覆盖基类的?
http://www.cnblogs.com/phinecos/archive/2009/01/04/1368466.html
如何从局域网中截获的数据包中获取MAC侦,首要条件就是如何截获局域网内的所有MAC侦?
不是获取所有的电脑的MAC针
//#include <wincon.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;ASTAT Adapter;int main (void)
{
NCB Ncb;
UCHAR uRetCode;
char NetName[50];
LANA_ENUM lenum;
int i; memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR *)&lenum;
Ncb.ncb_length = sizeof(lenum);
uRetCode = Netbios( &Ncb );
printf( "The NCBENUM return code is: 0x%x \n", uRetCode ); for(i=0; i < lenum.length ;i++)
{
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = lenum.lana; uRetCode = Netbios( &Ncb );
printf( "The NCBRESET on LANA %d return code is: 0x%x \n",
lenum.lana, uRetCode ); memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = lenum.lana; strcpy( Ncb.ncb_callname, "* " );
Ncb.ncb_buffer = (char *) &Adapter;
Ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &Ncb );
printf( "The NCBASTAT on LANA %d return code is: 0x%x \n",
lenum.lana, uRetCode );
if ( uRetCode == 0 )
{
printf( "The Ethernet Number on LANA %d is:%02x%02x%02x%02x%02x%02x\n",
lenum.lana,
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5] );
}
}}
网内的好像没什么办法...............