Advertisement

05.13.2008 at 03:28AM PDT, ID: 23397190
[x]
Attachment Details

perl script to convert mac address to vendor name

Asked by bhw2249 in Python Scripting Language, Perl Programming Language, Regular Expressions

Tags: conversion script

Hi,

I am trying to convert a list of mac addresses:
001c26225b25
001b2f6398fa
000fb55f4492
0018f8c94a3a
0018f84a3de5
000f3d434936
001a7080b57e
0014a467ebac
00095bd8461a
00195b489c0b
000fb5ebb05c


To vendor names, and possibly get total tally of each vendor.

oui.txt is the vendor list:

OUI                             Organization
company_id                      Organization
                                Address


00-00-00   (hex)                XEROX CORPORATION
000000     (base 16)            XEROX CORPORATION
                                M/S 105-50C
                                800 PHILLIPS ROAD
                                WEBSTER NY 14580
                                UNITED STATES

00-00-01   (hex)                XEROX CORPORATION
000001     (base 16)            XEROX CORPORATION
                                ZEROX SYSTEMS INSTITUTE
                                M/S 105-50C 800 PHILLIPS ROAD
                                WEBSTER NY 14580
                                UNITED STATES


I have found this script, but it seems not to print out all the address's (only lists maybe 150, of 1,000):

Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
use strict;
 
my %mac;
 
# get mac data
open F, "mac.txt" or die "mac.txt: $!";
while (<F>) { $mac{lc(substr($_,0,6))}++; }
close F;
 
my %oui;
 
# get oui data
open F, "oui.txt" or die "oui.txt: $!";
while (<F>)
{
  if (/^[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]-[0-9a-f][0-9a-f]/i)
  {
     chomp;
     @_ = split /[()]/;
     $_[0] =~ s/-//g;
     $_[2] =~ s/^[\t\s]+//;
     $oui{lc(substr($_[0], 0, 6))} = $_[2];
  }
}
close F;
 
# print list of mac sorted
for (sort { $mac{$a} <=> $mac{$b} } keys %mac)
{
   my $vendor = (exists $oui{$_} ? $oui{$_}:"???");
   print "Mac: $_ Vendor: $vendor Number: $mac{$_}\n";
}
[+][-]05.13.2008 at 03:34AM PDT, ID: 21553644

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zones: Python Scripting Language, Perl Programming Language, Regular Expressions
Tags: conversion script
Sign Up Now!
Solution Provided By: Tintin
Participating Experts: 1
Solution Grade: A
 
 
[+][-]05.13.2008 at 03:49AM PDT, ID: 21553710

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]05.13.2008 at 02:19PM PDT, ID: 21559365

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32 / EE_QW_2_20070628