Skip to main content

ControlThings Serial

A highly flexible serial interface tool made for penetration testers.

Installation:

As long as you have git and Python 3.8 or later installed, all you should need to do is:

pip3 install ctserial

Or better yet, if you have uv installed, install it in an isolated environment with:

uv tool install ctserial

uv also lets you try the tool out without installing it by running:

uvx ctserial

Usage:

First, start the tool from a terminal. Then connect to your serial device and interact with it. For example:

ctserial> connect /dev/your-serial-device
ctserial> send hex deadc0de                   # sends actual hex, so 4 bytes
ctserial> send Dead Code 国                    # sends full utf-8 string without spaces
ctserial> send "Dead Code 国"                  # Use quotes if you need spaces
ctserial> exit

Platform Independence

Python 3.6+ and all dependencies are available for all major operating systems. It is primarily developed on MacOS and Linux, but should work in Windows as well.

Development

If you are interested in modifying ctserial:

  1. Install Python's Poetry package at https://python-poetry.org/.
  2. Clone the ctserial github repository.
  3. Open a termainal to the cloned repository.
  4. Run poetry install to create a new virtual environment and install an editable instance of ctserial with its dependencies.

Author

Metadata

Release files for ctserial 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ctserial 0.5.0
File Size Uploaded Provenance
ctserial-0.5.0.tar.gz 6.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ctserial 0.5.0
File Interpreter ABI Platform
ctserial-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.2 kB

Release files / ctserial-0.5.0.tar.gz

Download URL ctserial-0.5.0.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5e5c238547e631428b42526113cb6831b7ed620104e9038480fe3b4df1d9a8af
BLAKE2b-256 checksum
How to use checksums
1faa06cc9715fd03cd9af5a921f4a3bab86e7f6b78d4bc39110569128a3b66d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / ctserial-0.5.0-py3-none-any.whl

Download URL ctserial-0.5.0-py3-none-any.whl
Size 8.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e08ba1d21e7daeae09ef1541f20c1438b4ad0dded5826af158f12bccae33ec00
BLAKE2b-256 checksum
How to use checksums
b8137659f5c81c3d6c1f819ca98c160b927eac1be4c38ece21626131b4e76e30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Security for ctserial 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ctserial-0.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page