社区
网络及通讯开发
帖子详情
如何在局域网上编一段程序通过IP知道对方的MAC网卡号?许多软件能显示对方的mac.
BCB
2003-02-11 05:02:34
如果你访问了某一个IP地址,在dos下执行命令 arp -a
马上就显示出对方的网卡号MAC,原来MAC在TCP/IP数据包中就有,
怎样用bcb编出一段程序实现这个功能呢? 200分!!!!!!!!!!
String GetMac(char * ip); // 怎样实现?
...全文
254
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
地址?
本文将
IP
地址和
MAC
地址比喻为快递中的收件人地址和姓名,形象解释了两者在网络通信中的角色。
IP
地址用于跨网段寻址,而
MAC
地址用于
局域网
内的主机间通信。
Python编程——使用scapy模块进行ARP
局域网
扫描,获取主机
IP
和
MAC
本文介绍了Python的scapy模块,用于网络嗅探和伪造报文。讲解了scapy的特点、安装方法以及如何使用scapy进行ARP
局域网
扫描,包括
显示
网卡
信息、嗅探流量和构造ARP包。通过发送ARP请求并解析响应,可以获取
局域网
中活跃主机的
IP
和
MAC
地址。
根据已知
IP
地址查询
局域网
中对应
网卡
的
MAC
地址
本文探讨如何利用Delphi编程,在Windows环境下通过Socket技术查询
局域网
内特定
IP
地址所对应的
网卡
物理(
MAC
)地址。
局域网
IP
冲突解决方案:快速修改
网卡
MAC
软件
本文围绕
局域网
IP
冲突问题展开,介绍了
MAC
地址的定义、作用及与网络安全的关联。详细阐述了手动和编程修改
MAC
地址的方法,还对比了多款
MAC
修改
软件
。指出
软件
修改
MAC
地址操作简易、可快速切换网络身份,但存在系统兼容性和网络安全风险,使用时需谨慎。
为什么有了
MAC
地址还要有
IP
地址(简单易懂)
本文深入浅出地介绍了网络通信的基础概念,包括
IP
地址、
MAC
地址、ISP、以太网和
局域网
的作用与区别,解释了
MAC
地址和
IP
地址在网络通信中的角色,以及为何两者并存的必要性。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章