
Programme utilitaire pour effectuer plusieurs opérations pour des plages de sous-réseau/CIDR données.
Fonctionnalités • Installation • Utilisation • Bibliothèque • Rejoindre Discord
mapCIDR est développé pour faciliter la distribution de charge lors d'opérations de scan massif ; il peut être utilisé à la fois comme bibliothèque et comme outil CLI indépendant.
sbh, sbc)a, aa)match-ip)filter-ip)s, sr)count)ip-format)si, sp)go install -v github.com/projectdiscovery/mapcidr/cmd/mapcidr@latest
mapcidr -h
Cela affichera l'aide de l'outil. Voici tous les commutateurs pris en charge.
ENTRÉE :
-cl, -cidr string[] CIDR/IP/Fichier contenant une liste de CIDR/IP à traiter
TRAITEMENT :
-sbc int Découper les CIDR par nombre de CIDR donné
-sbh int Découper les CIDR par nombre d'HÔTES donné
-a, -aggregate Agréger les IP/CIDR en sous-réseau minimum
-aa, -aggregate-approx Agréger approximativement les IP/CIDR épars en sous-réseau minimum
-c, -count Compter le nombre d'IP dans un CIDR donné
-t4, -to-ipv4 Convertir les IP au format IPv4
-t6, -to-ipv6 Convertir les IP au format IPv6
-ip-format, -if string[] Formats IP (0,1,2,3,4,5,6,7,8,9,10,11)
-zpn, -zero-pad-n int nombre de zéros de remplissage à utiliser (par défaut 3)
-zpp, -zero-pad-permute activer les permutations de 0 à zero-pad-n pour chaque octet
FILTRE :
-f4, -filter-ipv4 Filtrer les IP IPv4 de l'entrée
-f6, -filter-ipv6 Filtrer les IP IPv6 de l'entrée
-skip-base Ignorer les IP de base (se terminant par .0) dans la sortie
-skip-broadcast Ignorer les IP de diffusion (se terminant par .255) dans la sortie
-mi, -match-ip string[] IP/CIDR/FICHIER contenant une liste d'IP/CIDR à faire correspondre (séparés par des virgules, entrée fichier)
-fi, -filter-ip string[] IP/CIDR/FICHIER contenant une liste d'IP/CIDR à filtrer (séparés par des virgules, entrée fichier)
DIVERS :
-s, -sort Trier les IP/CIDR d'entrée par ordre croissant
-sr, -sort-reverse Trier les IP/CIDR d'entrée par ordre décroissant
-si, -shuffle-ip Mélanger les IP d'entrée dans un ordre aléatoire
-sp, -shuffle-port string Mélanger les IP:Port d'entrée dans un ordre aléatoire
MISE À JOUR :
-up, -update mettre à jour mapcidr vers la dernière version
-duc, -disable-update-check désactiver la vérification automatique de mise à jour de mapcidr
SORTIE :
-verbose Mode verbeux
-o, -output string Fichier où écrire la sortie
-silent Mode silencieux
-version Afficher la version du projet
Pour obtenir une liste d'IP pour un CIDR donné, utilisez la commande suivante :
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
Il est également possible d'obtenir une liste d'IP pour une plage IP donnée, en utilisant la commande suivante :
$ 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
Pour découper un CIDR donné ou une liste de CIDR par nombre de CIDR ou découper en plusieurs sous-réseaux plus petits et égaux, utilisez la commande suivante :
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
Pour découper le CIDR donné en un nombre égal d'hôtes dans chaque CIDR, utilisez la commande suivante :
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
Note : Il est possible d'obtenir une division parfaite uniquement lorsque le nombre souhaité de tranches ou d'hôtes par sous-réseau est une puissance de deux. Sinon, l'outil tentera de trouver automatiquement la meilleure stratégie de division pour obtenir le résultat souhaité.
Pour fusionner plusieurs plages CIDR en un bloc de sous-réseau plus petit, utilisez la commande suivante :
$ mapcidr -cl cidrs.txt -aggregate
Pour lister les blocs CIDR pour une liste donnée d'IP, utilisez la commande suivante :
$ mapcidr -il ips.txt -aggregate
Il est également possible d'effectuer des agrégations approximatives pour des groupes d'IP épars (version 4 uniquement). L'intervalle final contiendra des IP contiguës n'appartenant pas à l'entrée :
$ 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
Pour lister les blocs CIDR pour une plage IP donnée (IPv4 | IPv6), utilisez la commande suivante :
$ mapcidr -cl 192.168.0.1-192.168.0.255 -aggregate
OU
$ 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
Pour faire correspondre des IP depuis la liste donnée de plages CIDR, utilisez la commande suivante :
$ 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
Pour filtrer des IP depuis la liste donnée de plages CIDR, utilisez la commande suivante :
$ 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
Pour représenter une IP donnée en plusieurs formats, le drapeau -if 0 peut être utilisé pour afficher toutes les valeurs de format prises en charge, et un type de format spécifique peut être affiché en utilisant un numéro d'index spécifique comme listé ici. Actuellement, 10 formats uniques sont pris en charge.
$ 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
Les adresses IPv4 | IPv6 peuvent être converties de la notation v6 à v4 ou de la notation mappée IPv4 en adresses IPv4 en utilisant -t4 et -t6 respectivement vers IPv4 et 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
Note :Toutes les adresses IPv6 ne peuvent pas être converties en IPv4. Vous ne pouvez convertir que les adresses IPv6 valides représentées en IPv4. |
Pour compter le nombre d'hôtes pour un CIDR donné ou une liste de CIDR, utilisez la commande suivante :
$ echo 173.0.84.0/16 | mapcidr -count -silent
65536
Pour obtenir l'adresse IP du numéro ASN, utilisez la commande suivante :
echo AS15133 | mapcidr -silent
5.104.64.0
5.104.64.1
5.104.64.2
5.104.64.3
5.104.64.4
Il est possible d'utiliser la bibliothèque directement dans vos programmes Go. Les extraits de code suivants décrivent comment diviser un CIDR en sous-réseaux, et comment diviser le même en sous-réseaux contenant un certain nombre d'hôtes :
package main
import (
"fmt"
"github.com/projectdiscovery/mapcidr"
)
func main() {
// Divise le CIDR en deux sous-réseaux
subnets1 := mapcidr.SplitN("192.168.1.0/24", 2)
for _, subnet := range subnets1 {
fmt.Println(subnet)
}
// Divise le CIDR en deux sous-réseaux contenant 128 hôtes chacun
subnets2 := mapcidr.SplitByNumber("192.168.1.0/24", 128)
for _, subnet := range subnets2 {
fmt.Println(subnet)
}
// Liste toutes les IP dans le CIDR
ips, _ := mapcidr.IPAddresses("192.168.1.0/24")
for _, ip := range ips {
fmt.Println(ip)
}
}
mapCIDR est fait avec 🖤 par l'équipe projectdiscovery.
t4t6