Releases: jborean93/smbprotocol
Releases · jborean93/smbprotocol
v1.8.1
v1.8.0
1.8.0 - 2021-10-21
- Added support for 256bit keyed encryption ciphers
- Added support for signing with AES GCM
- Now sends the
SMB2_NETNAME_NEGOTIATE_CONTEXT_ID
with the negotiate request - Adds the Python requirement of pykrb5 for Kerberos support on non-Windows
- Fix unpacking security descriptor ACEs with extra data on the end - #143
- Set
index_number
inFileInternalInformation
to be an unsigned integer to match the other structures - Clear out expired DFS referrals to avoid memory leaks and stale DFS information - #136
v1.7.0
1.7.0 - 2021-09-22
- Improve connection health checks to reduce the occurances of an infinite deadlock
- Added more exception error classes
- Added
create_action
to theOpen
object that describes how the file was opened - Added
follow_symlinks
option toSMBDirEntry.from_path
to control whether the entry is based on the path or the link target (if there is one)
v1.6.2
v1.6.1
v1.6.0
1.6.0 - 2021-07-28
- Dropped support for Python 2.7 and 3.5
- Add performance improvement on reads with large files
- Added the
require_signing
kwarg tosmbclient.register_session()
to allow the caller to control whether signing is required on the connection or not - Fix
OverflowError
when handling FILETIME values beyond the year 9999 - caps the value to9999-12-31
due to a Python limitation - Fix up credit charge calculation which causes a
STATUS_INVALID_PARAMETER
response for certain read/write lengths - Ensure responses with a failure are cleaned up from the outstanding request table to avoid memory leaks
1.5.1 - 2021-05-08
- Unified DFS path handling when using any API that uses a transaction to open the file
- This includes
smbclient.rename
andsmbclient.replace
- This includes
- Fixed up
smbclient.rename
to work with directories smbclient.scandir
will continue to use the connection cache when getting stat information of a dir entrysmbclient.shutil.rmtree
will continue to use the connection cache when removing child entries
v1.5.0
1.5.0 - 2021-03-25
- Added
smbprotocol.exceptions.SMBConnectionClosed
that is raised when trying to send or receive data on a connection that has been closed - Added
smbprotocol.exceptions.WrongPassword
that is raised when some servers indicate the password is not correct or the account is locked out - Do not attempt to reuse any cached connections that have been closed in
smbclient
- Added a lock when writing to the socket, only 1 thread can write a message at a single point in time
- Revamped the SMB receiver code to simplify the logic and make it more durable
- Removed the TCP recv thread for each connection, now each connection uses just 1 thread instead of 2
- Be more defensive when reading data from a socket to ensure we get all the data we require
- Handled server side FIN packets that close the connection unexpectedly, any requests waiting for a response will raise
SMBConnectionClosed
v1.4.0
1.4.0 - 2021-02-02
- Fixed up secure negotiation logic when connecting to older SMB dialects
- Will attempt to perform secure negotiation even on older dialects that may not implement it properly
- Added
ClientConfig
optionrequire_secure_negotiate
to globally turn off secure negotiation if the client wishes - Fix explicit
ntlm
orkerberos
authentication when the server response with the initial SPNEGO mech list token
v1.3.0
1.3.0 - 2021-01-23
- Changed initial credit request from
256
to64
when creating the SMB session- This is done to avoid overloading the SMB server
- If
smbclient
requires more credits to perform an operation it will request it automatically
- Improve credit handling when reading and writing large amounts of data to reduce the number of requests being made
- Fixed up
write()
insmbclient.open_file()
to be able to write bytes greater than themax_write_size
- Fixed issue when receiving an unknown NtStatus error code from the server
- Added
PipeBusy
exception forSTATUS_PIPE_NOT_AVAILABLE 0xC00000AD
error responses - Fix credit granting calculation when receiving a compound response
- Original logic granted
len(responses) - 1
credits than what the server actually given causing errors when the client ran out of credits without it knowing
- Original logic granted
- Added
auth_protocol
toSession
,ClientConfig
, andregister_session()
to control what authentication protocol is used- This can be
negotiate
(default),kerberos
, orntlm
wherenegotiate
selectskerberos
orntlm
depending on what's available
- This can be