Metadata-Version: 2.5
Name: cyberplain
Version: 0.3.1
Summary: Plain-English defensive cybersecurity tools for Python and the command line
Project-URL: Homepage, https://github.com/fortnitecodedrop-cmyk/new
Project-URL: Repository, https://github.com/fortnitecodedrop-cmyk/new
Project-URL: Issues, https://github.com/fortnitecodedrop-cmyk/new/issues
Author: William J. Laurento II
License: MIT
License-File: LICENSE
Keywords: cybersecurity,defensive-security,dns,pcap,port-scanner,security,tls
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security
Requires-Python: >=3.10
Provides-Extra: ai
Requires-Dist: openai>=1.0; extra == 'ai'
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Requires-Dist: twine>=5; extra == 'dev'
Provides-Extra: packets
Requires-Dist: dpkt>=1.9.8; extra == 'packets'
Description-Content-Type: text/markdown



CyberPlain is a defensive cybersecurity toolkit for Python and the command line. It uses normal English in its names, output, errors, and documentation so beginners can understand what a check did and experienced practitioners can automate it.

## Learn neural networks

For a tiny, dependency-free neural network, describe the layer sizes, give it examples, and ask it a question:

```python
from cyberplain import make_brain

brain = make_brain()
brain.train(
	[[0, 0], [0, 1], [1, 0], [1, 1]],
	[0, 1, 1, 0],
	epochs=2_000,
)
print(brain.predict([1, 0]))  # close to 1
print(brain.predict([1, 1]))  # close to 0
```

`make_brain()` creates a small network with sensible defaults. Use `NeuralNetwork(2, 3, 1)` when you want to choose every layer yourself. `train()` returns the error history, while `weights` and `biases` stay visible so learners can see what practice changes.
