Skip to main content

High-performance, asynchronous PIN brute-force tool with a real-time progress bar

Project description

⚡ PinPulse

PyPI version

PinPulse is a high-performance, asynchronous PIN brute-force tool built with Python. Utilizing asyncio and aiohttp, it is designed to test the resilience of PIN-based authentication mechanisms through rapid, concurrent HTTP requests.

✨ Features

  • 🚀 Asynchronous Architecture: Built on aiohttp for non-blocking network I/O, allowing hundreds of requests per second.
  • 📊 Real-time Progress: Integrated with tqdm to provide a live progress bar, estimated time remaining, and request speed.
  • 🛠️ Deeply Customizable: Control the PIN parameter name, success status codes, response filtering, and custom User-Agents.
  • 🛡️ Smart Termination: Automatically halts all active tasks as soon as the correct PIN is identified to save resources and bandwidth.

📦 Installation

1. Via PyPI (Recommended)

pip install pinpulse

2. From Source

git clone https://github.com/fr0stb1rd/PinPulse.git
cd PinPulse
pip install -r requirements.txt

🚀 Usage

Arguments

Argument Short Description Default
--url -u The target endpoint URL (Required)
--concurrent -c Number of simultaneous requests 50
--digits -d Number of PIN digits to test 4
--parameter -p Name of the PIN query parameter pin_code
--status -s Expected HTTP status code for success 200
--text -t Error text to look for in response "Incorrect pin code"
--user-agent -a Custom User-Agent string (Firefox 150)

Examples

Standard 6-digit test with custom parameter:

pinpulse -u "https://api.example.com/v1/verify" -d 6 -p "otp"

Bypassing simple WAFs with a custom User-Agent:

pinpulse -u "https://target.com/login" -a "MyCustomScanner/1.0" -c 100

Defining success by status code and excluding specific error text:

pinpulse -u "https://api.site.com/auth" -s 302 -t "Try Again"

🛠️ How It Works

PinPulse utilizes an asynchronous Semaphore to manage request flow, ensuring maximum throughput without overwhelming the local system's file descriptors.

For every request, it checks two conditions for a "Success":

  1. HTTP Status Code: Does the response status match the --status flag?
  2. Body Content: Is the string provided in --text absent from the response body?

If both conditions are met, the PIN is flagged as correct and the process terminates immediately.

📄 License

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

⚠️ Disclaimer

This tool is developed for educational purposes and authorized security testing (Pentesting) only. Running this against systems without explicit permission is illegal. The developer assumes no liability and is not responsible for any misuse or damage caused by this program.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pinpulse-1.0.2.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pinpulse-1.0.2-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file pinpulse-1.0.2.tar.gz.

File metadata

  • Download URL: pinpulse-1.0.2.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pinpulse-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f2581800228fa7b4ef8a0226da1e6201208417d370173f8bb3940f01563dd664
MD5 15957b2439435a88975fb0415e635122
BLAKE2b-256 9fbc94ae4fa11f1adf35a7d236d55fd0148c069f7046b510cf13705fd84739b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pinpulse-1.0.2.tar.gz:

Publisher: publish.yml on fr0stb1rd/pinpulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pinpulse-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: pinpulse-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pinpulse-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c07037ba644569182193d7cce309ca38f0d2a03fec88d7eb173fa23f57e44b7
MD5 b3de8a456d9c0ab24c48ea817e171a17
BLAKE2b-256 5a142d76f4b5c312a9bc4f523dfe7ac2624c7dcdd59c9783e729f81edd708ff5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pinpulse-1.0.2-py3-none-any.whl:

Publisher: publish.yml on fr0stb1rd/pinpulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page