
Programa de utilidad para realizar múltiples operaciones para subredes/rangos CIDR dados.
Características • Instalar • Uso • Biblioteca • Unirse a Discord
mapCIDR está desarrollado para facilitar la distribución de carga en operaciones de escaneo masivo; puede usarse tanto como biblioteca como herramienta CLI independiente.
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
Esto mostrará la ayuda de la herramienta. Aquí están todos los parámetros que soporta.
ENTRADA:
-cl, -cidr string[] CIDR/Archivo con lista de CIDR/IP a procesar
PROCESO:
-sbc int Dividir CIDR según una cantidad dada de CIDR
-sbh int Dividir CIDR según una cantidad dada de HOSTS
-a, -aggregate Agregar IPs/CIDR en la subred mínima
-aa, -aggregate-approx Agregar IPs/CIDR dispersos en la subred mínima aproximada
-c, -count Contar número de IPs en un CIDR dado
-t4, -to-ipv4 Convertir IPs a formato IPv4
-t6, -to-ipv6 Convertir IPs a formato IPv6
-ip-format, -if string[] Formatos IP (0,1,2,3,4,5,6,7,8,9,10,11)
-zpn, -zero-pad-n int número de ceros a usar para relleno (por defecto 3)
-zpp, -zero-pad-permute habilitar permutaciones desde 0 hasta zero-pad-n para cada octeto
FILTRO:
-f4, -filter-ipv4 Filtrar IPs IPv4 de la entrada
-f6, -filter-ipv6 Filtrar IPs IPv6 de la entrada
-skip-base Omitir IPs base (terminadas en .0) en la salida
-skip-broadcast Omitir IPs de broadcast (terminadas en .255) en la salida
-mi, -match-ip string[] IP/CIDR/ARCHIVO con lista de IP/CIDR a emparejar (separados por coma, entrada de archivo)
-fi, -filter-ip string[] IP/CIDR/ARCHIVO con lista de IP/CIDR a filtrar (separados por coma, entrada de archivo)
VARIOS:
-s, -sort Ordenar IPs/CIDR de entrada en orden ascendente
-sr, -sort-reverse Ordenar IPs/CIDR de entrada en orden descendente
-si, -shuffle-ip Mezclar IPs de entrada en orden aleatorio
-sp, -shuffle-port string Mezclar IP:Puerto de entrada en orden aleatorio
ACTUALIZACIÓN:
-up, -update actualizar mapcidr a la última versión
-duc, -disable-update-check desactivar verificación automática de actualizaciones de mapcidr
SALIDA:
-verbose Modo verbose
-o, -output string Archivo para escribir la salida
-silent Modo silencioso
-version Mostrar la versión del proyecto
Para obtener una lista de IPs para un CIDR dado, use el siguiente comando:
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
También es posible obtener una lista de IPs para un rango IP dado, usando el siguiente comando:
$ 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
Para dividir un CIDR o lista de CIDR según una cantidad de CIDR, o dividir en subredes más pequeñas e iguales, use el siguiente comando:
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
Para dividir el CIDR dado en un número igual de hosts en cada CIDR, use el siguiente comando:
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
Nota: Es posible obtener una división perfecta solo cuando el número deseado de fragmentos o hosts por subred es una potencia de dos. De lo contrario, la herramienta intentará encontrar automáticamente la mejor estrategia de división para obtener el resultado deseado.
Para fusionar múltiples rangos CIDR en un bloque de subred más pequeño, use el siguiente comando:
$ mapcidr -cl cidrs.txt -aggregate
Para listar bloques CIDR para una lista dada de IPs, use el siguiente comando:
$ mapcidr -il ips.txt -aggregate
También es posible realizar agregaciones aproximadas para grupos de IPs dispersos (solo versión 4). El intervalo final contendrá IPs contiguas que no pertenecen a la entrada:
$ 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
Para listar bloques CIDR para un rango IP dado (IPv4 | IPv6), use el siguiente comando:
$ mapcidr -cl 192.168.0.1-192.168.0.255 -aggregate
O
$ 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
Para emparejar IPs de la lista dada de rangos CIDR, use el siguiente comando:
$ 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
Para filtrar IPs de la lista dada de rangos CIDR, use el siguiente comando:
$ 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
Para representar una IP dada en múltiples formatos, se puede usar la bandera -if 0 para mostrar todos los valores de formato soportados, y un tipo específico de formato se puede mostrar usando un número de índice específico como se lista aquí. Actualmente, 10 formatos únicos son soportados.
$ 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
Las direcciones IPv4 | IPv6 se pueden convertir de notación v6 a v4 o de notación mapeada a IPv4 en direcciones IPv4 usando -t4 y -t6 a IPv4 e IPv6 respectivamente.
$ 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
Nota:No todas las direcciones IPv6 pueden convertirse a IPv4. Solo se pueden convertir direcciones IPv6 que representan válidamente IPv4. |
Para contar el número de hosts para un CIDR o lista de CIDR dado, use el siguiente comando:
$ echo 173.0.84.0/16 | mapcidr -count -silent
65536
Para obtener la dirección IP del número ASN, use el siguiente comando:
echo AS15133 | mapcidr -silent
5.104.64.0
5.104.64.1
5.104.64.2
5.104.64.3
5.104.64.4
Es posible usar la biblioteca directamente en sus programas Go. Los siguientes fragmentos de código describen cómo dividir un CIDR en subredes y cómo dividirlo en subredes que contengan un cierto número de hosts:
package main
import (
"fmt"
"github.com/projectdiscovery/mapcidr"
)
func main() {
// Divide el CIDR en dos subredes
subnets1 := mapcidr.SplitN("192.168.1.0/24", 2)
for _, subnet := range subnets1 {
fmt.Println(subnet)
}
// Divide el CIDR en dos subredes que contengan 128 hosts cada una
subnets2 := mapcidr.SplitByNumber("192.168.1.0/24", 128)
for _, subnet := range subnets2 {
fmt.Println(subnet)
}
// Lista todas las IPs en el CIDR
ips, _ := mapcidr.IPAddresses("192.168.1.0/24")
for _, ip := range ips {
fmt.Println(ip)
}
}
mapCIDR está hecho con 🖤 por el equipo de projectdiscovery.
t6