Sh3ll
OdayForums


Server : LiteSpeed
System : Linux premium84.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 : claqxcrl ( 523)
PHP Version : 8.1.32
Disable Function : NONE
Directory :  /opt/hc_python/lib64/python3.12/site-packages/mysql/connector/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/hc_python/lib64/python3.12/site-packages/mysql/connector/__pycache__/protocol.cpython-312.pyc
�

���g(m���dZddlZddlZddlmZddlmZmZmZm	Z	m
Z
ddlmZm
Z
ddlmZddlmZmZdd	lmZGd
�de�Zy)z,Implements the MySQL Client/Server protocol
�N)�Decimal�)�	FieldFlag�	ServerCmd�	FieldType�
ClientFlag�MAX_MYSQL_TABLE_COLUMNS)�errors�utils)�get_auth_plugin)�PY2�
struct_unpack)�
get_exceptionc���eZdZdZd�Zd�Z				dd�Z		dd�Zd d�Z			d!d�Z	d	�Z
d
�Zd�Zd"d�Z
d
�Zd#d�Zd$d�Zd�Zd�Zd�Zd�Zd�Zd$d�Zd�Zd�Zd�Zd�Zd�Z		d%d�Zd�Zd�Zy)&�
MySQLProtocolzRImplements MySQL client/server protocol

    Create and parses MySQL packets.
    c�V�|tjzr|r|jd�dzSy)z.Prepare database string for handshake response�utf8�)r�CONNECT_WITH_DB�encode)�self�client_flags�databases   �o/opt/hc_python/lib64/python3.12/site-packages/../../../lib/python3.12/site-packages/mysql/connector/protocol.py�_connect_with_dbzMySQLProtocol._connect_with_db-s)���*�4�4�4���?�?�6�*�W�4�4��c�r�|sy	t|�|||||��}|j�}	|tjzr&t|	�}tjd|�|	z}|S|	dz}|S#ttjf$r2}
tj
dj
t|
����d}
~
wwxYw)z#Prepare the authentication responser)�username�passwordr�ssl_enabledzFailed authentication: {0}Nz<B)
r�
auth_response�	TypeErrorr
�InterfaceError�ProgrammingError�format�strr�SECURE_CONNECTION�len�struct�pack)
rrrrr�auth_plugin�	auth_datar �auth�plugin_auth_response�exc�resplenr!s
             r�_auth_responsezMySQLProtocol._auth_response3s�����	?�/�?�;�/��!�H�x�'�)�D�$(�#5�#5�#7� �
�*�6�6�6��.�/�G�"�K�K��g�6�9M�M�M���1�7�:�M�����6�0�0�1�	?��)�)�,�3�3�C��H�=�?�
?��	?�s�&A+�+B6�-B1�1B6Nc

��	|d}
|	xs|d}	|sd}	|jd�}tjdj	dt|��	�||||�}
|
|j|||||	|
|�z
}
|
|j||�z
}
|tjzr|
|	jd�d
zz
}
|
S#ttf$r)}tjdj	|���d}~wwxYw#t$r|}Y��wxYw)z"Make a MySQL Authentication packetr,r+�*Handshake misses authentication info ({0})Nrrz<IIB{filler}{usrlen}sx�xxxxxxxxxxxxxxxxxxxxxxx)�filler�usrlenr)r"�KeyErrorr
r$r%r�AttributeErrorr)r*r(r1rr�PLUGIN_AUTH)r�	handshakerrr�charsetr�max_allowed_packetr r+r,r/�username_bytes�packets              r�	make_authzMySQLProtocol.make_authJs7��	J�!�+�.�I�%�A��=�)A�K�
��H�	&�%�_�_�V�4�N����5�<�<��C��$7�=�9�)�+=�w�+�-��
	�$�%�%�l�H�h�&.�&1�&/��>�	>��
	�$�'�'��h�?�?���*�0�0�0��k�(�(��0�7�:�:�F��
��5�8�$�	J��)�)�<�C�C�C�H�J�
J��	J���	&�%�N�	&�s(�B4�C/�4C,�$C'�'C,�/C=�<C=c��tj|�tj|�ztj|�zdzS)z Make a SSL authentication packets)r�	int4store�	int1store)rr;rr<s    r�
make_auth_sslzMySQLProtocol.make_auth_sslosB�����|�,����1�2�3����w�'�(���	rc�>�tj|�}|�||z
}|S)z(Make a MySQL packet containing a command)rrB)r�command�argument�datas    r�make_commandzMySQLProtocol.make_commandws%�����w�'�����H��D��rc	
�H�	|d}	|xs|d}|sd}	|jd�}tjdj	t|���tj|�}||j||||||	|�z
}||j||�z
}|tjd	|�z
}|tjzr||jd�d
zz
}|S#ttf$r)}
tjdj	|
���d}
~
wwxYw#t$r|}Y��wxYw)z0Make a MySQL packet with the Change User commandr,r+r3Nrrz<B{usrlen}sx)r6z<Hr)r"r7r
r$r%rr8r)r*r(r�CHANGE_USERr1rrr9)
rr:rrrr;rr r+r,r/r=r>s
             r�make_change_userzMySQLProtocol.make_change_user~sE��
	J�!�+�.�I�%�A��=�)A�K�
��H�	&�%�_�_�V�4�N����^�2�2�#�n�:M�2�N�&�2�2�N�D��	�$�%�%�l�H�h�&.�&1�&/��>�	>��
	�$�'�'��h�?�?���&�+�+�d�G�,�,���*�0�0�0��k�(�(��0�7�:�:�F��
��5�8�$�	J��)�)�<�C�C�C�H�J�
J��	J���	&�%�N�	&�s(�C�D�D�'$D�D�D!� D!c	��i}td|dd�d|d<tj|ddd��\}|d<td	|dd
�\|d<}}|d<|d
<}}|dj�|d<|d
d}tj||z�}d}|t
jzr*|rtd|dz
�nd}	|d|	}||	d}|ddk(r|dd}|t
jzrVd|vr|djd�r	d|c}|d<ntj|d��\}|d<|djd�|d<nd|d<||z|d<||d<|S)zParse a MySQL Handshake-packet�<xxxxBr��protocolNr��end�server_version_originalz<I8sx2sBH2sBxxxxxxxxxx��server_threadidr;�
server_statusr�
����z5.5.8r+�utf-8�mysql_native_passwordr,�capabilities)
rr�read_string�decode�intreadrr'�minr9�
startswith)
rr>�res�
auth_data1�
capabilities1�
capabilities2�auth_data_lengthr[�
auth_data2�sizes
          r�parse_handshakezMySQLProtocol.parse_handshake�s�����'��&��1�+�>�q�A��J��38�3D�3D��1�2�J�G�4%�0���.�/�
�2�F�1�R�L�A�	
��
�	�	�	�	�Y��	�_�	�	�	�),�-F�)G�)N�)N�)P��%�&�������}�}�]�]�%B�C���
��*�6�6�6�4D�3�r�+�a�/�0�"�D���$��J��D�E�]�F��"�~��"�'���_�
��*�0�0�0��v�%��5�6�A�A�'�J�03�V�,���]�+�/4�/@�/@���0)�,���]�+�!$�]�!3�!:�!:�7�!C�C�
��!8�C�
��%�
�2��K��*��N���
rc���|ddk(stjd��i}	td|dd�d|d<tj|dd�\}|d<tj|�\}|d	<td
|dd�\|d<|d<|dd}|r2tj
|�\}|d
<|d
j
d�|d
<|S#t$rtjd��wxYw)zParse a MySQL OK-packet�rz#Failed parsing OK packet (invalid).rMrN�field_countN�
affected_rows�	insert_idz<HH�status_flag�
warning_count�info_msgrYzFailed parsing OK packet.)r
r#rr�read_lc_int�read_lc_stringr]�
ValueError)rr>�	ok_packets   r�parse_okzMySQLProtocol.parse_ok�s���a�y�A�~��'�'�(M�N�N��	�	E�'4�X�v�a��{�'K�A�'N�I�m�$�38�3D�3D�V�A�B�Z�3P�0�V�Y��/�/4�/@�/@��/H�,�V�Y�{�+�+8���q���+L�
)�Y�}�
%�
��
'��A�B�Z�F��27�2F�2F�v�2N�/���:�.�(1�*�(=�(D�(D�W�(M�	�*�%�����	E��'�'�(C�D�D�	E�s�BC�C!c��	tj|dd�d}|tkDry|S#tjt
f$rt
jd��wxYw)z=Parse a MySQL packet with the number of columns in result setrjNrzFailed parsing column count)rrqr	r)�errorrsr
r#)rr>�counts   r�parse_column_countz MySQLProtocol.parse_column_count�s`��	G��%�%�f�Q�R�j�1�!�4�E��.�.���L�����j�)�	G��'�'�(E�F�F�	G�s
�$)�)�/Ac��tj|dd�\}}tj|�\}}tj|�\}}tj|�\}}tj|�\}}tj|�\}}	td|�\}}}}}|j|�|dddd|tjz|fS#tj$rtjd��wxYw)zParse a MySQL column-packetrjNz	<xHIBHBxxz!Failed parsing column information)
rrrrr)rwr
r#r]r�NOT_NULL)rr>r;�_�name�
field_type�flagss       r�parse_columnzMySQLProtocol.parse_column�s���*�*�6�!�"�:�6�����*�*�6�2�����*�*�6�2�����*�*�6�2�����-�-�f�5�����*�*�6�2����	M�&�{�F�;�
�Q��:�
�A�

�K�K�� ������
�F�Y�'�'�'��	
�		
���|�|�	M��'�'�(K�L�L�	M�s�C�)C;c�(�|ddk(r|j|�Sd}i}	td|�}|ddk(rt
|�dkst	j
|��|d|d	<|d
|d<|S#tj$rt	j
|��wxYw)zParse a MySQL EOF-packetrjrzFailed parsing EOF packet.z<xxxBBHHr��	�ro�rn)rurr)rwr
r#r()rr>�err_msgra�unpackeds     r�	parse_eofzMySQLProtocol.parse_eofs����!�9��>��=�=��(�(�.����	1�$�Z��8�H����s�"�s�6�{�a�'7��'�'��0�0�'��{��O��%�a�[��M���
���|�|�	1��'�'��0�0�	1�s�A(�()Bc
���d}i}|r|ddjd�}n|jd�}|D]T}	|jdd�D�cgc]}|j���c}\}}	|j	d�}	t|	�||<�V|Scc}w#tj|��xYw#	t
|	j	d��||<n+#tjdj|||	���xYwY��xYw)	zParse the statistics packetz)Failed getting COM_STATISTICS informationrjNs  �:r�rYz{0} ({1}:{2}).)�split�stripr
r#r]�intrr%)
rr>�with_header�errmsgra�pairs�pair�v�lbl�vals
          r�parse_statisticszMySQLProtocol.parse_statisticss
��<������1�2�J�$�$�[�1�E��L�L��-�E��D�
4�15���D�!�1D�E�1D�A�a�g�g�i�1D�E�
��c�
�*�*�W�%�C�
C��s�8��C��� �
��F��
4��+�+�F�3�3��
C�C�&�s�z�z�'�':�;�C��H��C� �/�/�(�/�/���S�A�C�C���sA�B
�B�B
�6B'�B
�
B$�'C5�*C�C5�(C0�0C5c���g}d}d}d}|dk\}	|s||k(r	||fS|j�}	|	jd�r�|	ddg}
|j�}	|	jd�r6|
j|	dd�|j�}	|	jd�r�6|
j|	dd�tjtd�j
|
��}nd|	ddk(r|	ddkr|j|	�}d}n@|r$|	ddk(r|	dd	kDr|j|	�}d}nd}tj|	dd�}|�|�|j|�n|�
|�t|	��|d
z
}��\)z�Read MySQL text result

        Reads all or given number of rows from the socket.

        Returns a tuple with 2 elements: a list with all rows and
        the EOF packet.
        Nr)rN�rNs���rjrr�r�r�r)
�recvr`�appendr�read_lc_string_list�	bytearray�joinr�rur)r�sock�versionrx�rows�eof�rowdata�i�eof57r>�datass           r�read_text_resultzMySQLProtocol.read_text_result5s���������
���9�$����a�5�j��2�S�y��1�Y�Y�[�F�� � ��1�������������'�'��8��L�L�����,�!�Y�Y�[�F��'�'��8����V�A�B�Z�(��3�3�I�c�N�4G�4G��4N�O����)�s�"�v�a�y�1�}��n�n�V�,�����F�1�I��N�v�a�y�1�}��m�m�F�+�������3�3�F�1�2�J�?���{�w�2����G�$�����#�F�+�+�
��F�A�5rc�p�|dtjk(rd}d}n_|dtjk(rd}d}nD|dtjtjfvrd}d}n|dtj
k(rd}d}|d	tjzrj�}|d
t|d|�dfS)z%Parse an integer from a binary packetr�b�hr�r�rj�qrWr�Nr)
r�TINY�SHORT�INT24�LONG�LONGLONGr�UNSIGNED�upperr)rr>�field�format_�lengths     r�_parse_binary_integerz#MySQLProtocol._parse_binary_integer_s�����8�y�~�~�%��G��F�
�1�X����
(��G��F�
�1�X�)�/�/�9�>�>�:�
:��G��F�
�1�X��+�+�
+��G��F���8�i�(�(�(��m�m�o�G��v�w���w��q��8H�!I�!�!L�M�Mrc�n�|dtjk(rd}d}nd}d}||dt||d|�dfS)z)Parse a float/double from a binary packetrrW�drj�fNr)r�DOUBLEr)rr>r�r�r�s     r�_parse_binary_floatz!MySQLProtocol._parse_binary_floatssL����8�y�'�'�'��F��G��F��G��v�w���w��q��8H�!I�!�!L�M�Mrc	�D�|d}d}|dk(r/tjtd|dd�d|d|d��}n\|dk\rWd}|d	k(rtd
|d|dz�d}tjtd|dd�d|d|d|d|d
|d|��}||dzd|fS)z&Parse a timestamp from a binary packetrNrj�Hrr�)�year�month�dayr���IrWrN�)r�r�r��hour�minute�second�microsecond)�datetime�dater)rr>r�r��value�mcss      r�_parse_binary_timestampz%MySQLProtocol._parse_binary_timestamp~s����������Q�;��M�M�"�3��q���4�Q�7��Q�i��1�I��E��q�[��C���|�#�C���&�1�*�)=�>�q�A���%�%�"�3��q���4�Q�7��Q�i��1�I��A�Y��a�y��a�y��!�E��v��z�{�#�U�+�+rc���|d}|d|dz}d}|dkDrtd|dd�d}td|dd�d}|ddk(r|dz}tj||d||d	|d�
�}||dzd|fS)z'Parse a time value from a binary packetrrrWr�NrNrXr�r�)�days�seconds�microseconds�minutes�hours)rr��	timedelta)rr>r�r�rGr�r��tmps        r�_parse_binary_timez MySQLProtocol._parse_binary_time�s��������a���
�#�����A�:���T�!�"�X�.�q�1�C��S�$�q��)�,�Q�/����7�a�<��B�J�D�� � �d�)-�a��.1�)-�a��'+�A�w�	0���v��z�{�#�S�)�)rc�,�t|�dzdzdz}|d|D�cgc]
}t|���}}||d}g}t|�D�]�\}}|t|dzdz�d|dzdzzzr|jd��9|dtj
tjtjtjtjfvr'|j||�\}}	|j|	���|dtjtjfvr'|j||�\}}	|j|	���|dtjtjtj fvr(|j#||�\}}	|j|	���Z|dtj$k(r(|j'||�\}}	|j|	����t)j*|�\}}	|j|	����t-|�Scc}w)z(Parse values from a binary result packetr�r�rWrNr)r(r��	enumerater�rr�r�r�r�r�r�r��FLOATr��DATETIME�DATE�	TIMESTAMPr��TIMEr�rrr�tuple)
r�fieldsr>�null_bitmap_lengthr��null_bitmap�values�posr�r�s
          r�_parse_binary_valuesz"MySQLProtocol._parse_binary_values�s���!�&�k�A�o��1�a�7��'-�a�0B�'C�D�'C�!�s�1�v�'C��D��*�+�,����#�F�+�J�C���3��A��q�y�>�*�a�C�!�G�q�=�.@�A��
�
�d�#���q��i�n�n�i�o�o�'�o�o�'�n�n�i�.@�.@�B�B�#'�"<�"<�V�U�"K�����
�
�e�$��q��i�.�.�	���@�@�"&�":�":�6�5�"I�����
�
�e�$��q��i�0�0�)�.�.�'�1�1�3�3�"&�">�">�v�u�"M�����
�
�e�$��q��Y�^�^�+�"&�"9�"9�&�%�"H�����
�
�e�$�"'�"6�"6�v�">�����
�
�e�$�+,�.�V�}���7Es�Hc�"�g}d}d}d}	|�	||fS||k(r	||fS|j�}|ddk(r|j|�}d}n|ddk(rd}|j||dd�}|�|�|j|�n|�
|�t	|��|dz
}��)zwRead MySQL binary protocol result

        Reads all or given number of binary resultset rows from the socket.
        Nrrjr�rNr)r�r�r�r�r)	rr��columnsrxr�r�r�r�r>s	         r�read_binary_resultz MySQLProtocol.read_binary_result�s���
������
�������c�{���E�z���c�{���Y�Y�[�F��a�y�C���n�n�V�,�������a�����2�2�7�F�1�2�J�G���{�v�1����F�#�����#�F�+�+�
��F�A�!rc�z�|ddk(stjd��i}	tj|ddd�\}|d<tj|d�\}|d<tj|d�\}|d	<|d
d}tj|d�\}|d<|S#t$rtjd��wxYw)z'Parse a MySQL Binary Protocol OK packetrjrzFailed parsing Binary OK packetrNN�statement_idr��num_columns�
num_paramsrro)r
r#r�read_intrs)rr>�ok_pkts   r�parse_binary_prepare_okz%MySQLProtocol.parse_binary_prepare_ok�s����a�y�A�~��'�'�(I�J�J���	K�/4�~�~�f�Q�R�j�!�/L�,�V�V�N�+�.3�n�n�V�Q�.G�+�V�V�M�*�-2�^�^�F�A�-F�*�V�V�L�)��A�B�Z�F�05���v�q�0I�-�V�V�O�,��
���	K��'�'�(I�J�J�	K�s�A8B�B:c��d}d}|dkr[|dk\rd}tj}n�|dk\rd}tj}n�|dk\rd}tj}nod	}tj}n\d
}|dkrd}tj}nB|d
krd}tj}n*|dkrd}tj}ntj}d}tj||�||fS)z0Prepare an integer for the MySQL binary protocolNri����r�i���r�i�r�r����Bi��r�l��r��Q)rr�r�r�r�r)r*)rr�r~rr�s     r�_prepare_binary_integerz%MySQLProtocol._prepare_binary_integer�s����
����1�9���}���&�^�^�
��&����&�_�_�
��+�%���&�^�^�
���&�/�/�
��E���|���&�^�^�
��%����&�_�_�
��*�$���&�^�^�
�&�/�/�
������G�U�+�Z��?�?rc�&�t|tj�rtj}n6t|tj�rtj
}nt
d��tj|j�tj|j�ztj|j�z}t|tj�r�|tj|j�ztj|j�ztj|j�z}|j dkDr"|tj"|j �z
}tjt%|��|z}||fS)a�Prepare a timestamp object for the MySQL binary protocol

        This method prepares a timestamp of type datetime.datetime or
        datetime.date for sending over the MySQL binary protocol.
        A tuple is returned with the prepared value and field type
        as elements.

        Raises ValueError when the argument value is of invalid type.

        Returns a tuple.
        z2Argument must a datetime.datetime or datetime.dater)�
isinstancer�rr�r�r�rsr�	int2storer�rBr�r�r�r�r�r�rAr()rr�r~�packeds    r�_prepare_binary_timestampz'MySQLProtocol._prepare_binary_timestamps$���e�X�.�.�/�"�+�+�J�
��x�}�}�
-�"���J��D�F�
F��/�/�%�*�*�-��/�/�%�+�+�.�/��/�/�%�)�)�,�-���e�X�.�.�/��u���u�z�z�:�:��o�o�e�l�l�3�4��o�o�e�l�l�3�4�F�� � �1�$��%�/�/�%�*;�*;�<�<������V��-��6���
�#�#rc���t|tjtjf�st	d��t
j}d}d}d}t|tj�r�|jdkrd}t|jd�\}}t|d�\}}	|tjt|j��tj|�ztj|�ztj|	�zz
}|j}n�|tjd�tj|j�ztj|j �ztj|j"�zz
}|j$}|r|tj|�z
}tj|�|z}tjt'|��|z}||fS)a�Prepare a time object for the MySQL binary protocol

        This method prepares a time object of type datetime.timedelta or
        datetime.time for sending over the MySQL binary protocol.
        A tuple is returned with the prepared value and field type
        as elements.

        Raises ValueError when the argument value is of invalid type.

        Returns a tuple.
        z3Argument must a datetime.timedelta or datetime.timerNrri�<)r�r�r��timersrr�r��divmodr�rrA�absrBr�r�r�r�r�r()
rr�r~�negativer�r�r��	remainder�mins�secss
          r�_prepare_binary_timez"MySQLProtocol._prepare_binary_time8s����%�(�"4�"4�h�m�m�!D�E��E�G�
G��^�^�
��������e�X�/�/�0��z�z�A�~���!'��
�
�t�!<��U�I�!�)�R�0�L�T�4��u���s�5�:�:��7����u�-�.����t�,�-����t�,�-�
.�F��$�$�C��u���q�)����u�z�z�2�3����u�|�|�4�5����u�|�|�4�5�
6�F��#�#�C���e�o�o�c�*�*�F�����*�V�3������V��-��6���
�#�#rc�b�tj|�tj|�z|z}|S)zMPrepare long data for prepared statements

        Returns a string.
        )rrAr�)r�	statement�paramrGr>s     r�_prepare_stmt_send_long_dataz*MySQLProtocol._prepare_stmt_send_long_dataes5��
�O�O�I�&��O�O�E�"�
#��
�	��
rc
�&
�d}dgt|�dzdzz}g}	g}
d}|�i}|�rD|�rAt|�t|�k7rtjd��t|�D�]\}}
||}d}|�_||dzxxd|dzzzcc<|
j	tjtj�tj|�z��o||vr,||drtj}�n@tj}�n.t|t�r(|j|�\}}}|	j	|��n�t|t�r�tr1|	j	tj t|��|z�nA|j#|�}|	j	tj t|��|z�tj$}�n\t|t&�rB|	j	tj t|��|z�tj}�n
trct|t(�rS|j#|�}|	j	tj t|��|z�tj$}�n�t|t*�rr|	j	tj tt|�j#|���t|�j#|�z�tj,}�nt|t.�r6|	j	t1j2d|��tj4}n�t|t6j6t6j8f�r&|j;|�\}}|	j	|�n�t|t6j<t6j>f�r&|jA|�\}}|	j	|�n9tjBdjE|jFjH�	���|
j	tj|�tj|�z���	tjJ|�tj|�ztjJ|�zdjM|D�cgc]}t1j2d
|���c}�ztjd�z}|
D]}||z
}�	|	D]}||z
}�	|Scc}w)z6Make a MySQL packet with the Statement Execute commandrrr�rWrzTFailed executing prepared statement: data values does not match number of parametersr�z:MySQL binary protocol can not handle '{classname}' objects)�	classnamer�)'r(r
r#r�r�rrBr�NULL�BLOB�STRINGr�r�r�r&r
�lc_intr�VARCHAR�bytes�unicoder�DECIMAL�floatr)r*r�r�r�r�r�r�rr$r%�	__class__�__name__rAr�)rr�rG�
parametersr�long_data_usedr;�iteration_countr�r��typesr�r�r|r�r~�bitr>�a_type�a_values                    r�make_stmt_executezMySQLProtocol.make_stmt_executeps0�����c�c�$�i�!�m��1�2���������!��N��$��4�y�C�
�O�+��+�+�2�3�3�$�J�/���Q��S�	�����=�����+�q�S�1�W�~�=�+��L�L�������!@�!&����!7�"8�9���N�*�%�c�*�1�-�%.�^�^�
�&/�%5�%5�
���s�+�"�:�:�5�A��V�Z���M�M�&�)���s�+���
�
�e�l�l�3�u�:�&>�&+�',�-�!&���W� 5���
�
�!�L�L��U��4�u�<�>�!*�!2�!2�J���u�-��M�M�%�,�,�s�5�z�":�U�"B�C�!*���J��"�5�'�2�!�L�L��1�E��M�M�%�,�,�s�5�z�":�U�"B�C�!*�!2�!2�J���w�/��M�M����S��U��):�):�#�*%�&&�'�),�U��):�):�7�)C�D�E�"+�!2�!2�J���u�-��M�M�&�+�+�c�5�"9�:�!*�!1�!1�J����(9�(9�8�=�=�'I�J�+/�+I�+I��,�(�V�Z��M�M�&�)����(:�(:�H�M�M�'J�K�+/�+D�+D�U�+K�(�V�Z��M�M�&�)� �1�1�0�06��&+�o�o�&>�&>�17�1@�A�A����U�_�_�Z�8�"�_�_�U�3�4�5�q0�x
�O�O�L�)��O�O�E�"�
#��O�O�O�,�
-�
�H�H�{�C�{��f�k�k�#�s�+�{�C�D�
E�
�O�O�A��	
�	��F��f��F���G��g��F���
��Ds�8T
c��|ddk(stjd��tj|ddd��\}}|r
|dd	k(r|dd}|j	d
�|fS)z&Parse a MySQL AuthSwitchRequest-packetrjr�z'Failed parsing AuthSwitchRequest packetrNNrrPrXrr)r
r#rr\r])rr>�plugin_names   r�parse_auth_switch_requestz'MySQLProtocol.parse_auth_switch_request�sq���a�y�C���'�'�9�;�
;�!&� 1� 1�&���*�'� J�����f�R�j�A�o��C�R�[�F��!�!�&�)�6�1�1rc�F�|ddk(stjd��|ddS)z!Parse a MySQL AuthMoreData-packetrjrz"Failed parsing AuthMoreData packetrNN)r
r#)rr>s  r�parse_auth_more_dataz"MySQLProtocol.parse_auth_more_data�s1���a�y�A�~��'�'�4�6�
6��a�b�z�r)NNN�!r�@FN)rrr )N)NNNrrFN)rY)T)r)�r!rNr)r�
__module__�__qualname__�__doc__rr1r?rCrHrKrhruryr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr!rrrr's����
��.KO�+,�=B�"�#�J67�)3���CG�AB�8<�"�H*�X�(G�
�4�(�6(�TN�(	N�,�0*�$�@�8�"@�B $�D+$�Z	�CE�@F�X�t
2�rr)r$r)r��decimalr�	constantsrrrrr	�r
r�authenticationr�catch23r
rr�objectrr!rr�<module>r+s;��0����J�J��+�'�!�u
�F�u
r

ZeroDay Forums Mini