Fast MAC address vendor lookup library. Uses Wireshark's manufactures database of OUIs (Organizationally Unique Identifier).
Takes a MAC address in the form of .NET's System.Net.NetworkInformation.PhysicalAddress and returns a matching MacVendorInfo if found.
The MacAddressVendorLookup lib has the parsing and matching logic, and the MacAddressVendorLookup.Vendors lib contains a compressed form of Wireshark's manuf file (about 565KB) as an embedded resource.
The VendorFileGenerator project checks Wireshark's Github repo for udpates to the manuf file and generates the manuf_bin.zip file used as the embedded resource in MacAddressVendorLookup.Vendors.
// Get vendor information for current machine's network interfacesvarvendorInfoProvider=newMacAddressVendorLookup.MacVendorBinaryReader();using(varresourceStream=MacAddressVendorLookup.Vendors.ManufBinResource.GetStream().Result){vendorInfoProvider.Init(resourceStream).Wait();}varaddressMatcher=newMacAddressVendorLookup.AddressMatcher(vendorInfoProvider);foreach(varniinSystem.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()){varvendorInfo=addressMatcher.FindInfo(ni.GetPhysicalAddress());Console.WriteLine("\nAdapter: "+ni.Description);varmacAddr=BitConverter.ToString(ni.GetPhysicalAddress().GetAddressBytes()).Replace('-',':');Console.WriteLine($"\tMAC Address: {macAddr}");}/* Output on Windows (in Parallels VM):Adapter: Intel(R) 82574L Gigabit Network Connection [MacVendorInfo: IdentiferString=00:1C:42, Organization=Parallels, Inc.] MAC Address: 00:1C:42:B2:84:35*//* Output on MacOS:Adapter: en0 [MacVendorInfo: IdentiferString=78:31:C1, Organization=Apple, Inc.] MAC Address: 78:31:C1:B7:C2:8EAdapter: vnic0 [MacVendorInfo: IdentiferString=00:1C:42, Organization=Parallels, Inc.] MAC Address: 00:1C:42:00:00:08Adapter: en8 [MacVendorInfo: IdentiferString=48:D7:05, Organization=Apple, Inc.] MAC Address: 48:D7:05:EA:15:A3*/