https://github.com/p0dalirius/smbclient-ng
smbclient-ng, a fast and user friendly way to interact with SMB shares.
https://github.com/p0dalirius/smbclient-ng
Last synced: 6 months ago
JSON representation
smbclient-ng, a fast and user friendly way to interact with SMB shares.
- Host: GitHub
- URL: https://github.com/p0dalirius/smbclient-ng
- Owner: p0dalirius
- License: gpl-3.0
- Created: 2023-07-11T07:19:17.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-21T17:58:35.000Z (7 months ago)
- Last Synced: 2025-04-05T01:01:37.902Z (6 months ago)
- Language: Python
- Homepage: https://podalirius.net/
- Size: 1.94 MB
- Stars: 897
- Watchers: 6
- Forks: 77
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README

smbclient-ng, a fast and user friendly way to interact with SMB shares.
![]()
![]()
![]()
![]()
## Features
- [x] `acls`: List ACLs of files and folders in cwd. Syntax: `acls`
- [x] `bat`: Pretty prints the contents of a file. Syntax: `bat `
- [x] `bhead`: Pretty prints the first n lines of a file. Syntax: `bhead `
- [x] `btail`: Pretty prints the last n lines of a file. Syntax: `btail `
- [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] `head`: Get the first n lines of a remote file. Syntax: `head `
- [x] `history`: Displays the command history. Syntax: `history`
- [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] `metadata`: Get metadata about a file or directory. Syntax: `metadata `
- [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] `tail`: Get the last n lines of a remote file. Syntax: `tail `
- [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`, `pip3` or `pipx`. You can run any of the following command in your terminal to install [smbclient-ng](https://github.com/p0dalirius/smbclient-ng) :
+ With `pip`:
```
python3 -m pip install smbclientng
```+ With `pip3`:
```
pip3 install smbclientng
```
+ With `pipx`:
```
pipx install smbclientng
```## Demonstration

## Usage
```
$ ./smbclient-ng.py
_ _ _ _
___ _ __ ___ | |__ ___| (_) ___ _ __ | |_ _ __ __ _
/ __| '_ ` _ \| '_ \ / __| | |/ _ \ '_ \| __|____| '_ \ / _` |
\__ \ | | | | | |_) | (__| | | __/ | | | ||_____| | | | (_| |
|___/_| |_| |_|_.__/ \___|_|_|\___|_| |_|\__| |_| |_|\__, |
by @podalirius_ v2.1.8 |___/
usage: smbclientng [-h] [--debug] [--no-colors] [-l LOGFILE] [-T TIMEOUT] [-a ADVERTISED_NAME] [-C COMMAND] [-S STARTUP_SCRIPT] [-N] -H HOST [-P PORT] [-d DOMAIN] [-u USER]
[-p [PASSWORD] | --no-pass | --hashes [LMHASH:]NTHASH | --aes-key HEXKEY | -k | --kdcHost KDCHOST]smbclient-ng, a fast and user-friendly way to interact with SMB shares.
options:
-h, --help show this help message and exitConfig:
--debug Enable debug mode.
--no-colors Disable colored output.
-l LOGFILE, --logfile LOGFILE
Log file path.
-T TIMEOUT, --timeout TIMEOUT
Timeout for SMB connections (default: 3s)
-a ADVERTISED_NAME, --advertised-name ADVERTISED_NAME
Advertised machine name.Commands:
-C COMMAND, --command COMMAND
smbclient-ng commands to execute.
-S STARTUP_SCRIPT, --startup-script STARTUP_SCRIPT
Startup script with commands.
-N, --not-interactive
Non-interactive mode.Target:
-H HOST, --host HOST Target SMB Server IP or hostname.
-P PORT, --port PORT Target SMB Server port (default: 445).Authentication & Connection:
-d DOMAIN, --domain DOMAIN
Authentication domain.
-u USER, --user USER Username for authentication.Secrets:
-p [PASSWORD], --password [PASSWORD]
Password.
--no-pass Do not prompt for a password.
--hashes [LMHASH:]NTHASH
NT/LM hashes.
--aes-key HEXKEY AES key for Kerberos authentication.
-k, --kerberos Use Kerberos authentication.
--kdcHost KDCHOST Fully qualified domain name (FQDN) of key distribution center (KDC) for Kerberos.
```## Quick start commands
+ Connect to a remote SMB server:
```
smbclient-ng -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.