mapCIDRによるCIDR処理完全ガイド

ツール概要

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

️ 注意点

  1. パフォーマンス考慮:非常に大きなCIDRを処理する際はメモリ使用に注意
  2. ファイル入力:.txtファイルをサポート(1行に1つのCIDR/IP)
  3. 組み合わせ使用:ほとんどのパラメータは組み合わせ可能(例:-f4 -s -skip-base
  4. パイプサポート:標準入出力をサポートし、ワークフローへの統合を容易に

高度なテクニック

組み合わせ使用の例

# 複雑な処理:フィルタリング、スライス、ソート、ファイル出力
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

タグ: mapCIDR CIDR ネットワークスキャン IPアドレス管理 CLIツール

7月17日 18:37 投稿