ЭĺddlZddlZddlZddlmZddlmZmZmZm Z m Z m Z m Z ddl mZmZmZmZddlZddlmZddlmZmZejeZejdejZd\ZZZ d \Z!Z"ee e fZ#d Z$d d eefd Z%d eeee ffdZ&dZ'dZ(eddZ)de*fdZ+dZ,deee ffdZ-dee e fd ee*e*e*ffdZ.de*de*de*d e#fdZ/de0d ede e ffdZ1dS)!N) lru_cache) IPV4LENGTH IPV6LENGTH IPv4Address IPv4Network IPv6Address IPv6Network ip_network)IterableOptionalTupleUnion)get_kernel_module_parameter)IP IPVersions^nameserver ([\w.:]+))tcpudpall)inoutz/etc/resolv.conf ip_versionc#K ttd5}|}dddn #1swxYwYn#t$rgcYSwxYwt|D]K}|d}tj|r |tj ||ks||VLdS)Nrbascii) openRESOLV_CONF_FILEreadOSErrorDNS_IP_TEMPLATEfindalldecoder is_valid_iptype_of)rfcontentips D/opt/imunify360/venv/lib/python3.11/site-packages/im360/utils/net.pylocal_dns_from_resolv_confr(!s "D ) ) QffhhG                 %%g.. YYw   >"   &2:b>>Z+G+G# s.A: A>A>A AAreturnc#HKtjD]y}|D]t}|jtjkrt |jV.|jtjkr1t|j dddVuzdS)z8Return a list of IP address assigned to local interfaces%)maxsplitrN) psutil net_if_addrsvaluesfamilysocketAF_INETraddressAF_INET6rsplit)ipsr&s r'local_ip_addressesr81s"$$++--HH H HByFN**!"*------fo--""*"2"23"2"C"CA"FGGGGG  HHHc|ttfvsJ|tkrd}nd}tdtj|DS)zZ Return listening ports for ipv4 services :param proto: tcp/udp :return: tcp4udp4c3|K|]7}|jddk|jtjk(|jdV8dS)rz 127.0.0.1r,N)laddrstatusr. CONN_LISTEN).0cs r' z"listening_ports..JsT GAJ+ % %!(f6H*H*H  *H*H*H*Hr9)TCPUDPsetr.net_connections)protokinds r'listening_portsrJ=sg S#J     || '--  r9z(/proc/sys/net/ipv6/conf/all/disable_ipv6r,)maxsizec tdd}|dkrdSn2#t$r%}t|Yd}~dSd}~wwxYw t t 5}|dkr ddddS dddn #1swxYwYn#t$rYnwxYwdS) a Checks whether IPv6 is enabled at the kernel level. Returns False when either: - the ipv6 module parameter ``disable`` is set to ``1`` (boot-time), - the sysctl ``net.ipv6.conf.all.disable_ipv6`` is ``1`` (runtime), or - the ipv6 kernel module is absent. ipv6disable) module_name parameter0FN1T) r ValueErrorloggerwarningr_SYSCTL_DISABLE_IPV6rstripr)rNer$s r'is_ipv6_enabledrYTsP -)    c>>5  quuuuu & ' ' 1vvxx~~3&&        &                      4sP A AA B5#,B) B5 B5)B--B50B-1B55 CCr&cht|dddddS)NbigTsignedF)int from_bytesto_bytesr&s r'_signed_to_unsignedrcxs6 >> AuT **E%   r9c|dkr|}n)t|||dz z}||z }||z }d|zdz }||kr/|dz}||d}d}t||z|S)a(Return prefix length from the bitwise netmask. Copied from ipaddress private method Args: ip_int: An integer, the netmask in expanded bitwise format Returns: An integer, the prefix length. Raises: ValueError: If the input intermingles zeroes & ones rr,r[r\z&Netmask pattern %r mixes zeroes & ones)min bit_lengthrarS) ip_intprefix_maxlengthtrailing_zeroes prefixlen leading_onesall_onesbyteslendetailsmsgs r'_prefix_from_maskrp~s{{* w&1*5AACC  !?2I_,LY!#Hx#q(//(E226w''' r9 ip_addressc|jdkr*t|jddddSt|S)Nr[r\Tr])versionr_r`packed)rqs r'pack_ip_addressrvs@Q~~j/3U4~HHH:r9r cft|j}t|j}|||jfSN)rvnetwork_addressnetmaskrt)r netmasks r'pack_ip_networkr}s4 *4 5 5C :- . .D j( ((r9r{r|rtc|dkrJt|dz}t|dz}t|t}t||fSt|t}t ||fS)Nrs@)rcrprr rr)r{r|rtprefixs r'unpack_ip_networkrsq!||!#&&","4((B."444C=)))"444C=)))r9cD t|S#t$rYdSwxYwrx)r rSrbs r'is_netrs5"~~ tts  rx)2loggingrer2 functoolsr ipaddressrrrrrr r typingr r r rr.defence360agent.utilsrdefence360agent.utils.validaterr getLogger__name__rTcompileMrrDrEALLINOUT IPNetworkrr(r8rJrVrYr_rcrprvr}rstrrr9r'rs 433333333333 ======88888888  8 $ $"*6==# S# C +{* + %  8I+>     HHU; +C%DE H H H H(B 1   FC >k;&> ?)k;./) 3S=))))*3*c*C*I****suT; ;<r9