#!/usr/bin/env python3 # -*- coding: utf-8 -*- # File name : setup.py # Author : Podalirius (@podalirius_) # Date created : 23 may 2024 import setuptools VERSION = "2.1.6" long_description = """

smbclient-ng, a fast and user friendly way to interact with SMB shares.
GitHub release (latest by date) PyPI YouTube Channel Subscribers

## Features - [x] `bat`: Pretty prints the contents of a file. Syntax: `bat ` - [x] `cat`: Get the contents of a file. Syntax: `cat ` - [x] `cd`: Change the current working directory. Syntax: `cd ` - [x] `close`: Closes the SMB connection to the remote machine. Syntax: `close` - [x] `connect`: Connect to the remote machine (useful if connection timed out). Syntax: `connect` - [x] `dir`: List the contents of the current working directory. Syntax: `dir` - [x] `exit`: Exits the smbclient-ng script. Syntax: `exit` - [x] `get`: Get a remote file. Syntax: `get [-r] ` - [x] `help`: Displays this help message. Syntax: `help` - [x] `info`: Get information about the server and or the share. Syntax: `info [server|share]` - [x] `lbat`: Pretty prints the contents of a local file. Syntax: `lbat ` - [x] `lcat`: Print the contents of a local file. Syntax: `lcat ` - [x] `lcd`: Changes the current local directory. Syntax: `lcd ` - [x] `lcp`: Create a copy of a local file. Syntax: `lcp ` - [x] `lls`: Lists the contents of the current local directory. Syntax: `lls` - [x] `lmkdir`: Creates a new local directory. Syntax: `lmkdir ` - [x] `lpwd`: Shows the current local directory. Syntax: `lpwd` - [x] `lrename`: Renames a local file. Syntax: `lrename ` - [x] `lrm`: Removes a local file. Syntax: `lrm ` - [x] `lrmdir`: Removes a local directory. Syntax: `lrmdir ` - [x] `ls`: List the contents of the current remote working directory. Syntax: `ls` - [x] `ltree`: Displays a tree view of the local directories. Syntax: `ltree [directory]` - [x] `mkdir`: Creates a new remote directory. Syntax: `mkdir ` - [x] `module`: Loads a specific module for additional functionalities. Syntax: `module ` - [x] `mount`: Creates a mount point of the remote share on the local machine. Syntax: `mount ` - [x] `put`: Put a local file or directory in a remote directory. Syntax: `put [-r] ` - [x] `reconnect`: Reconnect to the remote machine (useful if connection timed out). Syntax: `reconnect` - [x] `reset`: Reset the TTY output, useful if it was broken after printing a binary file on stdout. Syntax: `reset` - [x] `rm`: Removes a remote file. Syntax: `rm ` - [x] `rmdir`: Removes a remote directory. Syntax: `rmdir ` - [x] `sessions`: Manage the SMB sessions. Syntax: `sessions [interact|create|delete|execute|list]` - [x] `shares`: Lists the SMB shares served by the remote machine. Syntax: `shares` - [x] `sizeof`: Recursively compute the size of a folder. Syntax: `sizeof [directory|file]` - [x] `tree`: Displays a tree view of the remote directories. Syntax: `tree [directory]` - [x] `umount`: Removes a mount point of the remote share on the local machine. Syntax: `umount ` - [x] `use`: Use a SMB share. Syntax: `use ` ## Install To install `smbclient-ng`, you can use pip. Run the following command in your terminal: ``` python3 -m pip install smbclientng ``` ## Demonstration ![](./.github/example.png) ## Usage ``` $ ./smbclient-ng.py _ _ _ _ ___ _ __ ___ | |__ ___| (_) ___ _ __ | |_ _ __ __ _ / __| '_ ` _ \| '_ \ / __| | |/ _ \ '_ \| __|____| '_ \ / _` | \__ \ | | | | | |_) | (__| | | __/ | | | ||_____| | | | (_| | |___/_| |_| |_|_.__/ \___|_|_|\___|_| |_|\__| |_| |_|\__, | by @podalirius_ v2.1.5 |___/ usage: smbclient-ng.py [-h] [--debug] [--no-colors] [-S startup_script] [-N] [-L LOGFILE] --host HOST [--port PORT] [--kdcHost FQDN KDC] [-d DOMAIN] [-u USER] [--no-pass | -p [PASSWORD] | -H [LMHASH:]NTHASH | --aes-key hex key] [-k] smbclient-ng, a fast and user friendly way to interact with SMB shares. options: -h, --help show this help message and exit --debug Debug mode. --no-colors No colors mode. -S startup_script, --startup-script startup_script File containing the list of commands to be typed at start of the console. -N, --not-interactive Non interactive mode. -L LOGFILE, --logfile LOGFILE File to write logs to. Target: --host HOST IP address or hostname of the SMB Server to connect to. --port PORT Port of the SMB Server to connect to. (default: 445) Authentication & connection: --kdcHost FQDN KDC FQDN of KDC for Kerberos. -d DOMAIN, --domain DOMAIN (FQDN) domain to authenticate to. -u USER, --user USER User to authenticate with. --no-pass Don't ask for password (useful for -k). -p [PASSWORD], --password [PASSWORD] Password to authenticate with. -H [LMHASH:]NTHASH, --hashes [LMHASH:]NTHASH NT/LM hashes, format is LMhash:NThash. --aes-key hex key AES key to use for Kerberos Authentication (128 or 256 bits). -k, --kerberos Use Kerberos authentication. Grabs credentials from .ccache file (KRB5CCNAME) based on target parameters. If valid credentials cannot be found, it will use the ones specified in the command line. ``` ## Quick win commands + Connect to a remote SMB server: ``` ./smbclient-ng.py -d "LAB" -u "Administrator" -p 'Admin123!' --host "10.0.0.201" ``` ## Contributing Pull requests are welcome. Feel free to open an issue if you want to add other features. """.strip() with open("requirements.txt", "r", encoding="utf-8") as f: requirements = [x.strip() for x in f.readlines()] setuptools.setup( name="smbclientng", version=VERSION, description="smbclient-ng, a fast and user friendly way to interact with SMB shares.", url="https://github.com/p0dalirius/smbclient-ng", author="Podalirius", long_description=long_description, long_description_content_type="text/markdown", author_email="podalirius@protonmail.com", packages=["smbclientng", "smbclientng.core", "smbclientng.modules"], package_data={'smbclientng': ['smbclientng/']}, include_package_data=True, license="GPL3", classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", ], python_requires='>=3.6', install_requires=requirements, entry_points={ 'console_scripts': [ 'smbclientng=smbclientng.__main__:main', 'smbng=smbclientng.__main__:main' ] } )