我计划使用python创建一个网络安全测试工具,该工具执行各种攻击,并测试主机上的其他漏洞问题(例如:死平、慢氯、泪滴等),以便安全团队能够快速地PoC不同的供应商设备。
因为这是我的第一个真正的“自己的”项目.我不知道如何继续构建它。
到目前为止我是这样想的:
├ role
| ├ attacker.py
| └ victim.py
├ tests
| ├ slow_loris.py
| └ teadrop.py
├ CLI.py
└ main.py在角色中,我们有两个脚本来定义要运行的服务(如果它是受害者,那么它在端口80上运行一个web服务器等等),在测试中,我们要运行不同的测试,在CLI中,我们可以找到用户可以拥有的与CLI的所有可能的交互,菜单,“您想退出吗”等等。
最后,我们导入所有内容并运行程序。
我应该保持这种结构还是有什么东西我可能没有寻址/忘记?
发布于 2021-02-12 19:33:01
用这种方式设计一个工具是非常好的。将不同的角色/职责分离到不同的模块中非常好,因为CLI接口与您的“业务逻辑”是分开的。
然而,Python的导入机制相当脆弱。如果您是import CLI,则不能保证您将得到CLI.py文件。相反,更明智的做法是将所有文件移动到一个模块中,然后使用相对导入:
- README.md
- tests/
- ...
- your_awesome_tool/
- __init__.py
- __main__.py
- cli.py
- role/
- ...__init__.py文件表示your_awesome_tool模块。当您通过__main__.py执行模块时,将调用python3 -m your_awesome_tool文件。在这些文件中,可以使用像from .cli import some_function这样的相对导入。
是使用像这样的模块,还是像您正在做的那样使用单独的脚本取决于您的目标。因为只是玩弄工具,这并不重要。当您想要一个可以像普通程序一样运行的可安装工具时,使用已建立的Python机制更有用。
https://softwareengineering.stackexchange.com/questions/422148
复制相似问题