commit 52f41576f57b661957acbbe48c7381c9fbb74c772a31a119438b721042044263 Author: Matej Cepl Date: Tue Nov 12 01:24:20 2024 +0000 - Update to version 1.15.0 * Fix Impacket logoff session id check. * Update session id logic. * Add smbclient.liststreams to enumerate ADS streams. * Add some type annotations, most notably to smbclient.open_file * Add Python 3.13 support. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-smbprotocol?expand=0&rev=46 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/python-smbprotocol-1.13.0.tar.gz b/python-smbprotocol-1.13.0.tar.gz new file mode 100644 index 0000000..a3dc468 --- /dev/null +++ b/python-smbprotocol-1.13.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c16c1502d269369f7b45a29ed331fd7bbf6319022b13b5b7a11609b477b8f79 +size 190586 diff --git a/python-smbprotocol-1.14.0.tar.gz b/python-smbprotocol-1.14.0.tar.gz new file mode 100644 index 0000000..b0f388e --- /dev/null +++ b/python-smbprotocol-1.14.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:954bc9571238f244c490b01e4fbcdeef1a9580d41d84ec0916e0a84108cc14e7 +size 190856 diff --git a/python-smbprotocol-1.15.0.tar.gz b/python-smbprotocol-1.15.0.tar.gz new file mode 100644 index 0000000..5923b23 --- /dev/null +++ b/python-smbprotocol-1.15.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af81861d2dc4698c49e3d965348c240f711a6d9dba4b0d1e15bd299ec2480d88 +size 191844 diff --git a/python-smbprotocol.changes b/python-smbprotocol.changes new file mode 100644 index 0000000..11e9425 --- /dev/null +++ b/python-smbprotocol.changes @@ -0,0 +1,341 @@ +------------------------------------------------------------------- +Mon Nov 11 22:08:22 UTC 2024 - Martin Hauke + +- Update to version 1.15.0 + * Fix Impacket logoff session id check. + * Update session id logic. + * Add smbclient.liststreams to enumerate ADS streams. + * Add some type annotations, most notably to smbclient.open_file + * Add Python 3.13 support. + +------------------------------------------------------------------- +Sun Nov 10 19:02:11 UTC 2024 - Martin Hauke + +- Update to version 1.14.0 + * type information of SMBDirEntryInformation.last_write_time set + to datetime. + * Customizable receive timeout for SMB Connection + * Dropped support for Python 3.7 + * SMBDirEntryInformation.last_write_time is now annotated as + datetime.datetime. Previously, it was datetime.date. + +------------------------------------------------------------------- +Thu Mar 21 17:34:50 UTC 2024 - Dirk Müller + +- update to 1.13.0: + * Added the property `smb_info` on `SMBDirEntry` which returns + a named tuple `SMBDirEntryInformation` containing metadata + already retrieved in the `scandir` operation. + * This avoid having to call `stat()` to retrieve data like the + file attributes or datetime fields that is already available + * Ensure `DateTimeField` values are set to `UTC` timezones as + FILETIME values are in UTC + * Stop using `datetime.datetime.utcfromtimestamp()` as it has + been deprecated + * Added default timeout for disconnect operations for 60 + seconds to ensure the process doesn't hang forever when + closing a broken connection + * `smbprotocol.connection.Connection.disconnect()` now waits + (with a timeout) for the message processing threads to be + stopped before returning. + * Do not set the SMB SessionId and TreeId in the headers to + `0xFFFFFFFF` for related compound requests + + Ensures the source file for `shutil.copyfile` is opened + with `share_access="r"` for better compatibility with files + already opened by something else + + Remove endless authentication loop when the context is + complete and no more input messages are needed + +------------------------------------------------------------------- +Fri Nov 24 13:00:19 UTC 2023 - Martin Hauke + +- Update to version 1.12.0 + * Add 0xc000007f to mapping. + * Added the DiskFull error and message for the NTSTATUS code + 0xC000007F. + +------------------------------------------------------------------- +Tue Sep 5 21:56:00 UTC 2023 - Martin Hauke + +- Update to version 1.11.0 + * Fix up pre authenticated session id lookups that were failing + with Linux ksmbd. + * Removes logging.NullHandler() being set in the root + smbprotocol namespace. + * Adds basic support for remote to local and vice versa file + operations with smbclient.shutil.copytree. + * Fixes DFS infinite recursion error when dealing with a file + that does not exist on a DFS namespace. + +------------------------------------------------------------------- +Mon Dec 5 13:36:15 UTC 2022 - Yogalakshmi Arunachalam + +- Update to version 1.10.1 + * Raise the original BadNetworkName error if the server doesn't indicate it supports DFS or + FSDriverRequired was raised trying to lookup the DFS information - #196 + * Fix pre auth session id tracking if the intermediate token messages return 0 as the session id + +------------------------------------------------------------------- +Sun Nov 6 20:32:55 UTC 2022 - Martin Hauke + +- Update to version 1.10.0 + * Allow server side copy across different shares on the same + server. + * Improve DFS file opens. + * Fix rename operations for a DFS path. + * Fix negotiate request context padding. + +------------------------------------------------------------------- +Fri Oct 21 13:19:59 UTC 2022 - pgajdos@suse.com + +- python-six is not required + +------------------------------------------------------------------- +Fri Oct 7 16:09:45 UTC 2022 - Yogalakshmi Arunachalam + +- Update to version 1.9.0 + * Fix connection cache reuse for some DFS referral requests + * Add smbclient.path to the smbclient import allowing import smbclient; smbclient.path.func() + +------------------------------------------------------------------- +Thu Nov 18 21:49:52 UTC 2021 - Martin Hauke + +- Update to version 1.8.3 + * Set additional_information field in SMB2SetInfoRequest to a + flags field rather than a single enum as per protocol docs. + +------------------------------------------------------------------- +Tue Nov 2 20:52:01 UTC 2021 - Martin Hauke + +- Update to version 1.8.2 + * Add missing FileAttributes enum values + * Set messages with FileAttributes to be non-strict allowing + unknown values in the future to be parsed without an error + +------------------------------------------------------------------- +Wed Oct 27 19:19:23 UTC 2021 - Martin Hauke + +- Update to version 1.8.1 + * Raises ObjectPathNotFound if a DFS referral is required but + not referrals are available (#149) + +------------------------------------------------------------------- +Mon Oct 25 19:46:07 UTC 2021 - Martin Hauke + +- Update to version 1.8.0 + * 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 + * Set index_number in FileInternalInformation to be an unsigned + integer to match the other structures + * Clear out expired DFS referrals to avoid memory leaks and + stale DFS information +- Update to version 1.7.0 + * Improve connection health checks to reduce the occurances of + an infinite deadlock + * Added more exception error classes + * Added create_action to the Open object that describes how the + file was opened + * Added follow_symlinks option to SMBDirEntry.from_path to + control whether the entry. + +------------------------------------------------------------------- +Tue Aug 17 15:32:40 UTC 2021 - Martin Hauke + +- Update to version 1.6.2 + * Fix up cached credential logic when setting domain_controller + in the initial config singleton +- Update to version 1.6.1 + * Remove print() statement that was used during testing +- Update to version 1.6.0 + * Dropped support for Python 2.7 and 3.5 + * Add performance improvement on reads with large files + * Added the require_signing kwarg to smbclient.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 to 9999-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. + +------------------------------------------------------------------- +Thu May 13 16:29:17 UTC 2021 - Martin Hauke + +- Update to version 1.5.1 + * Unified DFS path handling when using any API that uses a + transaction to open the file. + - This includes smbclient.rename and smbclient.replace + * Fixed up smbclient.rename to work with directories. + * smbclient.scandir will continue to use the connection cache + when getting stat information of a dir entry. + * smbclient.shutil.rmtree will continue to use the connection + cache when removing child entries. + +------------------------------------------------------------------- +Thu Mar 25 09:39:12 UTC 2021 - Martin Hauke + +- Update to version 1.5.0 + * 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. + +------------------------------------------------------------------- +Wed Feb 3 22:22:15 UTC 2021 - Martin Hauke + +- Update to version 1.4.0 + * 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` option `require_secure_negotiate` to + globally turn off secure negotiation if the client wishes. + * Fix explicit `ntlm` or `kerberos` authentication when the + server response with the initial SPNEGO mech list token. + +------------------------------------------------------------------- +Thu Jan 28 21:52:39 UTC 2021 - Martin Hauke + +- Update to version 1.3.0 + * Changed initial credit request from 256 to 64 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() in smbclient.open_file() to be able to write + bytes greater than the max_write_size. + * Fixed issue when receiving an unknown NtStatus error code from + the server. + * Added PipeBusy exception for STATUS_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. + * Added auth_protocol to Session, ClientConfig, and + register_session() to control what authentication protocol is + used. + + This can be negotiate (default), kerberos, or ntlm where + negotiate selects kerberos or ntlm depending on what's + available. + +------------------------------------------------------------------- +Sun Oct 25 15:55:37 UTC 2020 - Martin Hauke + +- Update to version 1.2.0 + * Added experimental support for DFS shares when using smbclient + function. + * Added smbclient.ClientConfig() to set global default options + on new connections. + * Moved the SMB Header structures to smbprotocol.header. + * Added null_terminated option for a TextField value. + * Fix broken pipe errors that occur on long running connections + by sending a echo request for each connection session every + 10 minutes. + +------------------------------------------------------------------- +Tue Aug 25 12:38:01 UTC 2020 - Martin Hauke + +- Update to version 1.1.0 + * Speed up logging statements for large messages like a read and + write message. + * Changed authentication dep to pyspnego that handles all the + authentication work. + * Fixed up authentication against hosts that don't present the + initial GSSAPI token like Azure File Storage. + * Added specific exception types for every 'NtStatus' value to + make it easier to catch only specific exceptions. + * Added the following exceptions to the list of known exception + codes: + * 'STATUS_NETWORK_NAME_DELETED' + * 'STATUS_NOT_FOUND' + * 'STATUS_PATH_NOT_COVERED' + * 'STATUS_DFS_UNAVAILABLE' + * 'STATUS_SERVER_UNAVAILABLE' + * Fix session key generation when creating a new session from + an existing connection object. + +------------------------------------------------------------------- +Wed Dec 11 20:00:41 UTC 2019 - Martin Hauke + +- Update to version 1.0.1 + * Fix issue when reading a large file that exceeds 65KB and + raises STATUS_END_OF_FILE. + * Fix issue where listdir, scandir, walk would only enumerate a + subset of entries in a directories with lots of sub files/ + folders + +------------------------------------------------------------------- +Sat Nov 30 10:49:03 UTC 2019 - Martin Hauke + +- Update to version 1.0.0 + * Dropped support for Python 2.6 and Python 3.4 + * Added the smbclient package that provides a higher level API + for interactive with SMB servers + * Deprecated smbprotocol.query_info in favour of + smbprotocol.file_info, query_info will be removed in the next + major release + * Add automatic symlink resolver when a symlink is in the path + being opened + * Fix issue when trying to connect to host with IPv6 address + * Fix response parsing for SMB2 Create Response Lease V1 and V2 + * Added the ability to set the Oplock level when opening a file + * Revamped the socket listener and message processor to run in a + separate thread for faster message resolving + * Added the FileSystemWatcher in change_notify.py to provider a + way to watch for changes on the SMB filesystem + * Added the .cancel() method onto a Request to cancel an SMB + request on the server + +------------------------------------------------------------------- +Thu Sep 19 18:50:13 UTC 2019 - Martin Hauke + +- Update to version 0.2.0 + * Fix issue where timeout was not being applied to the new + connection + * Fix various deprecated regex escape patterns + * Simplified the fallback NTLM context object + +------------------------------------------------------------------- +Thu Jan 3 01:57:40 UTC 2019 - Jan Engelhardt + +- Use noun phrase in summary. + +------------------------------------------------------------------- +Sat Dec 29 14:10:26 UTC 2018 - mardnh@gmx.de + +- Update to version 0.1.1 + * Fix initial negotiate message not setting connection timeout + value. + * Fix endless loop when running a compound message that failed. + +------------------------------------------------------------------- +Thu Sep 6 17:42:06 UTC 2018 - mardnh@gmx.de + +- Initial package, version 0.1.0 diff --git a/python-smbprotocol.spec b/python-smbprotocol.spec new file mode 100644 index 0000000..34a2a6c --- /dev/null +++ b/python-smbprotocol.spec @@ -0,0 +1,78 @@ +# +# spec file for package python-smbprotocol +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-smbprotocol +Version: 1.15.0 +Release: 0 +Summary: SMBv2/v3 client for Python 2 and 3 +License: MIT +Group: Development/Languages/Python +URL: https://github.com/jborean93/smbprotocol +Source: https://github.com/jborean93/smbprotocol/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +BuildRequires: %{python_module cryptography >= 2.0} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pyspnego} +BuildRequires: %{python_module pytest-mock} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-cryptography >= 2.0 +Requires: python-pyspnego +Suggests: python-gssapi >= 1.4.1 +BuildArch: noarch +%python_subpackages + +%description +This library implements the SMBv2 and SMBv3 protocol. + +Features +-------- +- Negotiation of the SMB 2.0.2 protocol to SMB 3.1.1 (Windows 10/Server + 2016) +- Authentication with both NTLM and Kerberos +- Message signing +- Message encryption (SMB 3.x.x+) +- Connect to a Tree/Share +- Opening of files, pipes and directories +- Set create contexts when opening files +- Read and writing of files and pipes +- Sending IOCTL commands +- Sending of multiple messages in one packet (compounding) + +%prep +%setup -q -n smbprotocol-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +%pytest + +%files %{python_files} +%license LICENSE +%doc CHANGELOG.md README.md +%{python_sitelib}/smbclient +%{python_sitelib}/smbprotocol +%{python_sitelib}/smbprotocol-%{version}*-info + +%changelog