moriarty-project 0.1.25__py3-none-any.whl → 0.1.27__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moriarty-project
3
- Version: 0.1.25
3
+ Version: 0.1.27
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
@@ -19,6 +19,7 @@ Classifier: Topic :: Security
19
19
  Classifier: Topic :: Utilities
20
20
  Requires-Python: >=3.11
21
21
  Requires-Dist: aiodns>=3.0.0
22
+ Requires-Dist: aiofiles>=24.1.0
22
23
  Requires-Dist: aiohttp>=3.9.0
23
24
  Requires-Dist: aiolimiter>=1.1.0
24
25
  Requires-Dist: aiosmtplib>=2.0.0
@@ -29,16 +30,17 @@ Requires-Dist: httpx[http2]>=0.27.0
29
30
  Requires-Dist: idna>=3.6
30
31
  Requires-Dist: jsonpath-ng>=1.6.0
31
32
  Requires-Dist: lxml>=5.3.0
32
- Requires-Dist: netifaces>=0.11.0
33
+ Requires-Dist: netifaces-plus>=0.12.4
33
34
  Requires-Dist: networkx>=3.2.0
34
35
  Requires-Dist: orjson>=3.9.0
36
+ Requires-Dist: packaging>=25.0
35
37
  Requires-Dist: phonenumbers>=8.13.0
36
38
  Requires-Dist: pillow>=10.0.0
37
39
  Requires-Dist: psutil>=5.9.0
38
40
  Requires-Dist: pycryptodomex>=3.23.0
39
41
  Requires-Dist: pydantic>=2.7.0
40
42
  Requires-Dist: pyopenssl>=25.0.0
41
- Requires-Dist: python-nmap>=0.7.1
43
+ Requires-Dist: python3-nmap>=1.9.1
42
44
  Requires-Dist: pyyaml>=6.0
43
45
  Requires-Dist: rapidfuzz>=3.0.0
44
46
  Requires-Dist: requests>=2.32.0
@@ -98,7 +100,7 @@ Description-Content-Type: text/markdown
98
100
  <!-- Badges -->
99
101
  <p align="center">
100
102
  <a href="https://pypi.org/project/moriarty-project/">
101
- <img src="https://img.shields.io/badge/version-0.1.23-blue" alt="Version 0.1.23">
103
+ <img src="https://img.shields.io/badge/version-0.1.27-blue" alt="Version 0.1.27">
102
104
  </a>
103
105
  <a href="https://www.python.org/downloads/">
104
106
  <img src="https://img.shields.io/pypi/pyversions/moriarty-project?color=blue" alt="Python Versions">
@@ -152,7 +154,7 @@ Description-Content-Type: text/markdown
152
154
  pipx install moriarty-project
153
155
 
154
156
  # OU para instalar uma versão específica
155
- # pipx install moriarty-project==0.1.23
157
+ # pipx install moriarty-project==0.1.27
156
158
 
157
159
  # Verificar a instalação
158
160
  moriarty --help
@@ -1,4 +1,4 @@
1
- moriarty/__init__.py,sha256=6gfNgVpti1BJIBlPYh_ygBNbEQ7CuvrDMFT3oL7q6UA,85
1
+ moriarty/__init__.py,sha256=m7lhtirbzU4RBinS8mk7DvYoDH7Onjr0LptFep7u8go,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,10 +328,10 @@ 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=Y1KF8Z9I5VUyQg0HE7agy4BsGkoLyPq5JLAeKiIS0fg,7987
331
+ moriarty/cli/app.py,sha256=SRcAWV0SY9ln7qm4UEwFkaS8b5UCmvzJOC7c5QtYrVE,7985
332
332
  moriarty/cli/async_utils.py,sha256=jleTd2nyAVsNqJae2kKlo514gKKcH3nBXvfoLubOq6A,393
333
333
  moriarty/cli/dns.py,sha256=QhDwe9uoAmk243XbO9YBYk3YlPmiXYT_vLqUXum9i70,2735
334
- moriarty/cli/domain_cmd.py,sha256=i-NSsTqmIu0wK9VYD0e2yiBbFY4p9sdbUD1zxvRh2jk,24274
334
+ moriarty/cli/domain_cmd.py,sha256=Kd9dYsJUGsSgr8wTZeB5XKcmMiBd8sc9nmvZUQPvVR0,24462
335
335
  moriarty/cli/email.py,sha256=AcXMwtppFHxbjNHagrKXCdEGx-zWpvFFCB4QlCo_STU,14763
336
336
  moriarty/cli/email_investigate.py,sha256=w2OlrwpRAzPNW0YLxmt-eTB3lGJ3a-oQCM4elRFJ7lw,8319
337
337
  moriarty/cli/intelligence.py,sha256=81BnrS8ES7fH2lI34AMB5Yxuw-lbWvu44T2R444b-kE,11852
@@ -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
@@ -376,7 +375,7 @@ moriarty/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
376
375
  moriarty/modules/avatar_hash.py,sha256=5Yub_N6OjUNMbt8bHShmln7i0ySDyNXrOtihWMKRivA,5919
377
376
  moriarty/modules/directory_fuzzer.py,sha256=R78fxkV6prKtj7Qq0-THPpXvWGV_OeTwa9dE-j-GY-M,12581
378
377
  moriarty/modules/dns_scan.py,sha256=lR1sGwhk1FXDmn6pCTrtd6Cr33uPllBpm_jqAi3-HxA,1096
379
- moriarty/modules/domain_scanner.py,sha256=fsPDogDPnRfrocAlQGN09nUvxD501DFlZMIQ3dm8OlM,23841
378
+ moriarty/modules/domain_scanner.py,sha256=0jhzXyQZ3TZUSwv3TN8hZtpclg_LIxc5zvdIkZVGR0Y,29940
380
379
  moriarty/modules/email_check.py,sha256=VBAWvK3cH2Zu7wjDB2xhnqZ0scifp3s1K67CmAoUVuY,3343
381
380
  moriarty/modules/email_investigate.py,sha256=E25dyf2rM9cU-TjujKct9I1jY4tr1ZOvCzM1WavQlRs,9547
382
381
  moriarty/modules/email_security.py,sha256=L65ctbUGmNgUMCg4i8oECIT0UBpSz2tF1WKjRDGbM1Q,9284
@@ -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=eyrtmJ4z5-IyOizbDODeQWTNI9Z0DnlHcWEPH3ckp3Q,36913
388
+ moriarty/modules/port_scanner_nmap.py,sha256=Lqo0pEbsxSx3Fvnr8MUzLKly-ZX37ULiWVxFADdqGbk,25141
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
@@ -399,7 +398,7 @@ moriarty/modules/tls_validator.py,sha256=26HoAiTv7YGiry-mya78BDDULVPC4KcOXugn9UN
399
398
  moriarty/modules/vuln_scanner.py,sha256=-sRWOPzmrzUP9Mly471JCbP7iAxSwoho9DVn-6bFC6A,18279
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
- moriarty/modules/web_crawler.py,sha256=1pVLMz5vPoYFHWh2GB3ENlM2hCX07CNEXX9rKoNEI_c,20316
401
+ moriarty/modules/web_crawler.py,sha256=HFr-CVbpphTD0lWchUYzKujCJWrHFw4CyNPZP21IkRY,47898
403
402
  moriarty/net/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
404
403
  moriarty/net/dns_cache.py,sha256=JwuDYKqmuSD-hl7PMyyQAen57ut-uvIszYrMKT-i8pY,6022
405
404
  moriarty/net/dns_client.py,sha256=iem7FekC79ruwxWzG6eFkicYJi-urkRV0kNvj9uakM0,6591
@@ -413,7 +412,7 @@ moriarty/tests/test_email_service.py,sha256=mWqimjQRlljZNBuNePvSzhfq5FZ4mljrILGW
413
412
  moriarty/tests/test_models.py,sha256=etklIISEUts3banaSRDSjhv-g6kd4wxucchCmlJkx6Y,1282
414
413
  moriarty/tests/test_orchestrator.py,sha256=Do3M1qnbqPf_1pR3v89FXxhiwfYPZfXRvcfl05isQvs,856
415
414
  moriarty/tests/test_tls_client.py,sha256=bQ46yXlIYNZwPTd8WGs6eUynHj56hVosxBycSU1gJe4,461
416
- moriarty_project-0.1.25.dist-info/METADATA,sha256=JCScdJfoDJl7lQRQv23CQl_UkFXeqRUspQFl2OIIA0k,11709
417
- moriarty_project-0.1.25.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
418
- moriarty_project-0.1.25.dist-info/entry_points.txt,sha256=L4TAUKy7HAy5hT46ZqS6eNOCmUTMi4x7ehZkIkTNnuE,51
419
- moriarty_project-0.1.25.dist-info/RECORD,,
415
+ moriarty_project-0.1.27.dist-info/METADATA,sha256=9Pdfnk-6qHqIESpLepzurOlxmNJgo2X0-XCz7KoJ6cc,11778
416
+ moriarty_project-0.1.27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
417
+ moriarty_project-0.1.27.dist-info/entry_points.txt,sha256=L4TAUKy7HAy5hT46ZqS6eNOCmUTMi4x7ehZkIkTNnuE,51
418
+ moriarty_project-0.1.27.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()