pentool 0.1.0__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.
- pentool-0.1.0/LICENSE +34 -0
- pentool-0.1.0/PKG-INFO +231 -0
- pentool-0.1.0/README.md +188 -0
- pentool-0.1.0/pentool/__init__.py +4 -0
- pentool-0.1.0/pentool/__main__.py +16 -0
- pentool-0.1.0/pentool/api/__init__.py +41 -0
- pentool-0.1.0/pentool/api/base_api.py +48 -0
- pentool-0.1.0/pentool/api/comparer_api.py +19 -0
- pentool-0.1.0/pentool/api/decoder_api.py +24 -0
- pentool-0.1.0/pentool/api/intruder_api.py +171 -0
- pentool-0.1.0/pentool/api/proxy_api.py +210 -0
- pentool-0.1.0/pentool/api/repeater_api.py +57 -0
- pentool-0.1.0/pentool/api/scanner_api.py +266 -0
- pentool-0.1.0/pentool/api/sequencer_api.py +17 -0
- pentool-0.1.0/pentool/api/spider_api.py +106 -0
- pentool-0.1.0/pentool/api/target_api.py +87 -0
- pentool-0.1.0/pentool/cli/__init__.py +1 -0
- pentool-0.1.0/pentool/cli/main.py +98 -0
- pentool-0.1.0/pentool/cli/project.py +88 -0
- pentool-0.1.0/pentool/cli/proxy.py +173 -0
- pentool-0.1.0/pentool/cli/scan.py +115 -0
- pentool-0.1.0/pentool/core/__init__.py +1 -0
- pentool-0.1.0/pentool/core/config.py +171 -0
- pentool-0.1.0/pentool/core/crash_reporter.py +75 -0
- pentool-0.1.0/pentool/core/database.py +139 -0
- pentool-0.1.0/pentool/core/event_bus.py +207 -0
- pentool-0.1.0/pentool/core/events.py +160 -0
- pentool-0.1.0/pentool/core/features.py +373 -0
- pentool-0.1.0/pentool/core/license.py +274 -0
- pentool-0.1.0/pentool/core/logging.py +54 -0
- pentool-0.1.0/pentool/core/plugin_manager.py +312 -0
- pentool-0.1.0/pentool/core/project.py +31 -0
- pentool-0.1.0/pentool/core/storage_interface.py +307 -0
- pentool-0.1.0/pentool/core/updater.py +96 -0
- pentool-0.1.0/pentool/core/utils.py +36 -0
- pentool-0.1.0/pentool/modules/__init__.py +1 -0
- pentool-0.1.0/pentool/modules/comparer.py +177 -0
- pentool-0.1.0/pentool/modules/decoder.py +281 -0
- pentool-0.1.0/pentool/modules/intruder.py +428 -0
- pentool-0.1.0/pentool/modules/intruder_turbo.py +176 -0
- pentool-0.1.0/pentool/modules/match_replace.py +142 -0
- pentool-0.1.0/pentool/modules/proxy.py +797 -0
- pentool-0.1.0/pentool/modules/repeater.py +195 -0
- pentool-0.1.0/pentool/modules/sequencer.py +492 -0
- pentool-0.1.0/pentool/modules/spider.py +679 -0
- pentool-0.1.0/pentool/modules/target.py +185 -0
- pentool-0.1.0/pentool/modules/websocket_handler.py +249 -0
- pentool-0.1.0/pentool/plugins/__init__.py +1 -0
- pentool-0.1.0/pentool/plugins/builtin/__init__.py +1 -0
- pentool-0.1.0/pentool/plugins/builtin/payloads_pro.py +381 -0
- pentool-0.1.0/pentool/plugins/builtin/reports_pro.py +436 -0
- pentool-0.1.0/pentool/plugins/builtin/scanner_pro.py +291 -0
- pentool-0.1.0/pentool/plugins/example_plugin.py +39 -0
- pentool-0.1.0/pentool/services/__init__.py +1 -0
- pentool-0.1.0/pentool/services/base_service.py +60 -0
- pentool-0.1.0/pentool/services/intruder_service.py +94 -0
- pentool-0.1.0/pentool/services/proxy_service.py +178 -0
- pentool-0.1.0/pentool/services/repeater_service.py +85 -0
- pentool-0.1.0/pentool/services/scan_service.py +330 -0
- pentool-0.1.0/pentool/storage/__init__.py +0 -0
- pentool-0.1.0/pentool/storage/http_storage.py +506 -0
- pentool-0.1.0/pentool/storage/large_body_handler.py +50 -0
- pentool-0.1.0/pentool/storage/lru_cache.py +45 -0
- pentool-0.1.0/pentool/t.py +213 -0
- pentool-0.1.0/pentool/tui/__init__.py +1 -0
- pentool-0.1.0/pentool/tui/app.py +1429 -0
- pentool-0.1.0/pentool/tui/constants.py +79 -0
- pentool-0.1.0/pentool/tui/dialogs/__init__.py +0 -0
- pentool-0.1.0/pentool/tui/dialogs/cert_dialog.py +81 -0
- pentool-0.1.0/pentool/tui/dialogs/file_selector.py +226 -0
- pentool-0.1.0/pentool/tui/dialogs/load_from_proxy.py +125 -0
- pentool-0.1.0/pentool/tui/dialogs/match_replace_dialog.py +229 -0
- pentool-0.1.0/pentool/tui/dialogs/project_dialog.py +82 -0
- pentool-0.1.0/pentool/tui/dialogs/scope_dialog.py +224 -0
- pentool-0.1.0/pentool/tui/messages.py +103 -0
- pentool-0.1.0/pentool/tui/mixins/__init__.py +0 -0
- pentool-0.1.0/pentool/tui/mixins/app_mixin.py +59 -0
- pentool-0.1.0/pentool/tui/mixins/dialog_cancel.py +21 -0
- pentool-0.1.0/pentool/tui/mixins/request_context_menu.py +247 -0
- pentool-0.1.0/pentool/tui/mixins/tab_rename.py +89 -0
- pentool-0.1.0/pentool/tui/screens/__init__.py +31 -0
- pentool-0.1.0/pentool/tui/screens/comparer/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/comparer/screen.py +229 -0
- pentool-0.1.0/pentool/tui/screens/dashboard/__init__.py +2 -0
- pentool-0.1.0/pentool/tui/screens/dashboard/live_dashboard.py +730 -0
- pentool-0.1.0/pentool/tui/screens/dashboard/screen.py +771 -0
- pentool-0.1.0/pentool/tui/screens/decoder/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/decoder/screen.py +306 -0
- pentool-0.1.0/pentool/tui/screens/extensions/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/extensions/screen.py +24 -0
- pentool-0.1.0/pentool/tui/screens/intruder/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/intruder/screen.py +1356 -0
- pentool-0.1.0/pentool/tui/screens/proxy/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/proxy/screen.py +1554 -0
- pentool-0.1.0/pentool/tui/screens/repeater/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/repeater/screen.py +621 -0
- pentool-0.1.0/pentool/tui/screens/scanner/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/scanner/screen.py +1956 -0
- pentool-0.1.0/pentool/tui/screens/sequencer/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/sequencer/screen.py +516 -0
- pentool-0.1.0/pentool/tui/screens/settings/__init__.py +5 -0
- pentool-0.1.0/pentool/tui/screens/settings/hotkeys.py +134 -0
- pentool-0.1.0/pentool/tui/screens/settings/screen.py +540 -0
- pentool-0.1.0/pentool/tui/screens/spider/__init__.py +3 -0
- pentool-0.1.0/pentool/tui/screens/spider/screen.py +380 -0
- pentool-0.1.0/pentool/tui/screens/target/__init__.py +4 -0
- pentool-0.1.0/pentool/tui/screens/target/screen.py +358 -0
- pentool-0.1.0/pentool/tui/screens/terminal/__init__.py +5 -0
- pentool-0.1.0/pentool/tui/screens/terminal/screen.py +179 -0
- pentool-0.1.0/pentool/tui/widgets/__init__.py +1 -0
- pentool-0.1.0/pentool/tui/widgets/context_menu.py +148 -0
- pentool-0.1.0/pentool/tui/widgets/filter_bar.py +204 -0
- pentool-0.1.0/pentool/tui/widgets/inspector_panel.py +111 -0
- pentool-0.1.0/pentool/tui/widgets/menu.py +86 -0
- pentool-0.1.0/pentool/tui/widgets/menu_bar.py +238 -0
- pentool-0.1.0/pentool/tui/widgets/module_tabs.py +68 -0
- pentool-0.1.0/pentool/tui/widgets/payload_drop_zone.py +65 -0
- pentool-0.1.0/pentool/tui/widgets/request_editor.py +495 -0
- pentool-0.1.0/pentool/tui/widgets/resize_handle.py +116 -0
- pentool-0.1.0/pentool/tui/widgets/search_bar.py +112 -0
- pentool-0.1.0/pentool/tui/widgets/statusbar.py +96 -0
- pentool-0.1.0/pentool/tui/widgets/toolbar_button.py +68 -0
- pentool-0.1.0/pentool/utils/__init__.py +1 -0
- pentool-0.1.0/pentool/utils/cert.py +314 -0
- pentool-0.1.0/pentool/utils/coder.py +170 -0
- pentool-0.1.0/pentool/utils/copy_as.py +250 -0
- pentool-0.1.0/pentool/utils/diff.py +82 -0
- pentool-0.1.0/pentool/utils/http_client.py +145 -0
- pentool-0.1.0/pentool/utils/parser.py +227 -0
- pentool-0.1.0/pentool/utils/terminal_check.py +31 -0
- pentool-0.1.0/pentool.egg-info/PKG-INFO +231 -0
- pentool-0.1.0/pentool.egg-info/SOURCES.txt +136 -0
- pentool-0.1.0/pentool.egg-info/dependency_links.txt +1 -0
- pentool-0.1.0/pentool.egg-info/entry_points.txt +2 -0
- pentool-0.1.0/pentool.egg-info/requires.txt +17 -0
- pentool-0.1.0/pentool.egg-info/top_level.txt +1 -0
- pentool-0.1.0/pyproject.toml +108 -0
- pentool-0.1.0/setup.cfg +4 -0
pentool-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
GNU AFFERO GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 19 November 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2026 Pentool Project
|
|
5
|
+
|
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
|
7
|
+
it under the terms of the GNU Affero General Public License as published
|
|
8
|
+
by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
(at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU Affero General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU Affero General Public License
|
|
17
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
Additional Terms:
|
|
22
|
+
|
|
23
|
+
This software is dual-licensed:
|
|
24
|
+
|
|
25
|
+
1. Community Edition: AGPL-3.0 (this license)
|
|
26
|
+
- Free for personal and open-source use
|
|
27
|
+
- Source code modifications must be shared
|
|
28
|
+
|
|
29
|
+
2. Commercial/PRO Edition: Commercial License
|
|
30
|
+
- Contact: sales@pentool.dev
|
|
31
|
+
- For proprietary/closed-source use
|
|
32
|
+
- Includes enterprise features and support
|
|
33
|
+
|
|
34
|
+
For commercial licensing inquiries, please contact: sales@pentool.dev
|
pentool-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pentool
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Modern Web Pentesting TUI - Professional security testing tool
|
|
5
|
+
Author-email: Pentool Team <dev@pentool.dev>
|
|
6
|
+
License: AGPL-3.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/docxqwerty/pentool
|
|
8
|
+
Project-URL: Repository, https://github.com/docxqwerty/pentool
|
|
9
|
+
Project-URL: Issues, https://github.com/docxqwerty/pentool/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/docxqwerty/pentool/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: pentesting,security,burp,proxy,scanner,intruder
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Information Technology
|
|
15
|
+
Classifier: Topic :: Security
|
|
16
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Operating System :: OS Independent
|
|
22
|
+
Classifier: Environment :: Console
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: textual>=0.40.0
|
|
27
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
28
|
+
Requires-Dist: aiosqlite>=0.19.0
|
|
29
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
30
|
+
Requires-Dist: click>=8.1.0
|
|
31
|
+
Requires-Dist: cryptography>=41.0.0
|
|
32
|
+
Requires-Dist: pyyaml>=6.0
|
|
33
|
+
Requires-Dist: rich>=13.0.0
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
40
|
+
Requires-Dist: mypy>=1.5.0; extra == "dev"
|
|
41
|
+
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
|
|
42
|
+
Dynamic: license-file
|
|
43
|
+
|
|
44
|
+
# 🔐 PENTOOL — Modern Web Pentesting TUI
|
|
45
|
+
|
|
46
|
+
**Версия:** 1.0 (Pre-release)
|
|
47
|
+
**Статус:** 87% готовности к релизу
|
|
48
|
+
**Автор:** @sudores (DoctorX)
|
|
49
|
+
|
|
50
|
+
Современный инструмент для тестирования безопасности веб-приложений с интуитивным TUI интерфейсом.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🚀 Быстрый старт
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Установка
|
|
58
|
+
pip install pentool
|
|
59
|
+
|
|
60
|
+
# Запуск
|
|
61
|
+
pentool
|
|
62
|
+
|
|
63
|
+
# Или из исходников
|
|
64
|
+
git clone https://github.com/pentool/pentool.git
|
|
65
|
+
cd pentool
|
|
66
|
+
pip install -e .
|
|
67
|
+
pentool
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## ✨ Ключевые возможности
|
|
73
|
+
|
|
74
|
+
### Основные инструменты (Free)
|
|
75
|
+
- **Proxy** — HTTP/HTTPS перехват с SSL
|
|
76
|
+
- **Repeater** — модификация и повтор запросов
|
|
77
|
+
- **Intruder** — автоматизированные атаки с payloads
|
|
78
|
+
- **Decoder** — кодирование/декодирование
|
|
79
|
+
- **Comparer** — сравнение запросов/ответов
|
|
80
|
+
- **HTTPQL** — мощная фильтрация истории
|
|
81
|
+
|
|
82
|
+
### PRO возможности
|
|
83
|
+
- **Turbo Mode Intruder** 🚀 — 10x ускорение (100-200 req/sec)
|
|
84
|
+
- **Scanner** — автоматическое обнаружение уязвимостей (23 проверки)
|
|
85
|
+
- **Spider** — автоматическое сканирование сайтов
|
|
86
|
+
- **WebSocket** — перехват и модификация WS трафика
|
|
87
|
+
- **AI Analysis** — анализ уязвимостей с помощью GPT-4
|
|
88
|
+
- **Plugins** — система расширений
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 📦 Установка
|
|
93
|
+
|
|
94
|
+
### Требования
|
|
95
|
+
- Python 3.10+
|
|
96
|
+
- Linux / macOS / Windows
|
|
97
|
+
|
|
98
|
+
### Из PyPI
|
|
99
|
+
```bash
|
|
100
|
+
pip install pentool
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Из исходников
|
|
104
|
+
```bash
|
|
105
|
+
git clone https://github.com/pentool/pentool.git
|
|
106
|
+
cd pentool
|
|
107
|
+
python -m venv venv
|
|
108
|
+
source venv/bin/activate # или venv\Scripts\activate на Windows
|
|
109
|
+
pip install -e ".[dev]"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 📖 Документация
|
|
115
|
+
|
|
116
|
+
- **Quick Start:** `docs/QUICKSTART.md`
|
|
117
|
+
- **User Guide:** `docs/user/`
|
|
118
|
+
- **API Reference:** `docs/API_CONTRACTS.md`
|
|
119
|
+
- **Architecture:** `docs/ARCHITECTURE_AUDIT.md`
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 🧪 Тестирование
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Запустить все тесты
|
|
127
|
+
pytest tests/
|
|
128
|
+
|
|
129
|
+
# С coverage
|
|
130
|
+
pytest tests/ --cov=pentool --cov-report=html
|
|
131
|
+
|
|
132
|
+
# Только unit-тесты
|
|
133
|
+
pytest tests/unit/ -v
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Текущий статус:**
|
|
137
|
+
- Unit-тесты: 1348/1360 PASSED (99.1%)
|
|
138
|
+
- Coverage: 29%
|
|
139
|
+
- Integration: требуют отладки
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 🏗️ Архитектура
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
pentool/
|
|
147
|
+
├── core/ # Ядро: EventBus, license, features
|
|
148
|
+
├── modules/ # Логика: proxy, scanner, intruder
|
|
149
|
+
├── api/ # API фасады для модулей
|
|
150
|
+
├── services/ # Оркестрация бизнес-логики
|
|
151
|
+
├── storage/ # База данных (SQLite)
|
|
152
|
+
├── tui/ # TUI интерфейс (Textual)
|
|
153
|
+
├── cli/ # CLI команды
|
|
154
|
+
├── plugins/ # Система плагинов
|
|
155
|
+
└── utils/ # Вспомогательные утилиты
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 💰 Тарифные планы
|
|
161
|
+
|
|
162
|
+
| Plan | Цена | Инструменты | Лимиты |
|
|
163
|
+
|------|------|-------------|--------|
|
|
164
|
+
| **Free** | $0 | Proxy, Repeater, Intruder Basic, Decoder | 500 записей истории, 10 потоков |
|
|
165
|
+
| **Lite** | $29/мес | + Scanner, Spider, Match&Replace | 5K истории, 20 потоков |
|
|
166
|
+
| **Medium** | $99/мес | + WebSocket, Plugins, Turbo Mode | 50K истории, 50 потоков |
|
|
167
|
+
| **Full** | $299/мес | + AI Analysis, PRO Reports, API | Unlimited |
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 🚀 Killer Features
|
|
172
|
+
|
|
173
|
+
### Turbo Mode Intruder
|
|
174
|
+
10x ускорение через HTTP Keep-Alive и connection pooling:
|
|
175
|
+
- Обычный режим: ~10-20 req/sec
|
|
176
|
+
- Turbo режим: ~100-200 req/sec
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
from pentool.api.intruder_api import IntruderAPI
|
|
180
|
+
|
|
181
|
+
api = IntruderAPI()
|
|
182
|
+
await api.start_attack(config, turbo_mode=True) # 🚀
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Коммерческие планы
|
|
186
|
+
4 тарифа с автоматической проверкой лимитов:
|
|
187
|
+
```python
|
|
188
|
+
from pentool.core.features import has_feature, get_limit
|
|
189
|
+
|
|
190
|
+
if has_feature("turbo_mode", plan):
|
|
191
|
+
max_threads = get_limit("intruder_max_threads", plan)
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 🤝 Contributing
|
|
197
|
+
|
|
198
|
+
Contributions приветствуются! Перед началом:
|
|
199
|
+
1. Прочитай `docs/ARCHITECTURE_AUDIT.md`
|
|
200
|
+
2. Проверь `MYPLANS/MASTER_PLAN.md` для актуальных задач
|
|
201
|
+
3. Запусти тесты перед PR
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 📄 License
|
|
206
|
+
|
|
207
|
+
- **Community Edition:** AGPL-3.0
|
|
208
|
+
- **PRO Edition:** Commercial license
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 🔗 Ссылки
|
|
213
|
+
|
|
214
|
+
- **GitHub:** https://github.com/pentool/pentool
|
|
215
|
+
- **Docs:** https://pentool.dev/docs
|
|
216
|
+
- **Discord:** https://discord.gg/pentool
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 📊 Статус проекта
|
|
221
|
+
|
|
222
|
+
- **Готовность:** 87%
|
|
223
|
+
- **Последнее обновление:** 2026-07-22
|
|
224
|
+
- **Тесты:** 99.1% проходят
|
|
225
|
+
- **Прогноз релиза:** 1-8 августа 2026
|
|
226
|
+
|
|
227
|
+
**Проект в активной разработке. Релиз 1.0 скоро!** 🚀
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
*Создано с помощью Claude Opus 4.8*
|
pentool-0.1.0/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# 🔐 PENTOOL — Modern Web Pentesting TUI
|
|
2
|
+
|
|
3
|
+
**Версия:** 1.0 (Pre-release)
|
|
4
|
+
**Статус:** 87% готовности к релизу
|
|
5
|
+
**Автор:** @sudores (DoctorX)
|
|
6
|
+
|
|
7
|
+
Современный инструмент для тестирования безопасности веб-приложений с интуитивным TUI интерфейсом.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🚀 Быстрый старт
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Установка
|
|
15
|
+
pip install pentool
|
|
16
|
+
|
|
17
|
+
# Запуск
|
|
18
|
+
pentool
|
|
19
|
+
|
|
20
|
+
# Или из исходников
|
|
21
|
+
git clone https://github.com/pentool/pentool.git
|
|
22
|
+
cd pentool
|
|
23
|
+
pip install -e .
|
|
24
|
+
pentool
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## ✨ Ключевые возможности
|
|
30
|
+
|
|
31
|
+
### Основные инструменты (Free)
|
|
32
|
+
- **Proxy** — HTTP/HTTPS перехват с SSL
|
|
33
|
+
- **Repeater** — модификация и повтор запросов
|
|
34
|
+
- **Intruder** — автоматизированные атаки с payloads
|
|
35
|
+
- **Decoder** — кодирование/декодирование
|
|
36
|
+
- **Comparer** — сравнение запросов/ответов
|
|
37
|
+
- **HTTPQL** — мощная фильтрация истории
|
|
38
|
+
|
|
39
|
+
### PRO возможности
|
|
40
|
+
- **Turbo Mode Intruder** 🚀 — 10x ускорение (100-200 req/sec)
|
|
41
|
+
- **Scanner** — автоматическое обнаружение уязвимостей (23 проверки)
|
|
42
|
+
- **Spider** — автоматическое сканирование сайтов
|
|
43
|
+
- **WebSocket** — перехват и модификация WS трафика
|
|
44
|
+
- **AI Analysis** — анализ уязвимостей с помощью GPT-4
|
|
45
|
+
- **Plugins** — система расширений
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 📦 Установка
|
|
50
|
+
|
|
51
|
+
### Требования
|
|
52
|
+
- Python 3.10+
|
|
53
|
+
- Linux / macOS / Windows
|
|
54
|
+
|
|
55
|
+
### Из PyPI
|
|
56
|
+
```bash
|
|
57
|
+
pip install pentool
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Из исходников
|
|
61
|
+
```bash
|
|
62
|
+
git clone https://github.com/pentool/pentool.git
|
|
63
|
+
cd pentool
|
|
64
|
+
python -m venv venv
|
|
65
|
+
source venv/bin/activate # или venv\Scripts\activate на Windows
|
|
66
|
+
pip install -e ".[dev]"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 📖 Документация
|
|
72
|
+
|
|
73
|
+
- **Quick Start:** `docs/QUICKSTART.md`
|
|
74
|
+
- **User Guide:** `docs/user/`
|
|
75
|
+
- **API Reference:** `docs/API_CONTRACTS.md`
|
|
76
|
+
- **Architecture:** `docs/ARCHITECTURE_AUDIT.md`
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🧪 Тестирование
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Запустить все тесты
|
|
84
|
+
pytest tests/
|
|
85
|
+
|
|
86
|
+
# С coverage
|
|
87
|
+
pytest tests/ --cov=pentool --cov-report=html
|
|
88
|
+
|
|
89
|
+
# Только unit-тесты
|
|
90
|
+
pytest tests/unit/ -v
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Текущий статус:**
|
|
94
|
+
- Unit-тесты: 1348/1360 PASSED (99.1%)
|
|
95
|
+
- Coverage: 29%
|
|
96
|
+
- Integration: требуют отладки
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 🏗️ Архитектура
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
pentool/
|
|
104
|
+
├── core/ # Ядро: EventBus, license, features
|
|
105
|
+
├── modules/ # Логика: proxy, scanner, intruder
|
|
106
|
+
├── api/ # API фасады для модулей
|
|
107
|
+
├── services/ # Оркестрация бизнес-логики
|
|
108
|
+
├── storage/ # База данных (SQLite)
|
|
109
|
+
├── tui/ # TUI интерфейс (Textual)
|
|
110
|
+
├── cli/ # CLI команды
|
|
111
|
+
├── plugins/ # Система плагинов
|
|
112
|
+
└── utils/ # Вспомогательные утилиты
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 💰 Тарифные планы
|
|
118
|
+
|
|
119
|
+
| Plan | Цена | Инструменты | Лимиты |
|
|
120
|
+
|------|------|-------------|--------|
|
|
121
|
+
| **Free** | $0 | Proxy, Repeater, Intruder Basic, Decoder | 500 записей истории, 10 потоков |
|
|
122
|
+
| **Lite** | $29/мес | + Scanner, Spider, Match&Replace | 5K истории, 20 потоков |
|
|
123
|
+
| **Medium** | $99/мес | + WebSocket, Plugins, Turbo Mode | 50K истории, 50 потоков |
|
|
124
|
+
| **Full** | $299/мес | + AI Analysis, PRO Reports, API | Unlimited |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🚀 Killer Features
|
|
129
|
+
|
|
130
|
+
### Turbo Mode Intruder
|
|
131
|
+
10x ускорение через HTTP Keep-Alive и connection pooling:
|
|
132
|
+
- Обычный режим: ~10-20 req/sec
|
|
133
|
+
- Turbo режим: ~100-200 req/sec
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from pentool.api.intruder_api import IntruderAPI
|
|
137
|
+
|
|
138
|
+
api = IntruderAPI()
|
|
139
|
+
await api.start_attack(config, turbo_mode=True) # 🚀
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Коммерческие планы
|
|
143
|
+
4 тарифа с автоматической проверкой лимитов:
|
|
144
|
+
```python
|
|
145
|
+
from pentool.core.features import has_feature, get_limit
|
|
146
|
+
|
|
147
|
+
if has_feature("turbo_mode", plan):
|
|
148
|
+
max_threads = get_limit("intruder_max_threads", plan)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 🤝 Contributing
|
|
154
|
+
|
|
155
|
+
Contributions приветствуются! Перед началом:
|
|
156
|
+
1. Прочитай `docs/ARCHITECTURE_AUDIT.md`
|
|
157
|
+
2. Проверь `MYPLANS/MASTER_PLAN.md` для актуальных задач
|
|
158
|
+
3. Запусти тесты перед PR
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 📄 License
|
|
163
|
+
|
|
164
|
+
- **Community Edition:** AGPL-3.0
|
|
165
|
+
- **PRO Edition:** Commercial license
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 🔗 Ссылки
|
|
170
|
+
|
|
171
|
+
- **GitHub:** https://github.com/pentool/pentool
|
|
172
|
+
- **Docs:** https://pentool.dev/docs
|
|
173
|
+
- **Discord:** https://discord.gg/pentool
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 📊 Статус проекта
|
|
178
|
+
|
|
179
|
+
- **Готовность:** 87%
|
|
180
|
+
- **Последнее обновление:** 2026-07-22
|
|
181
|
+
- **Тесты:** 99.1% проходят
|
|
182
|
+
- **Прогноз релиза:** 1-8 августа 2026
|
|
183
|
+
|
|
184
|
+
**Проект в активной разработке. Релиз 1.0 скоро!** 🚀
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
*Создано с помощью Claude Opus 4.8*
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Точка входа: без аргументов — TUI, с аргументами — CLI."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main() -> None:
|
|
7
|
+
if len(sys.argv) > 1:
|
|
8
|
+
from pentool.cli.main import cli
|
|
9
|
+
cli()
|
|
10
|
+
else:
|
|
11
|
+
from pentool.tui.app import PentoolApp
|
|
12
|
+
PentoolApp().run()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
if __name__ == "__main__":
|
|
16
|
+
main()
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""API-слой pentool — публичный интерфейс между modules/ и TUI/CLI."""
|
|
2
|
+
|
|
3
|
+
from pentool.api.proxy_api import ProxyAPI, InterceptedRequest, MatchReplaceRule
|
|
4
|
+
from pentool.api.repeater_api import RepeaterAPI
|
|
5
|
+
from pentool.api.scanner_api import ScannerAPI
|
|
6
|
+
from pentool.api.intruder_api import IntruderAPI, IntruderConfig, IntruderAttack
|
|
7
|
+
from pentool.api.spider_api import SpiderAPI
|
|
8
|
+
from pentool.api.target_api import TargetAPI
|
|
9
|
+
# Decoder/Comparer/Sequencer — функциональные API без класса-обёртки
|
|
10
|
+
from pentool.api.decoder_api import ( # noqa: F401
|
|
11
|
+
OPERATIONS, OP_LABELS, DecoderChain,
|
|
12
|
+
decode_op, decode_smart, encode_op, run_chain,
|
|
13
|
+
)
|
|
14
|
+
from pentool.api.comparer_api import ( # noqa: F401
|
|
15
|
+
compare, compare_lines, CompareStats, DiffLine, DiffResult,
|
|
16
|
+
)
|
|
17
|
+
from pentool.api.sequencer_api import ( # noqa: F401
|
|
18
|
+
Sequencer, SequencerReport, token_entropy, charset_size,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
# Proxy
|
|
23
|
+
"ProxyAPI", "InterceptedRequest", "MatchReplaceRule",
|
|
24
|
+
# Repeater
|
|
25
|
+
"RepeaterAPI",
|
|
26
|
+
# Scanner
|
|
27
|
+
"ScannerAPI",
|
|
28
|
+
# Intruder
|
|
29
|
+
"IntruderAPI", "IntruderConfig", "IntruderAttack",
|
|
30
|
+
# Spider
|
|
31
|
+
"SpiderAPI",
|
|
32
|
+
# Target
|
|
33
|
+
"TargetAPI",
|
|
34
|
+
# Decoder
|
|
35
|
+
"OPERATIONS", "OP_LABELS", "DecoderChain",
|
|
36
|
+
"decode_op", "decode_smart", "encode_op", "run_chain",
|
|
37
|
+
# Comparer
|
|
38
|
+
"compare", "compare_lines", "CompareStats", "DiffLine", "DiffResult",
|
|
39
|
+
# Sequencer
|
|
40
|
+
"Sequencer", "SequencerReport", "token_entropy", "charset_size",
|
|
41
|
+
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""ExportableAPI — base mixin for API classes supporting project persistence."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ExportableAPI(ABC):
|
|
9
|
+
"""Mixin for API classes that support project data export/import.
|
|
10
|
+
|
|
11
|
+
Subclasses must implement export_project_data and import_project_data.
|
|
12
|
+
These methods are called by core.project.save_project/load_project.
|
|
13
|
+
|
|
14
|
+
Usage::
|
|
15
|
+
|
|
16
|
+
class MyAPI(ExportableAPI):
|
|
17
|
+
def export_project_data(self) -> dict:
|
|
18
|
+
return {"my_data": [...]}
|
|
19
|
+
|
|
20
|
+
def import_project_data(self, data: dict) -> int:
|
|
21
|
+
items = data.get("my_data", [])
|
|
22
|
+
# restore items
|
|
23
|
+
return len(items)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
@abstractmethod
|
|
27
|
+
def export_project_data(self) -> dict:
|
|
28
|
+
"""Export module state to a serializable dict.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
dict: Module-specific data structure (e.g., {"results": [...]}).
|
|
32
|
+
Must be JSON-serializable (no datetime, use .isoformat()).
|
|
33
|
+
"""
|
|
34
|
+
raise NotImplementedError
|
|
35
|
+
|
|
36
|
+
@abstractmethod
|
|
37
|
+
def import_project_data(self, data: dict) -> int | tuple[int, str]:
|
|
38
|
+
"""Import module state from a loaded project dict.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
data: The module's block from project.json (e.g., data["intruder"]).
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
int: Number of items loaded successfully.
|
|
45
|
+
OR
|
|
46
|
+
tuple[int, str]: (count, error_message) — empty string if OK.
|
|
47
|
+
"""
|
|
48
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""ComparerAPI — публичный интерфейс Comparer для TUI."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pentool.modules.comparer import ( # noqa: F401
|
|
6
|
+
compare,
|
|
7
|
+
compare_lines,
|
|
8
|
+
CompareStats,
|
|
9
|
+
DiffLine,
|
|
10
|
+
DiffResult,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
__all__ = [
|
|
14
|
+
"compare",
|
|
15
|
+
"compare_lines",
|
|
16
|
+
"CompareStats",
|
|
17
|
+
"DiffLine",
|
|
18
|
+
"DiffResult",
|
|
19
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""DecoderAPI — публичный интерфейс Decoder/Encoder для TUI."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
# Реэкспорт всего публичного из modules/decoder
|
|
6
|
+
from pentool.modules.decoder import ( # noqa: F401
|
|
7
|
+
OPERATIONS,
|
|
8
|
+
OP_LABELS,
|
|
9
|
+
DecoderChain,
|
|
10
|
+
decode_op,
|
|
11
|
+
decode_smart,
|
|
12
|
+
encode_op,
|
|
13
|
+
run_chain,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"OPERATIONS",
|
|
18
|
+
"OP_LABELS",
|
|
19
|
+
"DecoderChain",
|
|
20
|
+
"decode_op",
|
|
21
|
+
"decode_smart",
|
|
22
|
+
"encode_op",
|
|
23
|
+
"run_chain",
|
|
24
|
+
]
|