CasperSecurity

Current Path : /lib/python3/dist-packages/pymacaroons/serializers/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/pymacaroons/serializers/__pycache__/binary_serializer.cpython-310.pyc

o

�%�Y01�@s�ddlmZddlZddlmZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
ddlmZddlmZedd	d
g�ZGdd�de�Zd
d�ZejjdkrVdd�Zndd�Zdd�ZdS)�)�unicode_literalsN)�
namedtuple)�urlsafe_b64encode)�convert_to_bytes�convert_to_string�
raw_b64decode)�BaseSerializer)�MacaroonSerializationException�PacketV2�
field_type�datac@s�eZdZdZdZdZdZdZdZdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd!dd�Zdd�Zdd �ZdS)"�BinarySerializer����rcCst|�|���d��d�S)N�ascii�=)r�
serialize_raw�decode�rstrip)�self�macaroon�r�K/usr/lib/python3/dist-packages/pymacaroons/serializers/binary_serializer.py�	serializes
��zBinarySerializer.serializecCs*ddlm}|j|kr|�|�S|�|�S)Nr)�MACAROON_V1)�pymacaroons.macaroonr�version�
_serialize_v1�
_serialize_v2)rrrrrrr#s


zBinarySerializer.serialize_rawcCs�|�d|j�}||�d|j�7}|jD]#}||�d|j�7}|jr6|jr6||�d|j�7}||�d|j�7}q||�dt�|j	��7}|S)N�location�
identifier�cid�vid�cl�	signature)
�
_packetize�location�
identifier�caveats�
_caveat_id�_verification_key_id�	_location�binascii�	unhexlify�signature_bytes)rr�combined�caveatrrrr)s
��
�zBinarySerializer._serialize_v1cCs�ddlm}t�}|�|�|jdur'|�||jt|j��|�||j|j	�|�||j
�|jD]2}|jdurC|�||jt|j��|�||j|j�|j
dur\|�||jt|j
��|�||j
�q1|�||j
�|�||jt�|j��t|�S)Nr��MACAROON_V2)rr4�	bytearray�appendr(�_append_packet�	_LOCATIONr�_IDENTIFIER�identifier_bytes�_EOSr*�caveat_id_bytes�verification_key_id�_VID�
_SIGNATUREr.r/r0�bytes)rrr4r�crrrr ;s6

�
�


�
��zBinarySerializer._serialize_v2cCs.t|�dkr
td��t|�}t|�}|�|�S)Nrzempty macaroon)�len�
ValueErrorrr�deserialize_raw)r�
serialized�decodedrrr�deserializeUs

zBinarySerializer.deserializecCsVddlm}ddlm}t�|dd��}||kr|�|�St|�r'|�|�S|d��)Nrr3�� MacaroonDeserializationExceptionrz7cannot determine data format of binary-encoded macaroon)	rr4�pymacaroons.exceptionsrI�six�byte2int�_deserialize_v2�
_is_ascii_hex�_deserialize_v1)rrEr4rI�firstrrrrD\s

�z BinarySerializer.deserialize_rawcCs4ddlm}m}ddlm}ddlm}||d�}d}|t|�kr�tt	�
d||||j��dd�}|||j||�}	|�|	�\}
}|
dkrM||_
nA|
d	krU||_n9|
d
krd|j�|||d��n*|
dkro||jd
_n|
dkrz||jd
_
n|
dkr�t�|�|_n	|dj|
|d���||}|t|�ks!|S)Nr)�Macaroonr��CaveatrH�rs4s�r!r"r#)�	caveat_idrr$���r%r&z7Key {key} not valid key for this format. Value: {value})�key�value)rrQr�pymacaroons.caveatrSrJrIrB�int�struct�unpack�PACKET_PREFIX_LENGTH�_depacketizer(r)r*r6r=r.�hexlify�	signature�format)rrFrQrrSrIr�index�
packet_length�packetrXrYrrrrOhsT
����

����%z BinarySerializer._deserialize_v1cCs�ddlm}m}ddlm}ddlm}|dd�}|�|�\}}d}t|�dkr?|dj	|j
kr?|dj�d�}|dd�}t|�dksM|dj	|j
krQ|d��||dj||d	�}	|�|�\}	}|	}t|�dkrlny||d�}
t|�dkr�|dj	|j
kr�|dj�d�|
_|dd�}t|�dks�|dj	|j
kr�|d��|dj|
_|dd�}t|�dkr�|
jdur�|d
��|j�|
�q[t|�dkr�|d��|dj	|jkr�|d��|dj|
_|j�|
�q\|�|�\}}|j	|jkr�|d��t�|j�|_|S)Nr)rQr4rRrHr�zutf-8zinvalid macaroon header)r)r(rTrTzno identifier in caveatz*location not allowed in first party caveatzextra fields found in caveatzinvalid field found in caveatz+unexpected field found instead of signature)rrQr4rZrSrJrI�_parse_section_v2rBrr8rrr9r(rVr*r6r>r=�_parse_packet_v2r?r.r`ra)rrErQr4rSrI�section�locr�rest�cavrerrrrM�sp�
�
����!�z BinarySerializer._deserialize_v2cCs�|jdt|�t|�}t|�dd�}|dkr#tdj|||d���|�d��d�}|dt|�d}t�	td	t|��||�}|S)
Nri��ztPacket too long for serialization. Max length is 0xFFFF (65535). Packet length: 0x{hex_length} ({length}) Key: {key})rX�
hex_length�lengthrr� �
z4s%ds)
r^rB�hexr	rb�zfill�encoderr\�pack)rrXr�packet_size�packet_size_hex�header�packet_contentrerrrr'�s&���zBinarySerializer._packetizecCs*|�d�d}|t|�dd�}||fS)NrorrrW)�splitrB)rrerXrYrrrr_�szBinarySerializer._depacketizeNcCs4t||�||jkrt|t|��|�|�dSdS�N)�_encode_uvarintr;rB�extend)rrr�packet_datarrrr7�s


�zBinarySerializer._append_packetcCstddlm}d}g}	t|�dkr|d��|�|�\}}|j|jkr&||fS|j|kr/|d��|�|�|j}|}q)z� Parses a sequence of packets in data.

        The sequence is terminated by a packet with a field type of EOS
        :param data bytes to be deserialized.
        :return: the rest of data and an array of packet V2
        rrHrWTz"section extends past end of bufferzfields out of order)rJrIrBrhrr;r6)rrrI�prev_field_type�packetsrkrerrrrg�s"�

�z"BinarySerializer._parse_section_v2cCs�ddlm}t|�\}}||d�}||jkr|t|d�fSt|�\}}||d�}|t|�kr4|d��||d�t||d|��fS)aQ Parses a V2 data packet at the start of the given data.

        The format of a packet is as follows:

        field_type(varint) payload_len(varint) data[payload_len bytes]

        apart from EOS which has no payload_en or data (it's a single zero
        byte).

        :param data:
        :return: rest of data, PacketV2
        rrHNz%field data extends past end of buffer)rJrI�_decode_uvarintr;r
rB)rrrI�ft�n�payload_lenrrrrhs

�z!BinarySerializer._parse_packet_v2rz)�__name__�
__module__�__qualname__r^r8r9r>r?r;rrrr rGrDrOrMr'r_r7rgrhrrrrr
s(0;
r
cCsH|dkrtd��	|d@}|dL}|dkr|�|�dS|�|dB�q	)z7 Encodes integer into variable-length format into data.rzonly support positive integerT���N)rCr6)rr��	this_byterrrr{-s
�r{rcCsbd}d}d}|D]$}t|�}|d7}|dkr |||>B|fS||d@|>O}|d7}qtd���z� Decode a variable -length integer.

        Reads a sequence of unsigned integer byte and decodes them into an
        integer in variable-length format and returns it and the length read.
        rrr�r�r�zcannot read uvarint from buffer)�ord�	Exception�rr��shift�i�brrrr�;s
r�cCsZd}d}d}|D] }|d7}|dkr|||>B|fS||d@|>O}|d7}qtd��r�)r�r�rrrr�Ms
cCsHtd�|krtd�krdStd�|krtd�kr"dSdSdS)N�0�9T�a�fF)r�)r�rrrrN_s��rN)�
__future__rr.�collectionsrrKr\�sys�base64r�pymacaroons.utilsrrr�'pymacaroons.serializers.base_serializerrrJr	r
r
r{�version_info�majorr�rNrrrr�<module>s&

Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY