自制Mac Vendor数据库(PHP/SQLite3)

制作 SQLite3 数据库

首先,去 IEEE 下载最新的 OUI 数据库。

wget http://standards.ieee.org/develop/regauth/oui/oui.txt

然后把数据库转换成 CSV 格式。

grep "(base 16)" oui.txt > oui_base16.txt
perl -p -i -e 's/\,/ /gm' oui_base16.txt
perl -p -i -e 's/\s+\(base 16\)\s+/,/' oui_base16.txt

打开 SQLite3,导入 CSV,并保存到数据库文件

$ sqlite3
sqlite> create table Lookup(MAC, VENDOR);
sqlite> .mode csv
sqlite> .import oui_base16.txt Lookup
sqlite> .save mac_vendor.sqlite3
sqlite> .quit

让 PHP 读取数据库

首先要确定 PHP 已安装 SQLite3 组件,PHP5 的安装方法是

sudo apt-get install php5-sqlite
sudo service apache2 restart

然后,在 PHP 代码里面加载数据库和查询函数

// Load vendor database
$mac_vendor_file = "mac_vendor.sqlite3";
$vendor_db = new SQLite3($mac_vendor_file);

function get_vendor($db, $mac) {
  $mac_oui = substr(preg_replace("/\W/", "", $mac), 0, 6);
  return $db->querySingle("SELECT VENDOR FROM Lookup WHERE MAC=\"${mac_oui}\"");
}

要查询制造商,只需要调用函数就可以了

$mac = "70:62:B8:94:11:49";
echo "Vendor of ${mac} is ", get_vendor($vendor_db, $mac);
// Vendor of 70:62:B8:94:11:49 is D-Link International
添加新评论