アップデート一覧に戻る
New releaseSep 9, 2026

unimap v0.8.0

IPアドレスごとに一度だけスキャンし、Nmapを使用して大量データのスキャン時間を短縮します。

共有

Unimap

IPアドレスごとに一度だけスキャンし、大量のデータに対してNmapのスキャン時間を短縮します。Unimapは「Unique Nmap Scan」の略称です。このツールはLinux、OSX、Windows、またはAndroid(Termux)で問題なく動作します。

なぜ?

組織全体に対してNmapを実行する予定がある場合、数十、数百、あるいは数千ものサブドメインが同じIPアドレスを指している可能性が高く、スキャンを続けることがほぼ不可能になる時点が来ることを考慮する必要があります。また、同じリモートホストアドレスへの複数回のスキャンにより、IPがブロックされる可能性もあります。

どのように?

Unimapは独自の技術を使用して、最初にすべてのサブドメインのIPアドレスを解決します。このプロセスが完了すると、一意のIPアドレスを持つベクターを作成し、ユーザーが設定したスレッド数に応じてNmapで並列スキャンを起動します。同時に、Nmapで作成されたファイルのデータを解析して、どの情報が各IPに対応するかを特定します。最後に、Unimapはサブドメインに関連付けられた各IPの情報を関連付けます。例えば、同じIPを指す50のサブドメインがある場合、Nmapスキャンは1回だけ実行しますが、各サブドメインに関連するすべてのデータを同時に取得できます。大規模なスキャンでは、数日または数週間の時間を節約できます。

インストール

ソースから

コンピュータにRust(1.88以降)とNmapがインストールされている必要があります。その後、以下を実行します:

1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap
# または、https://github.com/Edu4rdSHL/unimap/releases/latest からリリースをダウンロードし、
# 解凍して次のステップに進みます。
2. cargo build --release
# これでバイナリは ./target/release/unimap にあります
# 次のコマンドはLinuxとMacOSでのみ動作します。Windowsユーザーは環境変数でターゲットパスを指定する必要があります
3. cp ./target/release/unimap /usr/local/bin
# これで、どこからでも `unimap` コマンドを使用できます。

Dockerサポート

イメージ edu4rdshl/unimap は、linux/amd64linux/arm64 向けに リリースごとに latest およびリリースバージョンとして公開されています:

docker pull edu4rdshl/unimap:latest
docker run --rm edu4rdshl/unimap:latest -t hackerone.com --fast-scan
# CSVとNmap XMLファイルを保持するには:/opt/unimap にディレクトリをマウントします
docker run --rm -v "$(pwd):/opt/unimap" edu4rdshl/unimap:latest -f targets.txt --fast-scan -u results.csv

イメージを自分でビルドするには、docker/README.md を参照してください。

プリコンパイル済みバイナリの使用

お使いのOS用の最新バージョンをダウンロードして使用します。

AURパッケージの使用(Arch Linux)

unimap は、AURヘルパーを使用して利用可能なAURパッケージからインストールできます。例えば、

$ paru -S unimap

必要に応じて、AURパッケージをクローンして、makepkgでコンパイルすることもできます。例えば、

git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si

使用方法

Unimapは、Nmap TCP SYN(ステルス)スキャンを起動するためにroot/管理者権限を必要とします。精度とパフォーマンスの理由からこれを使用します。 LinuxまたはLinuxベースの場合は、rootシェルを使用するか、sudoでツールを実行してください。Windowsでは、管理者としてコマンドプロンプト(CMD)を開き、通常どおりツールを実行できます。

  1. unimap -f targets.txt -u log.csv はフルスキャンを実行し、出力をlog.csvに書き込みます。
  2. unimap -f targets.txt --fast-scan -o は高速スキャンを実行し、ログファイルをlogs/フォルダに保存します。
  3. sudo unimap -f targets.txt --ports "1-1000" --min-rate 5000 は、min-rate 5000でサービスおよびバージョン検出を行いながらポート1〜1000をスキャンします(高速スキャンが必要な場合は--fast-scanフラグを使用します)。

考慮事項

  • Unimapは高速ネットワーク(クラウドVPS)で実行するように事前設定されています。容量がそれほど大きくないホームネットワークでスキャンを実行すると、ネットワークスロットリングにより切断されることになります。
  • 前述のことは、自宅からUnimapを使用できないという意味ではありません。--threads--min-rate(最も重要)の数を調整するだけです。
  • 私たちはNmapを何らかの形でラップしたり、独自にポートをスキャンしたりしません。最大のパフォーマンスを得るために適切なNmapオプションを使用します。Nmapは素晴らしく、現在存在する最速のポートスキャナーです。
  • 私たちはNmapの出力データを解析し、より理解しやすい出力を提供すると同時に、同じIPを複数回スキャンすることを防ぎます。これが私たちの主な目的です。

開発

ユニットテストと統合テストを実行します(ネットワーク、root、Nmapは不要):

cargo test

Dockerイメージをビルドして scanme.nmap.org に対して実際のスキャンを起動する短いエンドツーエンドチェックを実行します(Dockerとインターネットアクセスが必要):

scripts/container-test.sh

バグを見つけましたか?

issueを開いてください。

カテゴリ