# Sagemath

> Run SageMath through an explicit override, a detected environment named `sage`, or a PATH-resolved command. Use for CTF and cryptography work involving asymmetric cryptography, finite fields, elliptic curves, lattices, polynomial algebra, modular arithmetic, discrete logs, small-root attacks, or PRNG cryptanalysis.

- **Type:** Skill
- **Install:** `agentstack add skill-02loveslollipop-opencrow-sagemath`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [02loveslollipop](https://agentstack.voostack.com/s/02loveslollipop)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [02loveslollipop](https://github.com/02loveslollipop)
- **Source:** https://github.com/02loveslollipop/OpenCROW/tree/main/skills/sagemath

## Install

```sh
agentstack add skill-02loveslollipop-opencrow-sagemath
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# OpenCROW Runner - SageMath

## Runtime preflight

Probe required commands with `command -v` and Python modules with `importlib.util.find_spec` before use. Prefer a PATH-resolved OpenCROW MCP helper or the `ctf`/`sage` environment when available, then the managed helper or system Python. If a capability is missing, stop that path safely and report the exact missing command or module.

Use this skill to execute SageMath reliably from the best detected Sage runtime.

## Quick Start

Use the bundled runner:

```bash
python3 scripts/run_sage.py --code 'print(factor(2^20 - 1))'
```

Or execute an existing `.sage` file:

```bash
python3 scripts/run_sage.py --file /absolute/path/to/script.sage
```

## Workflow

1. Decide whether the task is best expressed as inline code or a `.sage` file.
2. For small one-off computations, pass the code with `--code`.
3. For longer programs or reusable work, create a `.sage` file and pass it with `--file`.
4. For CTF crypto tasks, prefer Sage when the problem involves polynomial rings, finite fields, matrices over modular domains, lattices, or symbolic number theory operations.
5. Review stdout/stderr from SageMath and report the meaningful result back to the user.

## Runner Notes

- The runner probes `OPENCROW_SAGE`, a Conda environment named `sage`, and then a PATH-resolved `sage` command. If all are missing it reports that exact capability gap.
- For `--code`, the runner writes the code into a temporary `.sage` file first. This avoids quoting issues and keeps behavior aligned with file execution.
- Pass `--timeout SECONDS` when a computation may hang or run too long.
- Pass `--keep-temp` only when debugging generated Sage code.

## Patterns

For inline calculations:

```bash
python3 scripts/run_sage.py --code '
R. = QQ[]
f = x^4 - 1
print(f.factor())
'
```

For file-based workflows:

1. Create a `.sage` file in the workspace.
2. Run it with the bundled runner.
3. If the script generates files, verify the outputs before replying.

For CTF cryptography workflows:

- Use Sage integer and modular arithmetic for RSA attacks, CRT reconstruction, inverses, and exponent relations.
- Use polynomial rings and `small_roots()` for Coppersmith-style attacks when the instance is suitable.
- Use `GF(p)` or extension fields for ECC, finite-field equations, and structured algebraic recovery.
- Use `Matrix`, `vector`, and LLL for lattice-based recovery problems and hidden-number style attacks.
- Use recurrence solving, modular equations, and matrix lifting for LCG, xorshift, and related PRNG state recovery when Sage algebra is useful.

## References

- For CTF-oriented patterns and starter snippets, read [references/ctf-crypto.md](references/ctf-crypto.md) when the task involves RSA, ECC, lattices, or PRNG cryptanalysis.

## Templates

- Copy or adapt [rsa-starter.sage](assets/templates/rsa-starter.sage) for modular arithmetic, CRT, and private-exponent recovery tasks.
- Copy or adapt [ecc-starter.sage](assets/templates/ecc-starter.sage) for finite-field and elliptic-curve exploration.
- Copy or adapt [lattice-lll-starter.sage](assets/templates/lattice-lll-starter.sage) for integer-lattice and hidden-structure attacks.
- Copy or adapt [lcg-state-recovery.sage](assets/templates/lcg-state-recovery.sage) for linear congruential generator recovery.
- Copy or adapt [xorshift-linear-model.sage](assets/templates/xorshift-linear-model.sage) for GF(2)-linear xorshift modeling.
- Copy or adapt [mersenne-twister-state-tools.sage](assets/templates/mersenne-twister-state-tools.sage) for MT19937 tempering and state-word recovery work.
- Copy or adapt [mt19937-partial-state-starter.sage](assets/templates/mt19937-partial-state-starter.sage) for partial-state or masked-bit MT analysis.
- Copy or adapt [mt19937-full-state-recovery.sage](assets/templates/mt19937-full-state-recovery.sage) for full 624-word MT state reconstruction from outputs.
- Copy or adapt [rsa-small-root-starter.sage](assets/templates/rsa-small-root-starter.sage) for Coppersmith-style experimentation with `small_roots()`.
- Copy or adapt [rsa-boneh-durfee-starter.sage](assets/templates/rsa-boneh-durfee-starter.sage) for low-private-exponent setup and polynomial construction.
- Copy or adapt [hidden-number-lattice-starter.sage](assets/templates/hidden-number-lattice-starter.sage) for nonce-bias and hidden-number lattice setups.
- Copy or adapt [ecdsa-nonce-reuse-starter.sage](assets/templates/ecdsa-nonce-reuse-starter.sage) for same-nonce ECDSA private-key recovery.
- Copy or adapt [ecdsa-partial-nonce-lattice-starter.sage](assets/templates/ecdsa-partial-nonce-lattice-starter.sage) for biased or partially leaked nonce lattice attacks.
- Copy or adapt [lcg-truncated-output-starter.sage](assets/templates/lcg-truncated-output-starter.sage) for recovering LCG state from high-bit leaks.

## Resource

### scripts/run_sage.py

Use this script instead of calling SageMath manually unless there is a specific reason not to. It standardizes environment selection, timeout handling, and inline-code execution.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [02loveslollipop](https://github.com/02loveslollipop)
- **Source:** [02loveslollipop/OpenCROW](https://github.com/02loveslollipop/OpenCROW)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-02loveslollipop-opencrow-sagemath
- Seller: https://agentstack.voostack.com/s/02loveslollipop
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
