
    EOi5                     H   S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJ	r	    S SK
r
S SKJr   " S S\5      rS	 r\" \ R                  5      S
 5       rS rS r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       rS r\" \5      S 5       r\" \5      S 5       r\" \5      S 5       rS rS rS rS rS r\" \5      S 5       r\" \5      S 5       r \" \5      S 5       r!S r"\" \"5      S 5       r#\" \5      S 5       r$S  r%S! r&S" r'g)#    N)assert_equals)raises)
with_setup)Value)Pluginc                   B    \ rS rSrSrSrSrSrS rS r	S r
S rS	 rS
rg)Pdb?   z
Provides --pdb and --pdb-failures options that cause the test runner to
drop into pdb if it encounters an error or failure, respectively.
F   c           	          UR                  SSSUR                  SS5      SS9  UR                  SSS	UR                  S
S5      SS9  UR                  SSSUR                  SS5      SS9  g)z&Register commandline options.
        z--pdb
store_true	debugBothNOSE_PDBFz(Drop into debugger on failures or errors)actiondestdefaulthelpz--pdb-failuresdebugFailuresNOSE_PDB_FAILURESzDrop into debugger on failuresz--pdb-errorsdebugErrorsNOSE_PDB_ERRORSzDrop into debugger on errorsN)
add_optionget)selfparserenvs      RC:\Users\marco\AppData\Local\Temp\pip-target-mkzta7wy\lib\python\nmap/test_nmap.pyoptionsPdb.optionsI   s     	GGJ.; 	 	
 	 GG/71 	 	
 	GG-u5/ 	 	
    c                     X l         UR                  =(       d    UR                  U l        UR                  =(       d    UR                  U l        U R
                  =(       d    U R                  U l        g)z<Configure which kinds of exceptions trigger plugin.
        N)confr   r   enabled_for_errorsr   enabled_for_failuresenabled)r   r   r"   s      r   	configurePdb.configureb   sS     	")"5"5"J9J9J$+$9$9$NW=N=N!00KD4K4Kr    c                 J    U R                   (       d  gU R                  U5        g)z1Enter pdb if configured to debug errors.
        N)r#   debugr   testerrs      r   addErrorPdb.addErrorj   s     &&

3r    c                 J    U R                   (       d  gU R                  U5        g)z3Enter pdb if configured to debug failures.
        N)r$   r)   r*   s      r   
addFailurePdb.addFailureq   s     ((

3r    c                     SS K nUu  p4nUR                  nUR                  Ul         [        R                  " U5        Xbl        g ! Xbl        f = f)Nr   )sysstdout
__stdout__pdbpost_mortem)r   r,   r3   ecevtbr4   s          r   r)   	Pdb.debugx   s>    
^^
	 OOBJJs   A A)r"   r%   r#   r$   N)__name__
__module____qualname____firstlineno____doc__r#   r$   scorer   r&   r-   r0   r)   __static_attributes__ r    r   r	   r	   ?   s4    
  E
2L	 r    r	   c                  .    [         R                  " 5       qg N)nmapPortScannernmrC   r    r   setup_modulerI      s    				Br    c                  *    [         R                  SS9  g )Nz
-wrongargs	argumentsrH   scanrC   r    r   test_wrong_argsrO      s    GGlG#r    c                  D    S[         R                  SSS9S   S   ;   d   eg )Nerrorznoserver.example.com-sPrK   rF   scaninforM   rC   r    r   test_host_scan_errorrT      s*    2771U7CFKJWWWr    c                  \    [         R                  [        S5      R                  5       5        g )Nscanme_output.xmlrH   analyse_nmap_xml_scanopenreadrC   r    r   xmlfile_read_setupr[      s    T"56;;=>r    c                       [         R                  S   q[        [        R                  5       SR                  [        5      5        g ! [         a    [	        S5      ef = f)NNMAP_XML_VERSIONzSet env NMAP_XML_VERSIONz=./nmap-{0}/nmap -sV -oX scanme_output-{0}.xml scanme.nmap.org)	osenvironr]   	Exception
ValueErrorr   rH   command_lineformatrC   r    r   test_command_linerd      sY    5::&89 
GNN	
  53445s   A Ac                      S[         R                  5       ;   d   eS[         R                  5       S   ;   d   e[        S[         R                  5       S   S   5        S[         R                  5       S   ;   d   eg )Ntcpmethodconnectservices)rH   rS   r   rC   r    r   test_scan_inforj      sb    BKKM!!!r{{}U++++)R[[]51(;<u----r    c                  B    [        S/[        R                  5       5        g )N45.33.32.156)r   rH   	all_hostsrC   r    r   test_all_hostsrn      s    >"BLLN3r    c                     [        S[        S   R                  5       5        SSS.[        S   R                  5       ;   d   e[        S[        S   R	                  5       5        [        S/[        S   R                  5       5        g )Nzscanme.nmap.orgrl   user)nametypeuprf   )r   rH   hostname	hostnamesstateall_protocolsrC   r    r   	test_hostrx      sn    #R%7%@%@%BC%v6"^:L:V:V:XXXX$>*00235'2n-;;=>r    c                  p    [         R                  S5        [        S[         S   R                  5       5        g )N	127.0.0.2 )rH   rN   r   rt   rC   r    r   test_host_no_hostnamer|      s%    GGK"bo..01r    c                     [        [        S   S   R                  5       5      n U R                  5         [	        / SQU 5        [        S   R                  S5      (       d   e[        S   R                  S5      S:X  d   eS[        [        S   S   S   5      ;   d   eS[        [        S   S   S   5      ;   d   eS	[        [        S   S   S   5      ;   d   eS
[        [        S   S   S   5      ;   d   eS[        [        S   S   S   5      ;   d   eS[        [        S   S   S   5      ;   d   eS[        [        S   S   S   5      ;   d   eS[        S   S   S   S   ;   d   e[        S:X  aU  [	        S[        S   S   S   S   5        [	        S[        S   S   S   S
   5        [	        S[        S   S   S   S   5        OHS[        S   S   S   S   ;   d   eS[        S   S   S   S
   ;   d   eS[        S   S   S   S   ;   d   eS[        S   S   S   S	   ;   d   eS[        S   S   S   S   ;   d   eS[        S   S   S   S   ;   d   e[	        [        S   S   S   [        S   R                  S5      5        g )Nrl   rf   )      P      i  i&  iiz  r~      Fr"   cperq   productreasonrv   version106.40r{   zcpe:/o:linux:linux_kernelOpenSSHz6.6.1p1 Ubuntu 2ubuntu2.13sshzsyn-ackrY   )listrH   keyssortr   has_tcpr]   rf   )portss    r   
test_portsr      s   N#E*//12E	JJL5u=n%%b))))n%%b)U222T"^,U3B78888DN+E2267777T"^,U3B78888R/6r:;;;;tB~.u5b9::::d2n-e4R89999R/6r:;;;;2n%e,R088886!b"^,U3B7>?b"^,U3B7	BCb"^,U3B7	BC*b.@.G.KE.RRRRB~.u5b9)DDDD+r./A%/H/LY/WWWWB~&u-b1&9999>*51"5h????R'.r27;;;;"^$U+B/N1C1G1G1KLr    c                  j   [        S[        R                  5       S   5        [        S[        R                  5       S   5        [        S[        R                  5       S   5        S[        R                  5       R                  5       ;   d   eS[        R                  5       R                  5       ;   d   eg )N1uphosts0	downhosts
totalhoststimestrelapsed)r   rH   	scanstatsr   rC   r    r   test_listscanr      s{    #r||~i01#r||~k23#r||~l34++----++----r    c                  n   [        S[        R                  5       R                  S5      S   R	                  5       5        S n [
        S:X  a  Sn O&[
        S:X  a  Sn O[
        S:X  a  Sn O[
        S	:X  a  Sn U b?  [        U [        R                  5       R                  S5      S
   R	                  5       5        g g )Nz^host;hostname;hostname_type;protocol;port;name;state;product;extrainfo;reason;version;conf;cpe
r   r   zL45.33.32.156;scanme.nmap.org;user;tcp;22;ssh;open;;protocol 2.0;syn-ack;;10;z7.01z45.33.32.156;scanme.nmap.org;user;tcp;22;ssh;open;OpenSSH;"Ubuntu Linux; protocol 2.0";syn-ack;6.6.1p1 Ubuntu 2ubuntu2.13;10;cpe:/o:linux:linux_kernelz7.70z7.91   )r   rH   csvsplitstripr]   )results    r   test_csv_outputr      s    h
tQ%%' F6!_	V	# j	V	# j	V	# jfbffhnnT215;;=> r    c                      S[        [        R                  S5      5      :  d   e[        / SQ[        R                  S5      5        g )Nr   z192.168.1.0/30)z	127.0.0.0	127.0.0.1rz   z	127.0.0.3zlocalhost/30)lenrH   listscanr   rC   r    r   r   r   	  s6    s2;;/01111<
N#r    c                      [         R                  " 5       S:X  a  [        R                  SSS9n g [        R                  SSSS9n g )Nr   r   z-6rK   TrL   sudo)r^   getuidrH   rN   rs    r   	test_ipv6r     s6    	yy{aGGK4G0GGK4dG;r    c                     [        SS5      q[        R                  " 5       n S nU R	                  SSUS9  U R                  5       (       a(  U R                  S5        U R                  5       (       a  M(  [        [        R                  S5        g )	Nir   c                     S[         l        g Nr   )FLAGvaluehostscan_results     r   callback_result(test_ipv4_async.<locals>.callback_result  s	    
r    r   z	-p 22 -PnhostsrL   callback   r   )	r   r   rF   PortScannerAsyncrN   still_scanningwaitr   r   )nmar   s     r   test_ipv4_asyncr     so    a=D



!C HH;+HP




 



 $**a r    c                     [        SS5      q[        R                  " 5       n S nU R	                  SSUS9  U R                  5       (       a(  U R                  S5        U R                  5       (       a  M(  [        [        R                  S5        g )	Nr   r   c                     S[         l        g r   )	FLAG_ipv6r   r   s     r   r   (test_ipv6_async.<locals>.callback_result.  s	    	r    z::1z-6 -p 22 -Pnr   r   r   )	r   r   rF   r   rN   r   r   r   r   )nma_ipv6r   s     r   test_ipv6_asyncr   )  sp    c1I$$&H MM/MR

!
!
#
#a 
!
!
#
# )//1%r    c                  P   [         R                  5       n [        U 5      S:  a0   [         R                  U 5        [         R	                  5       S:X  a  g  [        R                  " 5       S:X  a  [         R                  SSS9  g [         R                  SSSS9  g ! [
         a     NPf = f)Nr   znmap -oX - -O 127.0.0.1r   z-OrK   Tr   )	rH   get_nmap_last_outputr   rX   rb   r`   r^   r   rN   )lastnms    r   scan_localhost_sudo_arg_Or   :  s    $$&F
6{Q	$$V,  $== > 
yy{a
t,
t$7  		s   B 
B%$B%c                      S[         S   ;   d   e[        [         S   S   S   S   5      S:  d   e[        S[         S   S   S   S   S   S   5        g )Nosmatchr   r   osclassLinuxvendor)rH   r   r   rC   r    r   	test_sudor   L  sa    ;'''r+y)!,Y781<<<'2k?95a8CAFxPQr    c                     S[         S   ;   d   e[        [         S   S   S   S   S5        S[         S   S   S   ;   d   eS[         S   S   S   ;   d   eS[         S   S   S   ;   d   e[        [         S   S   S   S   S   S	   S
5        S[         S   S   S   S   S   ;   d   eS[         S   S   S   S   S   ;   d   eS[         S   S   S   S   S   ;   d   eS[         S   S   S   S   S   ;   d   eg )Nr   r   r   rq   zLinux 2.6.32accuracyliner   r   r   rr   osfamilyosgen)rH   r   rC   r    r   %test_parsing_osmap_osclass_and_othersr   S  sF    ;'''"[/),Q/7HK3A6666R_Y/2222;	215555"[/),Q/	:1=hGQR_Y/29=a@@@@K3A6yA!DDDDboi03I>qAAAAK3A6yA!DDDDr    c                     S[         S   R                  5       ;  d   eS[         S   R                  5       ;  d   eS[         S   R                  5       ;  d   eS[         S   R                  5       ;  d   eS[         S   R                  5       ;  d   eS[         S   R                  5       ;  d   eS[         S   R                  5       ;  d   eS	[         S   R                  5       ;  d   eS
[         S   R                  5       ;   d   eg )N	addressesr   ru   statusr   r   r   uptimeportusedrf   )rH   rw   rC   r    r   test_all_protocolsr   e  s    bo;;====bo;;====2k?88::::2k?88::::B{O99;;;;B{O99;;;;2k?88::::R_::<<<<B{O113333r    c                  \    [         R                  [        S5      R                  5       5        g )Nzosmatch_output.xmlrW   rC   r    r   #xmlfile_read_setup_multiple_osmatchr   r  s    T"67<<>?r    c                  N   S[         S   ;   d   eS[         S   ;   d   e[         S   S    Hw  n SU ;   d   eSU ;   d   eSU ;   d   eSU ;   d   eSU S   S   ;   d   eS	U S   S   ;   d   eS
U S   S   ;   d   eSU S   S   ;   d   eSU S   S   ;   d   eSU S   S   ;   a  Mw   e   g )Nr   r   r   r   r   rq   r   r   r   r   r   rr   r   )rH   )osms    r   test_multipe_osmatchr   v  s    ;'''K(((+y)S   }}}}CS^A....Iq))))S^A....#i.++++Y****3y>!,,,, *r    c                      [         R                  [        S5      R                  5       5      n [        R
                  " U SS9nUS   S   S   S   S:X  d   eg )	NrV   ascii)coderN   rl   r   ipv4s   45.33.32.156)rH   rX   rY   rZ   rF   convert_nmap_output_to_encoding)aouts     r   $test_convert_nmap_output_to_encodingr     sT    
  &9!:!?!?!ABA

.
.qw
?Cv;~&{3F;NNNr    c                      [         R                  SSS9  S[         R                  5       ;   d   eS[         R                  5       S   S   ;   d   eg )N	localhostz-S 127.0.0.1rK   warningWARNINGr   )rH   rN   rS   rC   r    r   test_WARNING_case_sensitiver     sD    GGK>G2%%%i03333r    c                  v    [         R                  " 5       n S nU R                  SSUS9  U R                  5         g )Nc                     U c   eg rE   rC   )r   	scan_datas     r   r   'test_scan_progressive.<locals>.callback  s    r    r   z-sVr   )rF   r   rN   r   )nmpr   s     r   test_scan_progressiver     s2    



!C  HH;%(HCHHJr    c                  .    [         R                  SSSS9n g)z
When using "sudo=True" like this 'nm.scan(hosts=ip_range, arguments="-sP", sudo = True)' 
i got a UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128). 
But if sudo is false all thing work nice. 
z192.168.1.1/24rR   Tr   NrM   r   s    r   test_sudo_encoding__T24r     s     	 E=Ar    )(rF   datetimer^   
nose.toolsr   r   noser   multiprocessingr   r6   nose.plugins.baser   r	   rI   PortScannerErrorrO   rT   r[   rd   rj   rn   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   r    r   <module>r      s     	 $   !#N  $B & B P
 $ $?    .  . 4  4 ?  ?2 M  M@ .  . ?  ?0<!"&"8$ %&R 'R %&E 'E" %&	4 '	4@ /0- 1-" O  O4>r    