
주어진 서브넷/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 목록이 포함된 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 프로젝트 버전 표시
주어진 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와 -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
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() {
// Divide the CIDR into two subnets
subnets1 := mapcidr.SplitN("192.168.1.0/24", 2)
for _, subnet := range subnets1 {
fmt.Println(subnet)
}
// Divide the CIDR into two subnets containing 128 hosts each
subnets2 := mapcidr.SplitByNumber("192.168.1.0/24", 128)
for _, subnet := range subnets2 {
fmt.Println(subnet)
}
// List all IPs in the CIDR
ips, _ := mapcidr.IPAddresses("192.168.1.0/24")
for _, ip := range ips {
fmt.Println(ip)
}
}
mapCIDR은 🖤로 만들어졌으며 projectdiscovery 팀이 제작했습니다.
t6