IPNetwork

Gather information regarding CIDR - 1. Broadcast_address 2. CIDR 3. First_address 4. Last address 5. Max prefix len 6. Num addresses 7. Private 8. Version.

python · Common Scripts

Source

# STD imports
import ipaddress

import demistomock as demisto  # noqa: F401
from CommonServerPython import *  # noqa: F401

# Local imports


def ip_cidr(cidr: str) -> dict[str, str]:
    """Gather info regarding the supplied network

    Args:
        cidr(str): IPv4/CIDR or IPv6/CIDR

    Returns:
        dict: Entry context of single network
    """
    try:
        ip_network = ipaddress.ip_network(cidr, strict=False)
        internal_ec = {
            "CIDR": cidr,
            "Version": ip_network.version,
            "Private": ip_network.is_private,
            "Max_prefix_len": ip_network.max_prefixlen,
            "Num_addresses": ip_network.num_addresses,
            "Broadcast_address": str(ip_network.broadcast_address),
            "First_address": str(ip_network[0]),
            "Last_address": str(ip_network[-1]),
        }
        return internal_ec  # type: ignore
    except ValueError:
        return {}


def cidr_command(args: dict[str, str]) -> CommandResults:  # pragma: no cover
    """Perform command on given IP/CIDR

    Args:
        args: argument from command runnning in demisto

    Returns:

    """
    cidr_list = argToList(args.get("cidr"))
    ec = [ip_cidr(cidr) for cidr in cidr_list]
    markdown = tableToMarkdown(name=f'CIDR - {args.get("cidr")}', t=ec, removeNull=True)
    return CommandResults(outputs_prefix="Network", outputs=ec, readable_output=markdown)


def main():  # pragma: no cover
    try:
        return_results(cidr_command(demisto.args()))
    except Exception as ex:
        return_error(f"Failed to execute IPNetwork script. Error: {ex!s}")


if __name__ in ("__main__", "__builtin__", "builtins"):
    main()

README

Gather information regarding CIDR -
1. Broadcast_address
2. CIDR
3. First_address
4. Last address
5. Max prefix len
6. Num addresses
7. Private
8. Version

Script Data


Name Description
Script Type python3
Tags ip
Cortex XSOAR Version 5.0.0

Inputs


Argument Name Description
cidr IP/CIDR, e.g. 192.168.0.0/24

Outputs


Path Description Type
Network.CIDR Network CIDR. String
Network.Num_addresses Number of availble addresses in the CIDR. Number
Network.First_address First address in the network CIDR. String
Network.Last_address Last address in the network CIDR. String
Network.Version Version of IP. Number
Network.Private True if IP is private. Boolean
Network.Max_prefix_len Max prefix length of CIDR. Number
Network.Broadcast_address Broadcast address of CIDR. String