gyntoolkit 2.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2026 PH, Fl4vs (GynToolkit)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,386 @@
1
+ Metadata-Version: 2.4
2
+ Name: gyntoolkit
3
+ Version: 2.1.1
4
+ Summary: Canivete suΓ­Γ§o de pentest β€” recon, port scan, CVE lookup e brute force.
5
+ Author: PH, Fl4vs
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/flavsjr/gyntoolkit
8
+ Project-URL: Repository, https://github.com/flavsjr/gyntoolkit
9
+ Project-URL: Issue Tracker, https://github.com/flavsjr/gyntoolkit/issues
10
+ Keywords: security,pentest,reconnaissance,port-scanner,cli
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Information Technology
14
+ Classifier: Intended Audience :: System Administrators
15
+ Classifier: Topic :: Security
16
+ Classifier: Topic :: System :: Networking
17
+ Classifier: Topic :: System :: Networking :: Monitoring
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Operating System :: OS Independent
24
+ Classifier: Natural Language :: Portuguese (Brazilian)
25
+ Requires-Python: >=3.10
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: colorama>=0.4.6
29
+ Requires-Dist: requests>=2.32.0
30
+ Requires-Dist: python-whois>=0.9.4
31
+ Requires-Dist: dnspython>=2.6.1
32
+ Requires-Dist: scapy>=2.5.0
33
+ Requires-Dist: paramiko>=3.4.0
34
+ Requires-Dist: aiohttp>=3.10.0
35
+ Requires-Dist: cryptography>=42.0.0
36
+ Requires-Dist: rich>=13.7.0
37
+ Requires-Dist: pyyaml>=6.0.1
38
+ Provides-Extra: dev
39
+ Requires-Dist: ruff>=0.6.0; extra == "dev"
40
+ Requires-Dist: mypy>=1.11.0; extra == "dev"
41
+ Requires-Dist: pytest>=8.3.0; extra == "dev"
42
+ Dynamic: license-file
43
+
44
+ # GynToolkit
45
+
46
+ **🌐 Language / Idioma:** **English** Β· [PortuguΓͺs (BR)](README.pt-BR.md)
47
+
48
+ ```
49
+ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•— β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•— β–ˆβ–ˆβ•— β–ˆβ–ˆβ•—β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
50
+ β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β•šβ•β•β–ˆβ–ˆβ•”β•β•β•
51
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ•—β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘
52
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ v2.1
53
+ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ by: PH,Fl4vs
54
+ β•šβ•β•β•β•β•β• β•šβ•β• β•šβ•β• β•šβ•β•β•β• β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•β•β•šβ•β• β•šβ•β•β•šβ•β• β•šβ•β•
55
+ ```
56
+
57
+ > All-in-one Python security toolkit for reconnaissance, network scanning,
58
+ > vulnerability analysis and **authorized** penetration testing β€” in a single
59
+ > dark-themed interactive CLI (`gyntoolkit:~#`).
60
+
61
+ [![CI](https://github.com/flavsjr/gyntoolkit/actions/workflows/tests.yml/badge.svg)](https://github.com/flavsjr/gyntoolkit/actions/workflows/tests.yml)
62
+ [![PyPI](https://img.shields.io/pypi/v/gyntoolkit.svg?style=flat-square&color=00ff00&labelColor=1a1a1a&logo=pypi&logoColor=white)](https://pypi.org/project/gyntoolkit/)
63
+ ![Python](https://img.shields.io/badge/python-3.10+-00ff00.svg?style=flat-square&logo=python&logoColor=white&labelColor=1a1a1a)
64
+ ![License](https://img.shields.io/badge/license-MIT-00ff00.svg?style=flat-square&labelColor=1a1a1a)
65
+ ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20MacOS-1a1a1a.svg?style=flat-square)
66
+ ![Purpose](https://img.shields.io/badge/purpose-pentest%20%7C%20recon-red.svg?style=flat-square&labelColor=1a1a1a)
67
+
68
+ <!-- Demo: generate the GIF with `vhs demo.tape` (see demo.tape at the repo root). -->
69
+ ![GynToolkit Demo](docs/demo.gif)
70
+
71
+ > `[!] WARNING:` Use **only** against targets you are **authorized in writing** to test.
72
+ > Unauthorized use is a crime β€” Lei 12.737/12 (BR), CFAA (US) and equivalents.
73
+
74
+ ---
75
+
76
+ ## Table of Contents
77
+
78
+ - [Why GynToolkit?](#why-gyntoolkit)
79
+ - [Features](#features)
80
+ - [Installation](#installation)
81
+ - [Quick Start](#quick-start)
82
+ - [Example](#example)
83
+ - [Security Lab](#security-lab)
84
+ - [Reports](#reports)
85
+ - [Configuration](#configuration)
86
+ - [Documentation](#documentation)
87
+ - [Development](#development)
88
+ - [Testing](#testing)
89
+ - [Contributing](#contributing)
90
+ - [Security](#security)
91
+ - [Disclaimer](#disclaimer)
92
+ - [License](#license)
93
+
94
+ ---
95
+
96
+ ## Why GynToolkit?
97
+
98
+ - **One CLI, many tools** β€” recon, port scanning, TLS/HTTP fingerprinting, CVE
99
+ lookup and SSH/HTTP auth testing, without juggling a dozen separate commands.
100
+ - **Safe to try** β€” ships with a local lab (`127.0.0.1`) and an end-to-end runner,
101
+ so you can exercise every brute-force module without touching a real target.
102
+ - **Readable output** β€” `rich` tables/panels when available, graceful fallback to
103
+ plain colored text; export any result to JSON or a dark-themed HTML report.
104
+ - **Authorization-first** β€” every attack module requires explicit confirmation.
105
+ - **Zero mandatory API keys** β€” recon sources used (crt.sh, ip-api, InternetDB,
106
+ HIBP, NVD) work on their public/free tiers.
107
+
108
+ ---
109
+
110
+ ## Features
111
+
112
+ ### `[1]` Information Gathering β€” passive & active recon
113
+
114
+ | # | Module | Source / technique |
115
+ |---|--------|--------------------|
116
+ | 1 | **WHOIS** | `python-whois` β€” registrar, dates, contacts |
117
+ | 2 | **DNS Lookup** | `dnspython` β€” A, AAAA, MX, NS, CNAME, TXT, SOA |
118
+ | 3 | **IP Geolocation** | `ip-api.com` (free) β€” country, ISP, ASN, proxy/hosting flags |
119
+ | 4 | **Reverse DNS (PTR)** | `socket.gethostbyaddr` |
120
+ | 5 | **Subdomain Enum** | Certificate Transparency via `crt.sh` |
121
+ | 6 | **SSL/TLS Cert Inspector** | `cryptography` β€” subject, issuer, SANs, expiry, cipher, SHA-256 |
122
+ | 7 | **HTTP Fingerprint** | nginx, Apache, IIS, Cloudflare, PHP, WordPress, Laravel, ASP.NET, Django, Rails, Node |
123
+ | 8 | **InternetDB (Shodan free)** | Open ports, CPEs, known CVEs β€” no API key |
124
+ | 9 | **HIBP Breach Check** | Domain β†’ known breaches via Have I Been Pwned |
125
+ | 10 | **MAC Vendor Lookup** | `api.macvendors.com` β€” OUI β†’ vendor |
126
+ | 11 | **Traceroute (TCP)** | `scapy` β€” hops + RTT (needs privilege) |
127
+
128
+ ### `[2]` Brute Force
129
+
130
+ | # | Module | Details |
131
+ |---|--------|---------|
132
+ | 1 | **CUPP wordlist** | Wrapper for `cupp.py -i` β€” custom wordlist generator |
133
+ | 2 | **SSH brute** | `paramiko`, async via `asyncio.to_thread`, concurrency `Semaphore`, delay |
134
+ | 3 | **HTTP brute** | `aiohttp` β€” Basic Auth or form POST with configurable `fail_signature` |
135
+
136
+ > Every attack requires typing `AUTORIZO` to confirm β€” no silent bypass.
137
+
138
+ ### `[3]` Advanced Scanning
139
+
140
+ - **Port scan** β€” fast (Top 21 common ports) or full (1–65535)
141
+ - **SYN scan** (stealth) when privileged, automatic fallback to **TCP connect**
142
+ - **Banner grabbing** β€” async, parallel
143
+ - **CVE analysis** per service via **NVD API v2.0**
144
+ - **Host discovery** (ARP scan) by CIDR β€” e.g. `192.168.0.0/24`
145
+ - Automatic risk classification based on CVEs found
146
+
147
+ ### `[4]` Utilities
148
+
149
+ | # | Module | Details |
150
+ |---|--------|---------|
151
+ | 1 | **Text hash** | MD5, SHA1, SHA256, SHA512 |
152
+ | 2 | **File hash** | Streamed (does not load the whole file in memory) |
153
+ | 3 | **Base64 encode** | UTF-8 β†’ base64 |
154
+ | 4 | **Base64 decode** | base64 β†’ UTF-8 with auto-padding |
155
+ | 5 | **JWT decode** | Header + payload without signature verification |
156
+
157
+ ---
158
+
159
+ ## Installation
160
+
161
+ **Requirements:** Python 3.10+ and `pip`.
162
+
163
+ ### From PyPI (recommended)
164
+
165
+ ```bash
166
+ pip install gyntoolkit
167
+ gyntoolkit # launch the interactive CLI
168
+ ```
169
+
170
+ That installs the `gyntoolkit` command and all dependencies.
171
+
172
+ ### From source (development)
173
+
174
+ ```bash
175
+ git clone https://github.com/flavsjr/gyntoolkit.git
176
+ cd gyntoolkit
177
+ pip install -e .
178
+ gyntoolkit # or: python -m gyntoolkit
179
+ ```
180
+
181
+ > **Optional β€” brute-force wordlists:** the "CUPP wordlist" module wraps
182
+ > [CUPP](https://github.com/Mebus/cupp). Clone it next to where you run
183
+ > GynToolkit (`git clone https://github.com/Mebus/cupp.git`); it is not a
184
+ > Python dependency and is not installed by pip.
185
+
186
+ **Windows note:** for SYN scan and traceroute (raw sockets) install
187
+ [Npcap](https://npcap.com) and run in an **admin** terminal. Without Npcap, SYN
188
+ scan degrades to TCP connect scan automatically.
189
+
190
+ ---
191
+
192
+ ## Quick Start
193
+
194
+ ```bash
195
+ gyntoolkit # after `pip install gyntoolkit`
196
+ # or, from a source checkout:
197
+ python -m gyntoolkit
198
+ ```
199
+
200
+ An interactive dark CLI opens with a numbered menu. Commands are entered at the
201
+ `gyntoolkit:~#` prompt. Output degrades gracefully to plain colored text if
202
+ [`rich`](https://github.com/Textualize/rich) is not installed.
203
+
204
+ ---
205
+
206
+ ## Example
207
+
208
+ Target: the **local security lab** (never a third-party system).
209
+
210
+ ```bash
211
+ # 1. Launch GynToolkit
212
+ gyntoolkit
213
+
214
+ # 2. Pick [3] Advanced Scanning β†’ scan 127.0.0.1
215
+ # 3. Inspect discovered services / banners
216
+ # 4. When prompted, export the result as JSON or HTML report
217
+ ```
218
+
219
+ To exercise the brute-force modules end to end against local mocks:
220
+
221
+ ```bash
222
+ python lab/run_e2e.py
223
+ ```
224
+
225
+ See [Security Lab](#security-lab) below.
226
+
227
+ ---
228
+
229
+ ## Security Lab
230
+
231
+ The project includes a local lab so you can test GynToolkit **without targeting
232
+ external systems** β€” no Docker, no VMs.
233
+
234
+ ```text
235
+ GynToolkit β†’ Security Lab β†’ 127.0.0.1 β†’ Recon / Scan / Auth testing β†’ Report
236
+ ```
237
+
238
+ | Service | Address | Valid credentials (intentionally weak) |
239
+ |---------|---------|-----------------------------------------|
240
+ | SSH mock (`paramiko`) | `127.0.0.1:2222` | `admin:hunter2`, `root:toor` |
241
+ | HTTP mock (`aiohttp`) | `127.0.0.1:8080` | Basic `admin:letmein` Β· Form `admin:s3cret` |
242
+
243
+ Run the full automated suite (starts mocks, attacks, validates, tears down):
244
+
245
+ ```bash
246
+ python lab/run_e2e.py # exit code 0 = all green
247
+ ```
248
+
249
+ Full walkthrough: [`docs/security-lab.md`](docs/security-lab.md) and
250
+ [`lab/README.md`](lab/README.md).
251
+
252
+ > The mocks accept weak credentials **on purpose**. Run only on `127.0.0.1` and
253
+ > never expose them on a public network.
254
+
255
+ ---
256
+
257
+ ## Reports
258
+
259
+ After scans and recon lookups, the CLI offers to export results as **JSON** or a
260
+ dark-themed **HTML report**. Files are written to
261
+ `reports/<module>-<timestamp>.<fmt>` (configurable via `export.dir`; set
262
+ `export.auto: true` to export without prompting). Details in
263
+ [`docs/reports.md`](docs/reports.md).
264
+
265
+ ---
266
+
267
+ ## Configuration
268
+
269
+ Optional. Copy `.gyntoolkit.example.yaml` to `.gyntoolkit.yaml` and override only
270
+ the keys you want β€” everything else falls back to defaults.
271
+
272
+ ```bash
273
+ cp .gyntoolkit.example.yaml .gyntoolkit.yaml
274
+ ```
275
+
276
+ Resolution order: `GYNTOOLKIT_CONFIG` env var β†’ `.gyntoolkit.yaml` in the current
277
+ directory β†’ `.gyntoolkit.yaml` in the project root. Full reference:
278
+ [`docs/configuration.md`](docs/configuration.md).
279
+
280
+ **UI language:** menus run in English or Portuguese. Set `ui.lang: auto|en|pt`
281
+ in the config, or `GYNTOOLKIT_LANG=pt` / `=en` per run; `auto` detects the OS
282
+ locale and falls back to English.
283
+
284
+ ---
285
+
286
+ ## Documentation
287
+
288
+ | Doc | Content |
289
+ |-----|---------|
290
+ | [`docs/installation.md`](docs/installation.md) | Install from PyPI or source, and the PyPI publish flow |
291
+ | [`docs/quickstart.md`](docs/quickstart.md) | First run, menu walkthrough |
292
+ | [`docs/reconnaissance.md`](docs/reconnaissance.md) | Recon modules (WHOIS, DNS, TLS, fingerprint, …) |
293
+ | [`docs/scanning.md`](docs/scanning.md) | Port scan, banners, CVE lookup, host discovery |
294
+ | [`docs/reports.md`](docs/reports.md) | JSON / HTML report formats |
295
+ | [`docs/configuration.md`](docs/configuration.md) | `.gyntoolkit.yaml` reference |
296
+ | [`docs/security-lab.md`](docs/security-lab.md) | Local lab + end-to-end tests |
297
+ | [`docs/development.md`](docs/development.md) | Dev setup, lint, tests |
298
+
299
+ ---
300
+
301
+ ## Development
302
+
303
+ ```bash
304
+ git clone https://github.com/flavsjr/gyntoolkit.git
305
+ cd gyntoolkit
306
+ python -m venv .venv && source .venv/bin/activate # .venv\Scripts\activate on Windows
307
+ pip install -e ".[dev]"
308
+ ```
309
+
310
+ Lint and type-check (config in `pyproject.toml`):
311
+
312
+ ```bash
313
+ ruff check .
314
+ ruff check . --fix
315
+ mypy gyntoolkit
316
+ ```
317
+
318
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`docs/development.md`](docs/development.md).
319
+
320
+ ---
321
+
322
+ ## Testing
323
+
324
+ Unit tests (offline β€” no network, no external services, no real targets):
325
+
326
+ ```bash
327
+ pytest
328
+ ```
329
+
330
+ End-to-end lab suite (local mocks):
331
+
332
+ ```bash
333
+ python lab/run_e2e.py
334
+ ```
335
+
336
+ Both run in CI on every push/PR (see the CI badge above).
337
+
338
+ ---
339
+
340
+ ## Contributing
341
+
342
+ ```text
343
+ Fork β†’ Branch β†’ Changes β†’ Tests β†’ Pull Request
344
+ ```
345
+
346
+ Commits follow [Conventional Commits](https://www.conventionalcommits.org/).
347
+ Full guide (dev setup, `ruff`, running the lab): [`CONTRIBUTING.md`](CONTRIBUTING.md).
348
+ Report bugs and request features with the
349
+ [issue templates](.github/ISSUE_TEMPLATE/).
350
+
351
+ ---
352
+
353
+ ## Security
354
+
355
+ GynToolkit is intended for **authorized** security testing, security research,
356
+ CTFs and controlled lab environments. To report a vulnerability **in GynToolkit
357
+ itself**, see [`SECURITY.md`](SECURITY.md) β€” please do not open a public issue
358
+ for sensitive reports.
359
+
360
+ ---
361
+
362
+ ## Disclaimer
363
+
364
+ GynToolkit is intended **exclusively** for:
365
+
366
+ - Security testing **authorized in writing**
367
+ - Academic research in controlled environments
368
+ - Ethical pentest practice (CTF, HackTheBox, TryHackMe, your own labs)
369
+
370
+ Any use against systems or networks **without explicit authorization** is
371
+ strictly prohibited and constitutes a crime under most jurisdictions. The authors
372
+ are not liable for misuse or damage caused by this software.
373
+
374
+ ---
375
+
376
+ ## License
377
+
378
+ MIT β€” see [`LICENSE`](LICENSE).
379
+
380
+ ---
381
+
382
+ ## Star History
383
+
384
+ If this project helped you, drop a ⭐ β€” it really boosts visibility!
385
+
386
+ [![Star History Chart](https://api.star-history.com/svg?repos=flavsjr/gyntoolkit&type=Date)](https://star-history.com/#flavsjr/gyntoolkit&Date)