ツール概要
mapCIDRは大規模スキャン作業に特化した効率的なCIDR処理ツールであり、CIDR範囲のスライス、集約、変換、フィルタリングをサポートしています。スタンドアロンのCLIツールとして、またはライブラリとして利用可能です。
基本的な使用方法
mapcidr [オプション]
主要機能の詳細
設定オプション (CONFIG)
-auth:ProjectDiscoveryクラウドサービス(PDCP)APIキーの設定(デフォルトで有効)
入力オプション (INPUT)
-cl, -cidr string[]:- 機能:処理対象のCIDR/IP/ファイルを指定
- 形式:CIDRアドレス、IPアドレス、またはリストを含むファイルパス
- 例:
-cl 172.16.0.0/16,10.10.10.1または-cl networks.txt
処理機能 (PROCESS)
スライス機能
-
-sbc int: -
機能:指定されたCIDR数に基づいてスライス
-
例:
-sbc 8は大きなCIDRを8つの小さなCIDRに分割 -
-sbh int: -
機能:指定されたホスト数に基づいてスライス
-
例:
-sbh 512は各スライスに512個のホストIPを含める
集約機能
-
-a, -aggregate: -
機能:複数のIP/CIDRを最小サブネットに集約
-
適用:隣接または重複するIPセグメントの結合
-
-aa, -aggregate-approx: -
機能:疎なIP/CIDRを近似最小サブネットに集約
-
特徴:一定の間隔を許容し、より簡潔な集約を作成
統計機能
-c, -count:- 機能:CIDR内のIP総数を計算
- 例:
mapcidr -cl 172.16.0.0/16 -cは65536を出力
形式変換
-t4, -to-ipv4:IPv4形式に変換-t6, -to-ipv6:IPv6形式に変換-ip-format, -if string[]:IP出力形式を指定(0-11)-zpn, -zero-pad-n int:ゼロパディング桁数を指定(デフォルト3)-zpp, -zero-pad-permute:各オクテットに対して0からパディング桁数の順列を生成
###️ フィルタ機能 (FILTER)
IPバージョンフィルタ
-f4, -filter-ipv4:IPv4アドレスのみを保持-f6, -filter-ipv6:IPv6アドレスのみを保持
特殊IPフィルタ
-skip-base:ネットワークアドレス(.0で終わる)をスキップ-skip-broadcast:ブロードキャストアドレス(.255で終わる)をスキップ
IPマッチングと除外
-
-mi, -match-ip string[]: -
機能:一致するIP/CIDRのみを保持
-
サポート:カンマ区切りまたはファイル入力
-
例:
-mi 172.16.0.0/12,10.10.10.1または-mi targets.txt -
-fi, -filter-ip string[]: -
機能:指定されたIP/CIDRを除外
-
サポート:カンマ区切りまたはファイル入力
-
例:
-fi 172.16.1.100はそのIPを除外
その他機能 (MISCELLANEOUS)
ソート機能
-s, -sort:IPアドレスを昇順でソート-sr, -sort-reverse:IPアドレスを降順でソート
ランダマイズ
-si, -shuffle-ip:IP順序をランダムにシャッフル-sp, -shuffle-port string:IP:Port組み合わせの順序をランダムにシャッフル
更新オプション (UPDATE)
-up, -update:最新バージョンに更新-duc, -disable-update-check:自動更新チェックを無効化
出力オプション (OUTPUT)
-verbose:詳細出力モード-o, -output string:出力ファイルを指定-silent:サイレントモード、結果のみを出力-version:ツールバージョンを表示
実用的な例
例1:CIDR内のIP数を計算
mapcidr -cl 172.16.0.0/24 -c
# 出力:256
例2:大きなCIDRを小さなセグメントに分割
# CIDR数に基づいてスライス
mapcidr -cl 10.0.0.0/8 -sbc 8
# ホスト数に基づいてスライス(各セグメント512個のIP)
mapcidr -cl 172.16.0.0/12 -sbh 512
例3:複数のIPセグメントを集約
echo -e "172.16.1.10\n172.16.1.11\n172.16.1.12" | mapcidr -a
# 出力例:172.16.1.8/29
例4:フィルタリングとマッチング
# IPv4アドレスのみを保持
cat mixed_addresses.txt | mapcidr -f4
# 特定のIPセグメントを除外
mapcidr -cl targets.txt -fi excluded_ranges.txt
# 特定の範囲のIPのみをマッチング
mapcidr -cl all_addresses.txt -mi 10.0.0.0/16
例5:ソートとランダム化
# 昇順ソート
mapcidr -cl addresses.txt -s
# ランダムにシャッフル
mapcidr -cl addresses.txt -si
# ポート組み合わせをシャッフル
echo "172.16.1.1:8080\n172.16.1.2:9443" | mapcidr -sp
例6:形式変換
# IPv4形式に変換
mapcidr -cl ::ffff:172.16.1.1 -t4
# ゼロパディングを使用
mapcidr -cl 172.16.1.1 -zpn 4
# 出力:172.016.001.001
使用例
セキュリティテスト
# ターゲットIPリストの準備
mapcidr -cl target_networks.txt -sbh 1024 > scan_targets.txt
# 既知のセキュリティデバイスを除外
mapcidr -cl scan_targets.txt -fi security_devices.txt > final_targets.txt
ネットワーク設計
# 分散したIPアドレスを集約
mapcidr -cl department_networks.txt -a > aggregated_subnets.txt
# IP使用状況を統計
mapcidr -cl company_network.txt -c
データクリーニング
# IPリストのクリーンアップ:重複削除、ソート、フィルタリング
cat raw_addresses.txt | mapcidr -f4 -skip-base -skip-broadcast -s > clean_addresses.txt
️ 注意点
- パフォーマンス考慮:非常に大きなCIDRを処理する際はメモリ使用に注意
- ファイル入力:.txtファイルをサポート(1行に1つのCIDR/IP)
- 組み合わせ使用:ほとんどのパラメータは組み合わせ可能(例:
-f4 -s -skip-base) - パイプサポート:標準入出力をサポートし、ワークフローへの統合を容易に
高度なテクニック
組み合わせ使用の例
# 複雑な処理:フィルタリング、スライス、ソート、ファイル出力
mapcidr -cl input.txt -f4 -sbh 512 -s -skip-base -o output.txt
# nmapなどのツールとの統合
mapcidr -cl targets.txt -sbh 2048 | xargs -I {} nmap -p 80,443,8080 {}
バッチ処理のテクニック
# 複数ファイルのループ処理
for file in network_lists/*.txt; do
mapcidr -cl "$file" -sbc 5 > "processed_${file}"
done