CIDRBiggerThanPrefix
Checks whether a given CIDR prefix is bigger than the defined maximum prefix.
python · Filters And Transformers
Source
import ipaddress import demistomock as demisto # noqa: F401 from CommonServerPython import * # noqa: F401 def cidr_network_addresses_lower_from_const(ip_cidr: str, max_prefix: int) -> bool: """Check if a given CIDR prefix is bigger (lower number prefix) than the given input. Args: ip_cidr(str): IP/CIDR/IPv6/CIDRv6, e.g. 192.168.0.0/24, 2002::1234:abcd:ffff:c0a8:101/127 # disable-secrets-detection max_prefix(int): The maximum allowed as a prefix of the CIDR. Returns: bool: True if given CIDR has more hosts (lower prefix number) than max prefix. """ try: ip_cidr_obj = ipaddress.ip_network(address=ip_cidr, strict=False) except ValueError as e: # If one of the inputs is not a valid CIDR it will be logged and return False demisto.debug(f'Skipping "{ip_cidr}": {e}') return False else: return ip_cidr_obj.prefixlen < max_prefix def main(): ip_cidrs = argToList(demisto.args()["left"]) max_prefix = demisto.args()["right"] try: max_prefix = int(max_prefix) # Fails if input is not an integer for cidr in ip_cidrs: is_lower = cidr_network_addresses_lower_from_const(ip_cidr=cidr, max_prefix=max_prefix) demisto.results(is_lower) except Exception as e: return_error(f"Failed to execute CIDRBiggerThanPrefix. Error: {e!s}") if __name__ == "__builtin__" or __name__ == "builtins": main()
README
Checks if given CIDR prefix is bigger than the maximum given
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | filter |
| Cortex XSOAR Version | 5.5.0 |
Inputs
| Argument Name | Description |
|---|---|
| right | The prefix to set as maximum. |
| left | A comma-separated list of CIDR to validate (IPv4 or IPv6). |