macmap-0.2.2 is not a library.
macmap
ローカルネットワーク上のデバイスをスキャンし、IPアドレスとMACアドレスのマッピングを取得するRust製コマンドラインツールです。
機能
- ローカルネットワーク上のすべてのアクティブデバイスを自動検出
- IPアドレスとMACアドレスのマッピング表示
- ARPリクエストを使用した高速スキャン
- Rayonによる並列処理で効率的なスキャン
- すべての有効なネットワークインターフェースをサポート(loopback以外)
- 同じ端末上の別インターフェースが見えている場合は重複結果を自動で抑制
必要な権限
このツールは生のネットワークパケットを送受信するため、管理者権限が必要です。
インストール
使用方法
# 管理者権限で実行
出力例
Scanning network... Please wait.
Scan complete. Found 5 devices:
192.168.1.1: aa:bb:cc:dd:ee:ff
192.168.1.10: 11:22:33:44:55:66
192.168.1.15: 77:88:99:aa:bb:cc
192.168.1.20: dd:ee:ff:00:11:22
192.168.1.25: 33:44:55:66:77:88
技術仕様
- 言語: Rust
- 主要ライブラリ:
pnet: ネットワークパケット操作local_ip_address: ローカルIPアドレス取得rayon: 並列処理get_if_addrs: ネットワークインターフェース情報取得
仕組み
- ローカルIPアドレスとネットワーク情報を取得
- ARPスキャン可能なIPv4インターフェースを検出し、
utunなどのトンネル系や/32を除外 - 各インターフェースの対象IPレンジを計算
- 各IPアドレスに対してARPリクエストを並列送信
- ARPレスポンスからMACアドレスを取得し、IPごとに重複を除去
- 他のローカルインターフェースが既に見えている結果は重複とみなして非表示にする
- 最終結果をIPアドレス順に表示
ライセンス
MIT License
注意事項
- 自分が管理するネットワークでのみ使用してください
- 不正なネットワークスキャンは法律で禁止されている場合があります
- 同一CIDRでも別ネットワークの可能性があるため、サブネットだけではなくローカルインターフェース同士の到達性で重複判定します
リリース手順
このプロジェクトでは、GitHub Actionsを利用してcrates.ioへの公開を自動化しています(タグのバージョンに合わせて Cargo.toml が自動更新されます)。
新しいバージョンをリリースする際は、以下の手順を実行してください。
# 1. 変更をコミットしてプッシュする
# 2. バージョンタグを作成する
# 3. タグをプッシュしてGitHub Actions(自動公開)をトリガーする