求一个linux c程序,来查看局域网的主机名和mac地址?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个linux c程序,来查看局域网的主机名和mac地址?相关的知识,希望对你有一定的参考价值。

求一个linux c程序,来查看局域网各个IP的主机名和mac地址?

4.2如何察看本机的MAC地址
这个.....最简单明了的方法.....
就是拔出网卡,直接在网卡上寻找(网卡制造商通常都会把网卡的MAC地址标识在网卡上面)

如果不方便的,我们可以在不同的OS下面通过一些简单的命令察看到网卡的MAC地址

Windows类
对于win98/winme
开始-->运行-->winipcfg

对于win2k/xp/2003
命令行下 ipconfig /all
显示结果中的Phyical Address即为需要寻找的MAC地址

UNIX类
对于Linux使用ifconfig命令
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:60:08:C4:99:AA
inet addr:131.225.84.67 Bcast:131.225.87.255 Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15647904 errors:0 dropped:0 overruns:0
TX packets:69559 errors:0 dropped:0 overruns:0
Interrupt:10 Base address:0x300
//HWAddr后面那串数值就是MAC地址

对于Solaris同样也是ifconfig -a
# ifconfig -a
le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 131.225.80.209 netmask fffff800 broadcast 131.225.87.255
ether 8:0:20:10:d2:ae
//ether后面那串数值

对于FreeBSD而言使用dmesg命令

对于HPUX机器使用lanscan命令
$ lanscan
Hardware Station Dev Hardware Net-Interface NM Encapsulation Mjr
Path Address lu State NameUnit State ID Methods Num
2.0.2 0x08000935C99D 0 UP lan0 UP 4 ETHER 52

4.3如何察看远程主机的MAC地址
分成两种情况
1.同一网段
先ping一下对端主机
然后通过arp -a可以察看到相应主机的mac地址
例如:
C:\Documents and Settings\Administrator>arp -a

Interface: 10.1.7.88 --- 0x4
Internet Address Physical Address Type
10.1.7.250 00-0a-eb-cb-ca-c0 dynamic

2.不同网段
nbtstat -a ip-address
但是前提是对端为windows主机同时打开了相应的端口
本地连接:
Node IpAddress: [10.1.7.88] Scope Id: []

NetBios Remote Machine Name Table

Name Type Status
---------------------------------------------
INet~Services <1C> GROUP Registered
IS~SOFTLORD....<00> UNIQUE Registered
SOFTLORD <00> UNIQUE Registered
WORKGROUP <00> GROUP Registered
ADMINISTRATOR <03> UNIQUE Registered
WORKGROUP <1E> GROUP Registered
SOFTLORD <20> UNIQUE Registered
IWAM_SOFTLORD <03> UNIQUE Registered
SOFTLORD <03> UNIQUE Registered
WORKGROUP <1D> UNIQUE Registered
..__MSBROWSE__.<01> GROUP Registered

MAC Address = 00-0C-76-C6-55-FC

4.4修改网卡的MAC地址
修改网卡的MAC地址我们可以简单分为"硬改"和"软改"
总所周知,网卡的MAC地址是固化在网卡的某块EEPROM里面的
我们可以通过特殊软件进行修改
比如早期的ISA总线的网卡(很Old的那种,估计好多人都没有见过)
这类网卡所带的驱动软盘上往往有一个诊断程序,通过这个程序我们
可以修改固化在网卡上的MAC地址,这类程序一般只能运行在纯DOS环境

对于广泛采用的Realtek 8029/8139的网卡也有专门的程序可以修改其MAC地址
程序名叫:pg8029.exe

再说说软修改,所谓的软修改就是修改OS相应的协议栈里面的数据达到修改发送
Frame时源MAC地址的目的

对于windows平台,有专门的软件可以修改(大家可以Google一下)
也可以直接修改注册表或者相应的驱动属性.

对于Linux而言据说需要修改相应的源码之后再编译内核即可
对Linux不熟悉,大家如果想了解的化,可以Google一下
参考技术A 我也想要 参考技术B 占个位子,明天再说 参考技术C 自己的ifconfig
别人的arp
apt-get source net-tools下载代码

Linux /etc/hosts

用途:

关联主机名和IP地址

在机器启动时,在DNS正常工作前,需要知道一些主机名和IP地址的映射关系,这个映射关系就保存在/etc/hosts文件中,在DNS不能正常工作是,系统中所有的网络程序将查看该文件以决定IP地址对应的主机名。

格式:

每行一个IP地址

IP_address canonical_hostname [aliases...]

注释:

从 #开始,到一行的结束。

示例一:

127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

示例二:

# The following lines are desirable for IPv4 capable hosts
       127.0.0.1       localhost

       # 127.0.1.1 is often used for the FQDN of the machine
       127.0.1.1       thishost.mydomain.org  thishost
       192.168.1.10    foo.mydomain.org       foo
       192.168.1.13    bar.mydomain.org       bar
       146.82.138.7    master.debian.org      master
       209.237.226.90  www.opensource.org

       # The following lines are desirable for IPv6 capable hosts
       ::1             localhost ip6-localhost ip6-loopback
       ff02::1         ip6-allnodes
       ff02::2         ip6-allrouters

 

以上是关于求一个linux c程序,来查看局域网的主机名和mac地址?的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础-域名解析

Mac修改主机名和计算机名

Linux中的LDAP认证

linux主机名 hostname

linux下怎么查看自己所在局域网的其他主机?

请问有啥软件可以自动搜索出所有局域网的电脑名和IP地址以及MAC地址?