A modern NTLM/NTLMv2 authenticating HTTP proxy with a graphical user interface. Think of it as a modernized "cntlm" with better usability and Windows integration.
- NTLM/NTLMv2 Authentication: Seamlessly authenticate with corporate proxies using NTLM protocol
- Modern GUI: Built with CustomTkinter for a sleek, dark-themed interface
- System Tray Integration: Runs quietly in the background with system tray icon
- Secure Credential Storage: Passwords are stored securely using Windows Credential Manager
- Real-time Monitoring: Live request logging and statistics
- Easy Configuration: User-friendly configuration interface
- Performance Optimized: Uses winloop for enhanced network performance when available
- Operating System: Windows 10/11
- Python: 3.13 or higher
- Dependencies: All dependencies are managed via the project configuration
# Clone the repository
git clone https://github.com/yourusername/py-ntlm-proxy.git
cd py-ntlm-proxy
# Install dependencies using uv
uv sync
# Clone the repository
git clone https://github.com/yourusername/py-ntlm-proxy.git
cd py-ntlm-proxy/py-ntlm-proxy
# Install dependencies
pip install -r requirements.txt
# Clone the repository
git clone https://github.com/yourusername/py-ntlm-proxy.git
cd py-ntlm-proxy
# Install in development mode
pip install -e .
python py-ntlm-proxy/main.py
The application will start with a GUI interface. If this is your first time running it, you'll need to configure your credentials through the Configuration tab.
- Open the Configuration tab in the GUI
- Enter your domain credentials:
- Username: Your domain username
- Domain: Your domain name
- Password: Your password (will be stored securely in Windows Credential Manager)
- Parent Proxy: Your corporate proxy address (if applicable)
- Listen Port: The port for the local proxy (default: 3128)
- Click "Save Credentials and Restart" to apply the settings
Once the proxy is running (default port 3128), configure your applications to use:
- Proxy Server:
127.0.0.1
- Port:
3128
(or your configured port)
The application provides a user-friendly GUI for configuration:
- Status Tab: Monitor proxy status, uptime, and request statistics
- Configuration Tab: Set up authentication and proxy settings
- Activity Log Tab: View real-time request logs
Configuration is stored in: %LOCALAPPDATA%\PythonNtlmProxy\cntlm.ini
[Auth]
Username = your_username
Domain = your_domain
[Proxy]
ParentProxy = corporate-proxy.company.com:8080
ListenPort = 3128
# Start with default settings
python py-ntlm-proxy/main.py
Configure through the GUI or modify the config file to use a different port:
[Proxy]
ListenPort = 8080
For corporate environments with existing proxy infrastructure:
[Proxy]
ParentProxy = corporate-proxy.company.com:8080
ListenPort = 3128
The application respects the following environment variables:
LOCALAPPDATA
: Configuration directory location
Logs are written to the console and can be viewed in the Activity Log tab of the GUI.
- The application automatically uses
winloop
if available for better performance - Supports up to 50 recent requests in the activity log (configurable)
- Verify your credentials in the Configuration tab of the GUI
- Ensure your domain and username are correct
- Check that your corporate proxy supports NTLM authentication
- Verify the parent proxy address and port
- Check your network connectivity
- Ensure the listen port is not already in use
- Ensure you have the latest version of CustomTkinter installed
- Check that all dependencies are properly installed
To enable verbose logging, modify the logging configuration in main.py
:
logging.basicConfig(
level=logging.DEBUG, # Change from INFO to DEBUG
format="%(asctime)s - %(levelname)s - %(message)s"
)
We welcome contributions! Please see our contributing guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
# Clone and setup development environment
git clone https://github.com/yourusername/py-ntlm-proxy.git
cd py-ntlm-proxy
uv sync --dev
# Run tests (if available)
python -m pytest
This project is licensed under the MIT License - see the LICENSE file for details.
- Built on top of proxy.py for the core proxy functionality
- Uses ntlm-auth for NTLM authentication
- GUI built with CustomTkinter
- Inspired by the original cntlm project
- Create an issue on GitHub for bug reports or feature requests
- Check the troubleshooting section for common problems
- Review the configuration section for setup help
- Linux/macOS support
- Support for additional authentication methods
- Configuration import/export
- Proxy chain support
- Performance metrics and analytics
- Auto-update functionality
Made with β€οΈ for corporate developers who need a modern NTLM proxy solution.