oui

Look up MAC addresses for their vendor in the IEEE OUI database

Usage no npm install needed!

<script type="module">
  import oui from 'https://cdn.skypack.dev/oui';
</script>

README

oui

Look up MAC addresses for their vendor in the IEEE OUI database

The data used in this module comes from the Sanitized IEEE OUI Data which is updated once a week on Sunday. The module is also able self-update on demand.

Installation

$ npm i oui

Example

var oui = require('oui');

console.log(oui('20:37:06:12:34:56'));
//=> Cisco Systems, Inc
//=> 80 West Tasman Drive
//=> San Jose CA 94568
//=> United States

console.log(oui.search('*Juniper Systems*'))
//=> [
//=>   {
//=>     oui: '0C0535',
//=>     organization: 'Juniper Systems\n1132 W. 1700 N.\nLogan UT 84321\nUnited States'
//=>   }
//=> ]

There's also a browser version available as oui.web.min.js which uses a reduced dataset that only contains the vendor name.

Installation (CLI)

$ npm install -g oui

Examples (CLI)

$ oui 20:37:06:12:34:56
Cisco Systems, Inc
80 West Tasman Drive
San Jose CA 94568
United States
$ oui --search cisco theory
OUI       ORGANZATION          ADDRESS             COUNTRY
000C41    Cisco-Linksys LLC    121 Theory Dr.      Irvine CA 92612
000F66    Cisco-Linksys LLC    121 Theory Dr.      Irvine CA 92612
001217    Cisco-Linksys LLC    121 Theory Dr.      Irvine CA 92612
001310    Cisco-Linksys LLC    121 Theory Dr.      Irvine CA 92612

To update the local OUI database:

$ oui --update

Or from the original IEEE source (slow):

$ oui --update http://standards.ieee.org/develop/regauth/oui/oui.txt

API

oui(input, [options])

  • input string: The input string. Non-hexadecimal characters and characters after 6 hex characters are found are ignored unless options.strict is set.
  • options Object: A optional options object.
    • strict boolean: When true, only strict input formats will be accepted. Will throw an error when an invalid format is supplied.
    • file string: A absolute file path to oui.json, which contains the parsed oui data. Defaults to the oui.json in the module directory.

Returns: Either a string, or null if no matches are found. Throws if input is not a string.

oui.update([options])

  • options Object: A optional options object.
    • url string: The URL from where to retrieve oui.txt. Defaults to 'https://linuxnet.ca/ieee/oui.txt'. To use the more frequently updated but inconsistent and slower to download original file from IEEE, use 'http://standards.ieee.org/develop/regauth/oui/oui.txt'.
    • file string: A absolute file path for oui.json, which is used to store the parsed oui data. Defaults to the oui.json in the module directory.

Returns: A Promise that indicates when the internal database has been updated. Rejects on error.

oui.search(patterns [, options])

  • patterns string/Array: One or more wildcard patterns to search the vendor data, as supported by minimatch.
  • options Object: A optional options object.
    • file String: A absolute file path for oui.json, which is used to store the parsed oui data. Defaults to the oui.json in the module directory.
    • All minimatch options are supported as well.

Returns a array of objects in the format {oui, organization}.

strict formats

  • 000000
  • 00:00:00
  • 00-00-00
  • 000000000000
  • 0000.0000.0000
  • 00:00:00:00:00:00
  • 00-00-00-00-00-00

© silverwind, distributed under BSD licence