Skip to main content

Democritus functions for working with IP addresses.

Project description

Democritus IP Addresses

PyPI CI Lint codecov The Democritus Project uses semver version 2.0.0 The Democritus Project uses ruff to format and lint code License: LGPL v3

Democritus functions[1] for working with IP addresses.

[1] Democritus functions are simple, effective, modular, well-tested, and well-documented Python functions.

We use d8s (pronounced "dee-eights") as an abbreviation for democritus (you can read more about this here).

Installation

pip install d8s-ip-addresses

Usage

You import the library like:

from d8s_ip_addresses import *

Once imported, you can use any of the functions listed below.

Functions

  • def ipv4_address_examples(n: int = 10):
        """Create n ipv4 addresses."""
    
  • def ipv6_address_examples(n: int = 10):
        """Create n ipv6 addresses."""
    
  • def ipv4_addresses_find(text):
        """Parse IPv4 addresses from the given text."""
    
  • def ipv6_addresses_find(text):
        """Parse IPv6 addresses from the given text."""
    
  • def ip_addresses_find(text):
        """Parse ip addresses from the given text."""
    
  • def ip_is_private(ip):
        """Check if the IP address is private."""
    
  • def is_ip_address(text):
        """Determine whether or not the given text is an ip address."""
    
  • def ip_whois(ip):
        """Get whois information for the given ip address."""
    
  • def ip_is_reserved(ip):
        """Check if the IP address is IETF (https://www.ietf.org/) reserved."""
    
  • def ip_version(ip):
        """Get the version number of the ip address (4 or 6)."""
    
  • def ip_network_block_first_address(network_block: str):
        """Return the first address of the given network_block."""
    
  • def ip_network_block_last_address(network_block: str):
        """Return the first address of the given network_block."""
    
  • def ip_network_block_ip_count(network_block_string):
        """Get the number of IP addresses in the given network block."""
    
  • def ip_network_block_to_range(network_block_string):
        """Return the range of IP addresses covered by the network block in the form "<starting-ip> - <ending-ip>"."""
    
  • def ip_network_block_enumerate(network_block_string):
        """Return a list of all of the ip addresses in the given network_block_string."""
    
  • def ip_network_block_contains_ip(network_block: str, ip_address: str):
        """."""
    
  • def ip_in_network_block(ip_address: str, network_block: str):
        """Return whether or not the given ip_address is in the network_block."""
    
  • def ip_range_to_network_block(ip_range_string):
        """Take a range like "<starting-ip> - <ending-ip>" and convert this into an IP address network block."""
    
  • def ipv6_expand(ip_v6):
        """Expand (also known as 'Exploding') an ipv6 address."""
    
  • def ipv6_compress(ip_v6):
        """Compress an ipv6 address."""
    
  • def ipv6_threatconnect_form(ip_v6):
        """Format ipv6 address as expected by ThreatConnect."""
    
  • def ip_current():
        """Get the current ip address."""
    
  • def ipv4_private_addresses():
        """Get private ipv4 addresses from https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml."""
    
  • def ipv6_private_addresses():
        """Get private ipv6 addresses from https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml#iana-ipv6-special-registry-1."""
    
  • def ipv4_sum(ipv4_address):
        """Find the sum of the ip address by adding each section of the ip address. For example, 8.8.8.8 would sum to 32 (calculated by taking 8 + 8 + 8 + 8)"""
    
  • def ipv4_is_possible_version_number(ipv4_address):
        """Determine whether or not the ipv4 ip address is likely a version number or not. This is a beta function and is a work in progress. The word "Possible" in the function name should be taken seriously; this function will return `True` if the ipv4_address *might* be a version number. The results of this function are conjecture and should not be used definitively."""
    

Development

👋  If you want to get involved in this project, we have some short, helpful guides below:

If you have any questions or there is anything we did not cover, please raise an issue and we'll be happy to help.

Credits

This package was created with Cookiecutter and Floyd Hightower's Python project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

d8s_ip_addresses-0.7.0.tar.gz (96.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

d8s_ip_addresses-0.7.0-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file d8s_ip_addresses-0.7.0.tar.gz.

File metadata

  • Download URL: d8s_ip_addresses-0.7.0.tar.gz
  • Upload date:
  • Size: 96.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for d8s_ip_addresses-0.7.0.tar.gz
Algorithm Hash digest
SHA256 f8e8e415ce8d5490b971c7ebd6f5d8030e20d1cfcd90fa5d8e5012cb9e9dfa20
MD5 beeb30e34ec76990a88a78a3210bb18a
BLAKE2b-256 0138e03292d984cdac0e202e413732938f0881a47ed0b8a1078a13f6f16d05b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for d8s_ip_addresses-0.7.0.tar.gz:

Publisher: release-please.yml on democritus-project/d8s-ip-addresses

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file d8s_ip_addresses-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for d8s_ip_addresses-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f118682671ae8d2929fc736d611db0df98a80f429e94a0f7d6e589761727dda8
MD5 c9e20932d0ce40babf20940fdd051542
BLAKE2b-256 b216654c4634fbed03cd3f0945fe7914eeb0fc43c24080aaad46dcf0cd38c4f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for d8s_ip_addresses-0.7.0-py3-none-any.whl:

Publisher: release-please.yml on democritus-project/d8s-ip-addresses

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page