⚡ PinPulse
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
aiohttpfor non-blocking network I/O, allowing hundreds of requests per second. - 📊 Real-time Progress: Integrated with
tqdmto 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":
- HTTP Status Code: Does the response status match the
--statusflag? - Body Content: Is the string provided in
--textabsent 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.
Metadata
Release files for pinpulse 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pinpulse-1.0.2.tar.gz | 6.8 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pinpulse-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.4 kB
Release files / pinpulse-1.0.2.tar.gz
| Download URL | pinpulse-1.0.2.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f2581800228fa7b4ef8a0226da1e6201208417d370173f8bb3940f01563dd664
|
|
BLAKE2b-256 checksum How to use checksums |
9fbc94ae4fa11f1adf35a7d236d55fd0148c069f7046b510cf13705fd84739b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.
Transparency logRelease files / pinpulse-1.0.2-py3-none-any.whl
| Download URL | pinpulse-1.0.2-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c07037ba644569182193d7cce309ca38f0d2a03fec88d7eb173fa23f57e44b7
|
|
BLAKE2b-256 checksum How to use checksums |
5a142d76f4b5c312a9bc4f523dfe7ac2624c7dcdd59c9783e729f81edd708ff5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.
Transparency logSecurity for pinpulse 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pinpulse-1.0.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 28, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.