3

データベースからのMACアドレスのリストがあります。各MACアドレスについてベンダーを検索し、最終的にベンダーごとにネットワーク上のデバイスの数を確認したいと思います。

http://standards.ieee.org/develop/regauth/oui/oui.txtで入手可能なファイルからベンダープレフィックスを解析するという汚い方法でそれを行うことができると思います。

しかし、もっと良い方法があるかどうか疑問に思っていますか?

4

5 に答える 5

5

Pearにはライブラリがありますが、ベンダールックアップにはベンダーデータがロードされたリレーショナルデータベースが必要であるため、かなりのオーバーヘッドが伴います。ただし、代替案を検討することは、検討する価値があるかもしれません。

http://pear.php.net/manual/en/package.networking.net-mac.php

このパッケージは、wiresharkによって維持されるリストのローダーを提供します:https ://code.wireshark.org/review/gitweb?p = wireshark.git; a = blob_plain; f = manuf

于 2012-07-12T18:25:51.470 に答える
1

気になるのがMACアドレスに基づいてデバイスの製造元を取得することだけである場合は、このWebサイトのリストをコピーしてここに貼り付けることができます(一度に200まで)。それは非常に速いです:

www.admin-toolkit.com/mac-address-lookup-manufacturer.html

于 2015-03-07T05:03:24.383 に答える
1

しかし、もっと良い方法があるかどうか疑問に思っていますか?

ルビーのような他の言語を使用できる場合は、macvendorsと呼ばれる宝石があります

外部APIを使用したり、レート制限によって停止したりする必要はありません。

コマンドラインから使用できます。

gem install macvendors macvendors find 98:e0:d9:a5:61:eb Apple, Inc.

あなたはあなたのルビーコードでそれを使うことができます:

require 'macvendors' MacVendors.setup #for the first time puts MacVendors.find("98:e0:d9:a5:61:eb")

于 2016-10-07T03:03:35.197 に答える
0

WiresharkのmanufソースからSQlite(Macvendors.db )を作成しました。簡単なクエリでPDO経由で使用します。

これがあなたがそれをどのように使うことができるかをあなたに示すために私が書く方法です:

public function getAllCompaniesFromMacs($macs)
{
    try {
        // connect to the SQLite file
        $conn = new \PDO("sqlite:/path/to/sqlite/Macvendors.db");
        $conn ->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

        // aux vars
        $macsParaBuscar = array();
        $macsIN = "";

        // output vars
        $salida = array();

        // Clean repeated MACs and remove the ":" chars
        foreach ($macs as $unaMac) {
            $unaMac = str_replace(":", "", $unaMac);
            $firstChars = substr($unaMac, 0, 6);
            $macsParaBuscar[$firstChars] = $firstChars;
        }

        // Create a IN statment for the WHERE
        $macsIN = "( 'HOLA'";
        foreach ($macsParaBuscar as $unaMacBuscar) {
            $macsIN .= ", '" . $unaMacBuscar . "'";
        }
        $macsIN .= ")"; 

        // Prepare and execute the query
        $stm = $conn->prepare("SELECT mac, vendor FROM macvendor WHERE mac IN " . $macsIN);
        $stm->execute();

        // Put results in output var
        while( $row = $stm->fetch() ) {
            $auxMac = $row["mac"];
            $salida[$auxMac] = $row["vendor"];
        }

        return $salida;

    } catch (\Exception $e) {

        throw new \Exception("Ha ocurrido un error", 1);

    }

}

美味しくないサンプルコードについて申し訳ありません。

楽しむ!

于 2012-10-02T02:53:20.613 に答える
0

アップデート

APIに依存しない別のライブラリがありますが、CiscovendorMacs.xmlであるXMLファイルデータベースです。

パッケージはここでホストされています


はい、これは私が書いたものです。MacアドレスベンダーのWebサイトのオンラインAPIによって異なります。

これが例のあるリポジトリです

于 2016-01-06T18:42:01.690 に答える