社区
网络及通讯开发
帖子详情
如何在局域网上编一段程序通过IP知道对方的MAC网卡号?许多软件能显示对方的mac.
BCB
2003-02-11 05:02:34
如果你访问了某一个IP地址,在dos下执行命令 arp -a
马上就显示出对方的网卡号MAC,原来MAC在TCP/IP数据包中就有,
怎样用bcb编出一段程序实现这个功能呢? 200分!!!!!!!!!!
String GetMac(char * ip); // 怎样实现?
...全文
212
18
打赏
收藏
如何在局域网上编一段程序通过IP知道对方的MAC网卡号?许多软件能显示对方的mac.
如果你访问了某一个IP地址,在dos下执行命令 arp -a 马上就显示出对方的网卡号MAC,原来MAC在TCP/IP数据包中就有, 怎样用bcb编出一段程序实现这个功能呢? 200分!!!!!!!!!! String GetMac(char * ip); // 怎样实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lontran
2003-02-20
打赏
举报
回复
#include "winsock.h"
#include "nb30.h"
pepsi1980
2003-02-19
打赏
举报
回复
不好意思,上次漏贴了:(VC)
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include "iphlpapi.h"
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "Iphlpapi.lib" )
.......(同上)
BCB
2003-02-18
打赏
举报
回复
少了头文件,编译通不过
RomanticProgrammer
2003-02-17
打赏
举报
回复
学习..呵呵.
BCB
2003-02-17
打赏
举报
回复
等俺试好再发分
lontran
2003-02-14
打赏
举报
回复
strcpy((char *)ncb.ncb_callname, "*" );//这个"*"代表获得本机网卡地址,换成IP地址就可以获得局域网内其他机器的网卡地址。
ncb.ncb_buffer =(unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
if (uRetCode == 0 )
{
AnsiString (Mac).sprintf("%02X%02X%02X%02X%02X%02X",
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]);
Mac=msg.c_str();
return true;
}
else
{
strcat(Mac,"Unknown.");
return false;
}
}
lontran
2003-02-14
打赏
举报
回复
bool MAC(char *Mac)
{
AnsiString msg;
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, *PASTAT;
ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
char tmp[40];
Mac[0]='\0';
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
uRetCode = Netbios( &ncb );
if (uRetCode!=0)
{
strcat(Mac,"Init Error!");
return false;
}
memset(&ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
oishi
2003-02-13
打赏
举报
回复
关注
收藏
wildhorse01
2003-02-13
打赏
举报
回复
http://www.chinabcb.com/dispbbs.asp?boardID=4&ID=756
这是我从老侃的网站得到的,谢谢老侃:)
wildhorse01
2003-02-13
打赏
举报
回复
nowcan.chinabcb.com上好像有吧?
Jim3
2003-02-13
打赏
举报
回复
学习
NowCan
2003-02-12
打赏
举报
回复
楼上的代码需要Win2k+才行。
BCB
2003-02-12
打赏
举报
回复
要简单通用,最好是c++builder的代码
pepsi1980
2003-02-11
打赏
举报
回复
#include
#include
#include
#include "iphlpapi.h"
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "Iphlpapi.lib" )
void main( int argc, char ** argv )
{
int numberOfHost = 1;
struct hostent *remoteHostent;
//处理命令行参数
if ( argc == 3 )
numberOfHost = atoi( argv[2] );
if ( ( argc >3 ) || ( argc < 2 ) )
{
printf( "RmtHost v0.2 - Get remote HostName /MacAddress\n" );
printf( "by ShotgunLabs ( Shotgun@xici.net )\n\n" );
printf( "Usage :\n\tRmtHost.exe [RemoteIP] \n\n" );
printf( "Example:\n\tRmtHost.exe 192.168.0.3\n" );
printf( "\tRmtHost.exe 192.168.0.3 255\n\n" );
exit( 0 );
}
//初始化SOCKET
WSADATA wsaData;
int iRet = WSAStartup(MAKEWORD(2,1), &wsaData);
if ( iRet != 0 )
{
printf( "WSAStartup Error:%d\n", GetLastError() );
exit( 0 );
}
int nRemoteAddr = inet_addr( argv[1] );
remoteHostent= (struct hostent*)malloc( sizeof(struct hostent ));
struct in_addr sa;
for ( int i = 0; i < numberOfHost; i ++ )
{
//获取远程机器名
sa.s_addr = nRemoteAddr;
printf( "\nIpAddress : %s\n", inet_ntoa( sa ) );
remoteHostent = gethostbyaddr( (char*)&nRemoteAddr,4, AF_INET );
if ( remoteHostent )
printf( "HostName : %s\n",remoteHostent->h_name );
else
printf( "gethostbyaddr Error:%d\n",GetLastError() );
//发送ARP查询包获得远程MAC地址
unsigned char macAddress[6];
ULONG macAddLen = 6;
iRet=SendARP(nRemoteAddr, (unsigned long)NULL,(PULONG)&macAddress, &macAddLen);
if ( iRet == NO_ERROR )
{
printf( "MacAddress: " );
for( int i =0; i<6; i++ )
{
printf( "%.2x", macAddress[i] );
if ( i<5 ) printf( "-" );
}
printf( "\n" );
}
else
printf( "SendARP Error:%d\n", GetLastError());
nRemoteAddr = htonl( ntohl( nRemoteAddr ) + 1 );
}
}
NowCan
2003-02-11
打赏
举报
回复
arp只能在同一个网段的局域网中显示出mac
是啊,难道你想得到其他网段的MAC?
NowCan
2003-02-11
打赏
举报
回复
我可以给你一个VC的程序,如果需要,和我联系。
nowcan@163.com
BCB
2003-02-11
打赏
举报
回复
arp只能在同一个网段的局域网中显示出mac
BCB
2003-02-11
打赏
举报
回复
c:\dos > ping 192.168.1.2
c:\dos> arp -a
只要能ping通
马上就就显示出192.168.1.2.的mac
编程如何实现呢?
局域网
地址扫描工具,
IP
,
MAC
,SHARE,NETBIOS,COMPUTERNAME
一个简单小巧的
IP
地址扫描工具,分析和记录办公网络中的
IP
地址和
MAC
地址,共享资源等东东!
实验四:ARP分析与路由协议分析.doc
实验四:ARP分析与路由协议分析.doc
Windows系统下通过
IP
地址获取
MAC
地址的实践指南
SendArp()函数是Windows系统提供的一个用于发送ARP(地址解析协议)包的函数,允许开发者执行ARP请求以获取或设置
局域网
内某个
IP
地址对应的
MAC
地址信息。这个函数在需要进行网络设备识别、网络诊断或是在进行网络通信时需要
知道
对方硬件地址的情况下十分有用。网络安全策略的制定需要全面了解企业的业务需求、潜在风险和合规要求。它通常包含以下方面:物理安全策略:保护网络设备免受物理干扰或破坏。访问控制策略:确定哪些用户可以访问哪些资源,并如何访问。数据加密策略。
网卡
地址和
ip
地址的区别
所谓
IP
地址就是给每个连接在Internet上的主机分配的一个32bit地址。简单地说就是你在整个互联网上的ID。
MAC
(Media Access Control,介质访问控制)地址 (物理地址)是识别LAN(
局域网
)节点的标识。
网卡
的物理地址通常是由
网卡
生产厂家烧入
网卡
的EPROM(一种闪存芯片,通常可以通过
程序
擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址...
全面掌握
IP
-
MAC
地址扫描器设计与应用
地址解析协议(Address Resolution Protocol,ARP)是计算机网络中用于将
IP
地址映射到
MAC
地址的一种协议。其基本功能是通过
局域网
上的主机的
IP
地址,查询对应主机的物理地址(即
MAC
地址),以便完成网络数据的传输。地址解析协议(ARP)是一种网络协议,用于将网络层的
IP
地址解析为链路层的物理地址,即
MAC
地址。这个过程是必不可少的,因为当一台计算机需要与
局域网
内的另一台计算机通信时,它首先需要
知道
对方的
MAC
地址。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章