
指定されたサブネット/CIDR範囲に対して複数の操作を実行するためのユーティリティプログラム。
機能 • インストール • 使い方 • ライブラリ • Discordに参加
mapCIDRは、大量スキャン処理における負荷分散を容易にするために開発されました。ライブラリとしても、独立したCLIツールとしても使用できます。
sbh, sbc)a, aa)match-ip)filter-ip)s, sr)count)ip-format)si, sp)t4, )go install -v github.com/projectdiscovery/mapcidr/cmd/mapcidr@latest
mapcidr -h
これによりツールのヘルプが表示されます。以下がサポートされているすべてのスイッチです。
INPUT:
-cl, -cidr string[] CIDR/IP/ファイル。処理するCIDR/IPのリストを含む
PROCESS:
-sbc int 指定したCIDR数でCIDRをスライス
-sbh int 指定したホスト数でCIDRをスライス
-a, -aggregate IP/CIDRを最小サブネットに集約
-aa, -aggregate-approx 疎なIP/CIDRを最小近似サブネットに集約
-c, -count 指定したCIDR内のIP数をカウント
-t4, -to-ipv4 IPをIPv4形式に変換
-t6, -to-ipv6 IPをIPv6形式に変換
-ip-format, -if string[] IPフォーマット (0,1,2,3,4,5,6,7,8,9,10,11)
-zpn, -zero-pad-n int 使用するゼロパディング数 (デフォルト 3)
-zpp, -zero-pad-permute 各オクテットに対して0からzero-pad-nまでの順列を有効化
FILTER:
-f4, -filter-ipv4 入力からIPv4 IPをフィルタリング
-f6, -filter-ipv6 入力からIPv6 IPをフィルタリング
-skip-base 出力でベースIP(.0で終わる)をスキップ
-skip-broadcast 出力でブロードキャストIP(.255で終わる)をスキップ
-mi, -match-ip string[] マッチするIP/CIDR/ファイルのリスト (カンマ区切り、ファイル入力)
-fi, -filter-ip string[] フィルタリングするIP/CIDR/ファイルのリスト (カンマ区切り、ファイル入力)
MISCELLANEOUS:
-s, -sort 入力IP/CIDRを昇順にソート
-sr, -sort-reverse 入力IP/CIDRを降順にソート
-si, -shuffle-ip 入力IPをランダムにシャッフル
-sp, -shuffle-port string 入力IP:Portをランダムにシャッフル
UPDATE:
-up, -update mapcidrを最新バージョンに更新
-duc, -disable-update-check 自動的なmapcidr更新チェックを無効化
OUTPUT:
-verbose 詳細モード
-o, -output string 出力先ファイル
-silent サイレントモード
-version プロジェクトのバージョンを表示
指定されたCIDRのIPリストを取得するには、次のコマンドを使用します:
mapcidr -cidr 173.0.84.0/24
____________ ___
__ _ ___ ____ / ___/ _/ _ \/ _ \
/ ' \/ _ '/ _ \/ /___/ // // / , _/
/_/_/_/\_,_/ .__/\___/___/____/_/|_| v0.5
/_/
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
173.0.84.0
173.0.84.1
173.0.84.2
173.0.84.3
173.0.84.4
173.0.84.5
173.0.84.13
173.0.84.14
173.0.84.15
173.0.84.16
指定されたIP範囲からIPリストを取得することも可能です。次のコマンドを使用します:
$ echo "192.168.0.0-192.168.0.5" | mapcidr
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
指定されたCIDR、またはCIDRのリストを、CIDR数でスライスして複数の等しい小さなサブネットに分割するには、次のコマンドを使用します:
mapcidr -cidr 173.0.84.0/24 -sbc 10 -silent
173.0.84.0/27
173.0.84.32/27
173.0.84.64/27
173.0.84.96/27
173.0.84.128/27
173.0.84.160/27
173.0.84.208/28
173.0.84.192/28
173.0.84.240/28
173.0.84.224/28
指定されたCIDRを、各CIDR内で等しいホスト数にスライスするには、次のコマンドを使用します:
mapcidr -cidr 173.0.84.0/16 -sbh 20000 -silent
173.0.0.0/18
173.0.64.0/18
173.0.128.0/18
173.0.192.0/18
注意: 希望するスライス数またはサブネットあたりのホスト数が2の累乗の場合のみ、完全な分割が可能です。それ以外の場合、ツールは自動的に最適な分割戦略を見つけて目的の結果を得ようとします。
複数のCIDR範囲をより小さなサブネットブロックにマージするには、次のコマンドを使用します:
$ mapcidr -cl cidrs.txt -aggregate
指定されたIPリストのCIDRブロックを一覧表示するには、次のコマンドを使用します:
$ mapcidr -il ips.txt -aggregate
また、疎なIPグループに対して近似集約を実行することも可能です(バージョン4のみ)。最終的な間隔には、入力に属さない連続したIPが含まれます:
$ cat ips.txt
1.1.1.1
1.1.1.16
1.1.1.31
$ cat ips.txt | mapcidr -aggregate-approx
1.1.1.0/27
指定されたIP範囲(IPv4 | IPv6)のCIDRブロックを一覧表示するには、次のコマンドを使用します:
$ mapcidr -cl 192.168.0.1-192.168.0.255 -aggregate
OR
$ echo 192.168.0.1-192.168.0.255 | mapcidr -aggregate
192.168.0.1/32
192.168.0.2/31
192.168.0.4/30
192.168.0.8/29
192.168.0.16/28
192.168.0.32/27
192.168.0.64/26
192.168.0.128/25
指定されたCIDR範囲のリストからIPを一致させるには、次のコマンドを使用します:
$ mapcidr -cidr 192.168.1.0/24 -mi 192.168.1.253,192.168.1.252
$ mapcidr -cidr 192.168.1.0/24 -mi ip_list_to_match.txt
指定されたCIDR範囲のリストからIPをフィルタリングするには、次のコマンドを使用します:
$ mapcidr -cidr 192.168.1.224/28 -fi 192.168.1.233,192.168.1.234
$ mapcidr -cidr 192.168.1.224/28 -fi ip_list_to_filter.txt
指定されたIPを複数の形式で表現するには、-if 0 フラグを使用してサポートされているすべてのフォーマット値を表示できます。また、特定のフォーマットを表示するには、こちら にリストされている特定のインデックス番号を使用します。現在、10のユニークなフォーマット がサポートされています。
$ echo 127.0.1.0 | mapcidr -if 0 -silent
127.0.1.0
127.1
0177.0.01.0
0x7f.0x0.0x1.0x0
0x7f000100
0xabfa659dfa7f000100
281472812450048
111111111111111101111111000000000000000100000000
0x7f.0.01.0x0
::ffff:7f00:0100
%31%32%37%2E%30%2E%31%2E%30
127.000.001.000
IPv4 | IPv6 アドレスは、v6表記からv4表記、またはIPv4マップ表記からIPv4アドレスに変換できます。-t4 はIPv4に、-t6 はIPv6に変換します。
$ cat ips.txt
1.1.1.1
2.2.2.2
$ mapcidr -cl ips.txt -t6
00:00:00:00:00:ffff:0101:0101
00:00:00:00:00:ffff:0202:0202
注意:すべてのIPv6アドレスがIPv4に変換できるわけではありません。有効なIPv4で表現されたIPv6アドレスのみ変換できます。 |
指定されたCIDR、またはCIDRのリストのホスト数をカウントするには、次のコマンドを使用します:
$ echo 173.0.84.0/16 | mapcidr -count -silent
65536
ASN番号のIPアドレスを取得するには、次のコマンドを使用します:
echo AS15133 | mapcidr -silent
5.104.64.0
5.104.64.1
5.104.64.2
5.104.64.3
5.104.64.4
ライブラリをGoプログラムで直接使用することが可能です。以下のコードスニペットは、CIDRをサブネットに分割する方法と、同じCIDRを特定のホスト数を含むサブネットに分割する方法を示しています:
package main
import (
"fmt"
"github.com/projectdiscovery/mapcidr"
)
func main() {
// CIDRを2つのサブネットに分割
subnets1 := mapcidr.SplitN("192.168.1.0/24", 2)
for _, subnet := range subnets1 {
fmt.Println(subnet)
}
// CIDRをそれぞれ128ホストを含む2つのサブネットに分割
subnets2 := mapcidr.SplitByNumber("192.168.1.0/24", 128)
for _, subnet := range subnets2 {
fmt.Println(subnet)
}
// CIDR内のすべてのIPをリストアップ
ips, _ := mapcidr.IPAddresses("192.168.1.0/24")
for _, ip := range ips {
fmt.Println(ip)
}
}
mapCIDRは、projectdiscovery チームによって🖤を込めて作られました。
t6