HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/tests/__pycache__/password_hash.cpython-310.pyc
o

�/a�1�@s�dZddlmZddlmZddlmZddlmZddl	m
Z
ddlmZddl
mZdd	lmZdd
lmZddlmZddlZddlZddlZdd
lmZddlZdZe�dd�ZdZdd�Zdd�ZGdd�de�Z dS)zI
Base class for tests for source4/dsdb/samdb/ldb_modules/password_hash.c
�)�Credentials)�SamDB)�system_session)�TestCase)�
ndr_unpack)�drsblobs)�DOMAIN_PASSWORD_STORE_CLEARTEXT)�"UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED)�delete_force)�PasswordCommonN)�md5�PasswordHashTestUser� zPWHash@User.PrinciplecCs@|durdSd}|jjD]}|d7}||jkr||fSqdS)Nr�)�sub�packages�name)�scr�idx�p�r�;/usr/lib/python3/dist-packages/samba/tests/password_hash.py�get_package1s
�rcCs.d|||f}t|t�r|�d�}t|���S)Nz%s:%s:%s�utf8)�
isinstance�str�encoder�	hexdigest)�user�realm�password�datarrr�calc_digestAs

r"csVeZdZ�fdd�Zdd�Zddd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
�ZS)�PassWordHashTestscstj��|_tt|���dS�N)�samba�tests�env_loadparm�lp�superr#�setUp)�self��	__class__rrr*LszPassWordHashTests.setUpcCs>|j��}t|�}|r|tO}n|tM}|j�t|��dSr$)�ldb�get_pwdProperties�intr�set_pwdPropertiesr)r+�	cleartext�
pwdProperties�propsrrr�set_store_cleartextPs


z%PassWordHashTests.set_store_cleartextNFc	Csf|dur|D]\}}|j�||�q|dur5t�|_t�|_|j�|j�t�|_t|j|j|jd�|_n||_|jj	|j�
�d|j��dgd�}t|ddd�|_
|j��|_|j��}|j�
���}t�||j�|j��|_d}	|r�|j��}
|�|jj|
�|�|�|	tO}	t|jdtd|j�|j�dtd|jdtttt|	�d	��dS)
N)�session_info�credentialsr(z	ncName=%s�nETBIOSName)�base�
expression�attrsr�cn=�
,cn=users,r)�dn�objectclass�sAMAccountName�userPassword�userPrincipalName�userAccountControl)r(�setr�credsr�session�guessrr.�search�get_config_basedn�get_default_basednr�netbios_domain�domain_dns_name�
dns_domain�	domain_dn�get_linearizedr�allow_password_changes�base_dnr/�
addCleanupr1r5r	r
�	USER_NAME�add�	USER_PASS�UPN)r+�options�
clear_textr.�option�value�resrQ�configuration_dn�account_controlr3rrr�add_user]sL
��


�zPassWordHashTests.add_usercCs`dtd|j}|jjtj|dgd�}|�dt|�dk�|d}|dd}ttj	|�}|S)Nr<r=�supplementalCredentials)�scoper9r;Tr)
rSrQr.rH�
SCOPE_BASE�assertIs�lenrr�supplementalCredentialsBlob)r+r9r[�obj�sc_blobrrrr�get_supplemental_creds�s
�z(PassWordHashTests.get_supplemental_credscCsDt|||�}t�t|���d�}d|||||f}|�|||�dS)Nrz>Digest expected[%s], actual[%s], user[%s], realm[%s], pass[%s])r"�binascii�hexlify�	bytearray�decode�assertEqual)r+rrr �digest�expected�actual�errorrrr�check_digest�s�zPassWordHashTests.check_digestcCs�|�d|j�|�t|jt|jdj�|�t��|j��t|jdj�|�t�	�|j�	�t|jdj�|�t|j�	�t|jdj�|�t|j��t|jdj�|�t�	�|j��t|jdj�|�t��|j�	�t|jdj�|�t|j
t|jd	j�|�t��|j
��t|jd
j�|�t�	�|j
�	�t|jdj�|�t|j
�	�t|jdj�|�t|j
��t|jd
j�|�t�	�|j
��t|jdj�|�t��|j
�	�t|jdj�|�tdt|jdj�|�t��dt|jdj�|�t�	�dt|jdj�d|jtf}|�|dt|jdj�d|j��t��f}|�|dt|jdj�d|j�	�t�	�f}|�|dt|jdj�|�tdt|jdj�|�t��dt|jdj�|�t�	�dt|jdj�|�tdt|jdj�|�t��dt|jdj�|�t�	�dt|jdj�d|jtf}|�|dt|jdj�d|j��t��f}|�|dt|jd j�d|j�	�t�	�f}|�|dt|jd!j�dS)"N�rr��������	�
���
����z%s\%s����Digest���������)rl�
num_hashesrqrSrKrU�hashes�hash�lower�upperrMrV)r+�digestsrrrr�check_wdigests�s0
�

�

�
�
�

�

�
�

�

�
�
�

�

�
�

�

�
�
�
�
�

�

�
�

�

�
�
�
�z PassWordHashTests.check_wdigestsc	Cs�|�t|�|j�d}|D]P\}}}|�||j|j�|j|j�d��d�}|�||d�|dur=d||df}n	d|||df}t�t	|�}|�||j|j�d��|d7}q
dS)	Nrr�$rz$%s$%srsz$%s$rounds=%d$%srt)
rlrcr�r��schemerZrk�split�cryptrU)	r+�uprn�i�tag�alg�roundsr!�cmdrrr�checkUserPassword1s
�z#PassWordHashTests.checkUserPasswordcCs8t�}|��|�|�|��}t|�}|�||�dSr$)r�
set_anonymous�set_password�get_nt_hashrjrl)r+r �nt_hashrErnrorrr�checkNtHashIs
zPassWordHashTests.checkNtHash)NFN)�__name__�
__module__�__qualname__r*r5r^rgrqr�r�r��
__classcell__rrr,rr#Js

8
r#)!�__doc__�samba.credentialsr�samba.samdbr�
samba.authr�samba.testsr�	samba.ndrr�samba.dcerpcr�samba.dcerpc.samrr�
samba.dsdbr	r
�samba.tests.password_testrr.r%rh�hashlibrr�rS�generate_random_passwordrUrVrr"r#rrrr�<module>s,