11// SPDX-License-Identifier: CC-BY-SA-4.0
22// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
33= 🔒 SafeBruteForce
4- image:https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=openssourcesecurity[OpenSSF Best Practices,link="https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/safe-brute-force"]
5-
64
75image:https://img.shields.io/badge/License-MPL_2.0-blue.svg[License: MPL-2.0,link="https://opensource.org/licenses/MPL-2.0"]
8- // SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell
9-
10- [](RSR_COMPLIANCE.md)
11- [](MAINTAINERS.md)
12- [![Erlang/OTP]()](https://www.erlang.org/)
13- [![LFE]()](https://lfe.io/)
14- [](.github/workflows/ci.yml)
15- [](.well-known/security.txt)
6+ image:https://img.shields.io/badge/OpenSSF-Best_Practices-green[OpenSSF Best Practices,link="https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/safe-brute-force"]
7+ image:https://img.shields.io/badge/RSR-Bronze-cd7f32[RSR Compliance,link="RSR_COMPLIANCE.md"]
8+ image:https://img.shields.io/badge/TPCF-P3_Community-green[TPCF Perimeter,link="MAINTAINERS.md"]
9+ image:https://img.shields.io/badge/Erlang%2FOTP-26+-A90533?logo=erlang&logoColor=white[Erlang/OTP,link="https://www.erlang.org/"]
10+ image:https://img.shields.io/badge/LFE-Lisp_Flavoured_Erlang-orange[LFE,link="https://lfe.io/"]
11+ image:https://img.shields.io/badge/CI-GitLab_%7C_GitHub-blue[CI,link="https://github.com/hyperpolymath/safe-brute-force/actions"]
12+ image:https://img.shields.io/badge/security.txt-RFC_9116-informational[Security,link=".well-known/security.txt"]
1613
1714A *controlled, ethical brute-force utility* designed for authorized security testing and penetration testing engagements. Unlike traditional brute-force tools that flood systems recklessly, SafeBruteForce prioritizes safety, user control, and system preservation.
1815
19- ```
16+ ....
2017 ███████╗ █████╗ ███████╗███████╗ ██████╗ ███████╗
2118 ██╔════╝██╔══██╗██╔════╝██╔════╝ ██╔══██╗██╔════╝
2219 ███████╗███████║█████╗ █████╗ ██████╔╝█████╗
@@ -26,7 +23,7 @@ A *controlled, ethical brute-force utility* designed for authorized security tes
2623
2724 SafeBruteForce v0.1.0 - Controlled Ethical Testing
2825 ⚠️ For Authorized Security Testing Only ⚠️
29- ```
26+ ....
3027
3128== 🔍 Why SafeBruteForce?
3229
@@ -90,50 +87,54 @@ SafeBruteForce *redefines brute-forcing* as a controlled, pausable process:
9087
9188=== Prerequisites
9289
93- ```bash
94- = Erlang/OTP 26 or higher
90+ [source,bash]
91+ ----
92+ # Erlang/OTP 26 or higher
9593
96- = Ubuntu/Debian:
94+ # Ubuntu/Debian:
9795
9896sudo apt-get install erlang
9997
100- = macOS:
98+ # macOS:
10199
102100brew install erlang
103101
104- = Rebar3 (build tool)
102+ # Rebar3 (build tool)
105103
106104curl -O https://s3.amazonaws.com/rebar3/rebar3
107105chmod +x rebar3
108106sudo mv rebar3 /usr/local/bin/
109- ```
107+ ----
110108
111109=== Installation
112110
113- ```bash
114- = Clone the repository
111+ [source,bash]
112+ ----
113+ # Clone the repository
115114
116115git clone https://github.com/Hyperpolymath/safe-brute-force.git
117116cd safe-brute-force
118117
119- = Compile
118+ # Compile
120119
121120rebar3 compile
122121
123- = Run tests
122+ # Run tests
124123
125124rebar3 lfe test
126- ```
125+ ----
127126
128127=== Quick Start
129128
130129==== Interactive REPL (Recommended)
131130
132- ```bash
131+ [source,bash]
132+ ----
133133rebar3 lfe repl
134- ```
134+ ----
135135
136- ```lisp
136+ [source,lisp]
137+ ----
137138;; Start the application
138139> (sbf:start)
139140
@@ -160,34 +161,36 @@ rebar3 lfe repl
160161
161162;; Get detailed statistics
162163> (sbf:stats)
163- ```
164+ ----
164165
165166==== Command Line Interface
166167
167- ```bash
168- = Make CLI executable
168+ [source,bash]
169+ ----
170+ # Make CLI executable
169171
170172chmod +x sbf_cli
171173
172- = Test with wordlist
174+ # Test with wordlist
173175
174176./sbf_cli wordlist priv/wordlists/common-passwords.txt \
175177 http://localhost/login admin
176178
177- = Test PIN codes
179+ # Test PIN codes
178180
179181./sbf_cli pins http://localhost/api/verify
180182
181- = Generate charset combinations
183+ # Generate charset combinations
182184
183185./sbf_cli charset "abc123" 4 6 http://localhost
184- ```
186+ ----
185187
186188== 📖 Usage Examples
187189
188190=== Example 1: HTTP Login Testing
189191
190- ```lisp
192+ [source,lisp]
193+ ----
191194(let ((pattern-config
192195 (list (tuple 'type 'wordlist)
193196 (tuple 'filename "passwords.txt")
@@ -202,11 +205,12 @@ chmod +x sbf_cli
202205 (tuple 'success_pattern "Welcome")
203206 (tuple 'failure_pattern "Invalid"))))
204207 (sbf:run pattern-config target-config))
205- ```
208+ ----
206209
207210=== Example 2: PIN Code Testing
208211
209- ```lisp
212+ [source,lisp]
213+ ----
210214;; Test all 4-digit PINs with custom validator
211215(let ((validator
212216 (lambda (pin)
@@ -221,11 +225,12 @@ chmod +x sbf_cli
221225 (list (tuple 'type 'function)
222226 (tuple 'function validator))))
223227 (sbf:run pattern-config target-config))
224- ```
228+ ----
225229
226230=== Example 3: Custom Pattern Generation
227231
228- ```lisp
232+ [source,lisp]
233+ ----
229234;; Company-specific password patterns
230235(let ((pattern-generator
231236 (lambda ()
@@ -244,11 +249,12 @@ chmod +x sbf_cli
244249 (tuple 'url "http://testsite.local/login")
245250 (tuple 'username "testuser"))))
246251 (sbf:run pattern-config target-config))
247- ```
252+ ----
248253
249254=== Example 4: Checkpoint Management
250255
251- ```lisp
256+ [source,lisp]
257+ ----
252258;; Start a long-running operation
253259> (sbf:run_async pattern-config target-config)
254260#Pid<0.234.0>
@@ -263,13 +269,13 @@ chmod +x sbf_cli
263269
264270> (sbf:load_checkpoint "my_session_1705334400_1234")
265271{ok, #{state => ...}}
266- ```
272+ ----
267273
268274== 🏗️ Architecture
269275
270276SafeBruteForce is built on *Erlang/OTP* principles for robustness and concurrency:
271277
272- ```
278+ ....
273279┌─────────────────────────────────────────────────┐
274280│ sbf_app (Application) │
275281└───────────────────┬─────────────────────────────┘
@@ -289,7 +295,7 @@ SafeBruteForce is built on *Erlang/OTP* principles for robustness and concurrenc
289295 - running - Pattern execution
290296 - paused - Rate limiting
291297 - waiting - Result tracking
292- ```
298+ ....
293299
294300=== Core Modules
295301
@@ -335,55 +341,56 @@ Be aware of applicable laws in your jurisdiction:
335341
336342== 📚 Documentation
337343
338- - *[Usage Guide]( docs/USAGE.md) *: Comprehensive usage instructions
339- - *[Security Best Practices](docs/SECURITY.md) *: Legal and ethical guidelines
340- - *[Contributing Guide]( docs/CONTRIBUTING.md) *: How to contribute
341- - *[ CLAUDE.md]( CLAUDE.md) *: AI assistant guidance for development
344+ - *link: docs/USAGE.md[Usage Guide] *: Comprehensive usage instructions
345+ - *link:docs/SECURITY.md [Security Best Practices]*: Legal and ethical guidelines
346+ - *link: docs/CONTRIBUTING.md[Contributing Guide] *: How to contribute
347+ - *link: CLAUDE.md[ CLAUDE.md] *: AI assistant guidance for development
342348
343349== 🧪 Testing
344350
345- ```bash
346- = Run all tests
351+ [source,bash]
352+ ----
353+ # Run all tests
347354
348355rebar3 lfe test
349356
350- = Run with coverage
357+ # Run with coverage
351358
352359rebar3 lfe test --cover
353360
354- = Run specific test module
361+ # Run specific test module
355362
356363rebar3 lfe test --module=sbf_patterns_tests
357- ```
364+ ----
358365
359366== 🗺️ Roadmap
360367
361368=== v0.2.0 (Planned)
362- - [ ] SSH brute-force module
363- - [ ] FTP support
364- - [ ] Database connection testing
365- - [ ] Distributed worker support
366- - [ ] Web UI dashboard
367- - [ ] Enhanced reporting (PDF, HTML)
369+ * [ ] SSH brute-force module
370+ * [ ] FTP support
371+ * [ ] Database connection testing
372+ * [ ] Distributed worker support
373+ * [ ] Web UI dashboard
374+ * [ ] Enhanced reporting (PDF, HTML)
368375
369376=== v0.3.0 (Future)
370- - [ ] Machine learning pattern generation
371- - [ ] Cloud integration (AWS, GCP, Azure)
372- - [ ] SIEM integration
373- - [ ] Custom plugin system
374- - [ ] Performance optimizations
377+ * [ ] Machine learning pattern generation
378+ * [ ] Cloud integration (AWS, GCP, Azure)
379+ * [ ] SIEM integration
380+ * [ ] Custom plugin system
381+ * [ ] Performance optimizations
375382
376383== 🤝 Contributing
377384
378- We welcome contributions! Please see [ CONTRIBUTING.md](docs/ CONTRIBUTING.md) for guidelines.
385+ We welcome contributions! Please see link:docs/ CONTRIBUTING.md[ CONTRIBUTING.md] for guidelines.
379386
380387=== Contributors
381388
382- - [Hyperpolymath]( https://github.com/Hyperpolymath) - Creator and maintainer
389+ - link: https://github.com/Hyperpolymath[Hyperpolymath] - Creator and maintainer
383390
384391== 📜 License
385392
386- Palimpsest-MPL-1.0 License - See [LICENSE](LICENSE) for details.
393+ Palimpsest-MPL-1.0 License - See link:LICENSE [LICENSE] for details.
387394
388395*Note*: While the software is open source, users are responsible for ensuring their use complies with all applicable laws and regulations.
389396
@@ -415,9 +422,9 @@ This project maintains the principle of *"Safety First"*:
415422== 📞 Support
416423
417424- *Documentation*: Check the `docs/` directory
418- - *Issues*: [GitHub Issues]( https://github.com/Hyperpolymath/safe-brute-force/issues)
419- - *Discussions*: [GitHub Discussions]( https://github.com/Hyperpolymath/safe-brute-force/discussions)
420- - *Security*: See [ SECURITY.md](docs/ SECURITY.md) for responsible disclosure
425+ - *Issues*: link: https://github.com/Hyperpolymath/safe-brute-force/issues[GitHub Issues]
426+ - *Discussions*: link: https://github.com/Hyperpolymath/safe-brute-force/discussions[GitHub Discussions]
427+ - *Security*: See link:docs/ SECURITY.md[ SECURITY.md] for responsible disclosure
421428
422429== 🙏 Acknowledgments
423430
0 commit comments