首页 > 其他分享 >判断网卡MAC地址前缀

判断网卡MAC地址前缀

时间:2023-05-01 18:32:18浏览次数:60  
标签:00 前缀 OUI 0x00 MAC 网卡 LENGTH


我们的电脑上现在可是很多的网卡,因为存在虚拟网卡,Lan口和wifi网卡等等。

之前有人给出判断的前缀,但是不够完整。可以从这里下载完整的资料。



1)先由 GetAdaptersInfo 获取所有网卡的基本信息。然后利用网卡名去注册表中查找对应的硬件信息。若是物理网卡,其硬件信息中通常会包含 PCI 。 

说明:之前还有一些方法比如用pbws32.dll和api来获取hostame,hostip再获取mac,实际上只能取到一个mac。而GetAdaptersInfo可以获取所有。很实用。

例如,某个网卡的名为 {ACA306D0-1D69-4116-BC2B-919B428AD084}。 
他在注册表中的信息所在位置为: 
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Network/{4D36E972-E325-11CE-BFC1-08002BE10318}/{ACA306D0-1D69-4116-BC2B-919B428AD084}/Connection 
若PnpInstanceID的值以PCI开头,说明是物理网卡,MediaSubType为01则是常见网卡,02为无线网卡。

说明:其实这个方法挺好!!!而下面的方法感觉还是很勉强。有个错误

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Network的斜杠应该为反斜杠。

2)判断常用的虚拟网卡的前缀,比如vmware的虚拟网卡我们通常知道。ipconfig/all就能查到

"00:05:69"; //vmware1
 "00:0C:29"; //vmware2
 "00:50:56"; //vmware3
 "00:1c:14"; //vmware4
 "00:1C:42"; //parallels1
 "00:03:FF"; //microsoft virtual pc
 "00:0F:4B"; //virtual iron 4
 "00:16:3E"; //red hat xen , oracle vm , xen source, novell xen
 "08:00:27"; //virtualbox

我补充几个:

“08-00-58”;//Array Networks VP N Adapter
 "00-FF-73";  //Sangfor SSL V P N CS Support System VNIC

所以还有其他的需要自己的归纳总结

android-actions/pref_hash_calculator_helper_win.cc at 6960890188f877ee2cd5d6dbf52b7de25be64085 · LeMaker/android-actions · GitHub   

// V P N, virtualization, tethering, bluetooth, etc.
   static const InvalidMacEntry kInvalidAddresses[] = {
     // Empty address
     {MAC_LENGTH, {0, 0, 0, 0, 0, 0}},
     // VMware
     {OUI_LENGTH, {0x00, 0x50, 0x56}},
     {OUI_LENGTH, {0x00, 0x05, 0x69}},
     {OUI_LENGTH, {0x00, 0x0c, 0x29}},
     {OUI_LENGTH, {0x00, 0x1c, 0x14}},
     // VirtualBox
     {OUI_LENGTH, {0x08, 0x00, 0x27}},
     // PdaNet
     {MAC_LENGTH, {0x00, 0x26, 0x37, 0xbd, 0x39, 0x42}},
     // Cisco AnyConnect V P N
     {MAC_LENGTH, {0x00, 0x05, 0x9a, 0x3c, 0x7a, 0x00}},
     // Marvell sometimes uses this as a dummy address
     {MAC_LENGTH, {0x00, 0x11, 0x22, 0x33, 0x44, 0x55}},
     // Apple uses this across machines for Bluetooth ethernet adapters.
     {MAC_LENGTH-1, {0x65, 0x90, 0x07, 0x42, 0xf1}},
     // Juniper uses this for their Virtual Adapter, the other 4 bytes are
     // reassigned at every boot. 00-ff-xx is not assigned to anyone.
     {2, {0x00, 0xff}},
     // T-Mobile Wireless Ethernet
     {MAC_LENGTH, {0x00, 0xa0, 0xc6, 0x00, 0x00, 0x00}},
     // Generic Bluetooth device
     {MAC_LENGTH, {0x00, 0x15, 0x83, 0x3d, 0x0a, 0x57}},
     // RAS Async Adapter
     {MAC_LENGTH, {0x20, 0x41, 0x53, 0x59, 0x4e, 0xff}},
     // Qualcomm USB ethernet adapter
     {MAC_LENGTH, {0x00, 0xa0, 0xc6, 0x00, 0x00, 0x00}},
     // Windows V P N
     {MAC_LENGTH, {0x00, 0x53, 0x45, 0x00, 0x00, 0x00}},
     // Bluetooth
     {MAC_LENGTH, {0x00, 0x1f, 0x81, 0x00, 0x08, 0x30}},
     {MAC_LENGTH, {0x00, 0x1b, 0x10, 0x00, 0x2a, 0xec}},
     {MAC_LENGTH, {0x00, 0x15, 0x83, 0x15, 0xa3, 0x10}},
     {MAC_LENGTH, {0x00, 0x15, 0x83, 0x07, 0xC6, 0x5A}},
     {MAC_LENGTH, {0x00, 0x1f, 0x81, 0x00, 0x02, 0x00}},
     {MAC_LENGTH, {0x00, 0x1f, 0x81, 0x00, 0x02, 0xdd}},
     // Ceton TV tuner
     {MAC_LENGTH, {0x00, 0x22, 0x2c, 0xff, 0xff, 0xff}},
     // Check Point V P N
     {MAC_LENGTH, {0x54, 0x55, 0x43, 0x44, 0x52, 0x09}},
     {MAC_LENGTH, {0x54, 0xEF, 0x14, 0x71, 0xE4, 0x0E}},
     {MAC_LENGTH, {0x54, 0xBA, 0xC6, 0xFF, 0x74, 0x10}},
     // Cisco V P N
     {MAC_LENGTH, {0x00, 0x05, 0x9a, 0x3c, 0x7a, 0x00}},
     // Cisco V P N
     {MAC_LENGTH, {0x00, 0x05, 0x9a, 0x3c, 0x78, 0x00}},
     // Intel USB cell modem
     {MAC_LENGTH, {0x00, 0x1e, 0x10, 0x1f, 0x00, 0x01}},
     // Microsoft tethering
     {MAC_LENGTH, {0x80, 0x00, 0x60, 0x0f, 0xe8, 0x00}},
     // Nortel V P N
     {MAC_LENGTH, {0x44, 0x45, 0x53, 0x54, 0x42, 0x00}},
     // AEP V P N
     {MAC_LENGTH, {0x00, 0x30, 0x70, 0x00, 0x00, 0x01}},
     // Positive V P N
     {MAC_LENGTH, {0x00, 0x02, 0x03, 0x04, 0x05, 0x06}},
     // Bluetooth
     {MAC_LENGTH, {0x00, 0x15, 0x83, 0x0B, 0x13, 0xC0}},
     // Kerio Virtual Network Adapter
     {MAC_LENGTH, {0x44, 0x45, 0x53, 0x54, 0x4f, 0x53}},
     // Sierra Wireless cell modems.
     {OUI_LENGTH, {0x00, 0xA0, 0xD5}},
     // FRITZ!web DSL
     {MAC_LENGTH, {0x00, 0x04, 0x0E, 0xFF, 0xFF, 0xFF}},
     // VirtualPC
     {MAC_LENGTH, {0x00, 0x00, 0x00, 0x00, 0x00, 0x01}},
     // Bluetooth
     {MAC_LENGTH, {0x00, 0x1F, 0x81, 0x00, 0x01, 0x00}},
     {MAC_LENGTH, {0x00, 0x30, 0x91, 0x10, 0x00, 0x26}},
     {MAC_LENGTH, {0x00, 0x25, 0x00, 0x5A, 0xC3, 0xD0}},
     {MAC_LENGTH, {0x00, 0x15, 0x83, 0x0C, 0xBF, 0xEB}},
     // Huawei cell modem
     {MAC_LENGTH, {0x58, 0x2C, 0x80, 0x13, 0x92, 0x63}},
     // Fortinet V P N
     {OUI_LENGTH, {0x00, 0x09, 0x0F}},
     // Realtek
     {MAC_LENGTH, {0x00, 0x00, 0x00, 0x00, 0x00, 0x30}},
     // Other rare dupes.
     {MAC_LENGTH, {0x00, 0x11, 0xf5, 0x0d, 0x8a, 0xe8}}, // Atheros
     {MAC_LENGTH, {0x00, 0x20, 0x07, 0x01, 0x16, 0x06}}, // Atheros
     {MAC_LENGTH, {0x0d, 0x0b, 0x00, 0x00, 0xe0, 0x00}}, // Atheros
     {MAC_LENGTH, {0x90, 0x4c, 0xe5, 0x0b, 0xc8, 0x8e}}, // Atheros
     {MAC_LENGTH, {0x00, 0x1c, 0x23, 0x38, 0x49, 0xa4}}, // Broadcom
     {MAC_LENGTH, {0x00, 0x12, 0x3f, 0x82, 0x7c, 0x32}}, // Broadcom
     {MAC_LENGTH, {0x00, 0x11, 0x11, 0x32, 0xc3, 0x77}}, // Broadcom
     {MAC_LENGTH, {0x00, 0x24, 0xd6, 0xae, 0x3e, 0x39}}, // Microsoft
     {MAC_LENGTH, {0x00, 0x0f, 0xb0, 0x3a, 0xb4, 0x80}}, // Realtek
     {MAC_LENGTH, {0x08, 0x10, 0x74, 0xa1, 0xda, 0x1b}}, // Realtek
     {MAC_LENGTH, {0x00, 0x21, 0x9b, 0x2a, 0x0a, 0x9c}}, // Realtek
   };   //这个里面收集了很多,但是也是不会很全的。

我想其实也可以做到一个table(数据库系统)或者一个配置文件中去。这样可以不修改程序而满足不断的添加需要。


标签:00,前缀,OUI,0x00,MAC,网卡,LENGTH
From: https://blog.51cto.com/u_16000165/6239164

相关文章

  • juicefs 方便mac 进行utm 虚拟机的文件共享
    以前写过基于sshfs实现共享的,以下是一个基于juicefs的,可以参考参考玩法 简单说明:每个系统都挂载juicefs参考使用创建juicefs依赖资源 version:'3'services:db:image:mysql:5.6environment:-MYSQL_ROOT_PASSWORD=dalon......
  • 通过sshfs 方便mac 进行utm 虚拟机的文件共享
    基于utm进行vm管理,在mac系统中是一个很不错的工具,但是默认因为一些vm内核的问题,不能直接共享,很不方便使用mac系统开发好,然后通过scp是一种方法,但是很多是否并不是很方便参考集成玩法简单说明:mac系统安装fuse包,之后直接将vm中的目录通过sshfs挂载到mac系统中参......
  • Mac终端出现 brew command not found 解决
    MacOS上您需要安装unrar以支持PaddlePaddle,可以使用命令brewinstallunrar执行命令后发现brew不存在jimmy@MacBook-Pro~%brewinstallunrarzsh:commandnotfound:brewjimmy@MacBook-Pro~%解决方案输入命令:jimmy@MacBook-Pro~%/bin/zsh-c"$(curl-fsS......
  • 【MAUI Blazor踩坑日记】6.mac标题栏颜色修改
    MAUI中mac的标题栏颜色默认是灰白色的,有一点丑如果我们想要自定义颜色,并且在运行时也能更改颜色,该怎么办呢万幸从一个GitHub库中借鉴到了办法https://github.com/BenBtg/MauiMacToolBar这个库是自定义标题栏,如果你想自定义标题栏,而不仅仅是改变颜色,可以直接去看这个库。第一......
  • 开发中用的比较顺手的截图工具(windows+mac)
    让Snipaste帮你提高工作效率Snipaste是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上!下载并打开Snipaste,按下 F1 来开始截图,再按 F3,截图就在桌面置顶显示了。就这么简单!你还可以将剪贴板里的文字或者颜色信息转化为图片窗口,并且将它们进行缩放、旋转、翻转、设为半......
  • 关于网卡高温告警
    描述:服务器开机100G网卡开机后能发光几分钟,然后就不发光了,然后掉线,通过/var/log/message日志发现b1:00.0和b1:00.1都存在高温告警通过lspci查看b1:00.0和b1:00.1发现已经掉线了,对服务器做网卡对调测试,发现问题问题还是存在解决:保持机房温度不超过35度,加大服务器风扇转速......
  • Grids for mac(Instagram客户端工具)v8.5.5免注册版
    GridsforMac是一款允许您在桌面上访问Instagram的应用程序。使用网格,您可以像在手机上一样查看您的Instagram提要、故事和探索页面。您还可以发布照片和视频,对帖子点赞和评论,以及向其他用户发送直接消息。Grids具有简洁、直观的界面,易于使用。它还提供了多种自定义选项,包......
  • mac太空射击游戏:Nova Drift (新星漂移)中文版
    NovaDrift是一款激动人心的太空射击游戏。NovaDriftMac整合了现代独立游戏风格和游戏历史上最深的根源。它不仅具有时尚和性感的外观,而且具有平稳的控制功能。玩家控制着一艘不断开发的生物机械船,面对敌人的大量奇怪而致命的疲劳,将垂死的星星驱逐出空隙。NovaDriftMac游戏介......
  • macbook air 安装 MacOS 及 win10
    前期准备mac电脑、16G的U盘、可以访问的AppStore帐号。重要提示U盘和硬盘数据格式化后不可恢复,需提前做好数据备份。安装macos需要连网。创建可引导的macOS安装器1、U盘y要求至少有14GB可用储存空间,格式化为MacOS扩展格式。2、下载macos系统镜像3、使用“终端”......
  • DaVinci Resolve Studio 18顶级达芬奇剪辑调色mac软件
    DaVinciResolveStudio18(达芬奇剪辑调色软件)Mac版是一款针对剪辑师而设计的视频编辑软件,可以用于将电影、电视、录像后期、音频制作、电影剪辑、视频编辑、数字音频编辑、视频合成等各种影视制作方法的剪辑与调色工作。DaVinciResolveStudio18(达芬奇)是一款操作简单、易学......