OUI (MAC address) lookup script
Every networking device contains a MAC address, in general these MAC addresses should be unique for each networking device (not taking into account spoofing at this moment). Each of these MAC addresses contains a OUI (Organizationally_Unique_Identifier) and each OUI that is used should refer to the company making the networking device.
While there are various places where you can lookup OUIs I couldn’t find an easy command line tool for this. So, to enable easier lookups of these OUIs I wrote a small Perl script, the script is made to be used on a BackTrack 4 installation, however it should work on other systems as well.
The script uses the OUI file which comes with the aircrack-ng suite. On BackTrack 4 this file is located at /usr/local/etc/aircrack-ng/airodump-ng-oui.txt, this variable ($ouifile) can be adjusted in the beginning of the script.
The script:
#!/usr/bin/env perl # MAC address OUI checker # Thijs (Thice) Bosschert # http://www.thice.nl # v0.4 25-06-2010 $ouifile = "/usr/local/etc/aircrack-ng/airodump-ng-oui.txt"; # Print header print "\n MAC address OUI checker v0.4\n". " by Thijs (Thice) Bosschert\n\n"; # Check if argument has been given if (!$ARGV[0]) { fatal_error(); } # Removing seperators from MAC address and uppercase chars my $OUI = uc($ARGV[0]); $OUI =~ s/[^0-9A-F]//g; # Get OUI from MAC if ($OUI =~ /^([0-9A-F]{6})/) { $OUI = $1; print " Checking OUI: ".$OUI."\n"; } else { fatal_error(); } # Open OUI file from aircrack-ng open(my $fh, "<", $ouifile) || die " Error: Can not access OUI file: $ouifile"; while (<$fh>) { ($checkoui,$company) = split(/\(hex\)/,$_); $checkoui =~ s/[-|\s]//g; # Check if OUI can be found in the list if ($OUI eq $checkoui) { $company =~ s/\t//g; chomp($company); # Output found OUI print " Found OUI: ".$OUI." - ".$company."\n\n"; exit; } } close($fh); # Show if OUI was not found print " Could not find OUI: ".$OUI."\n\n"; # Error messages sub fatal_error { print " Error: No MAC address or OUI specified or could not recognize it.\n"; if ($0 =~ /^\/bin\/(.*)/) { print " Usage: $1 \n"; } else { print " Usage: perl $0 \n"; } print " MAC can be submitted as:\n". " 001122334455\n". " 00:11:22:33:44:55\n". " 00-11-22-33-44-55\n". " OUI can be submitted as:\n". " 001122\n". " 00:11:22\n". " 00-11-22\n\n"; exit; }
To have easier access to the script, you can install the script to the bin directory by the following two commands (as root or sudo):
cp OUI_lookup.pl /bin/OUI_lookup chmod +x /bin/OUI_lookup
Some example outputs of the script:
thice@bt:~$ OUI_lookup MAC address OUI checker v0.4 by Thijs (Thice) Bosschert Error: No MAC address or OUI specified or could not recognize it. Usage: OUI_lookup MAC can be submitted as: 001122334455 00:11:22:33:44:55 00-11-22-33-44-55 OUI can be submitted as: 001122 00:11:22 00-11-22
thice@bt:~$ OUI_lookup 001122 MAC address OUI checker v0.4 by Thijs (Thice) Bosschert Checking OUI: 001122 Found OUI: 001122 - CIMSYS Inc
thice@bt:~$ OUI_lookup 22-33-44 MAC address OUI checker v0.3 by Thijs (Thice) Bosschert Checking OUI: 223344 Could not find OUI: 223344
thice@bt:~$ OUI_lookup 00:11:00:22:00:33 MAC address OUI checker v0.3 by Thijs (Thice) Bosschert Checking OUI: 001100 Found OUI: 001100 - Schneider Electric
To update the aircrack-ng OUI file you can run the command “airodump-ng-oui-update”
root@bt:~# airodump-ng-oui-update [*] Downloading IEEE OUI file... [*] Parsing OUI file... [*] Airodump-ng OUI file successfully updated
Any feedback on this script is much appreciated, the script can be used and adjusted by anyone, as long as a reference to this site (Thice.nl) is included.
I hereby would like to thank user Gitsnik of the BackTrack Forums for providing me feedback and some improvements to my code.
Leave a Reply