
    5iu                     t   d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,Z,d dl-Z-d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d d	l7m8Z8 d
 Z9d Z:d Z;d Z<d Z=d Z>ddZ?d Z@d ZAd ZBd ZCd ZDd ZEddZFd ZGdS )    N)SE_OBJECT_TYPE)CloseHandleCreateFileWGENERIC_READREAD_CONTROLOPEN_EXISTINGFILE_ATTRIBUTE_DIRECTORYFILE_FLAG_BACKUP_SEMANTICS)LookupAccountNameWLookupAccountSidWGetSecurityInfoOWNER_SECURITY_INFORMATIONGROUP_SECURITY_INFORMATIONDACL_SECURITY_INFORMATIONOpenSCManagerWSC_MANAGER_ENUMERATE_SERVICEEnumServicesStatusWOpenServiceWQueryServiceObjectSecurityCloseServiceHandlehive_name_mapRegOpenKeyExWRegCloseKeyRegEnumKeyExWRegEnumValueWSetSecurityInfoBuildTrusteeWithSidWGetEffectiveRightsFromAclWConvertSidToStringSidWConvertStringSidToSidW4ConvertSecurityDescriptorToStringSecurityDescriptorWOpenProcessTokenGetTokenInformationLsaGetLogonSessionDataTokenStatisticsOpenProcessGetCurrentProcessId)NetUserGetLocalGroupsNetUserGetInfo)SECURITY_DESCRIPTOR)ACCESS_ALLOWED_ACEAceFlagsFILE_ACCESS_MASKACCESS_MASK)SID)EvaluateSidAgainstDescriptorc                 .    t          d |           \  }}}|S N)r   )usernamesiddomainuses       P/home/kali/Ninja/venv/lib/python3.11/site-packages/winacl/functions/highlevel.pyget_sid_for_userr8      s    &tX66fc    c                     t          j        |           }t          d |                                          \  }}}|d|S )N\)r/   from_stringr   to_bytes)sid_strr4   r3   r5   r6   s        r7   get_user_for_sidr?      s@    
w*4@@63FFHH%%r9   c                 p    t          | t          j        j        t          t
          z  t          z            }|S r2   )r   r   SE_REGISTRY_KEYvaluer   r   r   )
key_handlesds     r7   
get_reg_sdrE      s9    j."@"FHbeH  C\  I\  ]  ]
r9   c                     d}t          | |t                    }t          |t          j        j        |           t          |           d S )Ni   dwDesiredAccessdwCreationDisposition)r   r   r   r   SE_FILE_OBJECTrB   r   )	file_pathrD   
req_rightsfile_handles       r7   set_file_sdrN   "   sH    9
\ijjjn;A2FFF[r9   c                     t          | t          t                    }t          |t          j        j        t          t          z  t          z            }t          |           |S )NrG   )r   r   r   r   r   rJ   rB   r   r   r   r   )rK   rM   rD   s      r7   get_file_sdrP   (   s\    9^klllk>#@#FHbeH  C\  I\  ]  ][
r9   c                     t          | t          t          t          t          z            }t          |t          j        j        t          t          z  t          z            }t          |           |S )N)rH   rI   dwFlagsAndAttributes)r   r   r   r	   r
   r   r   rJ   rB   r   r   r   r   )dir_pathrM   rD   s      r7   get_directory_sdrT   .   sz    8|]j  D\  _y  Dy  z  z  zk>#@#FHbeH  C\  I\  ]  ][
r9   Fc              #     K   | d         dk    r| dz  } t          j        | dz   d          D ]}t          j                            |          du r$	 |dt          |          fV  9#  |ddfV  Y DxY w|du rEt          j                            |          du r$	 |dt          |          fV  #  |ddfV  Y xY wd S )	Nr;   z**/*T)	recursivedirERRfile)globiglobospathisdirrT   isfilerP   )rS   
with_filesfilenames      r7   get_dir_file_recursiverc   4   s     RLD
d(Hv->>> 
" 
"XW]]8$$!
E+H55
55555!
E5
      TbgnnX66$>>"
FK11
11111"
FE
!!!!!!
" 
"s   A&&	A1B//	B:c                      t          t                    } t          | t          t          z  t
          z  t          j                  }t          |            |S NrH   dwSecurityInformationsd_object_type)	r   r   r   r   r   r   r   
SE_SERVICEr   )
scm_handlerD   s     r7   get_servicemanager_sdrl   C   sc    |=== E_b|E|  @Y  FY  lz  lE  F  F  FJ
r9   c                    t          t          t          z            }t          || t                    }t	          |t
          t          z  t          z  t          j	                  }t          |           t          |           |S re   )r   r   r   r   r   r   r   r   r   rj   r   )service_namerk   service_handlerD   s       r7   get_service_sdrp   I   s    |>Z/Z\\\z<<XXX Ic  gA  JA  D]  J]  p~  pI  J  J  JJN###
r9   c               #     K   dt                      fV  t          t          t          z            } t	          |           D ]}	 t          | |t                    }t          |t          t          z  t          z  t          j                  }||fV  n# t          $ r}|dfV  Y d }~nd }~ww xY w	 t          |           #  Y xY w# 	 t          |           w #  Y w xY wxY w	 t          |            d S #  Y d S xY w)NSCMrf   rg   err)rl   r   r   r   r   r   r   r   r   r   r   rj   	Exceptionr   )rk   rn   ro   rD   es        r7   enumerate_all_service_sdrv   Q   sr     #%%%%%%|>Z/Z\\\(44 	 	\
	 \\ZZZ>">Ke  iC  LC  F_  L_  r@  rK  	L  	L  	L2	r		   	u		~&&&&	D	~&&&&	DZ     $$sa   ABC
B-B(#C(B--C1CCC!
CC!C	C!%C6 6C;c                     t           |          }t          |t          j        j        t
          t          z  t          z            }|S r2   )r   r   r   rA   rB   r   r   r   )	hive_namerC   rD   s      r7   get_registry_hive_sdry   e   sC    I&j."@"FHbeH  C\  I\  ]  ]
r9   c                 b   |                      d          }t          |d                  }g }|dd         D ]'}t          ||          }|                    |           (t	          |t
          j        j        t          t          z  t          z            }|d d d         D ]}t          |           |S )Nr;   r      rV   )splitr   r   appendr   r   rA   rB   r   r   r   r   )reg_pathpath_elements
reg_handlehandlesnamerD   s         r7   get_registry_key_sdr   j   s    %%M!,-1R4   TZ..*	..j."@"FHbeH  C\  I\  ]  ]44R4=  Zj
r9   c                 `   g }d }|                     d          dk    r|                    d          \  }}t          ||          ^}}|                    |           t	          ||          D ]+}t          ||          \  }}}	|                    |           ,t          | |d|          \  }
}|S )Nr;   rV   i   )findr|   r   r}   r(   r0   )rD   r3   
sid_groupsr5   user_sidt
group_namer4   	groupnamer6   resmasks               r7    get_maximum_permissions_for_userr   |   s    
MM$2^^D))&("6844A8(::  Z*6:>>#y#C *"h
JOOdr9   c              #     K   | d         dk    r
| d d         } g }|\|                      d          }t          |d                  }g }|dd          D ]'}t          ||          }|                    |           (t	          |          }|D ]}| d|}	 t          ||          }t          |t          j        j        t          t          z  t          z  t          j                  }	||	fV  t          ||          E d {V  x# t          $ r_}
t          |
                              d          dk    r t!          t          |
          |z              nt!          |
           Y d }
~
d }
~
ww xY w|D ]}t#          |           d S )NrV   r;   r   r{   )se_object_typezcannot find)r|   r   r   r}   r   r   r   rA   rB   r   r   r   enumerate_registry_sdrt   strr   printr   )r~   r   r   r   r   subkeysskreg_path_skreg_handle_skrD   ru   s              r7   r   r      s     RLDcrc](..&&-]1-.*'ABB  dj$//:
>>*$$ @ @R$HHbb)+@ R00= 	
N$B$HJd  hB  KB  E^  K^  q  qO  	P  	P  	P2
r	#K?????????? 
   	!ffkk-  B&&	#a&&;
	!HHH	   Zj s   D
E+AE&&E+c                      t          d dt                                } t          |           }t          |t                    }t          |j                  S )NF)r&   r'   r"   r#   r%   r$   AuthenticationId)phandle	tokhandlestatss      r7   get_logon_infor      sG    te%8%:%:;;g&&	Y	8	8u5666r9   )Fr2   )Hctypeswinacl.functions.constantsr   winacl.functions.kernel32r   r   r   r   r   r	   r
   winacl.functions.advapi32r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   winacl.functions.netapi32r(   r)   r[   r]   winacl.dtyp.security_descriptorr*   winacl.dtyp.acer+   r,   r-   r.   winacl.dtyp.sidr/   winacl.functions.rights_calcr0   r8   r?   rE   rN   rP   rT   rc   rl   rp   rv   ry   r   r   r   r    r9   r7   <module>r      s}    5 5 5 5 5 5 `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `  `K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K L K K K K K K K  				 ? ? ? ? ? ? W W W W W W W W W W W W       E E E E E E  & & &
        " " " "      (  
  $  &       D7 7 7 7 7r9   