First commit
|
@ -0,0 +1,5 @@
|
||||||
|
+++
|
||||||
|
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||||
|
date = {{ .Date }}
|
||||||
|
draft = true
|
||||||
|
+++
|
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
title: RF Swift
|
||||||
|
layout: hextra-home
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< hextra/hero-badge >}}
|
||||||
|
<div class="hx-w-2 hx-h-2 hx-rounded-full hx-bg-primary-400"></div>
|
||||||
|
<span>Free, open source</span>
|
||||||
|
{{< icon name="arrow-circle-right" attributes="height=14" >}}
|
||||||
|
{{< /hextra/hero-badge >}}
|
||||||
|
|
||||||
|
<div class="hx-mt-6 hx-mb-6">
|
||||||
|
{{< hextra/hero-headline >}}
|
||||||
|
The epic RF companion <br class="sm:hx-block hx-hidden" />for HAMS and professionnals
|
||||||
|
{{< /hextra/hero-headline >}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hx-mb-12">
|
||||||
|
{{< hextra/hero-subtitle >}}
|
||||||
|
Fast, efficient; and multi-platform <br class="sm:hx-block hx-hidden" /> toolbox for your regular assesments
|
||||||
|
{{< /hextra/hero-subtitle >}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hx-mb-6">
|
||||||
|
{{< hextra/hero-button text="Get Started" link="docs" >}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hx-mt-6"></div>
|
||||||
|
|
||||||
|
{{< hextra/feature-grid >}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Fast and Full-featured"
|
||||||
|
subtitle="Get most Radio Frequency and Hardware tools with few commands."
|
||||||
|
class="hx-aspect-auto md:hx-aspect-[1.1/1] max-md:hx-min-h-[340px]"
|
||||||
|
style="background: radial-gradient(ellipse at 50% 80%,rgba(194,97,254,0.15),hsla(0,0%,100%,0));"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Efficient"
|
||||||
|
subtitle="Simple and easy to use, and powerful."
|
||||||
|
class="hx-aspect-auto md:hx-aspect-[1.1/1] max-lg:hx-min-h-[340px]"
|
||||||
|
style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,74,0.15),hsla(0,0%,100%,0));"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Mutli-platform"
|
||||||
|
subtitle="Use it with your actual OS without reinstalling your computer."
|
||||||
|
class="hx-aspect-auto md:hx-aspect-[1.1/1] max-md:hx-min-h-[340px]"
|
||||||
|
style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Save time"
|
||||||
|
icon="clock"
|
||||||
|
subtitle="Save time creating dedicated envirnments for your assessments with simple commands."
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Bake your own"
|
||||||
|
icon="beaker"
|
||||||
|
subtitle="Create your own images for platform you'd like you want quickly we our helpers."
|
||||||
|
>}}
|
||||||
|
{{< hextra/feature-card
|
||||||
|
title="Updated"
|
||||||
|
icon="sparkles"
|
||||||
|
subtitle="Stay up-to-date thanks to our installation process."
|
||||||
|
>}}
|
||||||
|
{{< /hextra/feature-grid >}}
|
|
@ -0,0 +1,89 @@
|
||||||
|
---
|
||||||
|
linkTitle: "Documentation"
|
||||||
|
title: Introduction
|
||||||
|
weight: 3
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
👋 Hello! Welcome to the RF Swift documentation!
|
||||||
|
|
||||||
|
![landscape](https://github.com/PentHertz/RF-Swift-docs/blob/main/.assets/logo.png?raw=true)
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><img alt="linux supported" src="https://img.shields.io/badge/linux-supported-success"></td>
|
||||||
|
<td><img alt="windows supported" src="https://img.shields.io/badge/windows-supported-success"></td>
|
||||||
|
<td><img alt="windows supported" src="https://img.shields.io/badge/macos-pending-orange"></td>
|
||||||
|
<td><a target="_blank" rel="noopener noreferrer" href="https://x.com/intent/follow?screen_name=FlUxIuS" title="Follow"><img src="https://img.shields.io/twitter/follow/_nwodtuhs?label=FlUxIuS&style=social" alt="Twitter FlUxIuS"></a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img alt="amd64" src="https://img.shields.io/badge/amd64%20(x86__64)-supported-success"></td>
|
||||||
|
<td><img alt="arm64" src="https://img.shields.io/badge/arm64%20(aarch64)-supported-success"></td>
|
||||||
|
<td><img alt="riscv64" src="https://img.shields.io/badge/riscv64%20-supported-success"></td>
|
||||||
|
<td><a target="_blank" rel="noopener noreferrer" href="https://x.com/intent/follow?screen_name=Penthertz" title="Follow"><img src="https://img.shields.io/twitter/follow/_nwodtuhs?label=Penthertz&style=social" alt="Twitter Dramelac"></a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" href="https://discord.gg/NS3HayKrpA" title="Join us on Discord"><img src="https://github.com/PentHertz/RF-Swift-docs/blob/main/.assets/discord_join_us.png?raw=true" width="150" alt="Join us on Discord"></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## What is RF Swift?
|
||||||
|
|
||||||
|
RF Swift is a toolbox for creating an environment laboratory for your RF assessments, that can easily fit your prerequirements.
|
||||||
|
|
||||||
|
This toolbox is probably the best solution to deploy a generic, as well as a special environment securely, skipping the headache and waste of time when installing and using RF tools on same host.
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
Even if the project, could work on macOS with some manual workaround, we do not adverstise it for the moment, but this system will be a 100% supported anytime soon.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
## The RF Swift project
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD
|
||||||
|
A[rfswift] --> B[Host manager]
|
||||||
|
B --> C[Host]
|
||||||
|
B --> D[USB]
|
||||||
|
B --> E[Host]
|
||||||
|
B --> F[Sound]
|
||||||
|
|
||||||
|
B --> G[Images Container manager]
|
||||||
|
|
||||||
|
H[Dockerfiles] --> G
|
||||||
|
|
||||||
|
G --> I[Pull]
|
||||||
|
G --> J[List]
|
||||||
|
G --> K[Save]
|
||||||
|
G --> L[Tag]
|
||||||
|
G --> M[Run]
|
||||||
|
G --> N[Exec]
|
||||||
|
|
||||||
|
style A fill:#f9f,stroke:#333,stroke-width:4px
|
||||||
|
style B fill:#bbf,stroke:#333,stroke-width:2px
|
||||||
|
style H fill:#afa,stroke:#333,stroke-width:2px
|
||||||
|
|
||||||
|
style G fill:#bbf,stroke:#333,stroke-width:2px
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Go binary (rfswift)** - instruments containers and hosts to simplify the use of tools that may require internet connectivity, display, sounds, USB accesses. This rfswift is the main program you will interact with to run clean containers, execute inside running or paused containers, and do many magic actions that will make things work without headache.
|
||||||
|
- **Docker images** - some pre-built Docker container images are available in RF Swift’s repository. In case you wan to bake your own environment, preserve some spaces, and have a special set-up, you will also find some Docker files you can edit to fit your expectations.
|
||||||
|
|
||||||
|
## Questions or Feedback?
|
||||||
|
|
||||||
|
{{< callout emoji="❓" >}}
|
||||||
|
RF Swift is still in active development.
|
||||||
|
Have a question or feedback? Feel free to [open an issue](https://github.com/PentHertz/RF-Swift/issues)!
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Dive right into the following section to get started:
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="getting-started" title="Getting Started" icon="document-text" subtitle="Learn how to run RF Swift" >}}
|
||||||
|
{{< card link="development/compiling-rfswift" title="Compile RF Swift binarry" icon="document-text" subtitle="Compile RF Swift and develop around the framework" >}}
|
||||||
|
{{< /cards >}}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
linkTitle: 🧑🍳 Development
|
||||||
|
title: 🧑🍳 Developping around RF Swift
|
||||||
|
prev: /docs/guide
|
||||||
|
next: /docs/development/compiling-rfswift
|
||||||
|
weight: 4
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This section covers topics related to the development and contribution for RF Swift.
|
||||||
|
|
||||||
|
<!--more-->
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="compiling-rfswift" title="Compile RF Swift Binary" icon="chip" >}}
|
||||||
|
{{< card link="building-images" title="Building images" icon="beaker" >}}
|
||||||
|
{{< /cards >}}
|
||||||
|
|
||||||
|
{{< callout emoji="❓" >}}
|
||||||
|
This documentations is still under development. We will write other part in the future to help us contribute to this project.
|
||||||
|
{{< /callout >}}
|
|
@ -0,0 +1,115 @@
|
||||||
|
---
|
||||||
|
title: Building images
|
||||||
|
weight: 2
|
||||||
|
prev: /docs/development/compiling-rfswift
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
Available images are all present in the `images` submodule that can be checked with git as follows inside RF Swift root directory:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
When entering the `images` directory, you can see different files and directory:
|
||||||
|
|
||||||
|
* **config**: where configurations files are stored for specific tools;
|
||||||
|
* **Dockerfiles**: Docker files to build images;
|
||||||
|
* **rules**: some dev rules files specific to devices;
|
||||||
|
* **run**: bash script we want to run;
|
||||||
|
* **scripts**: installation scripts.
|
||||||
|
|
||||||
|
To build you own images, the important dicterories are `scripts` and `Dockerfiles`.
|
||||||
|
|
||||||
|
## Making a custom image
|
||||||
|
|
||||||
|
So let say we want to cook a light images, for an RTL-SDR v4 device only, and just need GQRX tool, we can use the `corebuild` images reference at the begining of our Docker file:
|
||||||
|
|
||||||
|
```
|
||||||
|
FROM penthertz/rfswift:corebuild
|
||||||
|
```
|
||||||
|
|
||||||
|
To make the image be recognized by RF Swift, we need to use also the following labels:
|
||||||
|
|
||||||
|
```
|
||||||
|
LABEL "org.container.project"="rfswift"
|
||||||
|
LABEL "org.container.author"="Super author" # optional
|
||||||
|
```
|
||||||
|
|
||||||
|
After that, you can put all function you want to install, but remember to update packages manager list first:
|
||||||
|
|
||||||
|
```
|
||||||
|
...
|
||||||
|
RUN apt-fast update # required before!
|
||||||
|
|
||||||
|
RUN ./entrypoint.sh rtlsdrv4_devices_install && \
|
||||||
|
./entrypoint.sh gqrx_soft_install
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
And voilà!
|
||||||
|
|
||||||
|
Do not hesitate to finish the Docker file cleaning stuff:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Cleaning and quitting
|
||||||
|
WORKDIR /root/
|
||||||
|
RUN rm -rf /root/thirdparty && \
|
||||||
|
rm -rf /root/rules/ && \
|
||||||
|
rm -rf /root/config/ && \
|
||||||
|
apt-fast clean
|
||||||
|
RUN DEBIAN_FRONTEND=noninteractive rm -rf /var/lib/apt/lists/*
|
||||||
|
```
|
||||||
|
|
||||||
|
## Making your own installation function
|
||||||
|
|
||||||
|
### Creating a source file
|
||||||
|
|
||||||
|
Installation functions are called by `entrypoint.sh` script inside `RF-Swift/images/scripts` directory.
|
||||||
|
|
||||||
|
The different installation function are included in some script files:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ls
|
||||||
|
automotive_software.sh common.sh entrypoint.sh lab_software.sh rf_tools.sh sast_software.sh sdr_softwares.sh terminal_harness.sh
|
||||||
|
cal_devices.sh corebuild.sh gr_oot_modules.sh reverse_software.sh sa_devices.sh sdr_peripherals.sh telecom_software.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to create a new script file, and include it, you need also to include it in `entrypoint.sh` as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
...
|
||||||
|
source yournewsourcefile.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Making functions
|
||||||
|
|
||||||
|
To make a function, you will then just need to call it as you whish, but something that could be practical and easy to copy for users such as:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
function newsuper_soft_install() {
|
||||||
|
// your code here
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
So you can then put any script you want, but do be efficient, we also provide you with some harness functions to make things easier
|
||||||
|
|
||||||
|
|
||||||
|
## List of harness functions
|
||||||
|
|
||||||
|
| Function | Arguments | Description |
|
||||||
|
|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
|
||||||
|
| colorecho | arg1: String | Display text in blue |
|
||||||
|
| criticalecho | arg1: String | Display error in red and exit 1 |
|
||||||
|
| criticalecho-noexit | arg1: String | Display error in red only |
|
||||||
|
| goodecho | arg1: String | Display text in green |
|
||||||
|
| installfromnet | arg1: String | In case an internet action is not working, this function will do 5 attempt to get resources |
|
||||||
|
| install_dependencies | arg1: String for dependencies | Function doing installfromnet 'apt-fast install -y <your dependencies>' |
|
||||||
|
| grclone_and_build | arg1: repo URL; arg2: destination directory, arg3: function installation name; arg4: build dir for cmake; arg5: git branch; next args*: cmake arguments | Function responsible to install GNU Radio modules from GitHub |
|
||||||
|
| gitinstall | arg1: repo URL; arg2: function name that calls it; arg3: branch | Function that will fetch a git project |
|
||||||
|
| cmake_clone_and_build | arg1: repo URL, arg2: cmake build directory; arg3: branch; arg4: reset commit, if necessary; arg5: function name that calls it; other args*: cmake args* | Function that handles a cmake project from Git |
|
||||||
|
| check_and_install_lib | arg1: library name to check; arg2: pkg config name | Checks if library exist, and install it if not detected |
|
|
@ -0,0 +1,101 @@
|
||||||
|
---
|
||||||
|
title: Compiling RF Swift
|
||||||
|
weight: 1
|
||||||
|
prev: /docs/development
|
||||||
|
next: /docs/development/building-images
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
The project can install from source by following the simple steps:
|
||||||
|
|
||||||
|
## Installing RF Swift from source
|
||||||
|
|
||||||
|
{{% steps %}}
|
||||||
|
|
||||||
|
### Get binary from GitHub
|
||||||
|
|
||||||
|
Get the latest commit from the [the official repository](https://github.com/PentHertz/RF-Swift):
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/PentHertz/RF-Swift.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Use the installation script
|
||||||
|
|
||||||
|
Two scripts are available to install all development tools if not installed and build the project:
|
||||||
|
|
||||||
|
- **install.sh**: Installation script for Linux, handling also the installation of Docker (also on Steam Deck), Buildx, and go.
|
||||||
|
- **build-windows.bat**
|
||||||
|
|
||||||
|
If you are running the `install.sh` script, it will ask you if you want to install it for a Steam Deck. If yes, this will also unlock Steam OS from read-only.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./install.sh
|
||||||
|
[+] Checking Docker installation
|
||||||
|
Are you installing on a Steam Deck? (yes/no)
|
||||||
|
Choose an option:
|
||||||
|
```
|
||||||
|
|
||||||
|
After this process, `install.sh` will take care for `Golang`, `Docker`, `Build X`, and `compose` installation.
|
||||||
|
|
||||||
|
On Linux, you will have also the choice to make an alias for this binary:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
Do you want to create an alias for the binary? (yes/no):
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
The alias will allow you to start the binary with `rfswift` command.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
And then ask you if you want to build a Docker image (1), or pull an existing one (2), or exit the process (3):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
Docker is already installed. Moving on.
|
||||||
|
Docker Buildx is already installed. Moving on.
|
||||||
|
Docker Compose v2 is already installed. Moving on.
|
||||||
|
[+] Installing Go
|
||||||
|
golang is already installed in /usr/local/go/bin. Moving on.
|
||||||
|
[+] Building RF Switch Go Project
|
||||||
|
RF Switch Go Project built successfully.
|
||||||
|
Do you want to build a Docker container, pull an existing image, or exit?
|
||||||
|
1) Build Docker container
|
||||||
|
2) Pull Docker image
|
||||||
|
3) Exit
|
||||||
|
Choose an option (1, 2, or 3):
|
||||||
|
```
|
||||||
|
|
||||||
|
You can always choose to build images, or pull images later.
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="/docs/development/building-images" title="Beak your own images" icon="document-text" subtitle="Make your own images, save space and enjoy your environment" >}}
|
||||||
|
{{< card link="/docs/images" title="Managing images" icon="document-text" subtitle="List local and remote images, and pull them from the official registry" >}}
|
||||||
|
{{< /cards >}}
|
||||||
|
|
||||||
|
### Running the container
|
||||||
|
|
||||||
|
After building, or pulling an existing image, you can run the container and enjoy the included tools !
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo ./rfswift run -i penthertz/rfswift:sdr_full -n supercontainername
|
||||||
|
```
|
||||||
|
|
||||||
|
{{% /steps %}}
|
||||||
|
|
||||||
|
## Restarting a container
|
||||||
|
|
||||||
|
You can create as many fresh container you want, but sometimes you want to get back to previous job.
|
||||||
|
|
||||||
|
To restart a container, you can do it with the following command using `-c nameofthecontainer`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo ./rfswift exec -c supercontainername
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Now your are ready to use RF Swift with provided images, build your own images, and contribute on the Go binary and the content of images.
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="/docs/getting-started" title="Getting Started" icon="document-text" subtitle="Learn how to run RF Swift with provided images" >}}
|
||||||
|
{{< /cards >}}
|
|
@ -0,0 +1,84 @@
|
||||||
|
---
|
||||||
|
title: Getting started
|
||||||
|
weight: 1
|
||||||
|
next: /docs/quick-start
|
||||||
|
prev: /docs/
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
To get started using RF Swift, you first need to follow specific requirements.
|
||||||
|
|
||||||
|
## Supported on
|
||||||
|
|
||||||
|
### Platforms
|
||||||
|
|
||||||
|
| Plateform | x86_64/amd64 | arm64/v8 | riscv64 |
|
||||||
|
| -------- | ------------ | -------------------------------------------- | -------- |
|
||||||
|
| Windows | ✅ | ❓ | |
|
||||||
|
| Linux | ✅ | ✅ | ✅ |
|
||||||
|
| macOS | ❓ | ✅ (better inside a VM for USB devices) | |
|
||||||
|
|
||||||
|
|
||||||
|
### Tested single-board computers
|
||||||
|
|
||||||
|
|
||||||
|
| SBC | Status | Comments |
|
||||||
|
| -------------------- | ------------ | ---------------------------------------------------------------------------- |
|
||||||
|
| Raspberry Pi 5 | ✅ | Works perfectly with most of the tools. |
|
||||||
|
| Milk-V Jupiyter | ✅ | Works perfectly with most of the tools, but slower than Raspberry Pi 5. |
|
||||||
|
| Milk-V Mars | ❌ | Software support is dead for the moment. Impossible to easily install Docker. |
|
||||||
|
| UP Squared Series | ✅ | Works perfectly with most of the tools. |
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
The minimum requirements to run the project are the following:
|
||||||
|
|
||||||
|
|
||||||
|
{{< tabs items="Linux (prefered),Windows,macOS" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
On Linux, Docker, BuildX, and go can be directly installed with `install.sh` script.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
Docker is needed at least to run RF Swift containers. It can be directly your prefered package manager, such as APT or installed manually. From Linux systems, Docker can be installed quickly and easily with the following command-line:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL "https://get.docker.com/" | sh
|
||||||
|
```
|
||||||
|
Other dependencies will be also needed such as:
|
||||||
|
|
||||||
|
- `xhost`: to install depending on your distribution
|
||||||
|
- `pulseaudio`: to install depending on your distribution
|
||||||
|
- `golang`: Go compiler
|
||||||
|
- Optional `buildx`: For cross-compilation
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
- [Docker Desktop](https://docs.docker.com/desktop/install/windows-install/) to run container
|
||||||
|
- [usbipd](https://learn.microsoft.com/en-us/windows/wsl/connect-usb) to bind USB devices to the host
|
||||||
|
- For programs using PulseAudio, follow steps in the following [pulseaudio page](https://www.linuxuprising.com/2021/03/how-to-get-sound-pulseaudio-to-work-on.html) using [new binaries here](https://pgaskin.net/pulseaudio-win32/).
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
Make sure Docker Desktop runs in [WSL2](https://docs.docker.com/desktop/wsl/#enabling-docker-support-in-wsl-2-distros).
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
This system will be soon supported at 100%
|
||||||
|
{{< /callout >}}
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Dive right into the following section to get started:
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="/docs/quick-start" title="Quick start" icon="document-text" subtitle="Running RF Swift with pre-built images and binary." >}}
|
||||||
|
{{< card link="/docs/development" title="Developping and contributing" icon="document-text" subtitle="Compile binary and build images from sources, contribute to the project." >}}
|
||||||
|
{{< /cards >}}
|
|
@ -0,0 +1 @@
|
||||||
|
,fluxius,topms,04.09.2024 17:05,file:///home/fluxius/.config/libreoffice/4;
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
linkTitle: 📖 Guide
|
||||||
|
title: Guide
|
||||||
|
prev: /docs/quick-start/
|
||||||
|
next: running-rf-swift/
|
||||||
|
weight: 3
|
||||||
|
---
|
||||||
|
|
||||||
|
This section covers topics related on how to run RF Swift and use the different softwares installed default images.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="running-rf-swift" title="Running RF Swift" icon="lightning-bolt" >}}
|
||||||
|
{{< card link="configurations" title="Configurations" icon="pencil-alt" >}}
|
||||||
|
{{< card link="list-of-images" title="Container images" icon="photograph" >}}
|
||||||
|
{{< card link="list-of-tools" title="Included tools" icon="table" >}}
|
||||||
|
{{< card link="host-actions" title="Host actions" icon="desktop-computer" >}}
|
||||||
|
{{< card link="sharing-files" title="Sharing files" icon="share" >}}
|
||||||
|
{{< /cards >}}
|
|
@ -0,0 +1,86 @@
|
||||||
|
---
|
||||||
|
title: Configurations
|
||||||
|
weight: 4
|
||||||
|
next: /docs/guide/host-actions
|
||||||
|
prev: /docs/guide/list-of-tools/
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
RF Swift can be configured on the fly, or using a profile configuration file for conveniency.
|
||||||
|
|
||||||
|
## Profil configuration
|
||||||
|
|
||||||
|
Depending on your os, RF Swift will look for a profile configuration and ask you to create one if it is not found in the following path:
|
||||||
|
|
||||||
|
{{< tabs items="Linux,Windows,macOS X" defaultIndex="1" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
```
|
||||||
|
/home/username/.config/rfswift/config.ini
|
||||||
|
```
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< tab >}}
|
||||||
|
```
|
||||||
|
C:\Users\username\AppData\Roaming\rfswift\config.ini
|
||||||
|
```
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< tab >}}
|
||||||
|
```
|
||||||
|
/Users/username/.config/rfswift/config.ini
|
||||||
|
```
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
|
This file contains different sections and lines parameters for RF Swift as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
[general]
|
||||||
|
imagename = myrfswift:latest
|
||||||
|
|
||||||
|
[container]
|
||||||
|
shell = /bin/zsh
|
||||||
|
bindings = /dev/bus/usb:/dev/bus/usb,/run/dbus/system_bus_socket:/run/dbus/system_bus_socket,/dev/snd:/dev/snd,/dev/dri:/dev/dri,/dev/input:/dev/input
|
||||||
|
network = host
|
||||||
|
x11forward = /tmp/.X11-unix:/tmp/.X11-unix
|
||||||
|
xdisplay = "DISPLAY=:0"
|
||||||
|
extrahost = pluto.local:192.168.2.1
|
||||||
|
extraenv = ""
|
||||||
|
|
||||||
|
[audio]
|
||||||
|
pulse_server = tcp:localhost:34567
|
||||||
|
```
|
||||||
|
|
||||||
|
In the `general` section, we have a `imagename` parameter which is the default image name of the container you want to create and run with command `run`.
|
||||||
|
This parameters allows you to skip `-i` parameter for the command `run`.
|
||||||
|
|
||||||
|
In the `container` section:
|
||||||
|
|
||||||
|
* `shell`: default shell to use in the container (e.g: bash/dash/zsh);
|
||||||
|
* `bindings`: Allows to share files/directories from the host to host container;
|
||||||
|
* `network`: network configuration mode (e.g: host/private/bridge/overlay/ipvlan/macvlan);
|
||||||
|
* `x11forward`: extends bindings for X11 sharing between host and guest;
|
||||||
|
* `extrahost`: host aliases binding with IPs;
|
||||||
|
* `xdisplay`: environment variable dedicated to X11;
|
||||||
|
* `extraenv`: extra environment variables you want to setup.
|
||||||
|
|
||||||
|
The `audio` section contains a parameter `pulse_server` which will setup the `PULSE_SERVER` environment variable to point applications to the right address of your `pulseaudio` server.
|
||||||
|
|
||||||
|
## Parameters from CLI
|
||||||
|
|
||||||
|
You can also choose to modify any parameter when using the `run` command:
|
||||||
|
|
||||||
|
```bas
|
||||||
|
Usage:
|
||||||
|
rfswift run [flags]
|
||||||
|
|
||||||
|
Flags:
|
||||||
|
-b, --bind string extra bindings (separate them with commas)
|
||||||
|
-e, --command string command to exec (by default: '/bin/bash')
|
||||||
|
-d, --display string set X Display (duplicates hosts's env by default) (default "DISPLAY=:0")
|
||||||
|
-x, --extrahosts string set extra hosts (default: 'pluto.local:192.168.1.2', and separate them with commas)
|
||||||
|
-h, --help help for run
|
||||||
|
-i, --image string image (default: 'myrfswift:latest')
|
||||||
|
-n, --name string A docker name
|
||||||
|
-p, --pulseserver string PULSE SERVER TCP address (by default: tcp:127.0.0.1:34567) (default "tcp:127.0.0.1:34567")
|
||||||
|
```
|
|
@ -0,0 +1,73 @@
|
||||||
|
---
|
||||||
|
title: Host actions
|
||||||
|
weight: 5
|
||||||
|
next: /docs/guide/file-sharing
|
||||||
|
prev: /docs/guide/configurations
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
Know we know how to run, configure, and manage images, let us see how we can also manage perform important host actions depending on the context.
|
||||||
|
|
||||||
|
## Enabling audio
|
||||||
|
|
||||||
|
When running a container, you will probably encounter the following warning notification:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ ⚠️ Warning │
|
||||||
|
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Warning: Unable to connect to Pulse server at 127.0.0.1:34567 │
|
||||||
|
│ To install Pulse server on Linux, follow these steps: │
|
||||||
|
│ 1. Update your package manager: sudo apt update (for Debian-based) or sudo yum update (for Red │
|
||||||
|
│ Hat-based). │
|
||||||
|
│ 2. Install Pulse server: sudo apt install pulse-server (for Debian-based) or sudo yum install │
|
||||||
|
│ pulse-server (for Red Hat-based). │
|
||||||
|
│ After installation, enable the module with the following command as unprivileged user: │
|
||||||
|
│ ./rfswift host audio enable │
|
||||||
|
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
That means `pulseaudio` server is not found on the default IP and TCP port (127.0.0.1:34567)
|
||||||
|
|
||||||
|
With `host audio` command you can enable or disable pulseaudio in TCP, and so to listen to the sound coming from some tools like GQRX, SDR++, etc:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift host audio
|
||||||
|
...
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
Manage pulseaudio server
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
rfswift host audio [command]
|
||||||
|
|
||||||
|
Available Commands:
|
||||||
|
enable Enable connection
|
||||||
|
unload Unload TCP module from Pulseaudio server
|
||||||
|
|
||||||
|
Flags:
|
||||||
|
-h, --help help for audio
|
||||||
|
|
||||||
|
Use "rfswift host audio [command] --help" for more information about a command.
|
||||||
|
```
|
||||||
|
|
||||||
|
So if we want to enable `pulseaudio`, we can simply enable it with default IP and TCP port as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift host audio enable
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want, you can also open the server to you LAN network, or VPN, by precising another host, and optionaly another TCP port:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift host audio enable -s 10.0.0.1:34567
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
For security reasons, it is not advised to open the port to all computer in any network, so do it carefully.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Binding USB devices on a Windows host
|
||||||
|
|
||||||
|
TODO
|
|
@ -0,0 +1,117 @@
|
||||||
|
---
|
||||||
|
title: Container images
|
||||||
|
weight: 2
|
||||||
|
next: /docs/guide/list-of-tools
|
||||||
|
prev: /docs/guide/running-rf-swift
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
RF Swift has an `images` options that allows to deal with remote and local images.
|
||||||
|
|
||||||
|
Let us discover these different options.
|
||||||
|
|
||||||
|
## Remote images
|
||||||
|
|
||||||
|
You can list remote images associated to the architecture you are using with the `images remote` command set:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift images remote
|
||||||
|
...
|
||||||
|
💿 Official Images
|
||||||
|
┌──────────────────────────────┬──────────────────────┬────────────────────────────────────────────────┬──────────────┐
|
||||||
|
│ Tag │ Pushed Date │ Image │ Architecture │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ sdr_full_amd64 │ 2024-09-03T08:09:08Z │ penthertz/rfswift:sdr_full_amd64 │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ bluetooth │ 2024-09-03T04:54:41Z │ penthertz/rfswift:bluetooth │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ telecom │ 2024-09-03T04:24:10Z │ penthertz/rfswift:telecom │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ sdrsa_devices_antsdr │ 2024-09-03T01:54:23Z │ penthertz/rfswift:sdrsa_devices_antsdr │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ extrasofts_amd64 │ 2024-09-03T01:45:27Z │ penthertz/rfswift:extrasofts_amd64 │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ extraoot1_amd64 │ 2024-09-03T01:03:38Z │ penthertz/rfswift:extraoot1_amd64 │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ extraoot2_amd64 │ 2024-09-03T01:02:21Z │ penthertz/rfswift:extraoot2_amd64 │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ mldlsofts_amd64 │ 2024-09-03T00:54:35Z │ penthertz/rfswift:mldlsofts_amd64 │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ sdr_light │ 2024-09-03T00:51:03Z │ penthertz/rfswift:sdr_light │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ reversing │ 2024-09-03T00:37:44Z │ penthertz/rfswift:reversing │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ telecom_amd64 │ 2024-09-03T00:32:08Z │ penthertz/rfswift:telecom_amd64 │ amd64 │
|
||||||
|
├──────────────────────────────┼──────────────────────┼────────────────────────────────────────────────┼──────────────┤
|
||||||
|
│ wifi_amd64 │ 2024-09-03T00:15:16Z │ penthertz/rfswift:wifi_amd64 │ amd64 │
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
You will see that some tag are specific to the architecture `sdr_light_amd64`, but others like `sdr_light` do not include the architecture.
|
||||||
|
First you should know that those two tags are the same, but `sdr_light` can be used also against aarch64/arm64, and riscv64 as well.
|
||||||
|
|
||||||
|
To better explain the different pre-compiled image, look at this table showing the main images you will be interested in:
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/precompimages.csv" >}}
|
||||||
|
|
||||||
|
|
||||||
|
Here is you will find images hierarchy:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD;
|
||||||
|
A[corebuild]-->B[sdrsa_devices];
|
||||||
|
A-->C[rfid];
|
||||||
|
A-->D[automotive];
|
||||||
|
A-->E[reversing];
|
||||||
|
A-->F[sdrsa_devices_antsdr];
|
||||||
|
A-->G[sdrsa_devices_rtlsdrv4];
|
||||||
|
B[sdrsa_devices]-->H[sdr_light];
|
||||||
|
B[sdrsa_devices]-->I[bluetooth];
|
||||||
|
B[sdrsa_devices]-->J[wifi];
|
||||||
|
B[sdrsa_devices]-->J[telecom];
|
||||||
|
H-->K[sdr_full]
|
||||||
|
```
|
||||||
|
|
||||||
|
So if you want to build one of your own, do not hesitate to take one these images as a reference.
|
||||||
|
|
||||||
|
|
||||||
|
## List local images
|
||||||
|
|
||||||
|
To list pulled, but also built images, you can issue the `images local` command, that will display these local images and details:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
📦 RF Swift Images
|
||||||
|
┌──────────────────────┬─────────────────┬──────────────┬───────────────────────────┬─────────────┬────────────┐
|
||||||
|
│ Repository │ Tag │ Image ID │ Created │ Size │ Status │
|
||||||
|
├──────────────────────┼─────────────────┼──────────────┼───────────────────────────┼─────────────┼────────────┤
|
||||||
|
│ myrfswift │ latest │ sha256:0bdb2 │ 2024-09-01T00:56:27+02:00 │ 16635.22 MB │ Custom │
|
||||||
|
├──────────────────────┼─────────────────┼──────────────┼───────────────────────────┼─────────────┼────────────┤
|
||||||
|
│ penthertz/rfswiftdev │ sdr_full_amd64 │ sha256:0bdb2 │ 2024-09-01T00:56:27+02:00 │ 16635.22 MB │ Up to date │
|
||||||
|
├──────────────────────┼─────────────────┼──────────────┼───────────────────────────┼─────────────┼────────────┤
|
||||||
|
│ penthertz/rfswiftdev │ sdr_light_amd64 │ sha256:476c0 │ 2024-09-01T00:34:55+02:00 │ 9617.12 MB │ Up to date │
|
||||||
|
├──────────────────────┼─────────────────┼──────────────┼───────────────────────────┼─────────────┼────────────┤
|
||||||
|
│ penthertz/rfswift │ sdr_full │ sha256:50ce1 │ 2024-08-02T14:45:46+02:00 │ 10383.56 MB │ Custom │
|
||||||
|
└──────────────────────┴─────────────────┴──────────────┴───────────────────────────┴─────────────┴────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
The status can serve as a good indicator to show if the images are up-to-date when using official tags.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
If an update is necessary you can issue a `images pull` command as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift images pull -i penthertz/rfswift:<tag_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
In next pages, you will have a better idea of tools installed for each images, as well as other details.
|
||||||
|
|
||||||
|
Dive right into the following section to get started:
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="/docs/guide/list-of-tools" title="List of tools" icon="document-text" subtitle="List of tools per images." >}}
|
||||||
|
{{< card link="/docs/guide/configurations" title="Configurations" icon="document-text" subtitle="Manage configurations in your profile and in RF Swift." >}}
|
||||||
|
{{< /cards >}}
|
|
@ -0,0 +1,80 @@
|
||||||
|
---
|
||||||
|
title: Included tools
|
||||||
|
weight: 3
|
||||||
|
next: /docs/guide/configurations
|
||||||
|
prev: /docs/guide/list-of-images
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{{< callout emoji="📈" >}}
|
||||||
|
RF Swift is still in active development so more tools will be expected, and will readapted for all architectures as possible.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
RF Swift prebuilt images are compiled with tools you can discover in the next sections.
|
||||||
|
|
||||||
|
ere is you will find images hierarchy:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD;
|
||||||
|
A[corebuild]-->B[sdrsa_devices];
|
||||||
|
A-->C[rfid];
|
||||||
|
A-->D[automotive];
|
||||||
|
A-->E[reversing];
|
||||||
|
A-->F[sdrsa_devices_antsdr];
|
||||||
|
A-->G[sdrsa_devices_rtlsdrv4];
|
||||||
|
B[sdrsa_devices]-->H[sdr_light];
|
||||||
|
B[sdrsa_devices]-->I[bluetooth];
|
||||||
|
B[sdrsa_devices]-->J[wifi];
|
||||||
|
B[sdrsa_devices]-->J[telecom];
|
||||||
|
H-->K[sdr_full]
|
||||||
|
```
|
||||||
|
|
||||||
|
## sdrsa_devices
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_sdrsa_devices.csv" >}}
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
For RTL-SDR v4, the `rtlsdrv4_devices_install` function can be used instead. For ANTSDR, use `antsdr__devices_install`
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
## sdr_light
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_sdr_light.csv" >}}
|
||||||
|
|
||||||
|
## sdr_full
|
||||||
|
|
||||||
|
### GNU Radio Out-Of-Tree Modules
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_sdr_full_oot.csv" >}}
|
||||||
|
|
||||||
|
### Extra-softwares
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_sdr_full.csv" >}}
|
||||||
|
|
||||||
|
## RFID
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_rfid.csv" >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Bluetooth
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_bluetooth.csv" >}}
|
||||||
|
|
||||||
|
## Wi-Fi
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_wifi.csv" >}}
|
||||||
|
|
||||||
|
## Telecom
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_telecom.csv" >}}
|
||||||
|
|
||||||
|
## Automotive
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_automotive.csv" >}}
|
||||||
|
|
||||||
|
## Reversing
|
||||||
|
|
||||||
|
{{< csv-table "content/docs/guide/tools_for_reversing.csv" >}}
|
|
@ -0,0 +1,14 @@
|
||||||
|
Tag,Supported OS,x86_64/amd64, arm64/v8, riscv64,Description
|
||||||
|
corebuild,- Linux - Windows,✅,✅,✅,Base image including prerequisites for compiling tools and libraries for applications needing GUI and some other necessary tools
|
||||||
|
sdrsa_devices,- Linux - Windows,✅,✅,✅,Contains all drivers of devices included in sdrsa_devices.docker
|
||||||
|
sdrsa_devices_antsdr,- Linux - Windows,✅,✅,✅,Contains all drivers of devices included in sdrsa_devices.docker but replacing official UHD drivers by ANTSDR ones
|
||||||
|
sdrsa_devices_rtlsdrv4,- Linux - Windows,✅,✅,✅,Contains all drivers of devices included in sdrsa_devices.docker but replacing default RTL-SDR drivers to support v4 version for the RTL-SDR blog
|
||||||
|
latest,- Linux - Windows,✅,✅,✅,"The full images including all tools for SDR, Wi-Fi, Bluetooth and RFID used in the Dockerfile file"
|
||||||
|
sdr_light,- Linux - Windows,✅,✅,✅,Light image built for SDR uses with limited number of tools used in sdr_light.docker file
|
||||||
|
sdr_full,- Linux - Windows,✅,✅,✅,Full image including all SDR tools used in sdr_full.docker file
|
||||||
|
wifi,- Linux - Windows,✅,✅,✅,Wi-Fi image for security tests using tools included in wifi.docker
|
||||||
|
rfid,- Linux - Windows,✅,✅,✅,RFID image for security tests using tools included in rfid.docker
|
||||||
|
reversing,- Linux - Windows,✅,✅,❌ (not yet),Reversing image for security tests using tools included in reversing.docker
|
||||||
|
automotive,- Linux - Windows,✅,✅,❌ (not yet),Automotive image for security tests using tools included in automotive.docker
|
||||||
|
bluetooth,- Linux - Windows,✅,✅,✅,Bluetooth classic and LE image for security tests using tools in bluetooth.docker
|
||||||
|
telecom,- Linux - Windows,✅,✅,✅,Telecom image for security tests using tools included in telecom.docker
|
|
|
@ -0,0 +1,381 @@
|
||||||
|
---
|
||||||
|
title: Running RF Swift
|
||||||
|
weight: 1
|
||||||
|
next: /docs/guide/list-of-images/
|
||||||
|
prev: /docs/quick-start
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
Running RF Swift is pretty straight forward and only requires a few command line to use your hacking tools as you wish.
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
**On Linux**, unless your are using Docker Desktop, you will have to use `rfswift` with sudo most of the time.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
Let us first discover the different options of the tool by typing `rfswift --help`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift --help
|
||||||
|
[...]
|
||||||
|
|
||||||
|
|
||||||
|
888~-_ 888~~ ,d88~~\ ,e, 88~\ d8
|
||||||
|
888 \ 888___ 8888 Y88b e / " _888__ _d88__
|
||||||
|
888 | 888 'Y88b Y88b d8b / 888 888 888
|
||||||
|
888 / 888 'Y88b, Y888/Y88b/ 888 888 888
|
||||||
|
888_-~ 888 8888 Y8/ Y8/ 888 888 888
|
||||||
|
888 ~-_ 888 \__88P' Y Y 888 888 "88_/
|
||||||
|
|
||||||
|
RF toolbox for HAMs and professionals
|
||||||
|
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
rfswift is a super fancy CLI (kidding)
|
||||||
|
|
||||||
|
One can use stringer to modify or inspect strings straight from the terminal
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
rfswift [flags]
|
||||||
|
rfswift [command]
|
||||||
|
|
||||||
|
Available Commands:
|
||||||
|
commit Commit a container
|
||||||
|
completion Generate the autocompletion script for the specified shell
|
||||||
|
delete Delete an rfswift images
|
||||||
|
exec Exec a command
|
||||||
|
help Help about any command
|
||||||
|
host Host configuration
|
||||||
|
images RF Swift images management remote/local
|
||||||
|
install Install function script
|
||||||
|
last Last container run
|
||||||
|
remove Remove a container
|
||||||
|
rename Rename a container
|
||||||
|
retag Rename an image
|
||||||
|
run Create and run a program
|
||||||
|
update Update RF Swift
|
||||||
|
|
||||||
|
Flags:
|
||||||
|
-h, --help help for rfswift
|
||||||
|
|
||||||
|
Use "rfswift [command] --help" for more information about a command.
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
Using Docker Desktop (Windows and macOS) or OrbStack on macOS, **`sudo` is not necessary**. In other cases, you will have to use it particularly on Linux dealing with images and containers, but not host actions.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
**On Windows**, commands related to USB binding will need to be run as an administrator.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Stay up-to-date
|
||||||
|
|
||||||
|
In case you binary is older than latest official release, you can pull the latest source from [our official GitHub repository ↗](https://github.com/PentHertz/RF-Swift/).
|
||||||
|
|
||||||
|
At launch time, the binary will check your binary against latest official release:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[!] You are running version: 0.4.8 (Obsolete)
|
||||||
|
[+] Do you want to update to the latest version? (yes/no):
|
||||||
|
```
|
||||||
|
|
||||||
|
Or you can also use the `upate` command that will download the [latest ↗](https://github.com/PentHertz/RF-Swift/tags) binary compiled for your architecture:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift update
|
||||||
|
...
|
||||||
|
|
||||||
|
[!] Your current version (0.4.8) is obsolete. Please update to version (v0.4.9).
|
||||||
|
[+] Do you want to update to the latest version? (yes/no): yes
|
||||||
|
Latest release download URL: https://github.com/PentHertz/RF-Swift/releases/download/v0.4.9/rfswift_linux_amd64
|
||||||
|
[+] Do you want to replace the existing binary with this new release? (yes/no): yes
|
||||||
|
13.67 MiB / 13.67 MiB [---------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00%%
|
||||||
|
File downloaded and replaced successfully.
|
||||||
|
```
|
||||||
|
|
||||||
|
After that, your binary should be up-to-date!
|
||||||
|
|
||||||
|
|
||||||
|
## Changing tag and running
|
||||||
|
|
||||||
|
After pulling an image, you can choose to change the tag name as you wish for conveniency, and also match the tag to the default image to run as described in the configuration in your profile directory (e.g: on Linux):
|
||||||
|
|
||||||
|
{{< tabs items="Linux,Windows,macOS X" defaultIndex="1" >}}
|
||||||
|
|
||||||
|
{{< tab >}}
|
||||||
|
```bash
|
||||||
|
cat /home/username/.config/rfswift/config.ini
|
||||||
|
[general]
|
||||||
|
imagename = myrfswift:latest
|
||||||
|
...
|
||||||
|
```
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< tab >}}
|
||||||
|
```powershell
|
||||||
|
type C:\Users\username\AppData\Roaming\rfswift\config.ini
|
||||||
|
[general]
|
||||||
|
imagename = myrfswift:latest
|
||||||
|
...
|
||||||
|
```
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< tab >}}
|
||||||
|
```bash
|
||||||
|
cat /Users/username/.config/rfswift/config.ini
|
||||||
|
[general]
|
||||||
|
imagename = myrfswift:latest
|
||||||
|
...
|
||||||
|
```
|
||||||
|
{{< /tab >}}
|
||||||
|
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
|
So if you change your the tag name of your desired image, or last image you have pulled, to the default tag name `myrfswift:latest` that way:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift retag -i penthertz/rfswiftdev:sdr_full_amd64 -t myrfswift:latest
|
||||||
|
...
|
||||||
|
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
[+] Image renamed!
|
||||||
|
```
|
||||||
|
|
||||||
|
This will simplify the `run` command and avoid you to use `-i` argument:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift run -n supertagname1 # -> same as 'rfswift run -i myrfswift:latest -n supertagname1'
|
||||||
|
...
|
||||||
|
|
||||||
|
🧊 Container Summary
|
||||||
|
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||||
|
│ Container Name │ supertagname1 │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ X Display │ :0 │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Shell │ /bin/zsh │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Privileged Mode │ true │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Network Mode │ host │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Image Name │ myrfswift:latest (Custom) │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Size on Disk │ 16635.22 MB │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Bindings │ /tmp/.X11-unix:/tmp/.X11-unix,/dev/bus/usb:/dev/bus/usb,/run/dbus/system_bus_socket:/run/dbus/system_bus_socket,/dev/snd:/dev/snd,/dev/dri:/dev/dri,/dev/input:/dev/input │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Extra Hosts │ pluto.local:192.168.2.1 │
|
||||||
|
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
[+] Container 'supertagname1' started successfully
|
||||||
|
┌─[root@topms] - [~] - [Tue Sep 03, 13:57]
|
||||||
|
└─[$]> exit
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
Note that changing tag name will also make your image custom, and you will not be able to track this image for update from official registry.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
Note that if you run a container without enabling audio with `pulseaudio` options, you will generally miss the sound on many tools, and a warning will notify you that the audio is not enabled:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ ⚠️ Warning │
|
||||||
|
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Warning: Unable to connect to Pulse server at 127.0.0.1:34567 │
|
||||||
|
│ To install Pulse server on Linux, follow these steps: │
|
||||||
|
│ 1. Update your package manager: sudo apt update (for Debian-based) or sudo yum update (for Red │
|
||||||
|
│ Hat-based). │
|
||||||
|
│ 2. Install Pulse server: sudo apt install pulse-server (for Debian-based) or sudo yum install │
|
||||||
|
│ pulse-server (for Red Hat-based). │
|
||||||
|
│ After installation, enable the module with the following command as unprivileged user: │
|
||||||
|
│ ./rfswift host audio enable │
|
||||||
|
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
To enable the audio, use the following command **without sudo** and you should see the following message:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift host audio enable
|
||||||
|
...
|
||||||
|
[+] Successfully loaded module-native-protocol-tcp with index 29
|
||||||
|
```
|
||||||
|
|
||||||
|
When running a container, you should get a different shell indicating you are using now the container.
|
||||||
|
|
||||||
|
Using the `run` command, you are creating a new container from desired images everytime:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD;
|
||||||
|
A[corebuild]-->B[Image 1];
|
||||||
|
A-->C[Docker image 2];
|
||||||
|
B-->D[Supercontainer #1 of image 1];
|
||||||
|
B-->E[Supercontainer #2 of image 1];
|
||||||
|
C-->F[Anothercontainer from image 2]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
This architecture has several benefits:
|
||||||
|
|
||||||
|
* more portability;
|
||||||
|
* possibility to have kind of "light" and isolated environment;
|
||||||
|
* you can create, mess, and destroy the environment;
|
||||||
|
* have specific environments for specific tasks;
|
||||||
|
* stop wasting time reinstalling the entire system with your tools;
|
||||||
|
* better performance than VMs that consume more CPU, memory, and disk space;
|
||||||
|
* and more such as using it as for microservices, etc.
|
||||||
|
|
||||||
|
These benefits are what you are generally what you are looking for when doing lots of assessments, particularly when you have to prepare at the last moment.
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
Using RF Swift instead of manual host, and Docker commands also makes things easy when the learning curve for Docker can be blocking for most people, and also allow to save a lot of time dealing with host resources for you.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Restarting a previous container
|
||||||
|
|
||||||
|
Of course, to avoid creating new containers with `run` command, you can use `exec` command that will automatically restart the latest container you run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift exec
|
||||||
|
...
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
[+] Container 'a9c76a227726357a9b403d703923a57ae62a024bace11c1d1df893ea6c7e9623' started successfully
|
||||||
|
🧊 Container Summary
|
||||||
|
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||||
|
│ Container Name │ supertagname1 │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ X Display │ :0 │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Shell │ /bin/zsh │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Privileged Mode │ true │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Network Mode │ host │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Image Name │ myrfswift:latest (Custom) │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Size on Disk │ 16635.22 MB │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Bindings │ /tmp/.X11-unix:/tmp/.X11-unix,/dev/bus/usb:/dev/bus/usb,/run/dbus/system_bus_socket:/run/dbus/system_bus_socket,/dev/snd:/dev/snd,/dev/dri:/dev/dri,/dev/input:/dev/input │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Extra Hosts │ pluto.local:192.168.2.1 │
|
||||||
|
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||||
|
┌─[root@topms] - [~] - [Tue Sep 03, 14:57]
|
||||||
|
└─[$]>
|
||||||
|
```
|
||||||
|
|
||||||
|
With `-c` argument precising the name, or container ID, used when creating the container you can also call other container you have previously made:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift exec -c containername3
|
||||||
|
...
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
[+] Container 'containername3' started successfully
|
||||||
|
🧊 Container Summary
|
||||||
|
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||||
|
│ Container Name │ containername3 │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ X Display │ :0 │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Shell │ /bin/zsh │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Privileged Mode │ true │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Network Mode │ host │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Image Name │ penthertz/rfswiftdev:sdr_full_amd64 (Up to date) │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Size on Disk │ 16635.22 MB │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Bindings │ /tmp/.X11-unix:/tmp/.X11-unix,/dev/bus/usb:/dev/bus/usb,/run/dbus/system_bus_socket:/run/dbus/system_bus_socket,/dev/snd:/dev/snd,/dev/dri:/dev/dri,/dev/input:/dev/input │
|
||||||
|
├─────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Extra Hosts │ pluto.local:192.168.2.1 │
|
||||||
|
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||||
|
┌─[root@topms] - [~] - [Tue Sep 03, 15:00]
|
||||||
|
└─[$]>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Starting programs
|
||||||
|
|
||||||
|
Depending on the Docker image you are using, some software can be used, like `sdrangel` after plugging an SDR device like the RTL-SDR one:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─[root@topms] - [~] - [Tue Sep 03, 15:15]
|
||||||
|
└─[$]> sdrangel
|
||||||
|
```
|
||||||
|
|
||||||
|
![[Running SDRAngel with an RTL-SDR]](/images/docs/sdrangel.png)
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
`xhost` on Linux, or `XQuartz` on macOS (well configured), should be installed on the computer to handle graphic elements.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
Of course, other software are installed among images, so you can discover the lists in the next pages.
|
||||||
|
|
||||||
|
## Retrieving last containers name
|
||||||
|
|
||||||
|
If you do not remember how you have named your container, it is not a problem as you can recover the details with the command `last`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift last
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
🤖 Last Run Containers
|
||||||
|
┌───────────────────────────┬─────────────────────────────────────┬────────────────┬──────────────┬──────────┐
|
||||||
|
│ Created │ Image Tag │ Container Name │ Container ID │ Command │
|
||||||
|
├───────────────────────────┼─────────────────────────────────────┼────────────────┼──────────────┼──────────┤
|
||||||
|
│ 2024-09-04T12:51:15+02:00 │ penthertz/rfswift:telecom │ supertelecom │ e1a8c7c5f419 │ /bin/zsh │
|
||||||
|
├───────────────────────────┼─────────────────────────────────────┼────────────────┼──────────────┼──────────┤
|
||||||
|
│ 2024-09-04T12:47:11+02:00 │ penthertz/rfswift:reversing │ superreverse │ 70b9269b2819 │ /bin/zsh │
|
||||||
|
├───────────────────────────┼─────────────────────────────────────┼────────────────┼──────────────┼──────────┤
|
||||||
|
│ 2024-09-04T12:38:09+02:00 │ penthertz/rfswift:automotive │ superauto │ 9063f86f9cf7 │ /bin/zsh │
|
||||||
|
├───────────────────────────┼─────────────────────────────────────┼────────────────┼──────────────┼──────────┤
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Saving changes
|
||||||
|
|
||||||
|
At any time, you can also save changes you are making inside a container to an image.
|
||||||
|
|
||||||
|
For that, you can issue the `commit` command from RF Swift as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift commit -c supertelecom -i supernewimage
|
||||||
|
...
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
sha256:3e287dbff4ea78ae782f19f50db6e7645ef45294c8990f2a5d595936c1f9d47b
|
||||||
|
```
|
||||||
|
|
||||||
|
## Renaming a container
|
||||||
|
|
||||||
|
If the name of the container does not suit you anymore, you can also rename it with the `rename` command as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift rename -n oldcontainername -d newcontainername
|
||||||
|
...
|
||||||
|
[+] You are running version: 0.4.9 (Up to date)
|
||||||
|
[+] Container 'supertelecom2' renamed to 'newnametelecom'!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deleting a container
|
||||||
|
|
||||||
|
If you want to remove a container, and save space once for a while, you can issue the `remove` command precing the name or ID of the container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift remove -c newnametelecom
|
||||||
|
...
|
||||||
|
[+] Container 'newnametelecom' removed successfully
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deleting an image
|
||||||
|
|
||||||
|
If deleting the container is not enough and need to also remove the image, you can use `delete` command with image tag as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift detele -c penthertz/rfswift:<tagname>
|
||||||
|
```
|
|
@ -0,0 +1,137 @@
|
||||||
|
---
|
||||||
|
title: Sharing files
|
||||||
|
weight: 6
|
||||||
|
prev: /docs/guide/host-actions/
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
When using RF Swift for your assesment, you would like to retrieve the reports, logs, capture, or any file resulting the mission.
|
||||||
|
|
||||||
|
Let see with two examples how we can to it.
|
||||||
|
|
||||||
|
## Binding directories
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
Sharing file between host and guest is possible throught the binding `-b` parameter when using `run` command.
|
||||||
|
|
||||||
|
First, create a directory you want to share with the guest on your host:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir shared
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Then you can simply use bindings when issuing the `run` command as follows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift run -i penthertz/rfswift:telecom -n supertelecom2 -b /home/user/shared:/root/shared
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
Remember to always begin with host, and then guest like that: hostpath:guestpath. And separate each binding with commas.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
The container summary will display you the bindings that are used:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
|
🧊 Container Summary
|
||||||
|
╭────────────────────────────────────────────────────────────────────────────╮
|
||||||
|
│ Container Name │ supertelecom2 │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ X Display │ :0 │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Shell │ /bin/zsh │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Privileged Mode │ true │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Network Mode │ host │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Image Name │ penthertz/rfswift:telecom (Obsolete) │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Size on Disk │ 11150.42 MB │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Bindings │ /tmp/.X11-unix:/tmp/.X11-unix,/dev/bus/usb:/dev/bus/usb, │
|
||||||
|
│ │ │
|
||||||
|
│ │ /home/user/shared:/root/shared │
|
||||||
|
├─────────────────┼──────────────────────────────────────────────────────────┤
|
||||||
|
│ Extra Hosts │ pluto.local:192.168.2.1 │
|
||||||
|
╰────────────────────────────────────────────────────────────────────────────╯
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
Some default profile bindings have been probably disabled. You can re-enable then with `-b` parameter of `run` command.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
Running the command `ls` inside the container, you will see that a directory is present:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─[root@topms] - [~] - [Wed Sep 04, 13:46]
|
||||||
|
└─[$]> ls
|
||||||
|
config scripts shared
|
||||||
|
```
|
||||||
|
|
||||||
|
Let us go inside this `shared` directory and put a file inside:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
┌─[root@topms] - [~] - [Wed Sep 04, 13:48]
|
||||||
|
└─[$]> cd shared
|
||||||
|
┌─[root@topms] - [~/shared] - [Wed Sep 04, 13:49]
|
||||||
|
└─[$]> touch superfile
|
||||||
|
```
|
||||||
|
|
||||||
|
If you look on your host, the file will be present.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Example with Harogic devices
|
||||||
|
|
||||||
|
### Sharing calibration data
|
||||||
|
|
||||||
|
Along with a Spectrum Analyzer and other stuff, Harogic provides a USB key where you can find a `CalFile` directory:
|
||||||
|
|
||||||
|
![[Content of USB Harogic USB key]](/images/docs/harogicusb.png)
|
||||||
|
|
||||||
|
To avoid any problem, let us copy this directory to the host side:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cp -R /media/fluxius/37B6-82D6/CalFile .
|
||||||
|
$ ls
|
||||||
|
build-windows.bat CalFile go images install.sh LICENSE README.md rfswift rules run shared
|
||||||
|
```
|
||||||
|
|
||||||
|
And share it with a container based on `sdr_light` images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift run -i penthertz/rfswift:sdr_light -n harogictest -b <host/path/of/CalFile>:/rftools/analysers/SAStudio4_x86_64_05_23_17_06/bin/CalFile
|
||||||
|
```
|
||||||
|
|
||||||
|
Then you can run `sastudio` inside the container, and you get your Harogic device running:
|
||||||
|
|
||||||
|
![[Harogic device running with SaStudio]](/images/docs/harogicsas.png)
|
||||||
|
|
||||||
|
|
||||||
|
### Running SDR++ with Harogic
|
||||||
|
|
||||||
|
To run `SDR++` with Harogic devices, you will need only to copy the CalFile in `/rftools/analysers/SAStudio4_x86_64_05_23_17_06/bin/CalFile` inside your container to `/usr/bin` that way:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp -R /rftools/analysers/SAStudio4_x86_64_05_23_17_06/bin/CalFile /usr/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
And then you can start SDR++ with Harogic, and voilà!
|
||||||
|
|
||||||
|
|
||||||
|
![[Content of USB Harogic USB key]](/images/docs/harogicsdrpp.png)
|
||||||
|
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Dive right into the following section to get started:
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="/docs/development/building-images/" title="Beak your own image" icon="beaker" subtitle="Be a master chef, and create your own images." >}}
|
||||||
|
{{< /cards >}}
|
|
@ -0,0 +1,7 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64, riscv64, Installation function
|
||||||
|
Can-utils,candump | canplayer | cansend | cangen | cansequence | cansniffer | canlogserver | bcmserver | socketcand | cannelloni | cangw | canbusload | can-calc-bit-timing | canfdtest | etc. (see: https://github.com/linux-can/can-utils),✅ ,✅,❌,canutils_soft_install
|
||||||
|
Cantact tools,cantact,✅ ,✅ ,✅,cantact_soft_install
|
||||||
|
caringcaribou,caringcaribou,✅ ,✅,✅ ,caringcaribou_soft_install
|
||||||
|
savvycan,SavvyCAN,✅ ,✅ ,✅,savvycan_soft_install
|
||||||
|
gallia,gallia,✅ ,✅ ,✅,gallia_soft_install
|
||||||
|
V2G Injector,/automotive/V2GInjector/,✅ ,✅ ,✅, v2ginjector_soft_install
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64,riscv64, Installation function
|
||||||
|
bettercap,bettercap,✅ ,✅ ,✅, bettercap_soft_install
|
||||||
|
hcitools,hciattach | hciconfig | hcidump | hcitool,✅ ,✅ ,✅, blueztools_soft_install
|
||||||
|
bluez tools,,✅ ,✅ ,✅, blueztools_soft_install
|
||||||
|
mirage,mirage,✅ ,✅ ,✅, mirage_soft_install
|
||||||
|
Sniffle with OpenDroneID encoder/decoder,/rftools/bluetooth/Sniffle/,✅ ,✅ ,✅, sniffle_soft_install
|
||||||
|
Kismet,kismet,✅ ,✅ ,✅, kismet_soft_install
|
||||||
|
bluing,/rftools/bluetooth/bluing/bluing/bin/,✅ ,✅ ,✅,bluing_soft_install
|
||||||
|
bdaddr,/rftools/bluetooth/bdaddr/bdaddr,✅ ,✅ ,✅ , bdaddr_soft_install
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64,riscv64,Installation function
|
||||||
|
kataistruct,kaitai-struct-compiler,✅ ,✅,❓,kataistruct_soft_install
|
||||||
|
unicorn,,✅ ,✅ ,❓,unicorn_soft_install
|
||||||
|
keystone,keytool,✅ ,✅,❓ ,keystone_soft_install
|
||||||
|
radare2,radare2 | radiff2,✅ ,✅ ,❓,radare2_soft_install
|
||||||
|
ghidra,ghidraRun,✅ ,✅ ,❓,ghidra_soft_install
|
||||||
|
binwalk,binwalk,✅ ,✅ ,❓ ,binwalk_soft_install
|
||||||
|
cutter,,❌,❌,❌,cutter_soft_install
|
||||||
|
LLVM tools,,✅ ,✅ ,❓,LLVM_install
|
||||||
|
AFL++,afl-*,✅ ,✅ ,❓,AFL_install
|
||||||
|
HongFuzz,honggfuzz,✅ ,✅ ,❓,honggfuzz_install
|
||||||
|
SemGrep,semgrep,✅ ,✅ ,❓,semgrep_install
|
||||||
|
C++ check,cppcheck*,✅ ,✅ ,❓,cppcheck_install
|
||||||
|
Clang static analyzer,,✅ ,✅ ,❓,clang_static_analyzer_install
|
||||||
|
Qiling,,❓ ,❓ ,❓,qiling_soft_install
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64, riscv64, Installation function
|
||||||
|
proxmark3,/rftools/rfid/proxmark3/,✅ ,✅,✅,proxmark3_soft_install
|
||||||
|
libnfc and tools,nfc-barcode | nfc-list | nfc-read-forum-tag3 | nfc-emulate-forum-tag4 | nfc-mfclassic | nfc-relay-picc | nfc-jewel | nfc-mfultralight | nfc-scan-device,✅ ,✅ ,✅,libnfc_soft_install
|
||||||
|
mfoc,mfoc,✅ ,✅ ,✅,mfoc_soft_install
|
||||||
|
mfcuk,mfcuk,✅ ,✅ ,✅,mfcuk_soft_install
|
||||||
|
mfread,/rftools/rfid/mfdread/mfdread.py,✅ ,✅ ,✅ ,mfread_soft_install
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
Tool(s), Available commands, amd64 ,aarch64, riscv64, Installation function
|
||||||
|
Nvidia OpenCL (to enable),,✅ (not activated) ,❌,❌, In the docker file
|
||||||
|
Intel OpenCL (to enable),,✅ (not activated) ,❌,❌, In the docker file
|
||||||
|
CyberEther,cyberether,✅ ,✅ ,✅ , cyberther_soft_install
|
||||||
|
SDR Angel, sdrangel,✅ ,✅ ,✅ , sdrangel_soft_fromsource_install
|
||||||
|
QSSTV,qsstv,✅ ,✅ ,✅ , qsstv_soft_install
|
||||||
|
Sigdigger, SigDigger,✅ ,✅ (but slow),✅ (but slow) , sigdigger_soft_install
|
||||||
|
ice_bluetooth, ice9-bluetooth,✅ ,❌,❌, ice9_bluetooth_soft_install
|
||||||
|
Meshtastic SDR, /rftools/sdr/meshtastic_sdr/,✅ ,✅ ,✅ , meshtastic_sdr_soft_install
|
||||||
|
gps_sdr_sim, /rftools/sdr/gps-sdr-sim/,✅ ,✅ ,✅, gps_sdr_sim_soft_install
|
||||||
|
nfc laboratory,nfc-lab,✅ ,✅ ,✅, nfclaboratory_soft_install
|
||||||
|
Scikit-learn,,✅ ,✅ ,✅ , ml_and_dl_soft_install
|
||||||
|
pandas,,✅ ,✅ ,✅ ,ml_and_dl_soft_install
|
||||||
|
seaborn,,✅ ,✅ ,✅ ,ml_and_dl_soft_install
|
||||||
|
Tensorflow,,✅ ,✅ ,✅ ,ml_and_dl_soft_install
|
||||||
|
Gpredict,,✅ ,✅ ,✅ ,ml_and_dl_soft_install
|
||||||
|
v2verifier,/rftools/sdr/v2verifier/,✅ ,✅,✅ , v2verifier_sdr_soft_install
|
||||||
|
wavingz,/rftools/sdr/waving-z/build/,✅ ,✅ ,✅ ,wavingz_sdr_soft_install
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
Tool(s),amd64 ,aarch64, riscv64
|
||||||
|
OOT – gr-gsm,✅ ,✅ ,✅
|
||||||
|
OOT – gr_lora,✅ ,✅ ,✅
|
||||||
|
OOT – gr_lorasdr,✅ ,✅ ,✅
|
||||||
|
OOT – gr_iridium,✅ ,✅ ,✅
|
||||||
|
OOT – gr_inspector,✅ ,✅ ,✅
|
||||||
|
OOT – gr_uaslink,✅ ,✅ ,✅
|
||||||
|
OOT – gr_X10,✅ ,✅ ,✅
|
||||||
|
OOT – gr_gfdm,✅ ,✅ ,✅
|
||||||
|
OOT – gr_aaoronia_rtsa,✅ ,✅ ,✅
|
||||||
|
OOT – gr_ccsds,❌,❌,❌
|
||||||
|
OOT – gr_ais,✅ ,✅ ,✅
|
||||||
|
OOT – gr_dvbs2,✅ ,✅ ,✅
|
||||||
|
OOT – gr_tempest,✅ ,✅ ,✅
|
||||||
|
OOT – gr_dab,✅ ,✅ ,✅
|
||||||
|
OOT – gr_dect2,✅ ,✅ ,✅
|
||||||
|
OOT – gr_foo,✅ ,✅ ,✅
|
||||||
|
OOT – gr_ieee802-11,✅ ,✅ ,✅
|
||||||
|
OOT – gr_ieee802154,✅ ,✅ ,✅
|
||||||
|
OOT – gr_rds,✅ ,✅ ,✅
|
||||||
|
OOT – gr_droneid,✅ ,✅ ,✅
|
||||||
|
OOT – gr_satellites,✅ ,✅ ,✅
|
||||||
|
OOT – gr_adsb,✅ ,✅ ,✅
|
||||||
|
OOT – gr_keyfob,✅ ,✅ ,✅
|
||||||
|
OOT – gr_radar,✅ ,✅ ,✅
|
||||||
|
OOT – gr_nordic,✅ ,✅ ,✅
|
||||||
|
OOT – gr_paint,✅ ,✅ ,✅
|
||||||
|
OOT – gr_pdu_utils,✅ ,✅ ,✅
|
||||||
|
OOT – gr_sandia_utils,✅ ,✅ ,✅
|
||||||
|
OOT – gr_timing_utils,✅ ,✅ ,✅
|
||||||
|
OOT – gr_fhss,✅ ,✅ ,✅
|
||||||
|
OOT – gr-aistx,✅ ,✅ ,✅
|
||||||
|
OOT – gr-zwave_poore,✅ ,✅ ,✅
|
||||||
|
OOT – gr-mixalot,✅ ,✅ ,✅
|
||||||
|
OOT – gr_DCF77_Receiver,✅ ,✅ ,✅
|
||||||
|
OOT – gr-j2497,✅ ,✅ ,✅
|
||||||
|
OOT – gr-airmodes,✅ ,✅ ,✅
|
||||||
|
OOT – gr-bb60_Receiver,✅ ,❌ ,❌
|
||||||
|
OOT – gr_fosphor,✅ ,❓,❓
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64, riscv64, Installation function
|
||||||
|
GNU Radio,gnuradio-companion | gnuradio-config-info | grcc,✅ ,✅ ,✅, gnuradio_soft_install
|
||||||
|
Common GNU Radio blocks,,✅ ,✅ ,✅ , common_sources_and_sinks
|
||||||
|
Soapy blocks and modules,,✅ ,✅ ,✅ , install_soapy_modules
|
||||||
|
SDR++,sdrpp,✅ ,✅ ,✅ , sdrpp_soft_fromsource_install
|
||||||
|
retrogram,/rftools/sdr/retrogram-soapysdr/retrogram-soapysdr,✅ ,✅ ,✅, retrogram_soapysdr_soft_install
|
||||||
|
kc908 SA GNU Radio blocks,,✅ ,✅ ,✅ ,kc908_sa_device
|
||||||
|
LeoBodnar GPSDO v1 CLI,/rftools/calibration/lbgpsdo/lbgpsdo.py,✅ ,✅ ,✅ , leobodnarv1_cal_device
|
||||||
|
GQRX,gqrx,✅ ,✅ ,✅, gqrx_soft_install
|
||||||
|
URH,urh | urh_cli,✅ ,✅ ,✅ , urh_soft_install
|
||||||
|
inspectrum,inspectrum,✅ ,✅ ,✅, inspectrum_soft_install
|
||||||
|
NanoVNASaver,NanoVNASaver,✅ ,❌ (fix needed installing PyQT6),❓, NanoVNASaver_cal_device_call
|
||||||
|
NanoVNA-QT,/rftools/calibration/NanoVNA-QT/run,✅ ,✅ ,✅ , NanoVNA_QT_cal_device
|
||||||
|
KCSDI,/rftools/calibration/Deepace/KCSDI-v0.4.5-45-linux-x86_64.AppImage,✅ ,❌,✅ , KCSDI_cal_device
|
||||||
|
rtl_433, rtl_433,✅ ,✅ ,✅, rtl_433_soft_install
|
||||||
|
Jupyter lab + notebook, jupiter,✅ ,✅ ,✅, jupyter_soft_install
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64,riscv64,Installation function
|
||||||
|
yatebts,yate | yate-config | yate-qt5,✅ ,✅,✅,yatebts_blade2_soft_install
|
||||||
|
OpenBTS,/telecom/2G/OpenBTS/,✅ ,❌ (need tests with other compiler),❌,openbts_uhd_soft_install
|
||||||
|
OpenBTS UMTS,/telecom/3G/OpenBTS-UMTS/,✅ ,❌ (need to fix ASN part),❌,openbts_umts_soft_install
|
||||||
|
"srsRAN 4G, 5G NSA",/telecom/4G/srsRAN_4G/,✅ ,✅ ,✅ ,srsran4G_5GNSA_soft_install
|
||||||
|
srsRAN 5G SA,/telecom/5G/srsRAN_Project/,✅ ,✅ ,✅,srsran5GSA_soft_install
|
||||||
|
pycrate,/telecom/pycrate/,✅ ,✅ ,✅,pycrate_soft_install
|
||||||
|
Open5GS,/telecom/5G/open5gs/,✅ ,✅ ,✅ ,Open5GS_soft_install
|
||||||
|
OsmoBTS suite (including OsmoPCU + OsmoSGSN and others),osmo* tools with configs in /telecom/2G/osmocom/,✅ ,✅ ,✅,osmobts_suite_soft_install
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64,riscv64,Installation function
|
||||||
|
iproute2,,✅ ,✅,✅, common_nettools
|
||||||
|
macchanger,macchanger,✅ ,✅ ,✅, common_nettools
|
||||||
|
tshart,tshark,✅ ,✅ ,✅, common_nettools
|
||||||
|
aircrack-ng,airbase-ng | aircrack-ng | airdecap-ng | airdecloak-ng | aireplay-ng | airmon-ng | airodump-ng | airodump-ng-oui-update | airolib-ng | easside-ng | etc.,✅ ,✅ ,✅, aircrack_soft_install
|
||||||
|
reaver,reaver,✅ ,✅ ,✅, reaver_soft_install
|
||||||
|
bully,bully,✅ ,✅ ,✅ ,bully_soft_install
|
||||||
|
pixiewps,pixiewps,✅ ,✅ ,✅ , pixiewps_soft_install
|
||||||
|
Pyrit,,✅ ,❓,❓, Pyrit_soft_install
|
||||||
|
eaphammer,/rftools/wifi/airgeddon/eaphammer,✅ ,✅ ,✅ , eaphammer_soft_install
|
||||||
|
airgeddon,/rftools/wifi/airgeddon/,✅ ,✅,✅ ,airgeddon_soft_install
|
||||||
|
wifite2,/rftools/wifi/wifite2/,✅ ,✅ ,✅ , wifite2_soft_install
|
||||||
|
Kismet,kismet*,✅ ,✅,✅ ,kismet_soft_install
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
Tool(s),Available commands,amd64 ,aarch64,riscv64,Installation function
|
||||||
|
UHD tools and libs (need to enable/disable options),uhd_adc_self_cal | uhd_fft | uhd_rx_cfile | uhd_cal_rx_iq_balance | uhd_find_devices | uhd_rx_nogui | uhd_cal_tx_dc_offset | uhd_image_loader | uhd_siggen | uhd_cal_tx_iq_balance | uhd_images_downloader | uhd_siggen_gui | uhd_config_info | uhd_modes.py | uhd_usrp_probe,✅ ,✅,✅, uhd_devices_install
|
||||||
|
RTL-tools and libs (need to enable/disable options), rtl_biast | rtl_fm | rtl_sdr | rtl_test | rtl_adsb | rtl_eeprom | rtl_power | rtl_tcp,✅ ,✅ ,✅, rtlsdr_devices_install
|
||||||
|
libiio and libad9361,iio_adi_xflow_check | iio_attr | iio_genxml | iio_info | iio_readdev |iio_reg | iio_stresstest | iio_writedev,✅ ,✅,✅,ad_devices_install
|
||||||
|
Nuand tools and lib,bladeRF-cli | bladeRF-fsk,✅ ,✅ ,✅,nuand_devices_install
|
||||||
|
HackRF tools and lib,hackrf_clock | hackrf_debug | hackrf_operacake | hackrf_sweep | hackrf_cpldjtag | hackrf_info | hackrf_spiflash | hackrf_transfer,✅ ,✅ ,✅,hackrf_devices_install
|
||||||
|
Airspry tools and lib,airspy_gpio | airspy_rx | airspyhf_info | airspy_gpiodir | airspy_si5351c | airspyhf_lib_version | airspy_info | airspy_spiflash | airspyhf_rx | airspy_lib_version | airspyhf_calibrate | airspy_r820t | airspyhf_gpio,✅ ,✅ ,✅,airspy_devices_install
|
||||||
|
LimeSDR tools and lib,LimeQuickTest | LimeSuiteGUI | LimeUtil,✅ ,✅ ,✅,limesdr_devices_install
|
||||||
|
Funcube tools and lib,,✅ ,✅ ,✅,funcube_devices_install
|
||||||
|
XTRX tools and lib,xtrx_fft,✅ ,✅ ,✅,xtrx_devices_install
|
||||||
|
OsmoFL2K tools and lib,fl2k_file | fl2k_tcp | fl2k_fm | fl2k_test,✅ ,✅ ,✅ ,osmofl2k_devices_install
|
||||||
|
SignalHound,Spike,✅ ,❌ ,❌ ,signalhound_sa_device
|
||||||
|
Harogic Devices,sastudio,✅ ,✅ ,❌ ,harogic_sa_device
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
---
|
||||||
|
title: 🚀 Quick Start
|
||||||
|
weight: 2
|
||||||
|
next: /docs/guide
|
||||||
|
prev: /docs/getting-started
|
||||||
|
cascade:
|
||||||
|
type: docs
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
**On Linux**, unless your are using Docker Desktop, you will have to use `rfswift` with sudo most of the time.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
To install RF Swift, you have to choice using the pre-compiled binary wrapper depending on your system and pull an existing container image, or to compile the Go project and/or the Docker images from sources.
|
||||||
|
|
||||||
|
In this section, we will go straight forward to the quickest way to run the project.
|
||||||
|
|
||||||
|
|
||||||
|
{{% steps %}}
|
||||||
|
|
||||||
|
### Get binary from GitHub
|
||||||
|
|
||||||
|
Get the latest binary from [the official repository ↗](https://github.com/PentHertz/RF-Swift/tags).
|
||||||
|
|
||||||
|
Rename the binary to `rfswift` to make things simplier.
|
||||||
|
|
||||||
|
If you run the binary without config, the tool will ask you if you want to create one or use values by default:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift
|
||||||
|
Config file not found. Would you like to create one with default values? (y/n)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pulling a built image
|
||||||
|
|
||||||
|
RF Swift have already some prebuilt images you can fire on the go.
|
||||||
|
|
||||||
|
For the example, we will pull an image containing a complete SDR images `penthertz/rfswift:sdr_full` on an `x86_64` architecture:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rfswift images pull -i penthertz/sdr_light [-t myrfswift:label]
|
||||||
|
```
|
||||||
|
**Important options**:
|
||||||
|
- i: remote label
|
||||||
|
- t: optional local tag we want to use.
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
Using Docker Desktop (Windows and macOS) or OrbStack on macOS, `sudo` is not necessary.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
### Running the container
|
||||||
|
|
||||||
|
After downloading the image, you can create and run the container by precising the `tag with -i` assigned to the image and the `name with -n` of the container:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
rfswift run -i penthertz/rfswift:sdr_light -n supercontainername
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
The name of the container will allow to restart it without having to remember its ID.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
And there you can execute all programs installed on it ;)!
|
||||||
|
|
||||||
|
As an example, plug an supported SDR devices in your computer, and inside the command shell `sdrpp`.
|
||||||
|
|
||||||
|
{{< callout type="warning" >}}
|
||||||
|
The sound could be maybe missing, we will see other options the `rfswift`, but if you follow the warnings you will probably see that `./rfswift host audio enable` will solve the issues if `pulseaudio` is well running on your host.
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
{{% /steps %}}
|
||||||
|
|
||||||
|
## Restarting a container
|
||||||
|
|
||||||
|
You can create as many fresh container you want, but sometimes you want to get back to previous job.
|
||||||
|
|
||||||
|
To restart a container, you can do it with the following command using `-c nameofthecontainer`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
rfswift exec -c supercontainername
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< callout type="info" >}}
|
||||||
|
On Unix-Like systems, consider using an alias, if you want to start the binary from any location with `rfswift` command ;)
|
||||||
|
```basg
|
||||||
|
echo "alias rfswift='<BINARY_PATH>/rfswift'" >> "$HOME/.<shell>rc" # example /home/user/.bashrc
|
||||||
|
```
|
||||||
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Dive right into the following section to get started:
|
||||||
|
|
||||||
|
{{< cards >}}
|
||||||
|
{{< card link="/docs/guide" title="Follow the guide" icon="document-text" subtitle="Read the guide and learn how to use RF Swift for your dealy assessments." >}}
|
||||||
|
{{< /cards >}}
|
|
@ -0,0 +1,5 @@
|
||||||
|
module github.com/PentHertz/RF-Swif-doc-v2.git
|
||||||
|
|
||||||
|
go 1.22.6
|
||||||
|
|
||||||
|
require github.com/imfing/hextra v0.8.2 // indirect
|
|
@ -0,0 +1,2 @@
|
||||||
|
github.com/imfing/hextra v0.8.2 h1:/IykSIAywgKfhKUBgAW+dCCjrJWJNny4jr9qvdXfch0=
|
||||||
|
github.com/imfing/hextra v0.8.2/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
|
|
@ -0,0 +1,88 @@
|
||||||
|
baseURL: https://rfswift.io/
|
||||||
|
title: "RF Swift"
|
||||||
|
|
||||||
|
module:
|
||||||
|
imports:
|
||||||
|
- path: github.com/imfing/hextra
|
||||||
|
|
||||||
|
menu:
|
||||||
|
main:
|
||||||
|
- identifier: documentation
|
||||||
|
name: Documentation
|
||||||
|
pageRef: /docs
|
||||||
|
weight: 1
|
||||||
|
- identifier: search
|
||||||
|
name: Search
|
||||||
|
weight: 4
|
||||||
|
params:
|
||||||
|
type: search
|
||||||
|
- name: GitHub
|
||||||
|
weight: 5
|
||||||
|
url: "https://github.com/PentHertz/RF-Swift"
|
||||||
|
params:
|
||||||
|
icon: github
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
home: [HTML]
|
||||||
|
page: [HTML]
|
||||||
|
section: [HTML, RSS]
|
||||||
|
|
||||||
|
params:
|
||||||
|
theme:
|
||||||
|
# light | dark | system
|
||||||
|
default: system
|
||||||
|
displayToggle: true
|
||||||
|
|
||||||
|
params:
|
||||||
|
page:
|
||||||
|
# full (100%), wide (90rem), normal (1280px)
|
||||||
|
width: wide
|
||||||
|
navbar:
|
||||||
|
displayTitle: true
|
||||||
|
displayLogo: true
|
||||||
|
logo:
|
||||||
|
path: images/logo.svg
|
||||||
|
dark: images/logo.svg
|
||||||
|
link: /
|
||||||
|
width: 40
|
||||||
|
height: 20
|
||||||
|
|
||||||
|
defaultContentLanguage: en
|
||||||
|
languages:
|
||||||
|
en:
|
||||||
|
languageName: English
|
||||||
|
weight: 1
|
||||||
|
title: RF Swift
|
||||||
|
languageCode: en
|
||||||
|
|
||||||
|
highlight:
|
||||||
|
copy:
|
||||||
|
enable: true
|
||||||
|
# hover | always
|
||||||
|
display: hover
|
||||||
|
|
||||||
|
markup:
|
||||||
|
goldmark:
|
||||||
|
renderer:
|
||||||
|
unsafe: true
|
||||||
|
highlight:
|
||||||
|
noClasses: false
|
||||||
|
|
||||||
|
footer:
|
||||||
|
enable: true
|
||||||
|
displayCopyright: true
|
||||||
|
displayPoweredBy: true
|
||||||
|
width: normal
|
||||||
|
|
||||||
|
blog:
|
||||||
|
list:
|
||||||
|
displayTags: true
|
||||||
|
# date | lastmod | publishDate | title | weight
|
||||||
|
sortBy: date
|
||||||
|
sortOrder: desc # or "asc"
|
||||||
|
|
||||||
|
highlight:
|
||||||
|
copy:
|
||||||
|
enable: true
|
||||||
|
# hover | always
|
||||||
|
display: hover
|
|
@ -0,0 +1 @@
|
||||||
|
copyright: "© 2024 RF Swift"
|
|
@ -0,0 +1,3 @@
|
||||||
|
copyright: "© 2024 RF Swift"
|
||||||
|
documentation: "Documentation"
|
||||||
|
search: "Rechercher"
|
|
@ -0,0 +1,3 @@
|
||||||
|
copyright: "© 2024 RF Swift"
|
||||||
|
documentation: "Dokumentacja"
|
||||||
|
search: "Szukaj"
|
|
@ -0,0 +1,6 @@
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/quicklink/2.3.0/quicklink.umd.min.js"></script>
|
||||||
|
<script>
|
||||||
|
window.addEventListener("load", () => {
|
||||||
|
quicklink.listen();
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,46 @@
|
||||||
|
{{- $enableFooterSwitches := .Scratch.Get "enableFooterSwitches" | default false -}}
|
||||||
|
{{- $displayThemeToggle := site.Params.theme.displayToggle | default true -}}
|
||||||
|
|
||||||
|
{{- $copyright := (T "copyright") | default "© 2024 Hextra." -}}
|
||||||
|
{{- $poweredBy := (T "poweredBy") | default "Powered by Hextra" -}}
|
||||||
|
|
||||||
|
{{- $footerWidth := "hx-max-w-screen-xl" -}}
|
||||||
|
{{- with .Site.Params.footer.width -}}
|
||||||
|
{{ if eq . "wide" -}}
|
||||||
|
{{ $footerWidth = "hx-max-w-[90rem]" -}}
|
||||||
|
{{ else if eq . "full" -}}
|
||||||
|
{{ $footerWidth = "max-w-full" -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="hextra-footer hx-bg-gray-100 hx-pb-[env(safe-area-inset-bottom)] dark:hx-bg-neutral-900 print:hx-bg-transparent">
|
||||||
|
{{- if $enableFooterSwitches -}}
|
||||||
|
<div class="hx-mx-auto hx-flex hx-gap-2 hx-py-2 hx-px-4 {{ $footerWidth }}">
|
||||||
|
{{- partial "language-switch.html" (dict "context" .) -}}
|
||||||
|
{{- with $displayThemeToggle }}{{ partial "theme-toggle.html" }}{{ end -}}
|
||||||
|
</div>
|
||||||
|
{{- if or hugo.IsMultilingual $displayThemeToggle -}}
|
||||||
|
<hr class="dark:hx-border-neutral-800" />
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
<div
|
||||||
|
class="{{ $footerWidth }} hx-mx-auto hx-flex hx-justify-center hx-py-12 hx-pl-[max(env(safe-area-inset-left),1.5rem)] hx-pr-[max(env(safe-area-inset-right),1.5rem)] hx-text-gray-600 dark:hx-text-gray-400 md:hx-justify-start"
|
||||||
|
>
|
||||||
|
<div class="hx-flex hx-w-full hx-flex-col hx-items-center sm:hx-items-start">
|
||||||
|
{{- if (.Site.Params.footer.displayPoweredBy | default true) }}<div class="hx-font-semibold">{{ template "theme-credit" $poweredBy }}</div>{{ end }}
|
||||||
|
{{- if .Site.Params.footer.displayCopyright }}<div class="hx-mt-6 hx-text-xs">{{ $copyright | markdownify }}</div>{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
{{- define "theme-credit" -}}
|
||||||
|
<a class="hx-flex hx-text-sm hx-items-center hx-gap-1 hx-text-current" target="_blank" rel="noopener noreferrer" title="Hextra GitHub Homepage" href="https://github.com/imfing/hextra">
|
||||||
|
<span>
|
||||||
|
{{- . | markdownify -}}
|
||||||
|
{{- if strings.Contains . "Hextra" -}}
|
||||||
|
{{- partial "utils/icon.html" (dict "name" "hextra" "attributes" `height=1em class="hx-inline-block ltr:hx-ml-1 rtl:hx-mr-1 hx-align-[-2.5px]"`) -}}
|
||||||
|
{{- end -}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{{ $csvFile := .Get 0 }}
|
||||||
|
{{ $delimiter := .Get 1 | default "," }}
|
||||||
|
{{ $hasHeader := .Get 2 | default "true" }}
|
||||||
|
|
||||||
|
{{ $csvContent := readFile $csvFile | transform.Unmarshal (dict "delimiter" $delimiter) }}
|
||||||
|
|
||||||
|
{{ if not $csvContent }}
|
||||||
|
<p>Error: No data to transform or CSV file is empty.</p>
|
||||||
|
{{ else }}
|
||||||
|
<table>
|
||||||
|
{{ if eq $hasHeader "true" }}
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
{{ range index $csvContent 0 }}
|
||||||
|
<th>{{ . }}</th>
|
||||||
|
{{ end }}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{ range after 1 $csvContent }}
|
||||||
|
<tr>
|
||||||
|
{{ range . }}
|
||||||
|
<td>{{ . }}</td>
|
||||||
|
{{ end }}
|
||||||
|
</tr>
|
||||||
|
{{ end }}
|
||||||
|
</tbody>
|
||||||
|
{{ else }}
|
||||||
|
<tbody>
|
||||||
|
{{ range $csvContent }}
|
||||||
|
<tr>
|
||||||
|
{{ range . }}
|
||||||
|
<td>{{ . }}</td>
|
||||||
|
{{ end }}
|
||||||
|
</tr>
|
||||||
|
{{ end }}
|
||||||
|
</tbody>
|
||||||
|
{{ end }}
|
||||||
|
</table>
|
||||||
|
{{ end }}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<div class='hx-mx-auto hx-flex {{ partial "utils/page-width" . }}'>
|
||||||
|
{{ partial "sidebar.html" (dict "context" . "disableSidebar" true) }}
|
||||||
|
<div class="hx-w-full hx-break-words hx-min-h-[calc(100vh-var(--navbar-height))] hx-min-w-0 hx-pb-8 hx-pt-8 md:hx-pt-12 hx-pl-[max(env(safe-area-inset-left),1.5rem)] hx-pr-[max(env(safe-area-inset-left),1.5rem)]">
|
||||||
|
<div class="hx-flex hx-flex-col hx-items-start">
|
||||||
|
{{ .Content }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{{- $link := .Get "link" -}}
|
||||||
|
{{- $external := hasPrefix $link "http" -}}
|
||||||
|
{{- $href := cond (hasPrefix $link "/") ($link | relURL) $link -}}
|
||||||
|
{{- $class := .Get "class" }}
|
||||||
|
{{- $style := .Get "style" -}}
|
||||||
|
|
||||||
|
|
||||||
|
<a
|
||||||
|
{{ if $link }}href="{{ $href }}"{{ end }}
|
||||||
|
class="{{ $class }} not-prose hx-inline-flex hx-items-center hx-rounded-full hx-gap-2 hx-px-3 hx-py-1 hx-text-xs hx-text-gray-600 dark:hx-text-gray-400 hx-bg-gray-100 dark:hx-bg-neutral-800 dark:hx-border-neutral-800 hx-border hover:hx-border-gray-400 dark:hover:hx-text-gray-50 dark:hover:hx-border-gray-600 hx-transition-all hx-ease-in hx-duration-200"
|
||||||
|
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||||
|
{{ if $external }}target="_blank" rel="noreferrer"{{ end -}}
|
||||||
|
>
|
||||||
|
{{ .Inner | markdownify }}
|
||||||
|
</a>
|
|
@ -0,0 +1,9 @@
|
||||||
|
{{- $style := .Get "style" -}}
|
||||||
|
|
||||||
|
|
||||||
|
<p
|
||||||
|
class="not-prose hx-text-xl hx-text-gray-600 dark:hx-text-gray-400 sm:hx-text-xl"
|
||||||
|
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||||
|
>
|
||||||
|
{{ .Inner | markdownify }}
|
||||||
|
</p>
|
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 735 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 405 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 350 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 735 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 405 KiB |
|
@ -0,0 +1 @@
|
||||||
|
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|