carcara-sec 0.1.0__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 (48) hide show
  1. carcara_sec-0.1.0/.github/workflows/publish.yml +46 -0
  2. carcara_sec-0.1.0/.github/workflows/quality.yml +25 -0
  3. carcara_sec-0.1.0/.gitignore +218 -0
  4. carcara_sec-0.1.0/.python-version +1 -0
  5. carcara_sec-0.1.0/LICENSE +21 -0
  6. carcara_sec-0.1.0/PKG-INFO +318 -0
  7. carcara_sec-0.1.0/README.md +305 -0
  8. carcara_sec-0.1.0/carcara/__init__.py +0 -0
  9. carcara_sec-0.1.0/carcara/cli/__init__.py +0 -0
  10. carcara_sec-0.1.0/carcara/cli/commands/device.py +71 -0
  11. carcara_sec-0.1.0/carcara/cli/commands/frida.py +123 -0
  12. carcara_sec-0.1.0/carcara/cli/commands/objection.py +53 -0
  13. carcara_sec-0.1.0/carcara/cli/commands/provision.py +90 -0
  14. carcara_sec-0.1.0/carcara/cli/commands/ssh.py +56 -0
  15. carcara_sec-0.1.0/carcara/cli/commands/tools.py +43 -0
  16. carcara_sec-0.1.0/carcara/cli/commands/transfer.py +61 -0
  17. carcara_sec-0.1.0/carcara/cli/main.py +47 -0
  18. carcara_sec-0.1.0/carcara/core/bootstrap.py +142 -0
  19. carcara_sec-0.1.0/carcara/core/loader.py +109 -0
  20. carcara_sec-0.1.0/carcara/core/runner.py +170 -0
  21. carcara_sec-0.1.0/carcara/core/state.py +94 -0
  22. carcara_sec-0.1.0/carcara/modules/__init__.py +0 -0
  23. carcara_sec-0.1.0/carcara/modules/device.py +327 -0
  24. carcara_sec-0.1.0/carcara/modules/frida.py +138 -0
  25. carcara_sec-0.1.0/carcara/modules/objection.py +109 -0
  26. carcara_sec-0.1.0/carcara/modules/provision.py +446 -0
  27. carcara_sec-0.1.0/carcara/modules/ssh.py +98 -0
  28. carcara_sec-0.1.0/carcara/modules/tools.py +242 -0
  29. carcara_sec-0.1.0/carcara/modules/transfer.py +105 -0
  30. carcara_sec-0.1.0/carcara/resources/__init__.py +0 -0
  31. carcara_sec-0.1.0/carcara/resources/commands.yaml +126 -0
  32. carcara_sec-0.1.0/carcara/resources/deps.yaml +45 -0
  33. carcara_sec-0.1.0/pyproject.toml +26 -0
  34. carcara_sec-0.1.0/tests/__init__.py +0 -0
  35. carcara_sec-0.1.0/tests/conftest.py +75 -0
  36. carcara_sec-0.1.0/tests/unit/__init__.py +0 -0
  37. carcara_sec-0.1.0/tests/unit/test_bootstrap.py +211 -0
  38. carcara_sec-0.1.0/tests/unit/test_device.py +413 -0
  39. carcara_sec-0.1.0/tests/unit/test_frida.py +271 -0
  40. carcara_sec-0.1.0/tests/unit/test_loader.py +116 -0
  41. carcara_sec-0.1.0/tests/unit/test_objection.py +214 -0
  42. carcara_sec-0.1.0/tests/unit/test_provision.py +707 -0
  43. carcara_sec-0.1.0/tests/unit/test_runner.py +275 -0
  44. carcara_sec-0.1.0/tests/unit/test_ssh.py +167 -0
  45. carcara_sec-0.1.0/tests/unit/test_state.py +89 -0
  46. carcara_sec-0.1.0/tests/unit/test_tools.py +374 -0
  47. carcara_sec-0.1.0/tests/unit/test_transfer.py +260 -0
  48. carcara_sec-0.1.0/uv.lock +321 -0
@@ -0,0 +1,46 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ test:
10
+ name: Test
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - uses: astral-sh/setup-uv@v5
17
+ with:
18
+ python-version: "3.13"
19
+
20
+ - name: Install dependencies
21
+ run: uv sync --all-groups
22
+
23
+ - name: Run tests
24
+ run: uv run pytest --cov=carcara --cov-report=term-missing
25
+
26
+ publish:
27
+ name: Publish to PyPI
28
+ runs-on: ubuntu-latest
29
+ needs: test
30
+ environment: pypi
31
+ permissions:
32
+ id-token: write
33
+ contents: read
34
+
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+
38
+ - uses: astral-sh/setup-uv@v5
39
+ with:
40
+ python-version: "3.13"
41
+
42
+ - name: Build
43
+ run: uv build
44
+
45
+ - name: Publish to PyPI
46
+ run: uv publish
@@ -0,0 +1,25 @@
1
+ name: Quality
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ branches: ["main"]
8
+
9
+ jobs:
10
+ test:
11
+ name: Test
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - uses: astral-sh/setup-uv@v5
18
+ with:
19
+ python-version: "3.13"
20
+
21
+ - name: Install dependencies
22
+ run: uv sync --all-groups
23
+
24
+ - name: Run tests
25
+ run: uv run pytest --cov=carcara --cov-report=term-missing
@@ -0,0 +1,218 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ # Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ # poetry.lock
109
+ # poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ # pdm.lock
116
+ # pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ # pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # Redis
135
+ *.rdb
136
+ *.aof
137
+ *.pid
138
+
139
+ # RabbitMQ
140
+ mnesia/
141
+ rabbitmq/
142
+ rabbitmq-data/
143
+
144
+ # ActiveMQ
145
+ activemq-data/
146
+
147
+ # SageMath parsed files
148
+ *.sage.py
149
+
150
+ # Environments
151
+ .env
152
+ .envrc
153
+ .venv
154
+ env/
155
+ venv/
156
+ ENV/
157
+ env.bak/
158
+ venv.bak/
159
+
160
+ # Spyder project settings
161
+ .spyderproject
162
+ .spyproject
163
+
164
+ # Rope project settings
165
+ .ropeproject
166
+
167
+ # mkdocs documentation
168
+ /site
169
+
170
+ # mypy
171
+ .mypy_cache/
172
+ .dmypy.json
173
+ dmypy.json
174
+
175
+ # Pyre type checker
176
+ .pyre/
177
+
178
+ # pytype static type analyzer
179
+ .pytype/
180
+
181
+ # Cython debug symbols
182
+ cython_debug/
183
+
184
+ # PyCharm
185
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
186
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
187
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
188
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
189
+ # .idea/
190
+
191
+ # Abstra
192
+ # Abstra is an AI-powered process automation framework.
193
+ # Ignore directories containing user credentials, local state, and settings.
194
+ # Learn more at https://abstra.io/docs
195
+ .abstra/
196
+
197
+ # Visual Studio Code
198
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
199
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
200
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
201
+ # you could uncomment the following to ignore the entire vscode folder
202
+ # .vscode/
203
+ # Temporary file for partial code execution
204
+ tempCodeRunnerFile.py
205
+
206
+ # Ruff stuff:
207
+ .ruff_cache/
208
+
209
+ # PyPI configuration file
210
+ .pypirc
211
+
212
+ # Marimo
213
+ marimo/_static/
214
+ marimo/_lsp/
215
+ __marimo__/
216
+
217
+ # Streamlit
218
+ .streamlit/secrets.toml
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ZeckWork
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,318 @@
1
+ Metadata-Version: 2.5
2
+ Name: carcara-sec
3
+ Version: 0.1.0
4
+ Summary: iOS AppSec platform — unified CLI for mobile security tooling
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Keywords: appsec,frida,ios,mobile-security,pentest,red-team
8
+ Requires-Python: >=3.13
9
+ Requires-Dist: pyyaml>=6.0.3
10
+ Requires-Dist: rich>=15.0.0
11
+ Requires-Dist: typer>=0.27.1
12
+ Description-Content-Type: text/markdown
13
+
14
+ # Carcará
15
+
16
+ > iOS AppSec platform — unified CLI for mobile security tooling.
17
+
18
+ Carcará unifies Frida, Objection, SSH, file transfer, and provisioning profile management into a single CLI, purpose-built for iOS application security testing.
19
+
20
+ [![Quality](https://github.com/ZeckWork/carcara-sec/actions/workflows/quality.yml/badge.svg)](https://github.com/ZeckWork/carcara-sec/actions/workflows/quality.yml)
21
+ [![PyPI](https://img.shields.io/pypi/v/carcara-sec)](https://pypi.org/project/carcara-sec)
22
+
23
+ ```bash
24
+ pip install carcara-sec
25
+ ```
26
+
27
+ ## Requirements
28
+
29
+ - macOS (primary target)
30
+ - Python 3.13+
31
+ - [uv](https://github.com/astral-sh/uv) (recommended) or pip
32
+ - Xcode command line tools
33
+ - Node.js (for bagbak and applesign)
34
+
35
+ ## Installation
36
+
37
+ ```bash
38
+ pip install carcara-sec
39
+ carcara tools install # installs frida-tools, objection, bagbak, applesign
40
+ ```
41
+
42
+ ## Quick start
43
+
44
+ ```bash
45
+ # Register a device
46
+ carcara device add
47
+
48
+ # Connect
49
+ carcara device connect iphone6
50
+
51
+ # List processes
52
+ carcara frida ps
53
+
54
+ # Bypass SSL pinning
55
+ carcara frida codeshare sensepost/objection-ios-ssl-pinning com.target.app
56
+ ```
57
+
58
+ ## Device lab
59
+
60
+ Carcará uses device profiles stored in `~/.carcara/devices/`. The active device is set once and used automatically by every command.
61
+
62
+ ```bash
63
+ carcara device connect iphone6
64
+ carcara frida ps # runs on iphone6
65
+ carcara ssh run "ls /var/mobile" # runs on iphone6
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Command reference
71
+
72
+ All commands follow the same pattern:
73
+
74
+ ```
75
+ carcara <module> <action> [arguments]
76
+ ```
77
+
78
+ ---
79
+
80
+ ## device
81
+
82
+ Manage registered devices. Profiles live in `~/.carcara/devices/`.
83
+
84
+ | Command | Description |
85
+ |---|---|
86
+ | `carcara device list` | List all registered devices with online/offline status |
87
+ | `carcara device connect <name>` | Connect to a device: starts iproxy, SSH tunnel, checks frida-server |
88
+ | `carcara device disconnect` | Tear down all tunnels cleanly |
89
+ | `carcara device status` | Show the currently active device and tunnel state |
90
+ | `carcara device info <name>` | Print full profile details for a device |
91
+ | `carcara device add` | Interactive prompt to register a new device |
92
+ | `carcara device remove <name>` | Remove a device profile |
93
+
94
+ **Examples**
95
+
96
+ ```bash
97
+ carcara device list
98
+ # iphone6 192.168.1.100 iOS 12.5.8 palera1n ● online
99
+ # iphone13 192.168.1.101 iOS 16.5 dopamine ○ offline
100
+
101
+ carcara device connect iphone6
102
+ # ✓ SSH reachable
103
+ # ✓ frida-server running
104
+ # ✓ Active device set to: iphone6
105
+
106
+ carcara device status
107
+ # active device iphone6
108
+ # host 192.168.1.100
109
+ # status ● online
110
+ ```
111
+
112
+ ---
113
+
114
+ ## frida
115
+
116
+ Interact with the Frida instrumentation toolkit on the active device.
117
+
118
+ | Command | Description |
119
+ |---|---|
120
+ | `carcara frida ps` | List all running processes on the device |
121
+ | `carcara frida attach <app>` | Attach to a running process by name |
122
+ | `carcara frida attach-pid <pid>` | Attach to a running process by PID |
123
+ | `carcara frida run <script> <app>` | Attach to a process and inject a script from the local library |
124
+ | `carcara frida spawn <script> <app>` | Spawn an app from scratch and inject a script before execution |
125
+ | `carcara frida codeshare <path> <app>` | Run a script directly from Frida CodeShare |
126
+ | `carcara frida dump <bundle-id>` | Dump and decrypt an IPA from the device |
127
+ | `carcara frida trace <app> [args]` | Trace function calls on the active device |
128
+ | `carcara frida gadget` | Connect Frida REPL to an active Frida Gadget via USB |
129
+
130
+ **Examples**
131
+
132
+ ```bash
133
+ carcara frida ps
134
+
135
+ carcara frida attach com.target.app
136
+
137
+ carcara frida run ssl-pinning/bypass-generic com.target.app
138
+
139
+ carcara frida spawn ssl-pinning/bypass-generic com.target.app
140
+
141
+ carcara frida codeshare sensepost/objection-ios-ssl-pinning com.target.app
142
+
143
+ carcara frida dump com.target.app
144
+ # Saves to ~/Downloads/carcara/com.target.app.ipa
145
+
146
+ carcara frida trace MyApp -m '*[NSString stringWithFormat:]*'
147
+
148
+ carcara frida gadget
149
+ # Connects to Frida Gadget — requires Xcode attach (see provision workflow)
150
+ ```
151
+
152
+ ---
153
+
154
+ ## objection
155
+
156
+ Interact with the Objection runtime mobile exploration toolkit.
157
+
158
+ | Command | Description |
159
+ |---|---|
160
+ | `carcara objection explore` | Open the interactive Objection REPL on the active device |
161
+ | `carcara objection run <cmd>` | Run a single Objection command non-interactively |
162
+ | `carcara objection patchipa <path>` | Patch a local IPA to embed FridaGadget for non-jailbroken devices |
163
+ | `carcara objection gadget` | Start an Objection session connected to an active Frida Gadget |
164
+
165
+ **Examples**
166
+
167
+ ```bash
168
+ carcara objection explore
169
+
170
+ carcara objection run "ios sslpinning disable"
171
+
172
+ carcara objection patchipa ./MyApp.ipa
173
+ # Uses the active provisioning profile — set with carcara provision use <uuid>
174
+ ```
175
+
176
+ **Common Objection commands**
177
+
178
+ ```
179
+ ios sslpinning disable
180
+ ios jailbreak disable
181
+ ios keychain dump
182
+ ios nsuserdefaults get
183
+ ios cookies get
184
+ memory list exports <lib>
185
+ ```
186
+
187
+ ---
188
+
189
+ ## provision
190
+
191
+ Manage Apple provisioning profiles for IPA patching and re-signing.
192
+ Profiles are stored in `~/.carcara/profiles/` — never in `~/Library/MobileDevice/` where Xcode may delete them.
193
+
194
+ | Command | Description |
195
+ |---|---|
196
+ | `carcara provision add <path>` | Add a `.mobileprovision` file and optionally set as active |
197
+ | `carcara provision list` | List all installed profiles with status |
198
+ | `carcara provision use <uuid>` | Set a profile as active by UUID |
199
+ | `carcara provision show` | Show details for the active profile, including resolved codesign identity |
200
+ | `carcara provision check` | Check if the active profile is valid and not near expiry |
201
+ | `carcara provision entitlements` | Export entitlements from the active profile to `entitlements.plist` |
202
+ | `carcara provision resign <path>` | Re-sign an IPA with the active profile (no Frida injection) |
203
+
204
+ **Examples**
205
+
206
+ ```bash
207
+ carcara provision add ~/Downloads/work.zeck.app-sec.mobileprovision
208
+ # Imports profile, optionally imports existing system profiles
209
+ # Prompts to set as active
210
+
211
+ carcara provision list
212
+ # UUID Name Bundle ID Expiry Status
213
+ # TEST-UUID-0001 Carcará Dev work.zeck.app-sec 2026-01-01 ✓ valid
214
+
215
+ carcara provision use TEST-UUID-0001
216
+
217
+ carcara provision show
218
+ # name Carcará Dev
219
+ # bundle id work.zeck.app-sec
220
+ # team id TEAMID1234
221
+ # identity iPhone Developer: ...
222
+ # expiry 2026-01-01
223
+
224
+ carcara provision entitlements -o /tmp
225
+ # → /tmp/entitlements.plist
226
+
227
+ carcara provision resign ./MyApp.ipa
228
+ # → MyApp-resigned.ipa
229
+ ```
230
+
231
+ ---
232
+
233
+ ## transfer
234
+
235
+ Transfer files and directories between your machine and the device over SCP.
236
+
237
+ | Command | Description |
238
+ |---|---|
239
+ | `carcara transfer pull <remote>` | Pull a file from device to local (defaults to `~/Downloads/carcara/`) |
240
+ | `carcara transfer push <local> <remote>` | Push a local file to the device |
241
+ | `carcara transfer pull-dir <remote>` | Pull a directory recursively from device |
242
+ | `carcara transfer push-dir <local> <remote>` | Push a directory recursively to device |
243
+
244
+ **Examples**
245
+
246
+ ```bash
247
+ carcara transfer pull /var/mobile/Documents/secrets.db
248
+
249
+ carcara transfer push ./patch.dylib /tmp/patch.dylib
250
+
251
+ carcara transfer pull-dir /var/mobile/Containers/Data/Application/UUID/Documents
252
+ ```
253
+
254
+ ---
255
+
256
+ ## ssh
257
+
258
+ Manage SSH connectivity and run remote commands on the device.
259
+
260
+ | Command | Description |
261
+ |---|---|
262
+ | `carcara ssh shell` | Open an interactive SSH shell on the active device |
263
+ | `carcara ssh run <cmd>` | Run a single command on the device and return output |
264
+ | `carcara ssh tunnel <local> <remote>` | Start iproxy USB tunnel manually |
265
+ | `carcara ssh copy-id` | Install your local SSH public key on the device |
266
+
267
+ **Examples**
268
+
269
+ ```bash
270
+ carcara ssh shell
271
+
272
+ carcara ssh run "ls /var/mobile/Documents"
273
+
274
+ carcara ssh run "ps aux | grep SpringBoard"
275
+
276
+ carcara ssh copy-id
277
+ # Installs ~/.ssh/id_ed25519.pub — no more password prompts
278
+ ```
279
+
280
+ ---
281
+
282
+ ## tools
283
+
284
+ Manage the external tools that Carcará depends on.
285
+
286
+ | Command | Description |
287
+ |---|---|
288
+ | `carcara tools list` | Show all required tools with installed and required versions |
289
+ | `carcara tools check` | Validate installed versions against the manifest |
290
+ | `carcara tools install` | Install or upgrade all tools |
291
+
292
+ **Examples**
293
+
294
+ ```bash
295
+ carcara tools list
296
+ carcara tools check
297
+ carcara tools install
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Quick reference
303
+
304
+ ```
305
+ carcara device list | connect | disconnect | status | info | add | remove
306
+ carcara frida ps | attach | attach-pid | run | spawn | codeshare | dump | trace | gadget
307
+ carcara objection explore | run | patchipa | gadget
308
+ carcara provision add | list | use | show | check | entitlements | resign
309
+ carcara transfer pull | push | pull-dir | push-dir
310
+ carcara ssh shell | run | tunnel | copy-id
311
+ carcara tools list | check | install
312
+ ```
313
+
314
+ ---
315
+
316
+ ## License
317
+
318
+ MIT