sharkit 0.1.1.dev5__tar.gz → 0.1.1.dev7__tar.gz

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.
Files changed (38) hide show
  1. sharkit-0.1.1.dev7/PKG-INFO +91 -0
  2. sharkit-0.1.1.dev7/README.md +63 -0
  3. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/pyproject.toml +1 -1
  4. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/commands/builtins.py +36 -7
  5. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/registry.py +12 -0
  6. sharkit-0.1.1.dev5/PKG-INFO +0 -124
  7. sharkit-0.1.1.dev5/README.md +0 -96
  8. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/.gitignore +0 -0
  9. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/LICENSE +0 -0
  10. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/__init__.py +0 -0
  11. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/__main__.py +0 -0
  12. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/app.py +0 -0
  13. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/commands/__init__.py +0 -0
  14. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/commands/base.py +0 -0
  15. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/commands/registry.py +0 -0
  16. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/config/__init__.py +0 -0
  17. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/config/manager.py +0 -0
  18. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/config/paths.py +0 -0
  19. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/console/__init__.py +0 -0
  20. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/console/completion.py +0 -0
  21. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/console/prompt.py +0 -0
  22. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/console/repl.py +0 -0
  23. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/exceptions.py +0 -0
  24. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/history/__init__.py +0 -0
  25. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/history/manager.py +0 -0
  26. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/__init__.py +0 -0
  27. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/base.py +0 -0
  28. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/loader.py +0 -0
  29. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/testing/__init__.py +0 -0
  30. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/testing/demo/__init__.py +0 -0
  31. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/testing/demo/echo.py +0 -0
  32. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/testing/http/__init__.py +0 -0
  33. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/modules/testing/http/metadata.py +0 -0
  34. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/network/__init__.py +0 -0
  35. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/network/client.py +0 -0
  36. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/output/__init__.py +0 -0
  37. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/output/renderer.py +0 -0
  38. {sharkit-0.1.1.dev5 → sharkit-0.1.1.dev7}/src/sharkit/output/theme.py +0 -0
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.5
2
+ Name: sharkit
3
+ Version: 0.1.1.dev7
4
+ Summary: OSINT / HUMINT / GEOINT research framework
5
+ Project-URL: Homepage, https://github.com/sshsrv/sharkit
6
+ Project-URL: Repository, https://github.com/sshsrv/sharkit
7
+ Project-URL: Issues, https://github.com/sshsrv/sharkit/issues
8
+ Author: Sharkit Contributors
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: cli,framework,geoint,humint,osint,research
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Information Technology
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Security
23
+ Classifier: Topic :: Utilities
24
+ Requires-Python: >=3.11
25
+ Requires-Dist: httpx<1.0.0,>=0.27.0
26
+ Requires-Dist: prompt-toolkit<4.0.0,>=3.0.0
27
+ Description-Content-Type: text/markdown
28
+
29
+ <div align="center"><img width="640" height="347" alt="banner" src="https://github.com/user-attachments/assets/c027fb38-fe0f-4baa-b35f-597f9f8cf39b" /></div>
30
+
31
+ <div align="center">
32
+
33
+ ![PyPI](https://img.shields.io/pypi/v/sharkit?labelColor=000000&color=ff5faf&style=flat)
34
+ ![Python](https://img.shields.io/pypi/pyversions/sharkit?labelColor=000000&color=ff5faf&style=flat)
35
+ ![License](https://img.shields.io/pypi/l/sharkit?labelColor=000000&color=ff5faf&style=flat)
36
+ ![CI](https://img.shields.io/github/actions/workflow/status/sshsrv/sharkit/ci.yml?labelColor=000000&color=ff5faf&style=flat)
37
+
38
+ </div>
39
+
40
+ > [!IMPORTANT]
41
+ > sharkit is intended for lawful OSINT research, authorized security testing, education, and legitimate investigations. You are responsible for complying with applicable laws, permissions, and terms of service.
42
+ >
43
+ > sharkit does not guarantee anonymity.
44
+ #
45
+
46
+ ### Features
47
+ - A terminal framework for OSINT / HUMINT / GEOINT work.
48
+ - Modules expose a `run` method, options, and metadata; the shell loads them as you need them.
49
+ - 15 built-in commands: `use`, `run`, `set`, `search`, `history`, `clear`, `exit`, and a few more.
50
+ - Ships with two example modules: `testing/demo/echo` and `testing/http/metadata`.
51
+ - `sharkit --version` shows the exact build you have, dev pre-releases included.
52
+ - State lives in `~/.config/sharkit` and runs fine on Termux / Android.
53
+ - To wipe it completely: `uv tool uninstall sharkit` and `rm -rf ~/.config/sharkit`.
54
+ #
55
+
56
+ ### sharkit management on Linux using uv (RECOMMENDED)
57
+ - Install
58
+ ```bash
59
+ uv tool install sharkit
60
+ ```
61
+ - Upgrade
62
+ ```bash
63
+ uv tool upgrade sharkit
64
+ ```
65
+ - Uninstall
66
+ ```bash
67
+ uv tool uninstall sharkit
68
+ rm -rf ~/.config/sharkit
69
+ ```
70
+ <br>
71
+
72
+ ### sharkit management on Linux using pip
73
+ - Install
74
+ ```bash
75
+ pip install sharkit
76
+ ```
77
+ - Upgrade
78
+ ```bash
79
+ pip install --upgrade sharkit
80
+ ```
81
+ - Uninstall
82
+ ```bash
83
+ pip uninstall sharkit
84
+ rm -rf ~/.config/sharkit
85
+ ```
86
+ #
87
+
88
+ ### Links
89
+ - PyPI: https://pypi.org/project/sharkit/
90
+ - GitHub: https://github.com/sshsrv/sharkit
91
+ - Releases: https://github.com/sshsrv/sharkit/releases
@@ -0,0 +1,63 @@
1
+ <div align="center"><img width="640" height="347" alt="banner" src="https://github.com/user-attachments/assets/c027fb38-fe0f-4baa-b35f-597f9f8cf39b" /></div>
2
+
3
+ <div align="center">
4
+
5
+ ![PyPI](https://img.shields.io/pypi/v/sharkit?labelColor=000000&color=ff5faf&style=flat)
6
+ ![Python](https://img.shields.io/pypi/pyversions/sharkit?labelColor=000000&color=ff5faf&style=flat)
7
+ ![License](https://img.shields.io/pypi/l/sharkit?labelColor=000000&color=ff5faf&style=flat)
8
+ ![CI](https://img.shields.io/github/actions/workflow/status/sshsrv/sharkit/ci.yml?labelColor=000000&color=ff5faf&style=flat)
9
+
10
+ </div>
11
+
12
+ > [!IMPORTANT]
13
+ > sharkit is intended for lawful OSINT research, authorized security testing, education, and legitimate investigations. You are responsible for complying with applicable laws, permissions, and terms of service.
14
+ >
15
+ > sharkit does not guarantee anonymity.
16
+ #
17
+
18
+ ### Features
19
+ - A terminal framework for OSINT / HUMINT / GEOINT work.
20
+ - Modules expose a `run` method, options, and metadata; the shell loads them as you need them.
21
+ - 15 built-in commands: `use`, `run`, `set`, `search`, `history`, `clear`, `exit`, and a few more.
22
+ - Ships with two example modules: `testing/demo/echo` and `testing/http/metadata`.
23
+ - `sharkit --version` shows the exact build you have, dev pre-releases included.
24
+ - State lives in `~/.config/sharkit` and runs fine on Termux / Android.
25
+ - To wipe it completely: `uv tool uninstall sharkit` and `rm -rf ~/.config/sharkit`.
26
+ #
27
+
28
+ ### sharkit management on Linux using uv (RECOMMENDED)
29
+ - Install
30
+ ```bash
31
+ uv tool install sharkit
32
+ ```
33
+ - Upgrade
34
+ ```bash
35
+ uv tool upgrade sharkit
36
+ ```
37
+ - Uninstall
38
+ ```bash
39
+ uv tool uninstall sharkit
40
+ rm -rf ~/.config/sharkit
41
+ ```
42
+ <br>
43
+
44
+ ### sharkit management on Linux using pip
45
+ - Install
46
+ ```bash
47
+ pip install sharkit
48
+ ```
49
+ - Upgrade
50
+ ```bash
51
+ pip install --upgrade sharkit
52
+ ```
53
+ - Uninstall
54
+ ```bash
55
+ pip uninstall sharkit
56
+ rm -rf ~/.config/sharkit
57
+ ```
58
+ #
59
+
60
+ ### Links
61
+ - PyPI: https://pypi.org/project/sharkit/
62
+ - GitHub: https://github.com/sshsrv/sharkit
63
+ - Releases: https://github.com/sshsrv/sharkit/releases
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sharkit"
3
- version = "0.1.1.dev5"
3
+ version = "0.1.1.dev7"
4
4
  description = "OSINT / HUMINT / GEOINT research framework"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -110,19 +110,48 @@ class StatusCommand(Command):
110
110
  class UseCommand(Command):
111
111
  name = "use"
112
112
  aliases = []
113
- description = "Select a module"
114
- usage = "use <module_path>"
113
+ description = "Select a module by name, search query, or index (msfconsole-style)"
114
+ usage = "use <query|index>"
115
115
 
116
116
  def execute(self, context: CommandContext, args: list[str]) -> str | None:
117
117
  valid, error = self.validate_args(args)
118
118
  if not valid:
119
119
  return error
120
- module_path = args[0]
120
+ token = args[0]
121
121
  module_registry = context.session.get("module_registry")
122
- if module_registry is not None and module_registry.get_module(module_path) is None:
123
- return f'Module "{module_path}" not found.\nTry: search {module_path}'
124
- context.current_module = module_path
125
- return f'Module "{module_path}" selected.'
122
+ if module_registry is None:
123
+ return "Module registry not available."
124
+
125
+ if token.isdigit():
126
+ matches = context.session.get("use_matches")
127
+ if not matches:
128
+ return 'No module selection in progress. Use "use <query>" to search first.'
129
+ index = int(token)
130
+ if index < 0 or index >= len(matches):
131
+ return f"Invalid module index: {index}"
132
+ context.current_module = matches[index]
133
+ return f'Module "{matches[index]}" selected.'
134
+
135
+ query = token.lower()
136
+ matches = module_registry.find_modules(query)
137
+ if not matches:
138
+ return f'No modules found matching "{token}".\nTry: search {token}'
139
+
140
+ paths = [path for path, _ in matches]
141
+ context.session["use_matches"] = paths
142
+
143
+ renderer = context.session.get("renderer")
144
+ if renderer is not None:
145
+ rows = [
146
+ [str(i), path, metadata.description]
147
+ for i, (path, metadata) in enumerate(matches)
148
+ ]
149
+ renderer.table(f"use > {token}", ["#", "Module", "Description"], rows)
150
+
151
+ if len(matches) == 1:
152
+ context.current_module = paths[0]
153
+ return f'Module "{paths[0]}" selected.'
154
+ return 'Select a module by index, e.g. "use 0".'
126
155
 
127
156
  def validate_args(self, args: list[str]) -> tuple[bool, str | None]:
128
157
  if not args:
@@ -42,6 +42,18 @@ class ModuleRegistry:
42
42
  or lower_query in module.metadata.description.lower()
43
43
  ]
44
44
 
45
+ def find_modules(self, query: str) -> list[tuple[str, ModuleMetadata]]:
46
+ lower_query = query.lower()
47
+ results: list[tuple[str, ModuleMetadata]] = []
48
+ for path, cls in self.get_all_modules().items():
49
+ metadata = cls.metadata
50
+ searchable = (
51
+ f"{metadata.name} {metadata.description} {metadata.category} {path}".lower()
52
+ )
53
+ if lower_query in searchable:
54
+ results.append((path, metadata))
55
+ return results
56
+
45
57
  def get_modules_by_category(self, category: str) -> list[ModuleMetadata]:
46
58
  lower_category = category.lower()
47
59
  return [
@@ -1,124 +0,0 @@
1
- Metadata-Version: 2.5
2
- Name: sharkit
3
- Version: 0.1.1.dev5
4
- Summary: OSINT / HUMINT / GEOINT research framework
5
- Project-URL: Homepage, https://github.com/sshsrv/sharkit
6
- Project-URL: Repository, https://github.com/sshsrv/sharkit
7
- Project-URL: Issues, https://github.com/sshsrv/sharkit/issues
8
- Author: Sharkit Contributors
9
- License-Expression: MIT
10
- License-File: LICENSE
11
- Keywords: cli,framework,geoint,humint,osint,research
12
- Classifier: Development Status :: 3 - Alpha
13
- Classifier: Environment :: Console
14
- Classifier: Intended Audience :: Developers
15
- Classifier: Intended Audience :: Information Technology
16
- Classifier: License :: OSI Approved :: MIT License
17
- Classifier: Operating System :: POSIX :: Linux
18
- Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.12
21
- Classifier: Programming Language :: Python :: 3.13
22
- Classifier: Topic :: Security
23
- Classifier: Topic :: Utilities
24
- Requires-Python: >=3.11
25
- Requires-Dist: httpx<1.0.0,>=0.27.0
26
- Requires-Dist: prompt-toolkit<4.0.0,>=3.0.0
27
- Description-Content-Type: text/markdown
28
-
29
- # sharkit
30
-
31
- OSINT / HUMINT / GEOINT research framework — a modular CLI for gathering and correlating
32
- open-source intelligence from the terminal.
33
-
34
- > Built for Linux. Runs anywhere Python 3.11+ runs — including **Termux on Android**.
35
-
36
- ## Requirements
37
-
38
- - Python >= 3.11
39
- - `pip` or `uv`
40
-
41
- ## Installation
42
-
43
- From PyPI:
44
-
45
- ```bash
46
- pip install sharkit
47
- ```
48
-
49
- Or with `uv`:
50
-
51
- ```bash
52
- uv tool install sharkit
53
- ```
54
-
55
- Then launch the interactive shell:
56
-
57
- ```bash
58
- sharkit
59
- ```
60
-
61
- ## Termux / Android
62
-
63
- sharkit is pure Python (no compiled extensions) and depends only on `prompt_toolkit`
64
- and `httpx`, so it installs and runs on Termux without any native build step.
65
-
66
- ```bash
67
- pkg update && pkg install python
68
- pip install sharkit
69
- sharkit
70
- ```
71
-
72
- If Termux's Python is marked *externally managed*, install into a virtual environment:
73
-
74
- ```bash
75
- pkg install python
76
- python -m venv ~/sharkit-venv
77
- ~/sharkit-venv/bin/pip install sharkit
78
- ~/sharkit-venv/bin/sharkit
79
- ```
80
-
81
- - Configuration, history and cache live under `~/.config/sharkit`
82
- (on Android: `/data/data/com.termux/files/home/.config/sharkit`).
83
- - Network access uses the standard Termux permission — no extra setup required.
84
- - The UI relies on ANSI escape codes and Unicode box-drawing, which Termux's
85
- terminal renders natively.
86
-
87
- ## Quick start
88
-
89
- ```
90
- sharkit # start the interactive shell
91
- help # list commands
92
- use testing/demo/echo # load a module
93
- set message "hello" # configure an option
94
- run # execute the active module
95
- history # show command history
96
- clear # clear the screen
97
- exit # quit
98
- ```
99
-
100
- Available commands: `help`, `banner`, `version`, `status`, `use`, `back`, `info`,
101
- `show`, `set`, `unset`, `run`, `search`, `history`, `clear`, `exit`.
102
-
103
- ## Modules
104
-
105
- Modules are discovered automatically from the packaged `sharkit/modules` directory:
106
-
107
- - `testing/demo/echo` — echo module for testing the framework
108
- - `testing/http/metadata` — HTTP metadata gathering (status, headers, content type, …)
109
-
110
- ## Development
111
-
112
- ```bash
113
- git clone https://github.com/sshsrv/sharkit
114
- cd sharkit
115
- uv sync --all-groups
116
- uv run sharkit
117
- ```
118
-
119
- Quality gates: `uv run ruff check .`, `uv run mypy src/`, `uv run pytest -q`.
120
-
121
- ## Disclaimer
122
-
123
- sharkit is a research tool. Use it responsibly and in accordance with applicable law
124
- and the terms of service of any system you interact with.
@@ -1,96 +0,0 @@
1
- # sharkit
2
-
3
- OSINT / HUMINT / GEOINT research framework — a modular CLI for gathering and correlating
4
- open-source intelligence from the terminal.
5
-
6
- > Built for Linux. Runs anywhere Python 3.11+ runs — including **Termux on Android**.
7
-
8
- ## Requirements
9
-
10
- - Python >= 3.11
11
- - `pip` or `uv`
12
-
13
- ## Installation
14
-
15
- From PyPI:
16
-
17
- ```bash
18
- pip install sharkit
19
- ```
20
-
21
- Or with `uv`:
22
-
23
- ```bash
24
- uv tool install sharkit
25
- ```
26
-
27
- Then launch the interactive shell:
28
-
29
- ```bash
30
- sharkit
31
- ```
32
-
33
- ## Termux / Android
34
-
35
- sharkit is pure Python (no compiled extensions) and depends only on `prompt_toolkit`
36
- and `httpx`, so it installs and runs on Termux without any native build step.
37
-
38
- ```bash
39
- pkg update && pkg install python
40
- pip install sharkit
41
- sharkit
42
- ```
43
-
44
- If Termux's Python is marked *externally managed*, install into a virtual environment:
45
-
46
- ```bash
47
- pkg install python
48
- python -m venv ~/sharkit-venv
49
- ~/sharkit-venv/bin/pip install sharkit
50
- ~/sharkit-venv/bin/sharkit
51
- ```
52
-
53
- - Configuration, history and cache live under `~/.config/sharkit`
54
- (on Android: `/data/data/com.termux/files/home/.config/sharkit`).
55
- - Network access uses the standard Termux permission — no extra setup required.
56
- - The UI relies on ANSI escape codes and Unicode box-drawing, which Termux's
57
- terminal renders natively.
58
-
59
- ## Quick start
60
-
61
- ```
62
- sharkit # start the interactive shell
63
- help # list commands
64
- use testing/demo/echo # load a module
65
- set message "hello" # configure an option
66
- run # execute the active module
67
- history # show command history
68
- clear # clear the screen
69
- exit # quit
70
- ```
71
-
72
- Available commands: `help`, `banner`, `version`, `status`, `use`, `back`, `info`,
73
- `show`, `set`, `unset`, `run`, `search`, `history`, `clear`, `exit`.
74
-
75
- ## Modules
76
-
77
- Modules are discovered automatically from the packaged `sharkit/modules` directory:
78
-
79
- - `testing/demo/echo` — echo module for testing the framework
80
- - `testing/http/metadata` — HTTP metadata gathering (status, headers, content type, …)
81
-
82
- ## Development
83
-
84
- ```bash
85
- git clone https://github.com/sshsrv/sharkit
86
- cd sharkit
87
- uv sync --all-groups
88
- uv run sharkit
89
- ```
90
-
91
- Quality gates: `uv run ruff check .`, `uv run mypy src/`, `uv run pytest -q`.
92
-
93
- ## Disclaimer
94
-
95
- sharkit is a research tool. Use it responsibly and in accordance with applicable law
96
- and the terms of service of any system you interact with.
File without changes
File without changes