HEX
Server: LiteSpeed
System: Linux premium71.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User: consovgw (933)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //proc/thread-self/root/lib/python3.6/site-packages/netaddr/ip/__pycache__/nmap.cpython-36.pyc
3

��]��@s`dZddlmZddlmZmZddlmZmZm	Z	dd�Z
dd�Zd	d
�Zdd�Z
d
d�ZdS)z�
Routines for dealing with nmap-style IPv4 address ranges.

Based on nmap's Target Specification :-

    http://nmap.org/book/man-target-specification.html
�)�AddrFormatError)�	IPAddress�	IPNetwork)�_iter_range�_is_str�
_iter_nextcCst�}x�|jd�D]�}d|kr�|jdd�\}}|s6d}|s>d}t|�}t|�}d|ko`dkno|d|koxdkns�td|��||kr�td|��xXt||d�D]}|j|�q�Wqt|�}d|ko�dkns�td|��|j|�qWt|�S)N�,�-�r�z!octet value overflow for spec %s!z'left side of hyphen must be <= right %r)�set�split�int�
ValueErrorr�add�sorted)�spec�values�element�left�rightZlowZhighZoctet�r�/usr/lib/python3.6/nmap.py�_nmap_octet_target_valuess*0rcCsrt|�stdt|���|s$td��|jd�}t|�dkrFtd|��t|d�t|d�t|d�t|d	�fS)
Nzstring expected, not %sz*nmap target specification cannot be blank!�.�zinvalid nmap range: %srr
��)r�	TypeError�typerr
�lenrr)�nmap_target_spec�tokensrrr�_generate_nmap_octet_ranges0s



r#c

cs�d|krp|jdd�\}}dt|�ko.dkns@td|��t|�}|jdkrZtd��x�|D]
}|Vq`Wn|d|kr�t|�Vnht|�}x^|dD]R}xL|dD]@}x:|d	D].}x(|d
D]}	td||||	fd�Vq�Wq�Wq�Wq�WdS)N�/r
r�!zCIDR prefix expected, not %srzCIDR only support for IPv4!�:rrz%d.%d.%d.%d)r
rrr�versionrr#)
�target_spec�_�prefixZnetZipZoctet_ranges�w�x�y�zrrr�_parse_nmap_target_specDs"

r/c
Cs0ytt|��dStttfk
r*YnXdS)z�
    :param target_spec: an nmap-style IP range target specification.

    :return: ``True`` if IP range target spec is valid, ``False`` otherwise.
    TF)rr/rrr)r(rrr�valid_nmap_rangeZsr0cgs*x$|D]}xt|�D]
}|VqWqWdS)aV
    An generator that yields IPAddress objects from defined by nmap target
    specifications.

    See https://nmap.org/book/man-target-specification.html for details.

    :param *nmap_target_spec: one or more nmap IP range target specification.

    :return: an iterator producing IPAddress objects for each IP in the target spec(s).
    N)r/)r!r(Zaddrrrr�iter_nmap_rangehs
r1N)�__doc__Znetaddr.corerZ
netaddr.iprrZnetaddr.compatrrrrr#r/r0r1rrrr�<module>s