Skip to content

Cross-platform GUI application for network payload injection. Built with Rust and egui, supporting Linux and Windows with an intuitive interface and configuration management.

License

Notifications You must be signed in to change notification settings

fateslayer/ps-payload-injector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PS Payload Injector

A cross-platform GUI application built with Rust for network payload injection. Features an intuitive interface for configuring target connections and managing payload files.

License Platform Rust

✨ Features

  • Intuitive GUI: Clean, modern interface built with egui
  • Cross-Platform: Native support for Linux and Windows
  • Configuration Management: Save and load connection configurations
  • Auto-Save: Automatically save settings as you type
  • File Browser: Built-in file picker for payload selection
  • Real-Time Status: Live feedback on injection progress and results
  • Input Validation: Comprehensive validation for IP addresses, ports, and files

πŸ“¦ Download & Installation

For End Users

Download the latest pre-built executables from the Releases page:

  • Linux: ps-payload-injector-linux
  • Windows: ps-payload-injector-windows.exe

Linux Installation

# Download and make executable
chmod +x ps-payload-injector-linux
./ps-payload-injector-linux

Windows Installation

  1. Download ps-payload-injector-windows.exe
  2. Double-click to run

Windows Security Note: Windows may show a security warning because the executable is not digitally signed. This is normal for open-source software. Click "More info" β†’ "Run anyway" to proceed.

πŸš€ Quick Start

  1. Launch the application
  2. Configure target:
    • Enter target IP address
    • Specify port number
    • Select payload file using "Browse..." button
  3. Save configuration (optional): Click "Save Config" to store settings
  4. Inject payload: Click "Inject Payload" to begin transmission
  5. Monitor status: Watch the status indicator for real-time feedback

πŸŽ›οΈ Interface Guide

Main Controls

Field Description Example
IP Address Target server IP address 192.168.1.100
Port Target server port 8080
File Path Path to payload file /path/to/payload.bin

Buttons

  • Inject Payload: Start the payload transmission
  • Save Config: Save current settings to file
  • Load Config: Load previously saved configuration
  • Browse...: Open file picker to select payload file

Settings

  • Autosave Config: Automatically save configuration changes

βš™οΈ Configuration

The application supports two types of configuration:

Auto-Save Configuration

When auto-save is enabled, the application automatically saves your settings to:

  • app_config.json in the application directory

This file contains all settings including IP, port, file path, and auto-save preference.

Manual Configuration

  • Save Config: Opens a file dialog to save configuration to any location
  • Load Config: Opens a file dialog to load configuration from any location
  • Saved configurations are JSON files that can be shared or backed up

πŸ› οΈ Development

Prerequisites

Additional Requirements for Cross-Compilation

For Windows builds on Linux:

# Fedora/RHEL
sudo dnf install mingw64-gcc mingw64-gcc-c++

# Ubuntu/Debian
sudo apt install gcc-mingw-w64-x86-64

# Add Windows target
rustup target add x86_64-pc-windows-gnu

Building from Source

Clone Repository

git clone https://github.com/yourusername/ps-payload-injector.git
cd ps-payload-injector

Development Build

# Debug build (with console output)
cargo run

# Release build
cargo build --release

Cross-Platform Build

Use our automated build script:

./scripts/build.sh

This creates optimized executables in the dist/ folder:

  • ps-payload-injector-linux (Linux)
  • ps-payload-injector-windows.exe (Windows)

Manual Cross-Compilation

# Linux
cargo build --release --target x86_64-unknown-linux-gnu

# Windows
cargo build --release --target x86_64-pc-windows-gnu

Project Structure

ps-payload-injector/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.rs          # Application entry point
β”‚   β”œβ”€β”€ ui.rs            # GUI implementation
β”‚   β”œβ”€β”€ handlers.rs      # Business logic handlers
β”‚   └── lib.rs           # Library exports
β”œβ”€β”€ scripts/
β”‚   └── build.sh         # Cross-platform build script
β”œβ”€β”€ .cargo/
β”‚   └── config.toml      # Cross-compilation configuration
β”œβ”€β”€ tests/               # Integration tests
β”œβ”€β”€ Cargo.toml           # Rust dependencies and metadata
└── README.md

Dependencies

  • eframe: GUI framework (egui + native backend)
  • rfd: Native file dialogs
  • tokio: Async runtime for network operations
  • serde: Serialization for configuration files

πŸ§ͺ Testing

# Run all tests
cargo test

# Run with output
cargo test -- --nocapture

# Run specific test
cargo test test_name

πŸ”’ Security Considerations

  • This tool is designed for legitimate network testing and educational purposes
  • Always ensure you have proper authorization before testing on networks you don't own
  • The application validates input but users are responsible for payload content
  • Network communications are not encrypted by default

πŸ“‹ System Requirements

Minimum Requirements

  • OS: Linux (x86_64) or Windows 10+ (x86_64)
  • RAM: 50MB
  • Disk: 20MB free space
  • Network: TCP/IP connectivity

Supported Platforms

  • βœ… Linux x86_64
  • βœ… Windows x86_64
  • ❌ macOS (not currently supported)
  • ❌ ARM architectures (not currently supported)

πŸ› Troubleshooting

Common Issues

"Permission denied" on Linux:

chmod +x ps-payload-injector-linux

Windows SmartScreen warning:

  • Click "More info" β†’ "Run anyway"
  • Or add to Windows Defender exclusions

File not found errors:

  • Ensure payload file exists and is accessible
  • Check file permissions
  • Try absolute file paths

Network connection issues:

  • Verify target IP and port are correct
  • Check firewall settings
  • Ensure target service is running

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow Rust naming conventions
  • Add tests for new functionality
  • Update documentation for API changes
  • Ensure cross-platform compatibility
  • Run cargo fmt and cargo clippy before committing

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built with egui - Immediate mode GUI framework
  • Cross-platform file dialogs by rfd
  • Async runtime provided by tokio

πŸ“ž Support


⚠️ Disclaimer: This tool is for educational and authorized testing purposes only. Users are responsible for ensuring compliance with applicable laws and regulations.

About

Cross-platform GUI application for network payload injection. Built with Rust and egui, supporting Linux and Windows with an intuitive interface and configuration management.

Resources

License

Stars

Watchers

Forks