
Утилита для выполнения множества операций для заданных подсетей/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 на заданное количество подсетей
-sbh int Разделить CIDR на подсети с заданным количеством хостов
-a, -aggregate Агрегировать IP/CIDR в минимальную подсеть
-aa, -aggregate-approx Агрегировать разреженные IP/CIDR в минимальную приближённую подсеть
-c, -count Подсчитать количество IP в заданном CIDR
-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 адреса из ввода
-f6, -filter-ipv6 Отфильтровать IPv6 адреса из ввода
-skip-base Пропустить базовые IP (оканчивающиеся на .0) в выводе
-skip-broadcast Пропустить широковещательные IP (оканчивающиеся на .255) в выводе
-mi, -match-ip string[] IP/CIDR/Файл со списком IP/CIDR для сопоставления (через запятую, файл)
-fi, -filter-ip string[] IP/CIDR/Файл со списком 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 Показать версию проекта
Чтобы получить список IP для заданного CIDR, используйте следующую команду:
mapcidr -cidr 173.0.84.0/24
____________ ___
__ _ ___ ____ / ___/ _/ _ \/ _ \
/ ' \/ _ '/ _ \/ /___/ // // / , _/
/_/_/_/\_,_/ .__/\___/___/____/_/|_| v0.5
/_/
projectdiscovery.io
[WRN] Используйте с осторожностью. Вы несёте ответственность за свои действия
[WRN] Разработчики не несут ответственности за неправильное использование или ущерб.
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 на указанное количество подсетей или на несколько одинаковых меньших подсетей, используйте следующую команду:
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 на подсети с равным количеством хостов в каждой, используйте следующую команду:
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
Примечание: Идеальное разделение возможно только тогда, когда требуемое количество подсетей или хостов в подсети является степенью двойки. В противном случае инструмент попытается автоматически найти наилучшую стратегию разделения для получения желаемого результата.
Чтобы объединить несколько диапазонов CIDR в меньший блок подсети, используйте следующую команду:
$ mapcidr -cl cidrs.txt -aggregate
Чтобы вывести блоки CIDR для заданного списка IP, используйте следующую команду:
$ 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
Чтобы вывести блоки CIDR для заданного диапазона IP (IPv4 | IPv6), используйте следующую команду:
$ mapcidr -cl 192.168.0.1-192.168.0.255 -aggregate
ИЛИ
$ 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
Чтобы сопоставить IP из заданного списка диапазонов CIDR, используйте следующую команду:
$ 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
Чтобы отфильтровать IP из заданного списка диапазонов CIDR, используйте следующую команду:
$ 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 и -t6 в IPv4 и 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
Чтобы получить IP-адреса для номера ASN, используйте следующую команду:
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 на подсети и как разделить его на подсети, содержащие определённое количество хостов:
package main
import (
"fmt"
"github.com/projectdiscovery/mapcidr"
)
func main() {
// Разделить CIDR на две подсети
subnets1 := mapcidr.SplitN("192.168.1.0/24", 2)
for _, subnet := range subnets1 {
fmt.Println(subnet)
}
// Разделить CIDR на две подсети, содержащие по 128 хостов каждая
subnets2 := mapcidr.SplitByNumber("192.168.1.0/24", 128)
for _, subnet := range subnets2 {
fmt.Println(subnet)
}
// Вывести все IP в CIDR
ips, _ := mapcidr.IPAddresses("192.168.1.0/24")
for _, ip := range ips {
fmt.Println(ip)
}
}
mapCIDR создан с 🖤 командой projectdiscovery.
t6