
    99ki~                        d dl Z  e j        d            e j        d           d dlZ	 d dlZdZn# e$ r dZY nw xY w	 d dlZdZ	n# e$ r dZ	Y nw xY wd dl
Z
d dlmZ d Zd Zd Zed	k    rT	  e             dS # e$ r  ed
d           Y dS e$ r+Z ede d            ej        d           Y dZ[dS dZ[ww xY wdS )    NignoreTF)urlparsec                 6   t          d|  dd           g d}|D ]}t          st          dd            dS 	 t          j                            | |          }d| d	}|d
k    rd}n|dk    rd}t          |           |D ](}t          d|                                 d           )# t          j        j        $ r Y t          j        j        $ r t          d|  d           Y  dS t          $ r!}t          d| d| d           Y d}~d}~ww xY wdS )zO
    Retrieves common DNS records for a given domain, similar to nslookup.
    z*
[*] Performing DNS Lookup (NSLOOKUP) for ...Tflush)AAAAAMXTXTNSz@  - DNS library not available (dnspython). Skipping DNS lookups.Nz  --- z Records ---r	   z  --- IP Address (A Record) ---r
   z$  --- IPv6 Address (AAAA Record) ---    z  Error: The domain 'z' does not exist.z  Could not retrieve z
 records: )	printDNS_AVAILABLEdnsresolverresolveto_textNoAnswerNXDOMAIN	Exception)domainrecord_typesr_typeanswersheaderrdataes          dns_whois_nslookup_checker.pyget_dns_recordsr       s    

C
C
C
C4PPPP333L M M 	T\`aaaaFF	Ml**66::G2f222F}}:6!!?&MMM  < <.U]]__..d;;;;;<|$ 	 	 	D|$ 	 	 	C&CCCDDDFFF 	M 	M 	M?&??A??tLLLLLLLLL	M-M Ms$   A1B,,D&D,	D5DDc                 	   t          d|  dd           	 t          st          dd           	 ddl}|                    d| g|j        |j        d	          }|j        r0|j        D ](}t          d
|                                z   d           )|                    d           dS # t          $ r}t          d| d           Y d}~dS d}~ww xY w	 t          t          d          rt          j        |           }nt          t          d          rt          j        |           }nt          t          d          rt          j        |           }nxddl}|                    d| g|j        |j        d	          }|j        r0|j        D ](}t          d
|                                z   d           )|                    d           dS n# t          $ r}	 ddl}|                    d| g|j        |j        d	          }|j        r0|j        D ](}t          d
|                                z   d           )|                    d           Y d}~dS # t          $ r&}t          d| d| d           Y d}~Y d}~dS d}~ww xY wd}~ww xY wd } ||d          }|r|s;t          dd           	 t          |d          r|j        rt          |j        d           nt          |d          r|j        rt          |j        d           nlt          |d          r>|j        r7|j                                        D ]\  }	}
t          d|	 d|
 d           nt          t%          |          d           n^# t          $ rQ 	 t          t'          |          d           n.# t          $ r! t          t%          |          d           Y nw xY wY nw xY wdS g d}t          dd           d}|D ]} |||          }|r|d}t)          |t*                    r(d                    t/          t$          |                    }t          d|                    dd                                           d| d           |st          d d           dS dS # t          $ r0}t          d!| d           t          d"d           Y d}~dS d}~ww xY w)#z9
    Retrieves WHOIS information for a given domain.
    z#[*] Querying WHOIS information for r   Tr   zH  - WHOIS library not available. Falling back to system 'whois' command.r   Nwhois)stdoutstderrtextr      )timeoutz  - System whois failed: queryWhoisz  - WHOIS lookups failed: z / c                     | d S t          | t                    r|                     |          S t          | |d           S )N)
isinstancedictgetgetattr)objnames     r   	get_fieldz!get_whois_info.<locals>.get_fieldg   s?    {44#t$$ %wwt}}$3d+++    domain_namezJ  - WHOIS lookup returned no structured data; printing raw representation:r%   raw__dict__z  - z: )	registrarwhois_servercreation_dateexpiration_dateupdated_datename_serversstatusdnssecr0   orgaddresscitystatezipcodecountryphoneemailsz$  --- Detailed WHOIS Information ---Fz, _ zN  - No detailed WHOIS fields could be extracted, but a basic record was found.z!  - Error retrieving WHOIS info: z  - This can happen if the TLD is not supported, due to network issues, or if the 'whois' package is not installed on your system.)r   WHOIS_AVAILABLE
subprocessPopenPIPESTDOUTr#   rstripwaitr   hasattrr"   r(   r)   r%   r4   r5   itemsstrreprr+   listjoinmapreplacetitle)r   rI   proclineexwex2r1   r3   kvattributes_to_print
found_infoattrvaluer   s                   r   get_whois_inforc   3   sh    

;
;
;
;4HHHHe` 	\dhiiii
!!!!!''&(9*/ZdZkrv'ww; B $ B Bft{{}}4DAAAAA		"	%%%   6"66dCCCC	ug&& K''(( K''(( 
K'' "!!!!''&(9*/ZdZkrv'ww; B $ B Bft{{}}4DAAAAA		"	%%% 	 	 	
!!!!!''&(9*/ZdZkrv'ww; B $ B Bft{{}}4DAAAAA		"	%%%   ?2??#??tLLLL		, 	, 	,  i=11 	 	^fjkkkk.1f%% 
2!& 
2!&-----Q&& 215 2!%t,,,,, q*-- 2!* 2$%J$4$4$6$6 ? ?DAq!///a//>>>>>? c!ffD1111 . . ..$q''.....  . . .#a&&------..
 F
 
 
 	4DAAAA
' 	T 	TDIa&&E T!
eT** 7 IIc#uoo66EFT\\#s3399;;FFuFFdSSSS 	pbjnoooooo	p 	p  ` ` `5!55TBBBB  S  [_  	`  	`  	`  	`  	`  	`  	`  	`  	`  	``s   R A6B( (
C2CR CR C4G R 
JA6IR 
JI>4J8R >JJJ(R 4CM= <R =
ON'&O'(OOOOR OR B9R 
S$%SSc                  r   t          j        d          } |                     dd           |                                 }|j        }d|vrd|z   }t          |          j        }|st          d|j         d	           d S d
|v r|                    d
          d         }|	                    d          r
|dd          }	 t          |           n+# t          $ r}t          d| d           Y d }~nd }~ww xY w	 t          |           d S # t          $ r}t          d| d           Y d }~d S d }~ww xY w)Nz6Perform DNS, WHOIS, and NSLOOKUP lookups for a domain.)descriptionurlzCThe target URL or domain (e.g., https://example.com or example.com))helpz://z//z,Error: Could not parse a valid domain from '':r   zwww.   z[!] WHOIS step failed: Tr   z[!] DNS lookup step failed: )argparseArgumentParseradd_argument
parse_argsrf   r   netlocr   split
startswithrc   r   r    )parserargs	raw_inputr   r   s        r   mainru      s   $1ijjjF
$ijjjDI I9$	i  'F HTXHHHIII f}}c""1%   9v 9 9 9+++48888888889> > > >0Q00==========>s0    C 
C8C33C8<D 
D6D11D6__main__z
[!] Interrupted by userr   z[!] Unexpected error:    )warningsfilterwarningssimplefiltersysr"   rH   r   dns.resolverr   r   rk   urllib.parser   r    rc   ru   __name__KeyboardInterruptr   r   exit r2   r   <module>r      s      ! ! !  h    



LLLOO   OOOMM   MMM  ! ! ! ! ! !M M M>j` j` j`X> > >@ z 7 7 7)6666666   *q**$7777 s;   1 ;;A AA-
A9 9B=B= B88B=