o
    jR                     @   s  d dl mZ d dl mZ d dlmZ dZd ZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd ZdZ dZ!dZ"dZ#dZ$dZ%d	Z&d Z'dZ(d Z)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAd ZBdZCdZDd ZEdZFdZGd!ZHd"ZId#ZJd$ZKd%ZLd&ZMd'ZNd(ZOdZPdZQdZRdZSd ZTdZUdZVdZWd)ZXd ZYdZZdZ[dZ\dZ]d$Z^dZ_d'Z`dZad*Zbd&Zcd%ZddZed#Zfd"ZgdZhd!Zid$Zjd+ZkdZldZmdZnd ZodZpdZqdZrdZsd	ZtdZudZvdZwdZxdZydZzdZ{d!Z|d"Z}d$Z~d%Zd&Zd'Zd(Zd,Zd-Zd.Zd/ZdZdZdZdZdZdZdZd*Zd!Zd0Zd+Zd1Zd2Zd,Zd3Zd4ZdZd5Zd6ZdZdZdZdZdZdZd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd?Zd@ZdAZdBZdZd*Zd ZdZdZdZd ZdZdZdZdZdZdZd ZdZdZdZdZdZdZdZdCZdDZdEZdFZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdRZdZdZdZdZdZdZdZdZdZdZdSZdZdTZdZdZdZdZdZdZdZdZdZdZdZdZdZd*Zd!Zd"Zd#Zd$ZdZdZdZdZd	ZdZdZdZdZd ZdZdZdZdUZdVZdWZdZ dZdXZdZdZdZdYZdZdZdZZ	dTZ
dSZd[Zd
ZdZd\Zd]ZdZd^ZdZdZd_Zd Zd`ZdaZdbZdcZdZdZdZddZdeZdfZ d	Z!dgZ"dhZ#diZ$djZ%dZ&dZ'dZ(dZ)d	Z*d
Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9G dkdl dleZ:G dmdn dne:Z;G dodp dpe:Z<G dqdr dre:Z=G dsdt dte:Z>G dudv dveZ?G dwdx dxeZ@G dydz dzeZAG d{d| d|eZBG d}d~ d~eZCG dd deZDG dd deZEG dd deZFG dd deZGG dd deZHG dd deZIG dd deZJG dd deZKG dd deZLG dd deZMG dd deZNG dd deZOG dd deZPG dd deZQG dd deZRG dd deZSG dd deZTG dd deZUG dd deZVG dd deZG dd deZG dd deZWG dd deZG dd deZXG dd deZG dd deZG dd deZYeYZZG dd deZeZ[G dd deZG dd deZ\G dd deZG dd deZG dd deZG dd deZ]G ddĄ deZ^G ddƄ deZ_G ddȄ deZ`G ddʄ deZaG dd̄ deZbG dd΄ deZcG ddЄ deZdG dd҄ deZeeeZfeeZgG ddԄ deZhG ddք deZieiZjG dd؄ deZkG ddڄ deZlG dd܄ deZmG ddބ deZnenZoG dd deZpG dd deZqG dd deZrG dd deZsG dd deZtG dd deZuG dd deZvG dd deZwG dd deZxG dd deZyG dd deZzG dd deZ{G dd deZ|G dd deZG dd deZG dd deZ}G dd  d eZ~G dd deZG dd deZG dd deZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZG d9d: d:eZd;S (<      )division)print_function)	Structure@                           	   
                           i   l            i  i  i   i  i  i  0      i   i   i   i   i    i @  i         i   i   i    i  @ i   i   i   i   i   i   i    i   @iAtxEiDceSiQnHDiCnHDiiSlAicAxMiprWTidiFQisLqRiQ2HDiC2HDl	   tM(\iG ttS^E i i@ i  i i@ id@ ix  iA i i i i 	 i 	 i i	 i &   %         #         .   2            "               !   ,   -   6      $   '   c                   @   s&   e Zd Zdd Zdd ZdddZdS )	SMBPacketBasec                 C   s   t d)NzImplement This!)	Exception)selfcommand r9   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/smb3structs.py
addCommand  s   zSMBPacketBase.addCommandc                 C   s,   | d |krddl m} || d | dS )NStatusr   )smb3T) r=   SessionError)r7   statusr=   r9   r9   r:   isValidAnswer  s   zSMBPacketBase.isValidAnswerNc                 C   $   t | | |d u rd| d< d S d S )Nr   TreeIDr   __init__r7   datar9   r9   r:   rE        zSMBPacketBase.__init__N)__name__
__module____qualname__r;   rA   rE   r9   r9   r9   r:   r5     s    r5   c                   @      e Zd ZdZdS )SMB2PacketAsync)
ProtocolIDu   "þSMBStructureSizez<H=64CreditCharge<H=0r<   <L=0CommandrU   CreditRequestResponserU   FlagsrW   NextCommandrW   	MessageID<Q=0AsyncIDrb   	SessionIDrb   	Signature16s=""Data:=""NrJ   rK   rL   	structurer9   r9   r9   r:   rN         rN   c                   @   rM   )SMB3PacketAsync)rO   rQ   rS   ChannelSequencerU   ReservedrU   rX   rZ   r\   r^   r`   rc   re   rg   rj   Nrm   r9   r9   r9   r:   rp     ro   rp   c                   @   rM   )
SMB2Packet)rO   rQ   rS   rV   rX   rZ   r\   r^   r`   rt   rW   rC   rW   re   rg   rj   Nrm   r9   r9   r9   r:   ru     ro   ru   c                   @   rM   )
SMB3Packet)rO   rQ   rS   rq   rs   rX   rZ   r\   r^   r`   rv   rw   re   rg   rj   Nrm   r9   r9   r9   r:   rx     ro   rx   c                   @   s   e Zd ZdS )EmptyN)rJ   rK   rL   r9   r9   r9   r:   ry   $  s    ry   c                   @   rM   )	SMB2Error)rR   z<H=9rs   )	ByteCountrW   )
_ErrorDataz_-ErrorDatazself["ByteCount"])	ErrorDatau   "ÿNrm   r9   r9   r9   r:   rz   &  ro   rz   c                   @   rM   )SMB2ErrorSymbolicLink))SymLinkLengthrW   )SymLinkErrorTagrW   
ReparseTagrW   )ReparseDataLenghtrU   )UnparsedPathLengthrU   SubstituteNameOffsetrU   SubstituteNameLengthrU   PrintNameOffsetrU   PrintNameLengthrU   r\   
PathBuffer:Nrm   r9   r9   r9   r:   r   /  ro   r   c                   @   rM   )SMB2Negotiate)
rR   z<H=36)DialectCountrU   SecurityModerU   rs   CapabilitiesrW   )
ClientGuidri   )ClientStartTime8s="")Dialectsz*<HPaddingrl   NegotiateContextListrl   Nrm   r9   r9   r9   r:   r   ?  ro   r   c                   @   rM   )SMB311ContextData)NegotiateContextOffsetrW   NegotiateContextCountrU   )	Reserved2rU   Nrm   r9   r9   r9   r:   r   N  ro   r   c                   @   rM   )SMB2Negotiate_Response))rR   z<H=65r   )DialectRevisionrU   r   )
ServerGuidri   r   )MaxTransactSizerW   )MaxReadSizerW   )MaxWriteSizerW   )
SystemTimerb   )ServerStartTimerb   SecurityBufferOffsetrU   SecurityBufferLengthrU   r   	_AlignPad
_-AlignPadz?self["SecurityBufferOffset"] - (64 + self["StructureSize"] - 1)AlignPadrl   _Buffer_-Bufferzself["SecurityBufferLength"]Bufferr   )_Paddingz	_-Paddingz0 if self["NegotiateContextOffset"] == 0 else (self["NegotiateContextOffset"] - self["SecurityBufferOffset"] - self["SecurityBufferLength"])r   )_NegotiateContextListz_-NegotiateContextListza0 if self["NegotiateContextOffset"] == 0 else len(self.rawData)-self["NegotiateContextOffset"]+64r   Nrm   r9   r9   r9   r:   r   T  ro   r   c                   @   rM   )SMB2NegotiateContext))ContextTyperU   )
DataLengthrU   rv   )_Dataz_-Dataself["DataLength"]rj   Nrm   r9   r9   r9   r:   r   s  ro   r   c                   @   rM   ) SMB2PreAuthIntegrityCapabilities))HashAlgorithmCountrU   )
SaltLengthrU   )_HashAlgorithmsz_-HashAlgorithmszself["HashAlgorithmCount"]*2)HashAlgorithmsrl   )Saltrl   Nrm   r9   r9   r9   r:   r   }  ro   r   c                   @   rM   )SMB2EncryptionCapabilities))CipherCountrU   )Ciphersrl   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   rM   )SMB2CompressionCapabilities))CompressionAlgorithmCountrU   )r   rU   r\   )CompressionAlgorithmsrl   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   rM   )SMB2NetNameNegotiateContextID))NetNamerl   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   s&   e Zd ZdZdZdddZdd ZdS )	SMB2SessionSetupr,   ))rR   z<H=25r]   <B=0)r   r   r   ChannelrW   )r   +<H=(self.SIZE + 64 + len(self["AlignPad"]))r   )PreviousSessionIdrb   r   r   r   r   Nc                 C   rB   Nr>   r   rD   rF   r9   r9   r:   rE     rH   zSMB2SessionSetup.__init__c                 C   s
   t | S rI   )r   getData)r7   r9   r9   r:   r     s   
zSMB2SessionSetup.getDatarI   )rJ   rK   rL   SIZErn   rE   r   r9   r9   r9   r:   r     s
    
r   c                   @   rM   )SMB2SessionSetup_Response)r{   )SessionFlagsrU   r   r   r   r   r   r   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   rM   )
SMB2Logoff)rR   z<H=4rs   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   rM   )SMB2Logoff_Responser   Nrm   r9   r9   r9   r:   r     ro   r   c                   @      e Zd ZdZdZdddZdS )SMB2TreeConnectr   )r{   rs   )
PathOffsetr   )
PathLengthrU   )r   r   z)self["PathOffset"] - (64 + self.SIZE - 1)r   )r   r   zself["PathLength"]r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2TreeConnect.__init__rI   rJ   rK   rL   r   rn   rE   r9   r9   r9   r:   r     s    
r   c                   @   rM   )SMB2TreeConnect_Response))rR   z<H=16)	ShareTyper   rt   r   )
ShareFlagsrW   r   MaximalAccessrW   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   rM   )SMB2TreeDisconnectr   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   rM   )SMB2TreeDisconnect_Responser   Nrm   r9   r9   r9   r:   r     ro   r   c                   @   r   )
SMB2Create8   )rR   z<H=57)SecurityFlagsr   )RequestedOplockLevelr   )ImpersonationLevelrW   )SmbCreateFlagsrb   rt   rb   )DesiredAccessrW   FileAttributesrW   )ShareAccessrW   )CreateDispositionrW   )CreateOptionsrW   )
NameOffsetr   
NameLengthrU   CreateContextsOffsetrW   CreateContextsLengthrW   )r   r   z5self["NameOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   z/self["CreateContextsLength"]+self["NameLength"]r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2Create.__init__rI   r   r9   r9   r9   r:   r     s    r   c                   @   rM   )SMB2CreateContext)NextrW   )r   rU   r   rs   )
DataOffsetrU   r   rW   )r   r   z%self["DataLength"]+self["NameLength"]r   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SMB2_FILEID))
Persistentrb   )Volatilerb   Nrm   r9   r9   r9   r:   r  &  ro   r  c                   @   s<   e Zd Zddddddddd	d
ddddefddddddfZdS )SMB2Create_Response)rR   z<H=89OplockLevelr   r   )CreateActionrW   CreationTimerb   LastAccessTimerb   LastWriteTimerb   
ChangeTimerb   AllocationSizerb   )	EndOfFilerb   r   r   rW   FileIDr   r   r   )r   r   z?self["CreateContextsOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   zself["CreateContextsLength"]r   NrJ   rK   rL   r  rn   r9   r9   r9   r:   r
  ,  s*    r
  c                   @   rM   )FILE_FULL_EA_INFORMATION)NextEntryOffsetrW   r   )EaNameLengthr   )EaValueLengthrU   )_EaNamez_-EaNamezself["EaNameLength"])EaNamer   )_EaValuez	_-EaValuezself["EaValue"])EaValuer   Nrm   r9   r9   r9   r:   r  C  ro   r  c                   @   s   e Zd ZddeffZdS )$SMB2_CREATE_DURABLE_HANDLE_RECONNECTrk   r   Nr  r9   r9   r9   r:   r%  P  s    r%  c                   @   rM   )"SMB2_CREATE_DURABLE_HANDLE_REQUEST))DurableRequestri   Nrm   r9   r9   r9   r:   r&  U  ro   r&  c                   @   rM   )#SMB2_CREATE_DURABLE_HANDLE_RESPONSE)r   Nrm   r9   r9   r9   r:   r(  Z  ro   r(  c                   @   rM   )(SMB2_CREATE_QUERY_MAXIMAL_ACCESS_REQUEST)	Timestamprb   Nrm   r9   r9   r9   r:   r)  _  ro   r)  c                   @   rM   ))SMB2_CREATE_QUERY_MAXIMAL_ACCESS_RESPONSE))QueryStatusrW   r   Nrm   r9   r9   r9   r:   r,  d  ro   r,  c                   @   rM   )SMB2_CREATE_ALLOCATION_SIZE)r  Nrm   r9   r9   r9   r:   r.  j  ro   r.  c                   @   rM   )SMB2_CREATE_TIMEWARP_TOKENr*  Nrm   r9   r9   r9   r:   r/  o  ro   r/  c                   @   rM   )SMB2_CREATE_REQUEST_LEASE)LeaseKeyri   
LeaseStaterW   )
LeaseFlagsrW   LeaseDurationrb   Nrm   r9   r9   r9   r:   r0  t  ro   r0  c                   @   rM   )SMB2_CREATE_REQUEST_LEASE_V2)r1  r3  r\   r6  )ParentLeaseKeyri   )EpochrU   rs   Nrm   r9   r9   r9   r:   r8  ~  ro   r8  c                   @   rM   )%SMB2_CREATE_DURABLE_HANDLE_REQUEST_V2)TimeoutrW   r\   )rt   r   
CreateGuidri   Nrm   r9   r9   r9   r:   r;    ro   r;  c                   @   rM   )&SMB2_CREATE_DURABLE_HANDLE_RESPONSE_V2)r<  r\   Nrm   r9   r9   r9   r:   r@    ro   r@  c                   @   s   e Zd ZddefddfZdS )'SMB2_CREATE_DURABLE_HANDLE_RECONNECT_V2r  r   r>  r\   Nr  r9   r9   r9   r:   rA    s
    rA  c                   @   rM   )SMB2_CREATE_APP_INSTANCE_ID))rR   rU   rs   )AppInstanceIdri   Nrm   r9   r9   r9   r:   rB    ro   rB  c                   @   rM   )SMB2_CREATE_QUERY_ON_DISK_ID))DiskIDBufferz32s=""Nrm   r9   r9   r9   r:   rD    ro   rD  c                   @      e Zd ZdddddeffZdS )	SMB2CloserR   z<H=24r]   rU   rv   r  r   Nr  r9   r9   r9   r:   rG        rG  c                   @   rM   )SMB2Close_Response)
)rR   z<H=60rI  rv   r  r  r  r  r  )	EndofFilerb   r   Nrm   r9   r9   r9   r:   rK    ro   rK  c                   @   rF  )	SMB2FlushrH  )	Reserved1rU   r  r  r   Nr  r9   r9   r9   r:   rM    rJ  rM  c                   @   rM   )SMB2Flush_Responser   Nrm   r9   r9   r9   r:   rO    ro   rO  c                   @   sB   e Zd ZdZdddddddefd	d
dddddddfZdddZdS )SMB2Readr   rR   z<H=49r   r   r   LengthrW   Offsetrb   r  r   )MinimumCountrW   r   RemainingBytesrW   )ReadChannelInfoOffsetrU   )ReadChannelInfoLengthrU   )r   r   z@self["ReadChannelInfoOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   zself["ReadChannelInfoLength"])r   z:="0"Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2Read.__init__rI   rJ   rK   rL   r   r  rn   rE   r9   r9   r9   r:   rP    s&    rP  c                   @   rM   )SMB2Read_Response)
rR   z<H=17)r  r   r   r  )DataRemainingrW   r  )r   r   z5self["DataOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   r   r   Nrm   r9   r9   r9   r:   r]    ro   r]  c                   @   s@   e Zd ZdZddddddefdd	d
ddddddfZdddZdS )	SMB2Writer   rQ  )r  r   rS  rU  r  r   r   rX  WriteChannelInfoOffsetrU   WriteChannelInfoLengthrU   )r   r   zVself["DataOffset"] + self["WriteChannelInfoOffset"] - (64 + self["StructureSize"] - 1)r   r\   )r   r   z-self["Length"]+self["WriteChannelInfoLength"]r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2Write.__init__rI   r\  r9   r9   r9   r:   r`    s$    r`  c                   @   rM   )SMB2Write_Response)r^  rs   )CountrW   )	RemainingrW   ra  rc  Nrm   r9   r9   r9   r:   re    ro   re  c                   @   s    e Zd ZddddddeffZdS )SMB2OplockBreakNotificationrH  r  r   r  r  r   Nr  r9   r9   r9   r:   rh     s    rh  c                   @   rM   )SMB2LeaseBreakNotification)	)rR   z<H=44)NewEpochrU   r\   r1  )CurrentLeaseStaterW   )NewLeaseStaterW   )BreakReasonrW   )AccessMaskHintrW   )ShareMaskHintrW   Nrm   r9   r9   r9   r:   ri  ,  ro   ri  c                   @   rM   )SMB2LeaseBreakAcknowledgement)r   rs   r\   r1  r3  r6  Nrm   r9   r9   r9   r:   rp  9  ro   rp  c                   @   rM   )SMB2_LOCK_ELEMENT)rU  )rT  rb   r\   rv   Nrm   r9   r9   r9   r:   rq  F  ro   rq  c                   @   "   e Zd ZdddddefddfZdS )	SMB2Lock)rR   z<H=48)	LockCountrU   )LockSequencerW   r  r   )_Locksz_-Lockszself["LockCount"]*24)Locksr   Nr  r9   r9   r9   r:   rs  N      rs  c                   @   rM   )SMB2Lock_Responser   Nrm   r9   r9   r9   r:   ry  X  ro   ry  c                   @   rM   )SMB2Echor   Nrm   r9   r9   r9   r:   rz  `  ro   rz  c                   @   rM   )
SMB2Cancelr   Nrm   r9   r9   r9   r:   r{  i  ro   r{  c                   @   s@   e Zd ZdZdddddefddd	d
ddddddfZdddZdS )	SMB2Ioctlr   r   rs   CtlCoderW   r  r   )InputOffsetz+<L=(self.SIZE + 64 + len(self["AlignPad"]))
InputCountrW   )MaxInputResponserW   )OutputOffsetz@<L=(self.SIZE + 64 + len(self["AlignPad"]) + self["InputCount"])OutputCountrW   )MaxOutputResponserW   r\   r  r   r   z&self["InputCount"]+self["OutputCount"]r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2Ioctl.__init__rI   r\  r9   r9   r9   r:   r|  p  s$    r|  c                   @   rM   )FSCTL_PIPE_WAIT_STRUCTURE))r=  <q=0)r   rW   )TimeoutSpecifiedr   rR  )_Namez_-Namezself["NameLength"])Namer   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_COPYCHUNK_COPY))	SourceKey24s="")
ChunkCountrW   rv   )_Chunksz_-Chunksz%self["ChunkCount"]*len(SRV_COPYCHUNK))Chunksr   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_COPYCHUNK))SourceOffsetrb   )TargetOffsetrb   rS  rv   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_COPYCHUNK_RESPONSE))ChunksWrittenrW   )ChunkBytesWrittenrW   )TotalBytesWrittenrW   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_READ_HASH)HashTyperW   HashVersionrW   )HashRetrievalTyperW   rS  rU  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )NETWORK_RESILIENCY_REQUEST)r<  rv   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )VALIDATE_NEGOTIATE_INFO)r   Guidri   r   )r   z<H*<HNrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   ) VALIDATE_NEGOTIATE_INFO_RESPONSE)r   r  r   )Dialectz<HNrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_SNAPSHOT_ARRAY))NumberOfSnapShotsrW   )NumberOfSnapShotsReturnedrW   )SnapShotArraySizerW   )
_SnapShotsz_-SnapShotszself["SnapShotArraySize"])	SnapShotsr   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_REQUEST_RESUME_KEY))	ResumeKeyr  )ContextLengthrW   )_Contextz	_-Contextzself["ContextLength"])Contextr   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )HASH_HEADER)
r  r  )SourceFileChangeTimerb   )SourceFileSizerb   )HashBlobLengthrW   )HashBlobOffsetrW   )DirtyrU   )SourceFileNameLengthrW   )_SourceFileNamez_-SourceFileNamezself["SourceFileNameLength"])SourceFileNamer   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_HASH_RETRIEVE_HASH_BASED)rU  BufferLengthrW   rv   r   r   zself["BufferLength"]r   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SRV_HASH_RETRIEVE_FILE_BASED))FileDataOffsetrb   )FileDataLengthrb   r  rv   r  r   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )NETWORK_INTERFACE_INFO)r  )IfIndexrW   )
CapabilityrW   rv   )	LinkSpeedrb   )SockAddr_Storagez128s=""Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )"MOUNT_POINT_REPARSE_DATA_STRUCTURE)r   z<L=0xA0000003)ReparseDataLenz<H=len(self['PathBuffer']) + 8rs   r   r   r   r   r   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )'MOUNT_POINT_REPARSE_GUID_DATA_STRUCTURE)r  )r  z<H=len(self['DataBuffer'])rs   )ReparseGuidz16s='')
DataBufferr   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   s2   e Zd Zdddddefdddd	d
dddddfZdS )SMB2Ioctl_ResponserQ  rs   r}  r  r   )r  rW   r  )r  rW   r  r\   r  )r   r   z7self["OutputOffset"] - (64 + self["StructureSize"] - 1)r   r  r   Nr  r9   r9   r9   r:   r    s     r  c                   @   s<   e Zd ZdZddddddefdd	d
ddddfZdddZdS )SMB2QueryDirectoryr   rR   z<H=33)FileInformationClassr   r   )	FileIndexrW   r  r   )FileNameOffsetr   )FileNameLengthrU   OutputBufferLengthrW   )r   r   z9self["FileNameOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   self["FileNameLength"]r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE   ?  rH   zSMB2QueryDirectory.__init__rI   r\  r9   r9   r9   r:   r  /  s     r  c                   @   rM   )SMB2QueryDirectory_Responser{   )OutputBufferOffsetrU   r  )r   r   z=self["OutputBufferOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   zself["OutputBufferLength"]r   Nrm   r9   r9   r9   r:   r  D  ro   r  c                   @   rr  )	SMB2ChangeNotify)rR   z<H=32rI  r  r  r   )CompletionFilterrW   rv   Nr  r9   r9   r9   r:   r  P  rx  r  c                   @   rM   )SMB2ChangeNotify_Responser  Nrm   r9   r9   r9   r:   r  Z  ro   r  c                   @   rM   )FILE_NOTIFY_INFORMATION)r  )ActionrW   r  rW   	_FileNamez
_-FileNamer  FileNamer   Nrm   r9   r9   r9   r:   r  e  ro   r  c                   @   s@   e Zd ZdZdddddddd	d
ddefddddfZdddZdS )SMB2QueryInfo(   )rR   z<H=41InfoTyper   FileInfoClassr   r  )InputBufferOffsetr   rs   )InputBufferLengthrW   AdditionalInformationrW   r\   r  r   )r   r   z<self["InputBufferOffset"] - (64 + self["StructureSize"] - 1)r   )r   r   zself["InputBufferLength"]r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2QueryInfo.__init__rI   r\  r9   r9   r9   r:   r  o  s$    r  c                   @   rM   )SMB2_QUERY_QUOTA_INFO))ReturnSingler   )RestartScanr   rs   )SidListLengthrW   )StartSidLengthrW   )StartSidOffsetrW   )	SidBufferr   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SMB2QueryInfo_Responser  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_BASIC_INFORMATION))r  <q)r  r  )r  r  )r  r  r   <Lrv   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_STANDARD_INFORMATION))r  r  )r  r  )NumberOfLinksr  )DeletePendingr   )	Directoryz<Brs   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_INTERNAL_INFORMATION))IndexNumberr  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_EA_INFORMATION))EaSizer  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_ACCESS_INFORMATION))AccessFlagsr  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_POSITION_INFORMATION))CurrentByteOffsetz<QNrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_MODE_INFORMATION))ModerW   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_ALIGNMENT_INFORMATION))AlignmentRequirementr  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )FILE_NAME_INFORMATION)r  r  r  Nrm   r9   r9   r9   r:   r	    ro   r	  c                   @   sX   e Zd Zddefddefddefddefddefddefdde	fd	de
fd
deff	ZdS )FILE_ALL_INFORMATIONBasicInformationr   StandardInformationInternalInformationEaInformationAccessInformationPositionInformationModeInformationAlignmentInformationNameInformationN)rJ   rK   rL   r  r  r  r  r  r  r  r  r	  rn   r9   r9   r9   r:   r
    s    r
  c                   @   rM   )FILE_ATTRIBUTE_TAG_INFORMATION)r  r   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   s<   e Zd ZdZdddddddd	d
efddddfZdddZdS )SMB2SetInfor   r  r  r  r  )BufferOffsetr   rs   r  r  r   )r   r   z7self["BufferOffset"] - (64 + self["StructureSize"] - 1)r   r  r   Nc                 C   rB   r   rD   rF   r9   r9   r:   rE     rH   zSMB2SetInfo.__init__rI   r\  r9   r9   r9   r:   r    s     r  c                   @   rM   )SMB2SetInfo_Response))rR   z<H=2Nrm   r9   r9   r9   r:   r     ro   r  c                   @   rM   )FILE_RENAME_INFORMATION_TYPE_2))ReplaceIfExistsr   )rt   z7s="")RootDirectoryrb   r  r  r  Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SMB2_TRANSFORM_HEADER))rP   u   "ýSMBrg   )Nonceri   )OriginalMessageSizerW   rs   )EncryptionAlgorithmrU   re   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )!SMB2_COMPRESSION_TRANSFORM_HEADER))rP   rW   )OriginalCompressedSegmentSizerW   )CompressionAlgorithmrU   rI  )Offset_LengthrW   Nrm   r9   r9   r9   r:   r    ro   r  c                   @   rM   )SMB2_COMPRESSION_PAYLOAD_HEADER))AlgorithmIdrU   rs   rS  Nrm   r9   r9   r9   r:   r#  #  ro   r#  c                   @   rM   )#SMB2_COMPRESSION_PATTERN_PAYLOAD_V1))PatternB=0)rN  r'  )r   r'  )RepetitionsrW   Nrm   r9   r9   r9   r:   r%  *  ro   r%  c                   @   rM   )FileSecInformation))Revisionz<h=1)Typez<h=0)OffsetToOwner<I=0)OffsetToGroupr-  )OffsetToSACLr-  )OffsetToDACLr-  Nrm   r9   r9   r9   r:   r)  3  ro   r)  N(  
__future__r   r   impacket.structurer   SMB2_PACKET_SIZESMB2_NEGOTIATESMB2_SESSION_SETUPSMB2_LOGOFFSMB2_TREE_CONNECTSMB2_TREE_DISCONNECTSMB2_CREATE
SMB2_CLOSE
SMB2_FLUSH	SMB2_READ
SMB2_WRITE	SMB2_LOCK
SMB2_IOCTLSMB2_CANCEL	SMB2_ECHOSMB2_QUERY_DIRECTORYSMB2_CHANGE_NOTIFYSMB2_QUERY_INFOSMB2_SET_INFOSMB2_OPLOCK_BREAKSMB2_FLAGS_SERVER_TO_REDIRSMB2_FLAGS_ASYNC_COMMANDSMB2_FLAGS_RELATED_OPERATIONSSMB2_FLAGS_SIGNEDSMB2_FLAGS_DFS_OPERATIONSSMB2_FLAGS_REPLAY_OPERATIONSYMLINK_FLAG_ABSOLUTESYMLINK_FLAG_RELATIVESMB2_NEGOTIATE_SIGNING_ENABLEDSMB2_NEGOTIATE_SIGNING_REQUIRED#SMB2_PREAUTH_INTEGRITY_CAPABILITIESSMB2_ENCRYPTION_CAPABILITIESSMB2_COMPRESSION_CAPABILITIES!SMB2_NETNAME_NEGOTIATE_CONTEXT_ID'SMB2_COMPRESSION_CAPABILITIES_FLAG_NONE*SMB2_COMPRESSION_CAPABILITIES_FLAG_CHAINEDCOMPRESSION_ALGORITHM_NONECOMPRESSION_ALGORITHM_LZNT1COMPRESSION_ALGORITHM_LZ77"COMPRESSION_ALGORITHM_LZ77_HUFFMAN COMPRESSION_ALGORITHM_PATTERN_V1SMB2_GLOBAL_CAP_DFSSMB2_GLOBAL_CAP_LEASINGSMB2_GLOBAL_CAP_LARGE_MTUSMB2_GLOBAL_CAP_MULTI_CHANNEL"SMB2_GLOBAL_CAP_PERSISTENT_HANDLES!SMB2_GLOBAL_CAP_DIRECTORY_LEASINGSMB2_GLOBAL_CAP_ENCRYPTIONSMB2_DIALECT_002SMB2_DIALECT_21SMB2_DIALECT_30SMB2_DIALECT_302SMB2_DIALECT_311SMB2_DIALECT_WILDCARDSMB2_SESSION_FLAG_BINDINGSMB2_SESSION_FLAG_IS_GUESTSMB2_SESSION_FLAG_IS_NULLSMB2_SESSION_FLAG_ENCRYPT_DATASMB2_SHARE_TYPE_DISKSMB2_SHARE_TYPE_PIPESMB2_SHARE_TYPE_PRINTSMB2_SHAREFLAG_MANUAL_CACHINGSMB2_SHAREFLAG_AUTO_CACHINGSMB2_SHAREFLAG_VDO_CACHINGSMB2_SHAREFLAG_NO_CACHINGSMB2_SHAREFLAG_DFSSMB2_SHAREFLAG_DFS_ROOT'SMB2_SHAREFLAG_RESTRICT_EXCLUSIVE_OPENS"SMB2_SHAREFLAG_FORCE_SHARED_DELETE&SMB2_SHAREFLAG_ALLOW_NAMESPACE_CACHING*SMB2_SHAREFLAG_ACCESS_BASED_DIRECTORY_ENUM#SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCKSMB2_SHAREFLAG_ENABLE_HASH_V1SMB2_SHAREFLAG_ENABLE_HASH_V2SMB2_SHAREFLAG_ENCRYPT_DATASMB2_SHARE_CAP_DFS&SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITYSMB2_SHARE_CAP_SCALEOUTSMB2_SHARE_CAP_CLUSTERSMB2_OPLOCK_LEVEL_NONESMB2_OPLOCK_LEVEL_IISMB2_OPLOCK_LEVEL_EXCLUSIVESMB2_OPLOCK_LEVEL_BATCHSMB2_OPLOCK_LEVEL_LEASESMB2_IL_ANONYMOUSSMB2_IL_IDENTIFICATIONSMB2_IL_IMPERSONATIONSMB2_IL_DELEGATEFILE_ATTRIBUTE_ARCHIVEFILE_ATTRIBUTE_COMPRESSEDFILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_ENCRYPTEDFILE_ATTRIBUTE_HIDDENFILE_ATTRIBUTE_NORMAL"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDFILE_ATTRIBUTE_OFFLINEFILE_ATTRIBUTE_READONLYFILE_ATTRIBUTE_REPARSE_POINTFILE_ATTRIBUTE_SPARSE_FILEFILE_ATTRIBUTE_SYSTEMFILE_ATTRIBUTE_TEMPORARYFILE_ATTRIBUTE_INTEGRITY_STREAMFILE_ATTRIBUTE_NO_SCRUB_DATAFILE_SHARE_READFILE_SHARE_WRITEFILE_SHARE_DELETEFILE_SUPERSEDE	FILE_OPENFILE_CREATEFILE_OPEN_IFFILE_OVERWRITEFILE_OVERWRITE_IFFILE_DIRECTORY_FILEFILE_WRITE_THROUGHFILE_SEQUENTIAL_ONLYFILE_NO_INTERMEDIATE_BUFFERINGFILE_SYNCHRONOUS_IO_ALERTFILE_SYNCHRONOUS_IO_NONALERTFILE_NON_DIRECTORY_FILEFILE_COMPLETE_IF_OPLOCKEDFILE_NO_EA_KNOWLEDGEFILE_RANDOM_ACCESSFILE_DELETE_ON_CLOSEFILE_OPEN_BY_FILE_IDFILE_OPEN_FOR_BACKUP_INTENTFILE_NO_COMPRESSIONFILE_RESERVE_OPFILTERFILE_OPEN_REPARSE_POINTFILE_OPEN_NO_RECALLFILE_OPEN_FOR_FREE_SPACE_QUERYFILE_READ_DATAFILE_WRITE_DATAFILE_APPEND_DATAFILE_READ_EAFILE_WRITE_EAFILE_DELETE_CHILDFILE_EXECUTEFILE_READ_ATTRIBUTESFILE_WRITE_ATTRIBUTESDELETEREAD_CONTROL	WRITE_DACWRITE_OWNERSYNCHRONIZEACCESS_SYSTEM_SECURITYMAXIMUM_ALLOWEDGENERIC_ALLGENERIC_EXECUTEGENERIC_WRITEGENERIC_READFILE_LIST_DIRECTORYFILE_ADD_FILEFILE_ADD_SUBDIRECTORYFILE_TRAVERSESMB2_CREATE_EA_BUFFERSMB2_CREATE_SD_BUFFERr&  r%  r.  r)  r/  rD  SMB2_CREATE_REQUESTr8  r;  rA  rB  SMB2_CREATE_FLAG_REPARSEPOINTFILE_NEED_EAFILE_SUPERSEDEDFILE_OPENEDFILE_CREATEDFILE_OVERWRITTENSMB2_LEASE_NONESMB2_LEASE_READ_CACHINGSMB2_LEASE_HANDLE_CACHINGSMB2_LEASE_WRITE_CACHING$SMB2_LEASE_FLAG_PARENT_LEASE_KEY_SETSMB2_DHANDLE_FLAG_PERSISTENT SMB2_CLOSE_FLAG_POSTQUERY_ATTRIBSMB2_CHANNEL_NONESMB2_CHANNEL_RDMA_V1SMB2_WRITEFLAG_WRITE_THROUGH)SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIREDSMB2_LOCKFLAG_SHARED_LOCKSMB2_LOCKFLAG_EXCLUSIVE_LOCKSMB2_LOCKFLAG_UNLOCKSMB2_LOCKFLAG_FAIL_IMMEDIATELYFSCTL_DFS_GET_REFERRALSFSCTL_PIPE_PEEKFSCTL_PIPE_WAITFSCTL_PIPE_TRANSCEIVEFSCTL_SRV_COPYCHUNKFSCTL_SRV_ENUMERATE_SNAPSHOTSFSCTL_SRV_REQUEST_RESUME_KEYFSCTL_SRV_READ_HASHFSCTL_SRV_COPYCHUNK_WRITEFSCTL_LMR_REQUEST_RESILIENCY"FSCTL_QUERY_NETWORK_INTERFACE_INFOFSCTL_SET_REPARSE_POINTFSCTL_DELETE_REPARSE_POINTFSCTL_DFS_GET_REFERRALS_EXFSCTL_FILE_LEVEL_TRIMFSCTL_VALIDATE_NEGOTIATE_INFOSMB2_0_IOCTL_IS_FSCTLSRV_HASH_TYPE_PEER_DISTSRV_HASH_VER_1SRV_HASH_VER_2r  r  RSS_CAPABLERDMA_CAPABLEFILE_DIRECTORY_INFORMATIONFILE_FULL_DIRECTORY_INFORMATION!FILEID_FULL_DIRECTORY_INFORMATIONFILE_BOTH_DIRECTORY_INFORMATION!FILEID_BOTH_DIRECTORY_INFORMATIONFILENAMES_INFORMATIONSMB2_RESTART_SCANSSMB2_RETURN_SINGLE_ENTRYSMB2_INDEX_SPECIFIEDSMB2_REOPENSMB2_WATCH_TREEFILE_NOTIFY_CHANGE_FILE_NAMEFILE_NOTIFY_CHANGE_DIR_NAMEFILE_NOTIFY_CHANGE_ATTRIBUTESFILE_NOTIFY_CHANGE_SIZEFILE_NOTIFY_CHANGE_LAST_WRITEFILE_NOTIFY_CHANGE_LAST_ACCESSFILE_NOTIFY_CHANGE_CREATIONFILE_NOTIFY_CHANGE_EAFILE_NOTIFY_CHANGE_SECURITYFILE_NOTIFY_CHANGE_STREAM_NAMEFILE_NOTIFY_CHANGE_STREAM_SIZEFILE_NOTIFY_CHANGE_STREAM_WRITEFILE_ACTION_ADDEDFILE_ACTION_REMOVEDFILE_ACTION_MODIFIEDFILE_ACTION_RENAMED_OLD_NAMEFILE_ACTION_RENAMED_NEW_NAMESMB2_0_INFO_FILESMB2_0_INFO_FILESYSTEMSMB2_0_INFO_SECURITYSMB2_0_INFO_QUOTASMB2_SEC_INFO_00SMB2_FILE_ACCESS_INFOSMB2_FILE_ALIGNMENT_INFOSMB2_FILE_ALL_INFOSMB2_FILE_ALLOCATION_INFOSMB2_FILE_ALTERNATE_NAME_INFOSMB2_ATTRIBUTE_TAG_INFOSMB2_FILE_BASIC_INFOSMB2_FILE_BOTH_DIRECTORY_INFOSMB2_FILE_COMPRESSION_INFOSMB2_FILE_DIRECTORY_INFOSMB2_FILE_DISPOSITION_INFOSMB2_FILE_EA_INFOSMB2_FILE_END_OF_FILE_INFOSMB2_FULL_DIRECTORY_INFOSMB2_FULL_EA_INFOSMB2_FILE_HARDLINK_INFO SMB2_FILE_ID_BOTH_DIRECTORY_INFO SMB2_FILE_ID_FULL_DIRECTORY_INFO%SMB2_FILE_ID_GLOBAL_TX_DIRECTORY_INFOSMB2_FILE_INTERNAL_INFOSMB2_FILE_LINK_INFOSMB2_FILE_MAILSLOT_QUERY_INFOSMB2_FILE_MAILSLOT_SET_INFOSMB2_FILE_MODE_INFOSMB2_FILE_MOVE_CLUSTER_INFOSMB2_FILE_NAME_INFOSMB2_FILE_NAMES_INFOSMB2_FILE_NETWORK_OPEN_INFOSMB2_FILE_NORMALIZED_NAME_INFOSMB2_FILE_OBJECT_ID_INFOSMB2_FILE_PIPE_INFOSMB2_FILE_PIPE_LOCAL_INFOSMB2_FILE_PIPE_REMOTE_INFOSMB2_FILE_POSITION_INFOSMB2_FILE_QUOTA_INFOSMB2_FILE_RENAME_INFOSMB2_FILE_REPARSE_POINT_INFOSMB2_FILE_SFIO_RESERVE_INFOSMB2_FILE_SHORT_NAME_INFOSMB2_FILE_STANDARD_INFOSMB2_FILE_STANDARD_LINK_INFOSMB2_FILE_STREAM_INFOSMB2_FILE_TRACKING_INFO SMB2_FILE_VALID_DATA_LENGTH_INFOSMB2_FILESYSTEM_VOLUME_INFOSMB2_FILESYSTEM_LABEL_INFOSMB2_FILESYSTEM_SIZE_INFOSMB2_FILESYSTEM_DEVICE_INFOSMB2_FILESYSTEM_ATTRIBUTE_INFOSMB2_FILESYSTEM_CONTROL_INFOSMB2_FILESYSTEM_FULL_SIZE_INFOSMB2_FILESYSTEM_OBJECT_ID_INFO SMB2_FILESYSTEM_DRIVER_PATH_INFO SMB2_FILESYSTEM_SECTOR_SIZE_INFOOWNER_SECURITY_INFORMATIONGROUP_SECURITY_INFORMATIONDACL_SECURITY_INFORMATIONSACL_SECURITY_INFORMATIONLABEL_SECURITY_INFORMATIONSL_RESTART_SCANSL_RETURN_SINGLE_ENTRYSL_INDEX_SPECIFIEDSMB2_ENCRYPTION_AES128_CCMSMB2_ENCRYPTION_AES128_GCMr5   rN   rp   ru   rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r(  r,  r0  SMB2_CREATE_RESPONSE_LEASESMB2_CREATE_RESPONSE_LEASE_V2r@  rG  rK  rM  rO  rP  r]  r`  re  rh  SMB2OplockBreakAcknowledgmentSMB2OplockBreakResponseri  rp  SMB2LeaseBreakResponserq  rs  ry  rz  SMB2Echo_Responser{  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  r  r  r  r  r	  r
  r  r  r  r  r  r  r#  r%  r)  r9   r9   r9   r:   <module>   sN  	

		
	


					

	




		