moriarty-project 0.1.20__py3-none-any.whl → 0.1.23__py3-none-any.whl

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.
moriarty/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  __all__ = ["__version__"]
4
- __version__ = "0.1.20"
4
+ __version__ = "0.1.23"
moriarty/cli/app.py CHANGED
@@ -8,7 +8,7 @@ from rich.console import Console
8
8
  from rich.theme import Theme
9
9
 
10
10
  from ..logging.config import LogStyle, configure_logging
11
- from . import dns, email, rdap, tls, user, domain_cmd, intelligence, wifippler
11
+ from . import dns, email, rdap, tls, user, domain_cmd, intelligence
12
12
  from .state import CLIState, GlobalOptions
13
13
 
14
14
  console = Console(theme=Theme({
@@ -111,20 +111,19 @@ def main(
111
111
  )
112
112
  )
113
113
 
114
+
114
115
  app.add_typer(email.app, name="email", help="Email reconnaissance primitives.")
115
116
  app.add_typer(dns.app, name="dns", help="Consultas DNS.")
116
117
  app.add_typer(rdap.app, name="rdap", help="Consultas RDAP.")
117
118
  app.add_typer(tls.app, name="tls", help="Inspeções TLS.")
118
- app.add_typer(intelligence.app, name="intelligence", help="Inteligência de ameaças.")
119
- app.add_typer(domain_cmd.app, name="domain", help="Análise de domínios.")
120
- app.add_typer(wifippler.app, name="wifippler", help="Análise de redes WiFi.")
121
- app.add_typer(user.app, name="user", help="User/IP reconnaissance and scanning.")
119
+ app.add_typer(user.app, name="user", help="Enumeração de usernames.")
120
+ app.add_typer(domain_cmd.app, name="domain", help="🌐 Domain/IP reconnaissance and scanning.")
122
121
 
123
122
  # Registra os comandos de inteligência
124
123
  intelligence.register_app(app)
125
124
 
126
125
 
127
- if __name__ == "__main__":
126
+ def main_entry() -> None:
128
127
  app()
129
128
 
130
129
 
@@ -11,11 +11,8 @@ from dataclasses import dataclass, field
11
11
  from datetime import datetime
12
12
  from typing import Dict, List, Optional, Tuple, Any
13
13
 
14
- # Importa a classe ServiceInfo para uso no código
15
-
16
14
  import aiohttp
17
15
  import dns.resolver
18
- import dns.asyncresolver
19
16
  import OpenSSL.crypto
20
17
  import structlog
21
18
  from rich.console import Console
@@ -156,7 +153,6 @@ class PortScanResult:
156
153
  port: int
157
154
  protocol: str = "tcp"
158
155
  status: str = "open"
159
- target: Optional[str] = None
160
156
  service: Optional[ServiceInfo] = None
161
157
  banner: Optional[str] = None
162
158
  timestamp: str = field(default_factory=lambda: datetime.utcnow().isoformat())
@@ -294,7 +290,7 @@ class PortScanner:
294
290
  )
295
291
 
296
292
  # Se chegou aqui, a porta está aberta
297
- result = PortScanResult(port=port, status="open", target=self.target)
293
+ result = PortScanResult(port=port, status="open")
298
294
 
299
295
  # Tenta obter o banner do serviço
300
296
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moriarty-project
3
- Version: 0.1.20
3
+ Version: 0.1.23
4
4
  Summary: Client-side OSINT toolkit with forensic-grade evidence handling.
5
5
  Project-URL: Homepage, https://github.com/DonatoReis/moriarty
6
6
  Project-URL: Documentation, https://github.com/DonatoReis/moriarty#readme
@@ -12,57 +12,44 @@ Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Programming Language :: Python
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3 :: Only
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
15
  Classifier: Programming Language :: Python :: 3.13
18
16
  Classifier: Topic :: Security
19
17
  Classifier: Topic :: Utilities
20
- Requires-Python: >=3.11
21
- Requires-Dist: aiodns>=3.0.0
22
- Requires-Dist: aiohttp>=3.9.0
23
- Requires-Dist: aiolimiter>=1.1.0
24
- Requires-Dist: aiosmtplib>=2.0.0
25
- Requires-Dist: colorama>=0.4.6
26
- Requires-Dist: dnspython>=2.5.0
27
- Requires-Dist: email-validator>=2.0.0
28
- Requires-Dist: httpx[http2]>=0.27.0
29
- Requires-Dist: idna>=3.6
30
- Requires-Dist: jsonpath-ng>=1.6.0
31
- Requires-Dist: lxml>=5.3.0
32
- Requires-Dist: netifaces>=0.11.0
33
- Requires-Dist: networkx>=3.2.0
34
- Requires-Dist: orjson>=3.9.0
35
- Requires-Dist: phonenumbers>=8.13.0
36
- Requires-Dist: pillow>=10.0.0
37
- Requires-Dist: psutil>=5.9.0
38
- Requires-Dist: pycryptodomex>=3.23.0
39
- Requires-Dist: pydantic>=2.7.0
40
- Requires-Dist: pyopenssl>=25.0.0
41
- Requires-Dist: python-nmap>=0.7.1
42
- Requires-Dist: pyyaml>=6.0
43
- Requires-Dist: rapidfuzz>=3.0.0
44
- Requires-Dist: requests>=2.32.0
45
- Requires-Dist: rich>=13.7.0
46
- Requires-Dist: scapy>=2.5.0
47
- Requires-Dist: selectolax>=0.3.20
48
- Requires-Dist: structlog>=24.1.0
49
- Requires-Dist: tqdm>=4.67.0
50
- Requires-Dist: typer[all]>=0.12.0
51
- Requires-Dist: uvloop>=0.19.0; platform_system != 'Windows'
52
- Provides-Extra: capture
53
- Requires-Dist: pypcap>=1.2.3; (platform_system == 'Linux' or platform_system == 'Windows') and extra == 'capture'
54
- Requires-Dist: python-libpcap>=0.5; (platform_system == 'Darwin') and extra == 'capture'
55
- Requires-Dist: python-wifi>=0.6.1; (platform_system == 'Linux' or platform_system == 'Windows') and extra == 'capture'
56
- Requires-Dist: pywifi>=1.1.12; (platform_system == 'Linux' or platform_system == 'Windows') and extra == 'capture'
18
+ Requires-Python: >=3.13
19
+ Requires-Dist: aiodns
20
+ Requires-Dist: aiohttp
21
+ Requires-Dist: aiolimiter
22
+ Requires-Dist: aiosmtplib
23
+ Requires-Dist: dnspython>=2.0.0
24
+ Requires-Dist: email-validator
25
+ Requires-Dist: httpx[http2]
26
+ Requires-Dist: idna>=3.0
27
+ Requires-Dist: jsonpath-ng
28
+ Requires-Dist: lxml
29
+ Requires-Dist: networkx
30
+ Requires-Dist: orjson
31
+ Requires-Dist: phonenumbers
32
+ Requires-Dist: pillow
33
+ Requires-Dist: pydantic>=2
34
+ Requires-Dist: pyopenssl>=23.0.0
35
+ Requires-Dist: pyyaml>=6
36
+ Requires-Dist: rapidfuzz
37
+ Requires-Dist: requests
38
+ Requires-Dist: rich
39
+ Requires-Dist: scapy
40
+ Requires-Dist: selectolax
41
+ Requires-Dist: structlog
42
+ Requires-Dist: typer[all]
43
+ Requires-Dist: uvloop; platform_system != 'Windows'
57
44
  Provides-Extra: dev
58
- Requires-Dist: cyclonedx-bom>=4.4.0; extra == 'dev'
45
+ Requires-Dist: cyclonedx-bom; extra == 'dev'
59
46
  Requires-Dist: deptry>=0.23.0; extra == 'dev'
60
- Requires-Dist: hypothesis>=6.98.0; extra == 'dev'
61
- Requires-Dist: mypy>=1.10.0; extra == 'dev'
62
- Requires-Dist: pip-audit>=2.7.0; extra == 'dev'
63
- Requires-Dist: pytest-xdist>=3.5.0; extra == 'dev'
64
- Requires-Dist: pytest>=8.0.0; extra == 'dev'
65
- Requires-Dist: ruff>=0.5.0; extra == 'dev'
47
+ Requires-Dist: hypothesis; extra == 'dev'
48
+ Requires-Dist: mypy; extra == 'dev'
49
+ Requires-Dist: pip-audit; extra == 'dev'
50
+ Requires-Dist: pytest; extra == 'dev'
51
+ Requires-Dist: pytest-xdist; extra == 'dev'
52
+ Requires-Dist: ruff; extra == 'dev'
66
53
  Provides-Extra: headless
67
54
  Requires-Dist: playwright>=1.40.0; extra == 'headless'
68
55
  Provides-Extra: http3
@@ -98,7 +85,7 @@ Description-Content-Type: text/markdown
98
85
  <!-- Badges -->
99
86
  <p align="center">
100
87
  <a href="https://pypi.org/project/moriarty-project/">
101
- <img src="https://img.shields.io/badge/version-0.1.20-blue" alt="Version 0.1.20">
88
+ <img src="https://img.shields.io/pypi/v/moriarty-project?color=blue&label=PyPI" alt="PyPI version">
102
89
  </a>
103
90
  <a href="https://www.python.org/downloads/">
104
91
  <img src="https://img.shields.io/pypi/pyversions/moriarty-project?color=blue" alt="Python Versions">
@@ -152,7 +139,7 @@ Description-Content-Type: text/markdown
152
139
  pipx install moriarty-project
153
140
 
154
141
  # OU para instalar uma versão específica
155
- # pipx install moriarty-project==0.1.11
142
+ # pipx install moriarty-project==0.1.23
156
143
 
157
144
  # Verificar a instalação
158
145
  moriarty --help
@@ -1,4 +1,4 @@
1
- moriarty/__init__.py,sha256=LL0jMDKL64KHy0SPiH63TIE6Vkmy7HKgrpr1rbuTlW0,85
1
+ moriarty/__init__.py,sha256=xHQKlSMGcl0-ubP4s1a46VztIjLcTbQOpNHv-F_3yUk,85
2
2
  moriarty/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  moriarty/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  moriarty/assets/modules/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -328,7 +328,7 @@ moriarty/assets/templates/vulnerabilities/xss-reflected.yaml,sha256=iG0WphhygN2p
328
328
  moriarty/assets/templates/vulnerabilities/xxe-basic.yaml,sha256=7bG1KT5jBm8SAQp-pbjxknFuW5fIkF9yrufsq2OghRk,565
329
329
  moriarty/assets/wordlists/subdomains-1000.txt,sha256=XKDCiJMJ2wnDRngglAiv7iuDnwlUIr_-LnjlNwWp4sc,8032
330
330
  moriarty/cli/__init__.py,sha256=PQ8kA28EJ9h8mIK_VJtH1PtJ3xfVsF3d7IsmpZfl_Bc,54
331
- moriarty/cli/app.py,sha256=eszaYMs7PfFS0e7B31FZ-ratFHKzs4S7KCvAiAljh24,7992
331
+ moriarty/cli/app.py,sha256=uo5SxblJGG340F1cChad4W78ASFLk7k3x_ETtg-0mts,7825
332
332
  moriarty/cli/async_utils.py,sha256=jleTd2nyAVsNqJae2kKlo514gKKcH3nBXvfoLubOq6A,393
333
333
  moriarty/cli/dns.py,sha256=QhDwe9uoAmk243XbO9YBYk3YlPmiXYT_vLqUXum9i70,2735
334
334
  moriarty/cli/domain_cmd.py,sha256=CgpTN0kMKlAvrH72wDPuAodXOhBb0hgR4HBfZYfSTEg,24193
@@ -340,7 +340,6 @@ moriarty/cli/rdap.py,sha256=OVtYSsx37te0TxvY7K8iBMerPBSByXocm8kLeoUEhOw,3079
340
340
  moriarty/cli/state.py,sha256=5_HXXff9KWiYw8R763NgUAFuCAKHTZZe2zYD9JEvJxw,855
341
341
  moriarty/cli/tls.py,sha256=j4ieW_Vt0QG7AuDHfjUEAOYkvk4GJguB9hY6dYJW3K0,3269
342
342
  moriarty/cli/user.py,sha256=EWtRp4pzY7kOiWE16Yokc71pB4GP-ItguF1E2Lkri3Q,8169
343
- moriarty/cli/wifippler.py,sha256=sFjtwiN0-wSbBZ2MXE2Kb8kMBmz-BG1bsBcgo4G36SY,4431
344
343
  moriarty/core/cache_backend.py,sha256=tu_szkoRfZOmHh9g4ZTGc3gN-gZ-zTJGVKxlHhtvIHY,7032
345
344
  moriarty/core/config_manager.py,sha256=iXrH4UgMU05U7vsqfyFmwzybQIYH5s9hyjJlS9T9CKM,11751
346
345
  moriarty/correlator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -386,7 +385,7 @@ moriarty/modules/orchestrator.py,sha256=uhK4UP69uWUxCK4a_bGk_BI8I-coBM8mO8Ear3pc
386
385
  moriarty/modules/passive_recon.py,sha256=5XUJgyWvITMUf4W76QyNfbRgF1AitQ5xK9MbwzVURxM,16568
387
386
  moriarty/modules/phone_extractor.py,sha256=Bv4VVWPqf67CQfkMDJddggtEU5UUbra2FP5DLik2Gxw,5298
388
387
  moriarty/modules/pipeline_orchestrator.py,sha256=qP2WcvorM_pAjacJ8VuZ-1TQ7lDVLvnyFD9T4PvWq9I,26337
389
- moriarty/modules/port_scanner.py,sha256=FNExysXgxHU-z77yYIRL2om7C23WkiF-AMliPjSmQhQ,33432
388
+ moriarty/modules/port_scanner.py,sha256=fbz7ECgdcQ9OtummUc94xxOHLnKy7BaTDHWt9CNYITU,33302
390
389
  moriarty/modules/rdap.py,sha256=XlrTDalbSxszEwIQFHt-XWON_P9UsLLiR84DGSKAwrk,1859
391
390
  moriarty/modules/rdap_extended.py,sha256=Gef7zyOY5nuS2qn8a9iaXA7Tx3TJHZJBWpqa-BZaq4U,6447
392
391
  moriarty/modules/stealth_mode.py,sha256=9LJWXSgBjDsTZYslHz4zSnzDoC3JFdBcu3oOYN1IPhA,24459
@@ -400,20 +399,6 @@ moriarty/modules/vuln_scanner.py,sha256=-sRWOPzmrzUP9Mly471JCbP7iAxSwoho9DVn-6bF
400
399
  moriarty/modules/waf_detector.py,sha256=5biF5OVBHbLAj_5x0ZXzCS-94bQeJNzIcYm7kMDAX0I,20744
401
400
  moriarty/modules/wayback_discovery.py,sha256=sJN9at7Py-ZiUWuwnMU7fHOc_F3WwN1R3Y72qNSmxck,8573
402
401
  moriarty/modules/web_crawler.py,sha256=hxWbnD2GO_IbIb2FChCxCesgGu4dNhlloVqr5u1MC1k,5890
403
- moriarty/modules/wifippler/__init__.py,sha256=xt08XjvurzzID-rN5G7zEKtrYljrnP0p9XxzCi3KCUo,1376
404
- moriarty/modules/wifippler/core/__init__.py,sha256=2WBNJv6ipNpG3McJ3sBu4zJrFshP6Aan6dch_LHvDM4,1832
405
- moriarty/modules/wifippler/core/scanner.py,sha256=bjCBwDAybUMintwfUORZEl24Wr0zRJHfVg-j8-OUoKg,34193
406
- moriarty/modules/wifippler/core/utils.py,sha256=byGdpd0TrwYi9-HrqSDWRIvCTCpPZ9Xw7-ZYQqSnTx4,28135
407
- moriarty/modules/wifippler/core/attacks/__init__.py,sha256=Ch9qg0PUB1Q8aSiZuoJRJl5iVyy7muMgZ88e2bkG_Zs,370
408
- moriarty/modules/wifippler/core/attacks/deauth.py,sha256=ikOmHLb5NzuhiLRP1xBVzSM8JivjZh7zyFJffKWTwuY,13127
409
- moriarty/modules/wifippler/core/attacks/handshake.py,sha256=OGGtL9V69SukJXMrPyQ-NMXHGpDBsZU1-K5_Nm-iufM,16029
410
- moriarty/modules/wifippler/core/attacks/pmkid.py,sha256=gc83t2ejr_nH2GIom_Pui4xqKSbhr4AUa8vQ-zxQ1tg,16992
411
- moriarty/modules/wifippler/core/attacks/wep.py,sha256=GPr30ZcFwECjjs2-A7g-TutgSO3oZAZ4spjMPBOXZ0I,17299
412
- moriarty/modules/wifippler/core/attacks/wpa.py,sha256=meYN_ZOeAghXnht2GWUpLcXAbz8miaiU3S0fB7Yw8fQ,17327
413
- moriarty/modules/wifippler/core/attacks/wps.py,sha256=yYx6VITE3QYGBwM8J1RO6yu_r45ZLWNDWwdVMaU6xho,17504
414
- moriarty/modules/wifippler/core/models/__init__.py,sha256=J6GPV457hbFy7Tdk2PNKzT8LnO9Cj3xqRDaQ8IoDptA,148
415
- moriarty/modules/wifippler/core/models/network.py,sha256=xUi1Ac7LWWsrihq8RfDu9dHLZFN4oALlNvfJhHxWgok,6709
416
- moriarty/modules/wifippler/core/utils/__init__.py,sha256=rI06D6Ke0TfhBt-kU_uBTE46yOWIosNejlPdqRh3i3k,20422
417
402
  moriarty/net/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
418
403
  moriarty/net/dns_cache.py,sha256=JwuDYKqmuSD-hl7PMyyQAen57ut-uvIszYrMKT-i8pY,6022
419
404
  moriarty/net/dns_client.py,sha256=iem7FekC79ruwxWzG6eFkicYJi-urkRV0kNvj9uakM0,6591
@@ -427,7 +412,7 @@ moriarty/tests/test_email_service.py,sha256=mWqimjQRlljZNBuNePvSzhfq5FZ4mljrILGW
427
412
  moriarty/tests/test_models.py,sha256=etklIISEUts3banaSRDSjhv-g6kd4wxucchCmlJkx6Y,1282
428
413
  moriarty/tests/test_orchestrator.py,sha256=Do3M1qnbqPf_1pR3v89FXxhiwfYPZfXRvcfl05isQvs,856
429
414
  moriarty/tests/test_tls_client.py,sha256=bQ46yXlIYNZwPTd8WGs6eUynHj56hVosxBycSU1gJe4,461
430
- moriarty_project-0.1.20.dist-info/METADATA,sha256=HCmc6tYw0dtIVnKD6m4B6LC1pX-rUGhQSRq5SDLLL3o,11709
431
- moriarty_project-0.1.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
432
- moriarty_project-0.1.20.dist-info/entry_points.txt,sha256=L4TAUKy7HAy5hT46ZqS6eNOCmUTMi4x7ehZkIkTNnuE,51
433
- moriarty_project-0.1.20.dist-info/RECORD,,
415
+ moriarty_project-0.1.23.dist-info/METADATA,sha256=-oxq6hJrBVqq1G-gjUh7Z9uG_hb0uuiJutK29BZo8cM,10766
416
+ moriarty_project-0.1.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
417
+ moriarty_project-0.1.23.dist-info/entry_points.txt,sha256=L4TAUKy7HAy5hT46ZqS6eNOCmUTMi4x7ehZkIkTNnuE,51
418
+ moriarty_project-0.1.23.dist-info/RECORD,,
moriarty/cli/wifippler.py DELETED
@@ -1,124 +0,0 @@
1
- """
2
- Módulo CLI para análise de redes WiFi usando WifiPPLER.
3
- """
4
- import asyncio
5
- import typer
6
- from typing import Optional
7
- from rich.console import Console
8
- from rich.progress import Progress, SpinnerColumn, TextColumn
9
-
10
- from moriarty.modules.wifippler import WiFiScanner, check_dependencies, is_root, get_network_interfaces
11
-
12
- app = typer.Typer(help="Análise de redes WiFi com WifiPPLER")
13
- console = Console()
14
-
15
- @app.command("scan")
16
- def scan_networks(
17
- interface: str = typer.Option(
18
- None,
19
- "--interface", "-i",
20
- help="Interface de rede para escaneamento"
21
- ),
22
- scan_time: int = typer.Option(
23
- 5,
24
- "--scan-time", "-t",
25
- help="Tempo de escaneamento em segundos"
26
- ),
27
- output: str = typer.Option(
28
- None,
29
- "--output", "-o",
30
- help="Arquivo para salvar os resultados (JSON)"
31
- )
32
- ):
33
- """Escaneia redes WiFi próximas."""
34
- # Verifica se o usuário tem privilégios de root
35
- if not is_root():
36
- console.print("[red]Erro:[/] Este comando requer privilégios de root/sudo")
37
- raise typer.Exit(1)
38
-
39
- # Verifica dependências
40
- missing = check_dependencies()
41
- if missing:
42
- console.print("[red]Erro:[/] As seguintes dependências estão faltando:")
43
- for dep in missing:
44
- console.print(f"- {dep}")
45
- raise typer.Exit(1)
46
-
47
- # Se nenhuma interface for fornecida, lista as disponíveis
48
- if not interface:
49
- interfaces = get_network_interfaces()
50
- if not interfaces:
51
- console.print("[red]Erro:[/] Nenhuma interface de rede encontrada")
52
- raise typer.Exit(1)
53
-
54
- console.print("[yellow]Interfaces disponíveis:[/]")
55
- for i, iface in enumerate(interfaces, 1):
56
- console.print(f"{i}. {iface}")
57
-
58
- try:
59
- choice = int(typer.prompt("\nSelecione o número da interface")) - 1
60
- interface = interfaces[choice]
61
- except (ValueError, IndexError):
62
- console.print("[red]Erro:[/] Seleção inválida")
63
- raise typer.Exit(1)
64
-
65
- # Executa o escaneamento
66
- async def run_scan():
67
- scanner = WiFiScanner(interface=interface, scan_time=scan_time)
68
-
69
- with Progress(
70
- SpinnerColumn(),
71
- TextColumn("[progress.description]{task.description}"),
72
- console=console,
73
- transient=True,
74
- ) as progress:
75
- task = progress.add_task("[cyan]Escaneando redes WiFi...", total=None)
76
- networks = await scanner.scan_networks()
77
- progress.update(task, completed=1, visible=False)
78
-
79
- # Exibe os resultados
80
- if networks:
81
- scanner.display_networks(networks)
82
-
83
- # Salva em arquivo se solicitado
84
- if output:
85
- import json
86
- with open(output, 'w') as f:
87
- json.dump([n.to_dict() for n in networks], f, indent=2)
88
- console.print(f"\n[green]Resultados salvos em:[/] {output}")
89
- else:
90
- console.print("[yellow]Nenhuma rede encontrada.[/]")
91
-
92
- try:
93
- asyncio.run(run_scan())
94
- except Exception as e:
95
- console.print(f"[red]Erro durante o escaneamento:[/] {str(e)}")
96
- raise typer.Exit(1)
97
-
98
- # Adiciona o comando de ataque WPS
99
- @app.command("wps")
100
- def wps_attack(
101
- interface: str = typer.Option(..., "--interface", "-i", help="Interface de rede para o ataque"),
102
- bssid: str = typer.Option(..., "--bssid", "-b", help="BSSID do alvo"),
103
- channel: int = typer.Option(..., "--channel", "-c", help="Canal da rede alvo")
104
- ):
105
- """Executa um ataque WPS contra uma rede WiFi."""
106
- console.print(f"[yellow]Iniciando ataque WPS contra {bssid} no canal {channel}...[/]")
107
- # Implementação do ataque WPS será adicionada aqui
108
- console.print("[green]Ataque WPS concluído com sucesso![/]")
109
-
110
- # Adiciona o comando para verificar dependências
111
- @app.command("check-deps")
112
- def check_deps():
113
- """Verifica se todas as dependências estão instaladas."""
114
- missing = check_dependencies()
115
- if missing:
116
- console.print("[red]As seguintes dependências estão faltando:[/]")
117
- for dep in missing:
118
- console.print(f"- {dep}")
119
- raise typer.Exit(1)
120
- else:
121
- console.print("[green]Todas as dependências estão instaladas![/]")
122
-
123
- if __name__ == "__main__":
124
- app()
@@ -1,65 +0,0 @@
1
- """
2
- WifiPPLER - Ferramenta Avançada de Análise de Segurança WiFi
3
-
4
- Uma ferramenta abrangente de auditoria de segurança WiFi que combina os melhores
5
- recursos de ferramentas existentes com técnicas modernas e uma interface limpa.
6
- """
7
-
8
- __version__ = "1.0.0"
9
- __author__ = "Moriarty Team"
10
- __license__ = "MIT"
11
-
12
- # Importações principais
13
- from .core.scanner import WiFiScanner
14
- from .core.attacks import (
15
- WPSAttack,
16
- WPAHandshakeAttack,
17
- PMKIDAttack,
18
- WEPAttack,
19
- DeauthAttack,
20
- HandshakeCapture
21
- )
22
-
23
- # Utilitários
24
- from .core.utils import (
25
- is_root,
26
- check_dependencies,
27
- get_network_interfaces,
28
- set_monitor_mode,
29
- restore_network_interface,
30
- get_monitor_interfaces,
31
- start_monitor_mode,
32
- get_wireless_interfaces,
33
- stop_monitor_mode
34
- )
35
-
36
- # Modelos de dados
37
- from .core.models.network import WiFiNetwork, WiFiClient
38
-
39
- __all__ = [
40
- # Classes principais
41
- 'WiFiScanner',
42
-
43
- # Ataques
44
- 'WPSAttack',
45
- 'WPAHandshakeAttack',
46
- 'PMKIDAttack',
47
- 'WEPAttack',
48
- 'DeauthAttack',
49
- 'HandshakeCapture',
50
-
51
- # Utilitários
52
- 'is_root',
53
- 'check_dependencies',
54
- 'get_network_interfaces',
55
- 'set_monitor_mode',
56
- 'restore_network_interface',
57
- 'get_monitor_interfaces',
58
- 'get_wireless_interfaces',
59
- 'start_monitor_mode',
60
- 'stop_monitor_mode',
61
-
62
- # Modelos
63
- 'WiFiNetwork',
64
- 'WiFiClient'
65
- ]
@@ -1,80 +0,0 @@
1
- """
2
- Core functionality for the WifiPPLER module.
3
-
4
- This module provides the core functionality for the WifiPPLER tool,
5
- including network scanning, packet analysis, and attack modules.
6
- """
7
-
8
- from .scanner import WiFiScanner
9
- from .attacks import (
10
- WPSAttack,
11
- WPAHandshakeAttack,
12
- PMKIDAttack,
13
- WEPAttack,
14
- DeauthAttack,
15
- HandshakeCapture
16
- )
17
-
18
- # Import utility functions
19
- from .utils import (
20
- is_root,
21
- get_wireless_interfaces,
22
- check_dependencies,
23
- get_network_interfaces,
24
- get_monitor_interfaces,
25
- set_monitor_mode,
26
- restore_network_interface,
27
- start_monitor_mode,
28
- stop_monitor_mode,
29
- run_command_async,
30
- randomize_mac,
31
- get_interface_mac,
32
- get_interface_ip,
33
- get_interface_netmask,
34
- get_interface_gateway,
35
- is_wireless_interface,
36
- get_interface_signal,
37
- get_interface_ssid,
38
- get_interface_channel,
39
- get_interface_bitrate,
40
- create_deauth_packet,
41
- parse_airodump_csv,
42
- parse_airodump_stations,
43
- run_command,
44
- command_exists
45
- )
46
-
47
- __all__ = [
48
- 'WiFiScanner',
49
- 'WPSAttack',
50
- 'WPAHandshakeAttack',
51
- 'PMKIDAttack',
52
- 'WEPAttack',
53
- 'DeauthAttack',
54
- 'HandshakeCapture',
55
- 'is_root',
56
- 'check_dependencies',
57
- 'command_exists',
58
- 'get_network_interfaces',
59
- 'get_monitor_interfaces',
60
- 'set_monitor_mode',
61
- 'restore_network_interface',
62
- 'start_monitor_mode',
63
- 'stop_monitor_mode',
64
- 'get_interface_mac',
65
- 'get_interface_ip',
66
- 'get_interface_netmask',
67
- 'get_interface_gateway',
68
- 'is_wireless_interface',
69
- 'get_interface_signal',
70
- 'get_interface_ssid',
71
- 'get_interface_channel',
72
- 'get_interface_bitrate',
73
- 'create_deauth_packet',
74
- 'parse_airodump_csv',
75
- 'parse_airodump_stations',
76
- 'run_command',
77
- 'run_command_async',
78
- 'randomize_mac',
79
- 'get_wireless_interfaces'
80
- ]
@@ -1,19 +0,0 @@
1
- """
2
- Attack modules for WifiPPLER.
3
- """
4
-
5
- from .wps import WPSAttack
6
- from .wpa import WPAHandshakeAttack
7
- from .pmkid import PMKIDAttack
8
- from .wep import WEPAttack
9
- from .deauth import DeauthAttack
10
- from .handshake import HandshakeCapture
11
-
12
- __all__ = [
13
- 'WPSAttack',
14
- 'WPAHandshakeAttack',
15
- 'PMKIDAttack',
16
- 'WEPAttack',
17
- 'DeauthAttack',
18
- 'HandshakeCapture'
19
- ]