403Webshell
Server IP : 37.9.174.138  /  Your IP : 216.73.216.117
Web Server : Apache
System : Linux vps6.backend.sk 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64
User : ftpuser ( 1001)
PHP Version : 8.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/__pycache__/ndiff.cpython-313.pyc
�

���g����SSKrSSKrSSKrSSKrSSKrSSKr\RVs/sH
nSU;dMUPM sn\lSSKrSSKrSSK	rSSK
Jr SqSr
"SS\RRR 5r"SS	\5r"S
S\5r"SS
\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5rSr\R:4SjrSrSr "SS\5r!"S S!\!5r""S"S#\!5r#"S$S%\5r$"S&S'\5r%"S(S)\5r&"S*S+\5r'S,r("S-S.\RRRR5r*"S/S0\RRVRX5r-S1r.Sr/S2r0S3r1S4r2S5r3S6r4\5S7:Xa\4\l4\Rl"\3"55 ggs snf)8�N�_xmlplus)�StringIOF�1c�,�\rSrSrSr\"5rSrSrg)�OverrideEntityResolver�#zmThis class overrides the default behavior of xml.sax to download
remote DTDs, instead returning blank stringsc�"�[R$�N)r�empty)�self�publicId�systemIds   �'/usr/lib/python3/dist-packages/ndiff.py�
resolveEntity�$OverrideEntityResolver.resolveEntity(s��%�+�+�+��N)	�__name__�
__module__�__qualname__�__firstlineno__�__doc__rrr�__static_attributes__rrrrr#s��4��J�E�,rrc�B�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)�Scan�,z�A single Nmap scan, corresponding to a single invocation of Nmap. It is
a container for a list of hosts. It also has utility methods to load itself
from an Nmap XML file.c�t�SUlSUlSUlSUlSUl/Ul/Ul/Ulgr
)�scanner�version�args�
start_date�end_date�hosts�pre_script_results�post_script_results�rs r�__init__�
Scan.__init__0s<����������	������
���
�"$���#%�� rc�8�URRSS9 g)Nc�"�UR5$r
)�get_id)�hs r�<lambda>�!Scan.sort_hosts.<locals>.<lambda>;s
��a�h�h�jr)�key)r#�sortr&s r�
sort_hosts�Scan.sort_hosts:s���
�
���0��1rc���[RR5n[U5nUR	[55 UR
U5 URU5 g)z8Load a scan from the Nmap XML in the file-like object f.N)�xml�sax�make_parser�NmapContentHandler�setEntityResolverr�setContentHandler�parse)r�f�parser�handlers    r�load�	Scan.load=sI�����$�$�&��$�T�*��� � �!7�!9�:�� � ��)����Q�rc�r�[US5nURU5 SSS5 g!,(df   g=f)z;Load a scan from the Nmap XML file with the given filename.�rN)�openr>)r�filenamer;s   r�load_from_file�Scan.load_from_fileEs%��
�(�C�
 �A��I�I�a�L�!�
 �
 �s�(�
6c��0nURbURUS'URbURUS'URbRS[R"URR55-US'URR
S5US'URbURUS'URSU5 g)	Nrr �%d�start�%a %b %d %H:%M:%S %Y�startstrr�nmaprun)	rr r!�time�mktime�	timetuple�strftimer�startElement)r�writer�attrss   r�write_nmaprun_open�Scan.write_nmaprun_openJs������<�<�#�#�|�|�E�)���9�9� � �I�I�E�&�M��?�?�&�!�D�K�K����0I�0I�0K�$L�L�E�'�N� $��� 8� 8�*�!,�E�*���<�<�#�#�|�|�E�)�����I�u�-rc�&�URS5 g�NrK)�
endElement)rrQs  r�write_nmaprun_close�Scan.write_nmaprun_closeXs�����)�$rc�R�UR5nURS5nURbURSUR5 URbURSUR5 UR
blURSS[R"UR
R55-5 URSUR
RS55 URbURSUR5 URU5 U$)	NrKrr rHrGrJrIr)�createDocumentFragment�
createElementr�setAttributer r!rLrMrNrOr�appendChild�r�document�frag�elems    r�nmaprun_to_dom_fragment�Scan.nmaprun_to_dom_fragment[s����.�.�0���%�%�i�0���<�<�#����i����6��9�9� ����f�d�i�i�0��?�?�&�����T�D�K�K����0I�0I�0K�$L�L�
N������O�O�,�,�-C�D�
F��<�<�#����i����6�������r)r r"r#r%r$rr!rN)
rrrrrr'r1r>rDrSrXrcrrrrrr,s*���&�2���
.�%�rrc�f�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrg)�Host�nz�A single host, with a state, addresses, host names, a dict mapping port
specs to Ports, and a list of OS matches. Host states are strings, or None
for "unknown".c�f�SUl/Ul/Ul0Ul0Ul/Ul/Ulgr
)�state�	addresses�	hostnames�ports�
extraports�os�script_resultsr&s rr'�
Host.__init__rs4����
���������
������� ��rc�4�Sn[UR5S:�a$S[[UR5S5-n[UR5S:�a-U=(d S[[UR5S5-$U=(d [U5$)zLReturn an id that is used to determine if hosts are "the same"
across scans.Nrz%-40sz(                                        )�lenrj�str�sortedrk�id)r�hids  rr+�Host.get_id{sx�����t�~�~���"��S�����!7��!:�;�<�C��t�~�~���"��O�8�s�6�$�.�.�+A�!�+D�'E�E�E���b��h�rc��SRS[UR555nSR[UR55n[	U5S:�a[	U5S:�a
U<SU<S3$U$[	U5S:�aU$g)z1Return a human-readable identifier for this host.�, c3�8# �UHoRv� M g7fr
��s)�.0�as  r�	<genexpr>�#Host.format_name.<locals>.<genexpr>�s���B�+A�a�c�c�+A�s�rz (�)z	<no name>)�joinrtrjrkrr)r�	address_s�
hostname_ss   r�format_name�Host.format_name�st���I�I�B�6�$�.�.�+A�B�B�	��Y�Y�v�d�n�n�5�6�
��z�?�Q���9�~��!�$.�	�:�:�!�!�
��^�a�
���rc�4�XRUR'gr
)rl�spec)r�ports  r�add_port�
Host.add_port�s�� $�
�
�4�9�9�rc�Z�XR;aURRU5 ggr
)rj�append)r�addresss  r�add_address�Host.add_address�s#���.�.�(��N�N�!�!�'�*�)rc�Z�XR;aURRU5 ggr
)rkr�)r�hostnames  r�add_hostname�Host.add_hostname�s#���>�>�)��N�N�!�!�(�+�*rc�4�USL=(d XR;$r
)rm)rris  r�
is_extraports�Host.is_extraports�s����}�8���� 8�8rc	��[URR55VVs/sHupX!4PM
 nnnURSS9 SR	UVVs/sHup!SX!4-PM
 snn5$s snnfs snnf)NT)�reverseryz%d %s ports)�listrm�itemsr0r�)rri�count�	locallists    r�extraports_string�Host.extraports_string�sv��:>�t���?T�?T�?V�:W�X�:W���e�^�:W�	�X����t��$��y�y�FO�P�i�N�U��%��/�i�P�R�	R��Y��Qs�A2�A8
c��UR5nURb>URS5nURSUR5 UR	U5 U$)N�statusri)r[rir\r]r^r_s    r�state_to_dom_fragment�Host.state_to_dom_fragment�sQ���.�.�0���:�:�!��)�)�(�3�D����g�t�z�z�2����T�"��rc��UR5nURS5nURSU5 URU5 U$)Nr��name�r[r\r]r^)rr`r�rarbs     r�hostname_to_dom_fragment�Host.hostname_to_dom_fragment�sC���.�.�0���%�%�j�1�����&�(�+�������rc��UR5n[URR55HTup4UR	S5nURSU5 URS[
U55 URU5 MV U$)Nrmrir�)r[r�rmr�r\r]rsr^)rr`rarir�rbs      r�extraports_to_dom_fragment�Host.extraports_to_dom_fragment�sw���.�.�0�� ����!6�!6�!8�9�L�E��)�)�,�7�D����g�u�-����g�s�5�z�2����T�"�	:�
�rc��UR5nURS5nURSU5 URU5 U$)N�osmatchr�r�)rr`rnrarbs     r�os_to_dom_fragment�Host.os_to_dom_fragment�sC���.�.�0���%�%�i�0�����&�"�%�������rc�D�UR5nURS5nURb URUR	U55 UR
H#nURUR
U55 M% [UR5S:�aUURS5nURH#nURURX55 M% URU5 URS5nURURU55 [URR55HEnURUR5(aM%URUR
U55 MG UR5(aURU5 [UR 5S:�aUURS5n	UR H#n
U	RUR#X55 M% URU	5 [UR$5S:�aUURS5nUR$H#nURUR
U55 M% URU5 URU5 U$)N�hostrrkrlrn�
hostscript)r[r\rir^r�rj�to_dom_fragmentrrrkr�r�rtrl�valuesr��
hasChildNodesrnr�ro)
rr`rarb�addr�hostnames_elemr��
ports_elemr��os_elemrn�hostscript_elem�srs
             rr��Host.to_dom_fragment�s���.�.�0���%�%�f�-���:�:�!����T�7�7��A�B��N�N�D����T�1�1�(�;�<�#��t�~�~���"�%�3�3�K�@�N� �N�N���*�*��5�5�h�I�K�+�
���^�,��+�+�G�4�
����t�>�>�x�H�I��4�:�:�,�,�.�/�D��%�%�d�j�j�1�1��&�&�t�';�';�H�'E�F�0��#�#�%�%����Z�(��t�w�w�<�!���,�,�T�2�G��g�g���#�#�D�$;�$;�H�$I�J�����W�%��t�"�"�#�a�'�&�4�4�\�B�O��)�)���+�+�B�,>�,>�x�,H�I�*����_�-�������r)rjrmrkrnrlroriN)rrrrrr'r+r�r�r�r�r�r�r�r�r�r�r�rrrrrfrfnsI���!���%�+�,�9�R�����&rrfc�Z�\rSrSrSrSrSrSrSrSr	Sr
S	r\"\5rS
r
Srg)
�Address��c��Xlgr
r{�rr|s  rr'�Address.__init__�s���rc�D�UR5UR5:H$r
��sort_key�r�others  r�__eq__�Address.__eq__�s���}�}��%�.�.�"2�2�2rc�.�URU5(+$r
�r�r�s  r�__ne__�Address.__ne__�����;�;�u�%�%�%rc�4�[UR55$r
)�hashr�r&s r�__hash__�Address.__hash__�s���D�M�M�O�$�$rc�D�UR5UR5:$r
r�r�s  r�__lt__�Address.__lt__�s���}�}�����!1�1�1rc�,�[UR5$r
)rsr|r&s r�__str__�Address.__str__s���4�6�6�{�rc��UR$r
r{r&s r�__unicode__�Address.__unicode__s���v�v�
rc��US:Xa[U5$US:Xa[U5$US:Xa[U5$[SU-5e)N�ipv4�ipv6�maczUnknown address type %s.)�IPv4Address�IPv6Address�
MACAddress�
ValueError)�typer|s  r�new�Address.newsF���6�>��q�>�!�
�V�^��q�>�!�
�U�]��a�=� ��7�$�>�?�?rc���UR5nURS5nURSUR5 URSUR5 URU5 U$)Nr�r��addrtype)r[r\r]r|r�r^r_s    rr��Address.to_dom_fragments[���.�.�0���%�%�i�0�����&�$�&�&�)����*�d�i�i�0�������rr{N)rrrrr'r�r�r�r�r�r�r��staticmethodr�rrrrr�r��s<���3�&�%�2���@��s�
�C�rr�c�,�\rSrSr\"S5rSrSrg)r�ic��g)Nr�rr&s rr-�IPv4Address.<lambda>���rc��SUR4$�Nrr{r&s rr��IPv4Address.sort_key ����4�6�6�{�rrN�rrrr�propertyr�r�rrrrr�r�����'�(�D�rr�c�,�\rSrSr\"S5rSrSrg)r�i$c��g)Nr�rr&s rr-�IPv6Address.<lambda>%r�rc��SUR4$�N�r{r&s rr��IPv6Address.sort_key'r�rrNr�rrrr�r�$r�rr�c�,�\rSrSr\"S5rSrSrg)r�i+c��g)Nr�rr&s rr-�MACAddress.<lambda>,s��rc��SUR4$)N�r{r&s rr��MACAddress.sort_key.r�rrNr�rrrr�r�+s���&�'�D�rr�c�@�\rSrSrSrSSjrSrSrSrSr	S	r
S
rg)�Porti2z�A single port, consisting of a port specification, a state, and a
service version. A specification, or "spec," is the 2-tuple (number,
protocol). So (10, "tcp") corresponds to the port 10/tcp. Port states are
strings, or None for "unknown".Nc�H�XlX l[5Ul/Ulgr
)r�ri�Service�servicero)rr�ris   rr'�
Port.__init__7s���	��
��y��� ��rc�H�URcg[UR5$)N�unknown)rirsr&s r�state_string�Port.state_string=s���:�:����t�z�z�?�"rc� �SUR-$)Nz%d/%s)r�r&s r�spec_string�Port.spec_stringCs������"�"rc�,�[UR5$r
)r�r�r&s rr��
Port.__hash__Fs���D�I�I��rc��URURUR4URURUR4:$r
)r�rror�s  rr��Port.__lt__Is?���	�	�4�<�<��)<�)<�=��J�J��
�
�u�';�';�A=�=�	=rc�H�UR5nURS5nURS[URS55 URSURS5 UR
b>URS5nURSUR
5 UR
U5 UR
URRU55 URH#nUR
URU55 M% UR
U5 U$)Nr��portidr�protocolr�ri)
r[r\r]rsr�rir^rr�ro)rr`rarb�
state_elemr�s      rr��Port.to_dom_fragmentMs����.�.�0���%�%�f�-�����(�C��	�	�!��$5�6����*�d�i�i��l�3��:�:�!�!�/�/��8�J��#�#�G�T�Z�Z�8����Z�(�������5�5�h�?�@��%�%�B����R�/�/��9�:�&�������r)rorr�rir
)rrrrrr'rrr�r�r�rrrrrr2s%��'�!�#�#��=�
rrc�@�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)ri]zfA service version as determined by -sV scan. Also contains the looked-up
port name if -sV wasn't used.c�J�SUlSUlSUlSUlSUlgr
�r��productr�	extrainfo�tunnelr&s rr'�Service.__init__`s%����	������������rNc���URUR:H=(aY URUR:H=(a9 URUR:H=(a URUR:H$r
)r�rrrr�s  rr��Service.__eq__msX���y�y�E�J�J�&�2�����
�
�-�2�����
�
�-�2����%�/�/�1�	2rc�.�URU5(+$r
r�r�s  rr��Service.__ne__sr�rc���/nURbURUR5 URbURUR5 [U5S:XagSR	U5$)Nr�/)rr�r�rrr��r�partss  r�name_string�Service.name_stringvsW�����;�;�"��L�L����%��9�9� ��L�L����#��u�:��?���8�8�E�?�"rc�>�/nURbURUR5 URbURUR5 URbURSUR-5 [	U5S:XagSRU5$)z7Get a string like in the VERSION column of Nmap output.Nz(%s)r� )rr�rrrrr�r&s  r�version_string�Service.version_string�sv�����<�<�#��L�L����&��<�<�#��L�L����&��>�>�%��L�L��$�.�.�0�1��u�:��?���8�8�E�?�"rc���UR5nURS5nSH$n[X5nUcMURXE5 M& [	UR
5S:�aUR
U5 U$)Nrrr)r[r\�getattrr]rr�
attributesr^)rr`rarb�attr�vs      rr��Service.to_dom_fragment�sq���.�.�0���%�%�i�0��I�D���#�A��y�����d�&�	J�
�t����!�#����T�"��r)rr�rrr)
rrrrrr'r�r�r�r(r,r�rrrrrr]s,��%���H�2�&�
#�
#�
rrc�6�\rSrSrSrSrSrSrSrSr	Sr
g)	�ScriptResulti�c� �SUlSUlgr
�ru�outputr&s rr'�ScriptResult.__init__�s�������rNc�t�URUR:H=(a URUR:H$r
r7r�s  rr��ScriptResult.__eq__�s'���w�w�%�(�(�"�B�t�{�{�e�l�l�'B�Brc�.�URU5(+$r
r�r�s  rr��ScriptResult.__ne__�r�rc��/nURR5n[U5S:�aURS-US-US'USSHnUR	SU-5 M [U5S:�aUR	SUS-5 U$)Nr�: ���z|  z|_ )r8�
splitlinesrrrur�)r�result�lines�lines    r�	get_lines�ScriptResult.get_lines�s��������&�&�(���u�:��>��w�w��~��a��0�E�!�H��#�2�J�D��M�M�%�$�,�'���u�:��>��M�M�%�%��)�+�,��
rc���UR5nURS5nURSUR5 URSUR5 URU5 U$)N�scriptrur8)r[r\r]rur8r^r_s    rr��ScriptResult.to_dom_fragment�s[���.�.�0���%�%�h�/�����$����(����(�D�K�K�0�������rr7)rrrrr'r�r�r�rEr�rrrrr5r5�s#����H�C�&�	�rr5c��SnURbURS:waURnU/nURbURUR5 URS5 URb-URSURR	S5-5 UR
bURSUR
-5 SR
U5$)z4Format a startup banner more or less like Nmap does.�Nmap�nmap�scanzinitiated %srIzas: %sr+)rrr�r!rOr r�)rMrr's   r�
format_bannerrN�s����G��|�|��D�L�L�F�$:��,�,��
�I�E��|�|��
���T�\�\�"�	�L�L������"�
���^�d�o�o�&>�&>�"�'$�$�	%��y�y��
���X��	�	�)�*��8�8�E�?�rc� �[S5nUHnURU5 M [U5S:�aZ[US9 [U5S:Xa[SU-US9 O*[U5S:Xa[SU-US9 O
[SU-US9 [XTS9 gg)N�*r��file�-%s:�+%s:� %s:)�Table�append_to_port_tablerr�print)�title�script_results_a�script_results_b�script_result_diffsr;�table�sr_diffs       r�print_script_result_diffs_textr_�s����#�J�E�&���$�$�U�+�'�
�5�z�A�~�
�1�
��� �A�%��&�5�.�q�)�
�!�
"�a�
'��&�5�.�q�)��&�5�.�q�)�
�e��rc�$�[U5S:Xa[U5S:XaUR5$[U5S:XaMURS5nUH#nURUR	U55 M% URU5 U$[U5S:XaMURS5nUH#nURUR	U55 M% URU5 U$UH#nURUR	U55 M% U$)Nrr~�b)rrr[r\r^r�)	rbrZr[r\r`�a_elemr��b_elemr^s	         r�#script_result_diffs_to_dom_fragmentrd�s���
����!�c�*:�&;�q�&@��.�.�0�0�	�
�	�!�	#��'�'��,��"�B����R�/�/��9�:�#����4� ��
�	�
�	�!�	#��'�'��,��"�B����R�/�/��9�:�#����4� ��
�*�G����W�4�4�X�>�?�+��rc#�~# �SnSnU[U5:a�U[U5:a�XR5XR5:aX[54v� US-
nOPXR5XR5:�a[5X4v� US-
nOXX4v� US-
nUS-
nU[U5:aU[U5:aM�U[U5:a&X[54v� US-
nU[U5:aM&U[U5:a'[5X4v� US-
nU[U5:aM&gg7f)a;Take hosts lists a and b, which must be sorted by id, and return pairs.
When the heads of both lists have the same ids, they are returned together.
Otherwise the one with the smaller id is returned, with an empty host as
its counterpart, and the one with the higher id will remain in its list for
a later iteration.rr�N)rrr+rf)r~ra�i�js    r�
host_pairsrh�s���	
�A�	�A�
�c�!�f�*��S��V���4�;�;�=�1�4�;�;�=�(��$���,��
��F�A�
�T�[�[�]�Q�T�[�[�]�
*��&�!�$�,��
��F�A��$���*��
��F�A�
��F�A��c�!�f�*��S��V���c�!�f�*��d�D�F�l��	�Q����c�!�f�*��c�!�f�*��f�a�d�l��	�Q����c�!�f�*�s�C
D=�3D=�3D=�;D=c�>�\rSrSrSr\R4SjrSrSr	g)�ScanDiffizaAn abstract class for different diff output types. Subclasses must
define various output methods.c�(�XlX lX0lg)zBCreate a ScanDiff from the "before" scan_a and the "after"
scan_b.N)�scan_a�scan_br;�rrlrmr;s    rr'�ScanDiff.__init__s�������rc��URR5 URR5 UR5 [RURRURR5nURU5 Sn[URRURR5HLup4[X45nX%R-
nURS:�d
[(dM;URU5 MN [RURRURR5nURU5 UR!5 U$r�)rlr1rm�output_beginning�ScriptResultDiff�
diff_listsr$�output_pre_scriptsrhr#�HostDiff�cost�verbose�output_host_diffr%�output_post_scripts�
output_ending)r�pre_script_result_diffsrv�host_a�host_b�h_diff�post_script_result_diffss       rr8�ScanDiff.outputs������� ������ �����"2�"=�"=����.�.����0N�0N�#P����� 7�8���)����):�):�D�K�K�<M�<M�N�N�F��f�-�F��K�K��D��{�{�Q��'�'��%�%�f�-�	O�$4�#>�#>����/�/����/�/�$1� �	
� � �!9�:������r)r;rlrmN)
rrrrr�sys�stdoutr'r8rrrrrjrjs��&�),����rrjc�R�\rSrSr\R
4SjrSrSrSr	Sr
SrSrg	)
�ScanDiffTexti8c�0�[RXX#5 gr
)rjr'rns    rr'�ScanDiffText.__init__9s�����$��2rc��[UR5n[UR5nX:wa/[SU-URS9 [SU-URS9 g[
(a[SU-URS9 gg)Nz-%srQz+%sz %s)rNrlrmrXr;rw)r�banner_a�banner_bs   rrq�ScanDiffText.output_beginning<sg�� ����-�� ����-�����%�(�"����0��%�(�"����0�
�W��%�(�"����0�rc��[SURRURRXR5 g)NzPre-scan script results)r_rlr$rmr;)rr{s  rrt�ScanDiffText.output_pre_scriptsEs-��&�'@��K�K�*�*�D�K�K�,J�,J�#�V�V�	-rc��[SURRURRXR5 g)NzPost-scan script results)r_rlr%rmr;)rrs  rry� ScanDiffText.output_post_scriptsJs-��&�'A��K�K�+�+�T�[�[�-L�-L�$�f�f�	.rc�`�[URS9 URUR5 g)NrQ)rXr;�
print_text)rr~s  rrx�ScanDiffText.output_host_diffOs ��
�4�6�6�����$�&�&�!rc��gr
rr&s rrz�ScanDiffText.output_endingSs��rrN)
rrrrr�r�r'rqrtryrxrzrrrrr�r�8s'��),���3�1�-�
.�
"�
rr�c�X�\rSrSr\R
4SjrSrSrSr	Sr
SrSrS	r
g
)�ScanDiffXMLiWc���[RXX#5 [RRR5nUR
SSS5Ul[U5Ul	gr
)
rjr'r4�dom�minidom�getDOMImplementation�createDocumentr`�	XMLWriterrQ)rrlrmr;�impls     rr'�ScanDiffXML.__init__XsI�����$��2��w�w���3�3�5���+�+�D�$��=��
���l��rc�z�SH5n[URUS5[URUS5:wdM5 g g)N)rrr r!r"TF)r/rlrm)rr1s  r�nmaprun_differs�ScanDiffXML.nmaprun_differs`s:��L�D��t�{�{�D�$�/��D�K�K��t�4�5��M�rc�l�URR5 URRSS[05 URRS05 UR	5(a}URRURRUR55 URRURRUR55 g[(a?URRURRUR55 gg)N�nmapdiffr�scandiff)
rQ�
startDocumentrP�NDIFF_XML_VERSIONr��frag_arlrcr`�frag_brmrwrar&s rrq�ScanDiffXML.output_beginninggs������!�!�#���� � ��i�9J�-K�L���� � ��R�0����!�!��K�K����K�K�7�7��
�
�F�
H��K�K����K�K�7�7��
�
�F�
H�
�W��K�K����K�K�7�7��
�
�F�
H�rc�F�[U5S:�d[(a�URRS5n[	X R
RURRUUR5nURRU5 UR5 gg)Nr�	prescript)rrrwr`r\rdrlr$rmrQra�unlink)rr{�prescript_elemras    rrt�ScanDiffXML.output_pre_scriptsusx���&�'�!�+�w�w�!�]�]�8�8��E�N�6���� >� >����.�.�0G��
�
��D�
�K�K���T�"��K�K�M�07rc�F�[U5S:�d[(a�URRS5n[	X R
RURRUUR5nURRU5 UR5 gg)Nr�
postscript)rrrwr`r\rdrlr%rmrQrar�)rr�postscript_elemras    rry�ScanDiffXML.output_post_scriptssx���'�(�1�,���"�m�m�9�9�,�G�O�6����!@�!@����/�/�1I��
�
��D�
�K�K���T�"��K�K�M�18rc��URUR5nURRU5 UR	5 gr
)r�r`rQrar�)rr~ras   rrx�ScanDiffXML.output_host_diff�s1���%�%�d�m�m�4������������
rc��URRS5 URRS5 URR5 g)Nr�r�)rQrW�endDocumentr&s rrz�ScanDiffXML.output_ending�s6�������z�*������z�*������!r)r`rQN)rrrrr�r�r'r�rqrtryrxrzrrrrr�r�Ws-��),���#��H����
"rr�c�P�\rSrSrSrSrSrSr\R4Sjr
SrSrg	)
rui�z~A diff of two Hosts. It contains the two hosts, variables describing
what changed, and a list of PortDiffs and OS differences.c��XlX lSUlSUlSUlSUl/Ul0Ul/Ul/Ul	SUl
UR5 g)NFr)r|r}�
state_changed�
id_changed�
os_changed�extraports_changedrl�
port_diffs�os_diffsr\rv�diff)rr|r}s   rr'�HostDiff.__init__�sW������"���������"'�����
������
�#%�� ���	��	�	�rc��URRURR:waSUlU=RS-
sl[URR5[URR5:wd@[URR5[URR5:waSUlU=RS-
sl[[URRR55R[URRR5555nUR5 UH�nURRRU5nURRRU5n[U=(d [!U5U=(d [!U55nUR#U5(dM�U=(d UnURR%U5 XPR&U'U=RUR-
slM� [(R*"SURR,URR,5nUR/5Ul[3UR0Vs/sHo�SS:wdM
UPM sn5n	U	S:�aSUlU=RU	-
sl[7S[URR8R;5555n
[7S[URR8R;5555nX�:waSUlU=RS-
sl[>RAURRBURRB5Ul"U=R[3URD5-
slgs snf)NTr�r�equalc3�,# �UH
upX!4v� M g7fr
r�r}rir�s   rr� HostDiff.diff.<locals>.<genexpr>�����L�&J�N�U�$�^�&J���c3�,# �UH
upX!4v� M g7fr
rr�s   rrr��r�r�)#r|rir}r�rv�setrjrkr�r�rl�keys�unionr0�get�PortDiffr�include_diffr�r��difflib�SequenceMatcherrn�get_opcodesr�rrr��tuplermr�r�rrrsror\)r�	all_specsr��port_a�port_br�r�r��x�os_cost�extraports_a�extraports_bs            rr��
HostDiff.diff�s����;�;������ 1� 1�1�!%�D���I�I��N�I��t�{�{�$�$�%��T�[�[�-B�-B�)C�C��$�+�+�'�'�(�C����0E�0E�,F�F�"�D�O��I�I��N�I���D�K�K�%�%�*�*�,�-�3�3�����)�)�.�.�0�1�3�4�	�	�����D��[�[�&�&�*�*�4�0�F��[�[�&�&�*�*�4�0�F��F�0�d�4�j�&�2F�D��J�G�D�� � ��&�&��'����
�
�!�!�$�'�(,����%��	�	�T�Y�Y�&�	���*�*��d�k�k�n�n�d�k�k�n�n�6�� �,�,�.��
��$�-�-�C�-�Q�Q�4�7�?�q�-�C�D���Q�;�"�D�O��	�	�W��	��L�&*�4�;�;�+A�+A�+G�+G�+I�&J�L�L���L�&*�4�;�;�+A�+A�+G�+G�+I�&J�L�L���'�&*�D�#��I�I��N�I�#3�#>�#>����*�*�D�K�K�,F�,F�$H�� ��	�	�S��1�1�2�2�	��Ds�=P�
Pc�
�URRURR5(a5URRUR
R5(ag[(agURS:�$)NFTr)r|r�r�rir}r�rwrv)rr�s  rr��HostDiff.include_diff�s[���;�;�$�$�T�[�[�%6�%6�7�7��;�;�$�$�T�[�[�%6�%6�7�7��
�W���y�y�1�}�rc��URnURnUR(a[URb[	SUR5-US9 URRb[	SUR5-US9 O[	SUR5-US9 UR(aIURb[	SUR-US9 URb[	SUR-US9 O"[(a[	SUR-US9 UR(ai[UR5S:�a[	S	UR5-US9 [UR5S:�a[	S
UR5-US9 O?[(a4[UR5S:�a[	SUR5-US9 [S5nURcS
nOURcSnOSnURUSSSS45 URH$nURUnUR!XBU5 M& [U5S:�a	[	XAS9 UR"(d[(Ga&[UR$5S:�a/[UR$5S:�a[	SUS9 O.[	SUS9 O#[UR$5S:�a
[	SUS9 UR&H�up�p�nUS:XdUS:Xa,[)X�5Hn
[	SUR$U
-US9 M US:XdUS:Xa,[)X�5Hn
[	SUR$U
-US9 M US:XdM[)X�5Hn
[	SUR$U
-US9 M M� [+SUR,UR,UR.5 g) NrSrQrTrUz-Host is %s.z+Host is %s.z Host is %s.rz-Not shown: %sz+Not shown: %sz Not shown: %sz** * * *�+�-r+�PORT�STATE�SERVICE�VERSIONr�z OS details:z-OS details:z+OS details:�replace�deletez-  %s�insertz+  %sr�z   %szHost script results)r|r}r�rirXr�r�rwr�rrrmr�rVr�rlr�rWr�rnr��ranger_ror\)rr;r|r}�
port_table�markr��	port_diff�op�i1�i2�j1�j2rfs              rr��HostDiff.print_text�s&�����������?�?��|�|�'��f�v�1�1�3�3�!�<��{�{� � �,��f�v�1�1�3�3�!�<���&�6�-�-�/�/�a�8�����|�|�'��n�v�|�|�3�!�<��|�|�'��n�v�|�|�3�!�<��
�W��.�6�<�<�/�a�8��"�"��6�$�$�%��)��&��)A�)A�)C�C�!�L��6�$�$�%��)��&��)A�)A�)C�C�!�L��
�W��6�$�$�%��)��&��)A�)A�)C�C�!�L��:�&�
��<�<���D�
�\�\�
!��D��D����4���)�Y�G�H��J�J�D�����-�I��*�*�:�v�F���z�?�Q���*�%��?�?�g�g��6�9�9�~��!��v�y�y�>�A�%��.�q�1��.�q�1��V�Y�Y��!�#��n�1�-�'+�m�m�"������?�b�H�n�"�2�]���g��	�	�!��4�1�=�+���?�b�H�n�"�2�]���g��	�	�!��4�1�=�+���=�"�2�]���g��	�	�!��4�1�=�+�'4�	'�'<��!�!�6�#8�#8��$�$�	&rc	�R�URnURnUR5nURS5nUR	U5 UR
b
UR
c�UR
bDURS5nUR	UR
U55 UR	U5 U$UR
bBURS5nUR	UR
U55 UR	U5 U$URS5nUR
UR
:Xa,[(a UR	URU55 O�URS5nUR	URU55 UR	U5 URS5nUR	URU55 UR	U5 [UR5n	[UR5n
[U	RU
55H#nUR	UR
U55 M% URS5n[X�-
5H#nUR	UR
U55 M% UR5(aUR	U5 URS5n[X�-
5H#nUR	UR
U55 M% UR5(aUR	U5 URS5n[UR5n
[UR5n[U
RU55H#nUR	URX55 M% URS5n[X�-
5H#nUR	URX55 M% UR5(aUR	U5 URS5n[X�-
5H#nUR	URX55 M% UR5(aUR	U5 UR5(aUR	U5 URS5nUR UR :Xa!UR	UR#U55 O�URS5nUR	UR#U55 UR	U5 URS5nUR	UR#U55 UR	U5 UR$HqnUR&UnUR(S:Xa/[(a"UR	UR
U55 MOMQUR	UR
U55 Ms UR5(aUR	U5 UR*(d[(GavURS5nUR,GH.unnnnnUS	:XdUS
:XabURS5n[/UU5H0nUR	UR1XR2U55 M2 UR	U5 US	:XdUS:XabURS5n[/UU5H0nUR	UR1XR2U55 M2 UR	U5 US:XdM�[/UU5H0nUR	UR1XR2U55 M2 GM1 UR5(aUR	U5 [5UR65S:�d[(aMURS
5nUR	[9UUR:UR:UR6U55 UR	U5 U$)N�hostdiffr~rar�rkrlrrnr�r�r�r�r�)r|r}r[r\r^rir�rwr�r�rjrt�intersectionr�rkr�rmr�rlr�rvr�r�r�r�rnrrr\rdro)rr`r|r}ra�
hostdiff_elemrbrc�	host_elem�	addrset_a�	addrset_br�r��
hostnameset_a�
hostnameset_br�r�r��p_diffr�r�r�r�r�r�rfr�s                           rr��HostDiff.to_dom_fragment*s������������.�.�0�� �.�.�z�:�
�����'��<�<��6�<�<�#7��|�|�'�!�/�/��4���"�"�6�#9�#9�(�#C�D��)�)�&�1�
�K�	���)�!�/�/��4���"�"�6�#9�#9�(�#C�D��)�)�&�1��K��*�*�6�2�	��<�<�6�<�<�'��w��%�%�f�&B�&B�8�&L�M���+�+�C�0�F����v�;�;�H�E�F��!�!�&�)��+�+�C�0�F����v�;�;�H�E�F��!�!�&�)���(�(�)�	���(�(�)�	��9�1�1�)�<�=�D��!�!�$�"6�"6�x�"@�A�>��'�'��,���9�0�1�D����t�3�3�H�=�>�2����!�!��!�!�&�)��'�'��,���9�0�1�D����t�3�3�H�=�>�2����!�!��!�!�&�)�"�/�/��<���F�,�,�-�
��F�,�,�-�
��}�9�9�-�H�I�H��&�&��3�3�H�G�
I�J��'�'��,���}�<�=�H�����3�3�H�G�
I�>����!�!��&�&�v�.��'�'��,���}�<�=�H�����3�3�H�G�
I�>����!�!��&�&�v�.��'�'�)�)��!�!�.�1��+�+�G�4�
����� 1� 1�1��"�"�6�#D�#D�X�#N�O��+�+�C�0�F����v�@�@��J�K��"�"�6�*��+�+�C�0�F����v�@�@��J�K��"�"�6�*��J�J�D��_�_�T�*�F��{�{�a���7��*�*�4�+?�+?��+I�J���&�&�v�'=�'=�h�'G�H�
��#�#�%�%��!�!�*�-��?�?�g�g��,�,�T�2�G�'+�m�m�"��B��B����?�b�H�n�%�3�3�C�8�F�"�2�r�]���*�*�6�+D�+D�$�i�i��l�,4�5�+��'�'��/���?�b�H�n�%�3�3�C�8�F�"�2�r�]���*�*�6�+D�+D�$�i�i��l�,4�5�+��'�'��/���=�"�2�r�]���+�+�F�,E�,E�$�i�i��l�-4�5�+�'4�"�$�$�&�&��%�%�g�.��t�'�'�(�1�,���&�4�4�\�B�O��!�!�"E���!6�!6��%�%�t�'?�'?��#�
�
	�!�!�)�,��r)rvr�r|r}r�r�r�r�rlr\r�N)
rrrrrr'r�r�r�r�r�r�rrrrruru�s.��A�
�-3�^��:�:�I&�VArruc�0�\rSrSrSrSrSrSrSrSr	g)	r�i�z�A diff of two Ports. It contains the two ports and the cost of changing
one into the other. If the cost is 0 then the two ports are the same.c�X�XlX l/UlSUlUR	5 gr�)r�r�r\rvr�)rr�r�s   rr'�PortDiff.__init__�s$������#%�� ���	��	�	�rc�l�URRURR:waU=RS-
slURRURR:waU=RS-
slURR
URR
:waU=RS-
sl[RURRURR5Ul	U=R[UR5-
slgr�)r�r�r�rvrirrrrsror\rrr&s rr��
PortDiff.diff�s����;�;���t�{�{�/�/�/��I�I��N�I��;�;������ 1� 1�1��I�I��N�I��;�;���$�+�+�"5�"5�5��I�I��N�I�#3�#>�#>����*�*�D�K�K�,F�,F�$H�� ��	�	�S��1�1�2�2�	rc��URR5URR5URRR	5URRR5/nURR5URR5URRR	5URRR5/nXE:Xa1[(dURS:�aURS/U-5 O~URURR5(dURS/U-5 URURR5(dURS/U-5 URHnURU5 M g)z�Append this port diff to a Table containing five columns:
    +- PORT STATE SERVICE VERSION
The "+-" stands for the diff indicator column.rr+r�r�N)
r�rrrr(r,r�rwr\r�r�rirW)rr]r|r}�	a_columns�	b_columnsr^s       rrW�PortDiff.append_to_port_table�sT���[�[�,�,�.��K�K�$�$�&��K�K���+�+�-��K�K���.�.�0�2�	��[�[�,�,�.��K�K�$�$�&��K�K���+�+�-��K�K���.�.�0�2�	��!��w�$�2�2�Q�6����c�U�Y�.�/���'�'����(9�(9�:�:����c�U�Y�.�/��'�'����(9�(9�:�:����c�U�Y�.�/��/�/�G��(�(��/�0rc��UR5nURS5nURU5 URRUR
R:XGaOURRUR
R:XGa URS5nURS[URRS55 URSURRS5 URRbHURS5nURSURR5 URU5 URRUR
R:Xa5URURRRU55 O�URS5nURURRRU55 URU5 URS	5nURUR
RRU55 URU5 URH#nURURU55 M% URU5 U$URS5nURURRU55 URU5 URS	5nURUR
RU55 URU5 U$)
N�portdiffr�rrrr�rir~ra)r[r\r^r�r�r�rir]rsrr�r\)	rr`ra�
portdiff_elem�	port_elemrrbrcr^s	         rr��PortDiff.to_dom_fragment�s����.�.�0�� �.�.�z�:�
�����'��K�K������ 0� 0�0����!�!�T�[�[�%6�%6�6� �.�.�v�6�I��"�"�8�S����1A�1A�!�1D�-E�F��"�"�:�t�{�{�/?�/?��/B�C��{�{� � �,�%�3�3�G�<�
��'�'�����1B�1B�C��%�%�j�1��{�{�"�"�d�k�k�&9�&9�9��%�%����+�+�;�;�H�E�G�"�/�/��4���"�"����+�+�;�;�H�E�G��%�%�f�-�!�/�/��4���"�"����+�+�;�;�H�E�G��%�%�f�-��3�3���%�%�g�&=�&=�h�&G�H�4��%�%�i�0����+�+�C�0�F����t�{�{�:�:�8�D�E��%�%�f�-��+�+�C�0�F����t�{�{�:�:�8�D�E��%�%�f�-��r)rvr�r�r\N)
rrrrrr'r�rWr�rrrrr�r��s��M��3�"0�0$rr�c�<�\rSrSrSrSr\"\5rSrSrSr	g)rri	c��XlX lg)z!One of sr_a and sr_b may be None.N��sr_a�sr_b)rr
rs   rr'�ScriptResultDiff.__init__
s���	��	rc�@�/nSnSnU[U5:GaU[U5:a�XRXR:a#UR[XS55 US-
nO�XRXR:�a#UR[SX55 US-
nORXRXR:wd[
(aUR[XX55 US-
nUS-
nU[U5:aU[U5:aM�U[U5:a3UR[XS55 US-
nU[U5:aM3U[U5:a3UR[SX55 US-
nU[U5:aM3U$)zJReturn a list of ScriptResultDiffs from two sorted lists of
ScriptResults.rNr�)rrrur�rrr8rw)r~ra�diffsrfrgs     rrs�ScriptResultDiff.diff_listss`����
��
���#�a�&�j�Q��Q��Z��t�w�w����� ����-�a�d�D�9�:��Q�������1�4�7�7�"����-�d�A�D�9�:��Q����4�;�;�!�$�+�+�-����L�L�!1�!�$���!=�>��Q����Q����#�a�&�j�Q��Q��Z��#�a�&�j��L�L�)�!�$��5�6�
��F�A��#�a�&�j��#�a�&�j��L�L�)�$���5�6�
��F�A��#�a�&�j��rc�^�/n/nURbURR5nURbURR5nX#:wd[(a�[R
"SX#5nUR
5H�upVpxn	US:XdUS:Xa([Xg5Hn
URSX*-5 M US:XdUS:Xa([X�5Hn
URSX:-5 M US:XdMw[Xg5Hn
URSX*-5 M M� gg)Nr�r�r�r�r�r�r+)	r
rErrwr�r�r�r��
append_raw)rr]�a_lines�b_linesrr�r�r�r�r��ks           rrW�%ScriptResultDiff.append_to_port_table-s	�������9�9� ��i�i�)�)�+�G��9�9� ��i�i�)�)�+�G������+�+�D�'�C�E�&+�&7�&7�&9�"������?�b�H�n�"�2�]���(�(��w�z�)9�:�+���?�b�H�n�"�2�]���(�(��w�z�)9�:�+���=�"�2�]���(�(��w�z�)9�:�+�':�")rc�J�UR5nURbSURbFURUR:Xa,URURR	U55 U$URbLURS5nURURR	U55 URU5 URbLURS5nURURR	U55 URU5 U$)Nr~ra)r[r
rr^r�r\)rr`rarbrcs     rr�� ScriptResultDiff.to_dom_fragmentAs����.�.�0���I�I�!��	�	�%��	�	�T�Y�Y�&����T�Y�Y�6�6�x�@�A����y�y�$�!�/�/��4���"�"�4�9�9�#<�#<�X�#F�G�� � ��(��y�y�$�!�/�/��4���"�"�4�9�9�#<�#<�X�#F�G�� � ��(��rrN)
rrrrr'rsr�rWr�rrrrrrrr	s"���
�4�j�)�J�;�(rrrc�6�\rSrSrSrSrSrSrSrSr	Sr
g	)
rViSz0A table of character data, like NmapOutputTable.c��/Ul/UlSUl/UlSnU[	U5:a&XS:waUS-
nU[	U5:a
XS:waMUSUUlUS-
nUnU[	U5:akU[	U5:a&XS:waUS-
nU[	U5:a
XS:waMURRXU5 US-
nUnU[	U5:aMjgg)z�template is a string consisting of "*" and other characters. Each
"*" is a left-justified space-padded field. All other characters are
copied to the output.�rrPr�N)�widths�rows�prefix�paddingrrr�)r�templatergrfs    rr'�Table.__init__Us��������	�������
���#�h�-��H�K�3�$6�
��F�A��#�h�-��H�K�3�$6��r��l���	�Q���
���#�h�-���c�(�m�#���s�(:��Q����c�(�m�#���s�(:��L�L����1�
�.�
��F�A��A��#�h�-�rc�2�/n[U5n[U5S:�a-USc'UR5 [U5S:�aUScM'[[U55H�nXcSnO
[	X5nU[UR
5:Xa%UR
R
[U55 O4[U5UR
U:�a[U5UR
U'UR
U5 M� URR
U5 g)Nrr@r)r�rr�popr�rsrr�r)r�row�stringsrfr|s     rr��Table.appendjs������3�i���#�h��l�s�2�w���G�G�I��#�h��l�s�2�w���s�3�x��A��v�~������K���C����$�$����"�"�3�q�6�*��Q��$�+�+�a�.�(�!$�Q�����A���N�N�1��!�	
�	�	����!rc�:�URRU5 g)zAAppend a raw string for a row that is not formatted into columns.N)rr�r�s  rr�Table.append_raw~s���	�	����rc�,�[UR5$r
)rrrr&s r�__len__�
Table.__len__�s���4�9�9�~�rc�.�/nURH�nUR/nSn[U[5(aUR	U5 M:U[U5:a|UR	X$R
URU55 U[UR5:aUR	URU5 US-
nU[U5:aM|UR	SRU5R55 M� SRU5$)Nrr�r�
)rr �
isinstancersr�rr�ljustrr!r��rstrip)rrCr&r'rfs     rr��
Table.__str__�s������9�9�C��[�[�M�E��A��#�s�#�#����S�!��#�c�(�l��L�L�����d�k�k�!�n�!=�>��3�t�|�|�,�,����T�\�\�!�_�5���F�A�	�#�c�(�l�
���R�W�W�U�^�2�2�4�5���y�y���r)r!r rrN)rrrrrr'r�rr,r�rrrrrVrVSs��:��*"�(�� rrVc�4�[U[RS9 g)zPrint a warning to stderr.rQN)rXr��stderr)rss r�warnr6�s��	�#�C�J�J�rc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrg)r7i�z�The xml.sax ContentHandler for the XML parser. It contains a Scan object
that is filled in and can be read back again once the parse method is
finished.c�.�[RRRR	U5 Xl/UlSUlSUlSUl	URURURURURURUR UR"UR$UR&UR(UR*UR,S.
UlUR0UR2UR4S.Ulg)NF)
rKr��hosthintr�r�r�rmr�rirrHr��finished)r�r9r�)r4r5r=�ContentHandlerr'rM�
element_stack�current_host�current_port�	skip_over�_start_nmaprun�_start_host�_start_hosthint�
_start_status�_start_address�_start_hostname�_start_extraports�_start_port�_start_state�_start_service�
_start_script�_start_osmatch�_start_finished�_start_elem_handlers�	_end_host�
_end_hosthint�	_end_port�_end_elem_handlers)rrMs  rr'�NmapContentHandler.__init__�s��������&�&�/�/��5��	� ��� ��� �������*�*��$�$��,�,��(�(��*�*��,�,��0�0��$�$��&�&��*�*��(�(��*�*��,�,�%
��!� �N�N��*�*��N�N�#
��rc�T�[UR5S:XagURS$)z_Return the name of the element containing the current one, or None
if this is the root element.rNr@)rrr<r&s r�parent_element�!NmapContentHandler.parent_element�s+���t�!�!�"�a�'���!�!�"�%�%rc��URRU5nUbUR(dU"X5 URR	U5 g)z�This method keeps track of element_stack. The real parsing work is
done in the _start_*() handlers. This is to make it easy for them to
bail out on error.N)rMr�r?r<r�)rr�rRr=s    rrP�NmapContentHandler.startElement�sB���+�+�/�/��5����t�~�~��D� ����!�!�$�'rc��URR5 URRU5nUb	U"U5 gg)z]This method keeps track of element_stack. The real parsing work is
done in _end_*() handlers.N)r<r%rQr�)rr�r=s   rrW�NmapContentHandler.endElement�s>��	
����� ��)�)�-�-�d�3�����D�M�rc��UR5beSU;aH[URS55n[RR	U5UR
lURS5UR
lURS5UR
lURS5UR
l	g)NrHrr r)
rT�intr��datetime�
fromtimestamprMr!rr r)rr�rR�start_timestamps    rr@�!NmapContentHandler._start_nmaprun�s����"�"�$�,�,�,��e��!�%�)�)�G�"4�5�O�#+�#4�#4�#B�#B�#�$%�D�I�I� �!�I�I�i�0��	�	�����6�*��	�	��!�I�I�i�0��	�	�rc��UR5S:Xde[5UlURRRUR5 grV)rTrfr=rMr#r��rr�rRs   rrA�NmapContentHandler._start_host�s?���"�"�$�	�1�1�1� �F����	�	�����t�0�0�1rc�>�UR5S:XdeSUlg)NrKT)rTr?ras   rrB�"NmapContentHandler._start_hosthint�s ���"�"�$�	�1�1�1���rc���UR5S:XdeURceURS5nUc,[U<SURR	5<S35 gX0Rlg)Nr�ri� element of host �6 is missing the "state" attribute; assuming "unknown".)rTr=r�r6r�ri)rr�rRris    rrC� NmapContentHandler._start_status�sq���"�"�$��.�.�.�� � �,�,�,��	�	�'�"���=���d�/�/�;�;�=�?�
@�
�"'���rc�N�UR5S:XdeURceURS5nUc,[U<SURR	5<S35 gURSS5nURR[RXC55 g)Nr�r�rfz+ is missing the "addr" attribute; skipping.r�r�)rTr=r�r6r�r�r�r�)rr�rRr�r�s     rrD�!NmapContentHandler._start_address�s����"�"�$��.�.�.�� � �,�,�,��y�y�� ���<���d�/�/�;�;�=�?�
@�
��9�9�Z��0�����%�%�g�k�k�(�&A�Brc��UR5S:XdeURceURS5nUc,[U<SURR	5<S35 gURRU5 g)Nrkr�rf�+ is missing the "name" attribute; skipping.)rTr=r�r6r�r�)rr�rRr�s    rrE�"NmapContentHandler._start_hostnamesz���"�"�$��3�3�3�� � �,�,�,��9�9�V�$������d�/�/�;�;�=�?�
@�
����&�&�x�0rc��UR5S:XdeURceURS5nUc-[U<SURR	5<S35 SnX0RR
;a,[SU<SURR	5<S35 URS5nUc.[U<SURR	5<S	35 S
nO[
U5nX@RR
U'g![a4 [SUS<SURR	5<S
35 S
nNVf=f)NrlrirfrgzDuplicate extraports state "z
" in host �.r�z. is missing the "count" attribute; assuming 0.rz Can't convert extraports count "�" to an integer in host z
; assuming 0.)rTr=r�r6r�rmr[r�)rr�rRrir�s     rrF�$NmapContentHandler._start_extraportss;���"�"�$��/�/�/�� � �,�,�,��	�	�'�"���=���d�/�/�;�;�=�?�
@��E��%�%�0�0�0���t�(�(�4�4�6�8�
9��	�	�'�"���=���d�/�/�;�;�=�?�
@��E�
��E�
��/4���$�$�U�+���
��!�'�N�D�,=�,=�,I�,I�,K�M�N���	
�s�/D�;E�Ec��UR5S:XdeURceURS5nUc,[U<SURR	5<S35 g[U5nURS5nUc,[U<SURR	5<S	35 g[XE45Ulg![a/ [SU<SURR	5<S35 gf=f)
Nrlrrfz* missing the "portid" attribute; skipping.zCan't convert portid "rpz; skipping port.rz, missing the "protocol" attribute; skipping.)	rTr=r�r6r�r[r�rr>)rr�rR�
portid_strrrs      rrG�NmapContentHandler._start_port+s����"�"�$��/�/�/�� � �,�,�,��Y�Y�x�(�
�����d�/�/�;�;�=�?�
@�
�	���_�F��9�9�Z�(������d�/�/�;�;�=�?�
@�
� �&�!3�4�����	��"�D�$5�$5�$A�$A�$C�E�
F�
�		�s�'C�6C=�<C=c�@�UR5S:XdeURceURcgSU;a,[U<SURR	5<S35 gUSURlURR
UR5 g)Nr�riz element of port rg)rTr=r>r6rrir�ras   rrH�NmapContentHandler._start_stateCs����"�"�$��.�.�.�� � �,�,�,����$���%����d�/�/�;�;�=�?�
@�
�"'��.��������"�"�4�#4�#4�5rc��UR5S:XdeURceURcgURS5URRlURS5URRlURS5URRlURS5URRlURS5URRl	g)Nr�r�rrrr)
rTr=r>r�rr�rrrrras   rrI�!NmapContentHandler._start_servicePs����"�"�$��.�.�.�� � �,�,�,����$��).���6�):����!�!�&�,1�I�I�i�,@����!�!�)�,1�I�I�i�,@����!�!�)�.3�i�i��.D����!�!�+�+0�9�9�X�+>����!�!�(rc���[5nURS5UlURc[SU-5 gURS5UlURc[SU-5 gUR5S:Xa&URRRU5 gUR5S:Xa&URRRU5 gUR5S:Xa&URRRU5 gUR5S:Xa&URRRU5 g[S	U-5 g)
Nruz0%s element missing the "id" attribute; skipping.r8z4%s element missing the "output" attribute; skipping.r�r�r�r�zS%s element not inside prescript, postscript, hostscript, or port element; ignoring.)
r5r�rur6r8rTrMr$r�r%r=ror>)rr�rRrBs    rrJ� NmapContentHandler._start_script[s#������I�I�d�O��	��9�9���C�d�J�K���	�	�(�+��
��=�=� ��G���
����� �K�/��I�I�(�(�/�/��7�
�
 �
 �
"�l�
2��I�I�)�)�0�0��8�
�
 �
 �
"�l�
2����,�,�3�3�F�;�
�
 �
 �
"�f�
,����,�,�3�3�F�;��1�37�8�
9�rc��UR5S:XdeURceSU;a,[U<SURR5<S35 gURRRUS5 g)Nrnr�rfrl)rTr=r6r�rnr�ras   rrK�!NmapContentHandler._start_osmatchtsx���"�"�$��,�,�,�� � �,�,�,������d�/�/�;�;�=�?�
@�
������#�#�E�&�M�2rc���UR5S:XdeSU;aI[URS55n[RR	U5UR
lgg)N�runstatsrL)rTr[r�r\r]rMr")rr�rR�
end_timestamps    rrL�"NmapContentHandler._start_finished~sU���"�"�$�
�2�2�2��U�?���	�	�&� 1�2�M�!)�!2�!2�!@�!@��!O�D�I�I��rc�Z�URRR5 SUlgr
)r=ror0�rr�s  rrN�NmapContentHandler._end_host��"�����(�(�-�-�/� ��rc��SUlg)NF)r?r�s  rrO� NmapContentHandler._end_hosthint�s	����rc�Z�URRR5 SUlgr
)r>ror0r�s  rrP�NmapContentHandler._end_port�r�r)rQrMr=r>r<rMr?N)rrrrrr'rTrPrWr@rArBrCrDrErFrGrHrIrJrKrLrNrOrPrrrrr7r7�sn���
�B&�(��1�2�
�	(�
C�	1�4�:5�06�	?��23�P�!��!rr7c�,�\rSrSrSrSrSrSrSrg)r�i�c�x�[RRRR	XS5 Xlg)Nzutf-8)r4r5�saxutils�XMLGeneratorr'r;)rr;s  rr'�XMLWriter.__init__�s'�������%�%�.�.�t��@��rc�^�URHnURURSS9 M g)Nr/��newl)�
childNodes�writexmlr;�rra�nodes   rra�XMLWriter.frag�s$���O�O�D��M�M�$�&�&�t�M�,�$rc��URS05 URHnURURSS9 M UR	S5 g)Nr~r/r��rPr�r�r;rWr�s   rr��XMLWriter.frag_a��@�����#�r�"��O�O�D��M�M�$�&�&�t�M�,�$�����rc��URS05 URHnURURSS9 M UR	S5 g)Nrar/r�r�r�s   rr��XMLWriter.frag_b�r�r)r;N)	rrrrr'rar�r�rrrrr�r��s���-��rr�c�B�[S[RS-5 g)Na�Usage: %s [option] FILE1 FILE2
Compare two Nmap XML files and display a list of their differences.
Differences include host state changes, port state changes, and changes to
service and OS detection.

  -h, --help     display this help
  -v, --verbose  also show hosts and ports that haven't changed.
  --text         display output in text format (default)
  --xml          display output in XML formatr)rXr��argvrrr�usager��s!��	�
�
�h�h�q�k�
�
rr�rc���[[RS<SU<3[RS9 [S[RS-[RS9 [R"[
5 g)Nrr?rQzTry '%s -h' for help.)rXr�r�r5�exit�
EXIT_ERROR)�msgs r�usage_errorr��sE��	�c�h�h�q�k�3�
'�c�j�j�9�	�
!�C�H�H�Q�K�
/�c�j�j�A��H�H�Z�rc���Sn[R"[RSSS/SQ5upWHupEUS:XdUS:Xa"[5 [R"S5 M3US:XdUS:XaS	q	MCUS
:XaUbUS:wa[S5 SnMaUS
:XdMiUbUS:wa[S5 SnM� [W5S:wa[S5 UcSnUSnUSn[5nURU5 [5n	U	RU5 US:Xa
[%WW	5n
OUS:Xa['WW	5n
W
R)5nUS:Xa[*$[,$![Ra n[UR5 SnAGN[SnAff=f![aHn[S[U5-[R S9 [R"["5 SnAN�SnAff=f)Nr��hv)�help�textrwr4z-hz--helprz-vz	--verboseTz--textr�z$contradictory output format options.z--xmlr4rz!need exactly two input filenames.zCan't open file: %srQ)�getopt�
gnu_getoptr�r��GetoptErrorr�r�r�r�rwrrrrD�IOErrorrXrsr5r�r�r�r8�
EXIT_EQUAL�EXIT_DIFFERENT)�
output_format�opts�input_filenames�e�or~�
filename_a�
filename_brlrmr�rvs            r�mainr��s����M�� &� 1� 1�������d�$F�!H��������9��X�
��G��H�H�Q�K�
�$�Y�!�{�*��G�
�(�]��(�]�f�-D��B�C�"�M�
�'�\��(�]�e�-C��B�C�!�M���?��q� ��7�8����
� ��#�J� ��#�J��������j�)�������j�)�
����F�F�+��	�%�	��6�6�*���;�;�=�D��q�y������Y�����A�E�E������>��
�#�c�!�f�,�3�:�:�>���������s/�-E� 6F�F�1F�F�
G&�>G!�!G&c�f�[R"XU5 [R"[5 gr
)r��__excepthook__r�r�)r��value�tbs   r�
excepthookr��s�����t�B�'��H�H�Z�r�__main__)7r\r�r�r�rLr4�__path__�xml.sax�xml.sax.saxutils�xml.dom.minidom�iorrwr�r5r=�EntityResolverr�objectrrfr�r�r�r�rrr5rNr�r_rdrhrjr�r�rur�rrrVr6r;r7r�r�r�r�r�r�r�r�r�r�rr�)r�s0r�<module>r�s�����
�
����<�<�?�<�a�:�Q�+>��<�?�������
����,�S�W�W�_�_�;�;�,�?�6�?�D�6��D'�f�'�Z�'���'�����(�6�(�V>�f�>�B�6��B�$ #�z�z�
� �,�6$�v�$�N
�8�
�>:"�(�:"�zW�v�W�tX�v�X�vG�v�G�TA �F�A �H �
q!������7�7�q!�h����!�!�.�.��,��
���
�
��3�p��z���C�N��H�H�T�V����G/@s
�
G�G

Youez - 2016 - github.com/yon3zu
LinuXploit