0799bfbae8
Sanitized version of red team infrastructure automation platform. Operational content (implant pipelines, lures, credential capture) replaced with documented stubs. Architecture and infrastructure automation code intact.
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
import ipaddress
|
|
from utils.cidr_resolver import get_country_cidrs
|
|
|
|
|
|
def ip_count(cidr: str) -> int:
|
|
try:
|
|
return ipaddress.ip_network(cidr, strict=False).num_addresses
|
|
except ValueError:
|
|
return 0
|
|
|
|
|
|
def chunk_cidrs(all_cidrs: list[str], chunk_size: int) -> list[dict]:
|
|
chunks = []
|
|
current_cidrs: list[str] = []
|
|
current_count = 0
|
|
|
|
for cidr in all_cidrs:
|
|
n = ip_count(cidr)
|
|
if n == 0:
|
|
continue
|
|
if current_count > 0 and current_count + n > chunk_size * 1.5:
|
|
chunks.append({'cidrs': current_cidrs, 'ip_count': current_count})
|
|
current_cidrs = []
|
|
current_count = 0
|
|
current_cidrs.append(cidr)
|
|
current_count += n
|
|
if current_count >= chunk_size:
|
|
chunks.append({'cidrs': current_cidrs, 'ip_count': current_count})
|
|
current_cidrs = []
|
|
current_count = 0
|
|
|
|
if current_cidrs:
|
|
chunks.append({'cidrs': current_cidrs, 'ip_count': current_count})
|
|
|
|
return chunks
|
|
|
|
|
|
__all__ = ['get_country_cidrs', 'chunk_cidrs', 'ip_count']
|