First commit

This commit is contained in:
FlUxIuS 2024-09-04 23:37:50 +02:00
parent e7454c9c96
commit 4d0e0ff475
No known key found for this signature in database
GPG Key ID: E8B96449EE4FA72F
61 changed files with 27753 additions and 0 deletions

5
archetypes/default.md Normal file
View File

@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

0
assets/css/custom.css Normal file
View File

64
content/_index.md Normal file
View File

@ -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 &nbsp;<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&nbsp;<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 >}}

89
content/docs/_index.md Normal file
View File

@ -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 Swifts 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 >}}

View File

@ -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 >}}

View File

@ -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 |

View File

@ -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 >}}

View File

@ -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 >}}

View File

@ -0,0 +1 @@
,fluxius,topms,04.09.2024 17:05,file:///home/fluxius/.config/libreoffice/4;

View File

@ -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 >}}

View File

@ -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")
```

View File

@ -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

View File

@ -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 >}}

View File

@ -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" >}}

View File

@ -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
1 Tag Supported OS x86_64/amd64 arm64/v8 riscv64 Description
2 corebuild - Linux - Windows Base image including prerequisites for compiling tools and libraries for applications needing GUI and some other necessary tools
3 sdrsa_devices - Linux - Windows Contains all drivers of devices included in sdrsa_devices.docker
4 sdrsa_devices_antsdr - Linux - Windows Contains all drivers of devices included in sdrsa_devices.docker but replacing official UHD drivers by ANTSDR ones
5 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
6 latest - Linux - Windows The full images including all tools for SDR, Wi-Fi, Bluetooth and RFID used in the Dockerfile file
7 sdr_light - Linux - Windows Light image built for SDR uses with limited number of tools used in sdr_light.docker file
8 sdr_full - Linux - Windows Full image including all SDR tools used in sdr_full.docker file
9 wifi - Linux - Windows Wi-Fi image for security tests using tools included in wifi.docker
10 rfid - Linux - Windows RFID image for security tests using tools included in rfid.docker
11 reversing - Linux - Windows ❌ (not yet) Reversing image for security tests using tools included in reversing.docker
12 automotive - Linux - Windows ❌ (not yet) Automotive image for security tests using tools included in automotive.docker
13 bluetooth - Linux - Windows Bluetooth classic and LE image for security tests using tools in bluetooth.docker
14 telecom - Linux - Windows Telecom image for security tests using tools included in telecom.docker

View File

@ -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>
```

View File

@ -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 >}}

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 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
3 Cantact tools cantact cantact_soft_install
4 caringcaribou caringcaribou caringcaribou_soft_install
5 savvycan SavvyCAN savvycan_soft_install
6 gallia gallia gallia_soft_install
7 V2G Injector /automotive/V2GInjector/ v2ginjector_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 bettercap bettercap bettercap_soft_install
3 hcitools hciattach | hciconfig | hcidump | hcitool blueztools_soft_install
4 bluez tools blueztools_soft_install
5 mirage mirage mirage_soft_install
6 Sniffle with OpenDroneID encoder/decoder /rftools/bluetooth/Sniffle/ sniffle_soft_install
7 Kismet kismet kismet_soft_install
8 bluing /rftools/bluetooth/bluing/bluing/bin/ bluing_soft_install
9 bdaddr /rftools/bluetooth/bdaddr/bdaddr bdaddr_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 kataistruct kaitai-struct-compiler kataistruct_soft_install
3 unicorn unicorn_soft_install
4 keystone keytool keystone_soft_install
5 radare2 radare2 | radiff2 radare2_soft_install
6 ghidra ghidraRun ghidra_soft_install
7 binwalk binwalk binwalk_soft_install
8 cutter cutter_soft_install
9 LLVM tools LLVM_install
10 AFL++ afl-* AFL_install
11 HongFuzz honggfuzz honggfuzz_install
12 SemGrep semgrep semgrep_install
13 C++ check cppcheck* cppcheck_install
14 Clang static analyzer clang_static_analyzer_install
15 Qiling qiling_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 proxmark3 /rftools/rfid/proxmark3/ proxmark3_soft_install
3 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
4 mfoc mfoc mfoc_soft_install
5 mfcuk mfcuk mfcuk_soft_install
6 mfread /rftools/rfid/mfdread/mfdread.py mfread_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 Nvidia OpenCL (to enable) ✅ (not activated) In the docker file
3 Intel OpenCL (to enable) ✅ (not activated) In the docker file
4 CyberEther cyberether cyberther_soft_install
5 SDR Angel sdrangel sdrangel_soft_fromsource_install
6 QSSTV qsstv qsstv_soft_install
7 Sigdigger SigDigger ✅ (but slow) ✅ (but slow) sigdigger_soft_install
8 ice_bluetooth ice9-bluetooth ice9_bluetooth_soft_install
9 Meshtastic SDR /rftools/sdr/meshtastic_sdr/ meshtastic_sdr_soft_install
10 gps_sdr_sim /rftools/sdr/gps-sdr-sim/ gps_sdr_sim_soft_install
11 nfc laboratory nfc-lab nfclaboratory_soft_install
12 Scikit-learn ml_and_dl_soft_install
13 pandas ml_and_dl_soft_install
14 seaborn ml_and_dl_soft_install
15 Tensorflow ml_and_dl_soft_install
16 Gpredict ml_and_dl_soft_install
17 v2verifier /rftools/sdr/v2verifier/ v2verifier_sdr_soft_install
18 wavingz /rftools/sdr/waving-z/build/ wavingz_sdr_soft_install

View File

@ -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,✅ ,❓,❓
1 Tool(s) amd64 aarch64 riscv64
2 OOT – gr-gsm
3 OOT – gr_lora
4 OOT – gr_lorasdr
5 OOT – gr_iridium
6 OOT – gr_inspector
7 OOT – gr_uaslink
8 OOT – gr_X10
9 OOT – gr_gfdm
10 OOT – gr_aaoronia_rtsa
11 OOT – gr_ccsds
12 OOT – gr_ais
13 OOT – gr_dvbs2
14 OOT – gr_tempest
15 OOT – gr_dab
16 OOT – gr_dect2
17 OOT – gr_foo
18 OOT – gr_ieee802-11
19 OOT – gr_ieee802154
20 OOT – gr_rds
21 OOT – gr_droneid
22 OOT – gr_satellites
23 OOT – gr_adsb
24 OOT – gr_keyfob
25 OOT – gr_radar
26 OOT – gr_nordic
27 OOT – gr_paint
28 OOT – gr_pdu_utils
29 OOT – gr_sandia_utils
30 OOT – gr_timing_utils
31 OOT – gr_fhss
32 OOT – gr-aistx
33 OOT – gr-zwave_poore
34 OOT – gr-mixalot
35 OOT – gr_DCF77_Receiver
36 OOT – gr-j2497
37 OOT – gr-airmodes
38 OOT – gr-bb60_Receiver
39 OOT – gr_fosphor

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 GNU Radio gnuradio-companion | gnuradio-config-info | grcc gnuradio_soft_install
3 Common GNU Radio blocks common_sources_and_sinks
4 Soapy blocks and modules install_soapy_modules
5 SDR++ sdrpp sdrpp_soft_fromsource_install
6 retrogram /rftools/sdr/retrogram-soapysdr/retrogram-soapysdr retrogram_soapysdr_soft_install
7 kc908 SA GNU Radio blocks kc908_sa_device
8 LeoBodnar GPSDO v1 CLI /rftools/calibration/lbgpsdo/lbgpsdo.py leobodnarv1_cal_device
9 GQRX gqrx gqrx_soft_install
10 URH urh | urh_cli urh_soft_install
11 inspectrum inspectrum inspectrum_soft_install
12 NanoVNASaver NanoVNASaver ❌ (fix needed installing PyQT6) NanoVNASaver_cal_device_call
13 NanoVNA-QT /rftools/calibration/NanoVNA-QT/run NanoVNA_QT_cal_device
14 KCSDI /rftools/calibration/Deepace/KCSDI-v0.4.5-45-linux-x86_64.AppImage KCSDI_cal_device
15 rtl_433 rtl_433 rtl_433_soft_install
16 Jupyter lab + notebook jupiter jupyter_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 yatebts yate | yate-config | yate-qt5 yatebts_blade2_soft_install
3 OpenBTS /telecom/2G/OpenBTS/ ❌ (need tests with other compiler) openbts_uhd_soft_install
4 OpenBTS UMTS /telecom/3G/OpenBTS-UMTS/ ❌ (need to fix ASN part) openbts_umts_soft_install
5 srsRAN 4G, 5G NSA /telecom/4G/srsRAN_4G/ srsran4G_5GNSA_soft_install
6 srsRAN 5G SA /telecom/5G/srsRAN_Project/ srsran5GSA_soft_install
7 pycrate /telecom/pycrate/ pycrate_soft_install
8 Open5GS /telecom/5G/open5gs/ Open5GS_soft_install
9 OsmoBTS suite (including OsmoPCU + OsmoSGSN and others) osmo* tools with configs in /telecom/2G/osmocom/ osmobts_suite_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 iproute2 common_nettools
3 macchanger macchanger common_nettools
4 tshart tshark common_nettools
5 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
6 reaver reaver reaver_soft_install
7 bully bully bully_soft_install
8 pixiewps pixiewps pixiewps_soft_install
9 Pyrit Pyrit_soft_install
10 eaphammer /rftools/wifi/airgeddon/eaphammer eaphammer_soft_install
11 airgeddon /rftools/wifi/airgeddon/ airgeddon_soft_install
12 wifite2 /rftools/wifi/wifite2/ wifite2_soft_install
13 Kismet kismet* kismet_soft_install

View File

@ -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
1 Tool(s) Available commands amd64 aarch64 riscv64 Installation function
2 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
3 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
4 libiio and libad9361 iio_adi_xflow_check | iio_attr | iio_genxml | iio_info | iio_readdev |iio_reg | iio_stresstest | iio_writedev ad_devices_install
5 Nuand tools and lib bladeRF-cli | bladeRF-fsk nuand_devices_install
6 HackRF tools and lib hackrf_clock | hackrf_debug | hackrf_operacake | hackrf_sweep | hackrf_cpldjtag | hackrf_info | hackrf_spiflash | hackrf_transfer hackrf_devices_install
7 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
8 LimeSDR tools and lib LimeQuickTest | LimeSuiteGUI | LimeUtil limesdr_devices_install
9 Funcube tools and lib funcube_devices_install
10 XTRX tools and lib xtrx_fft xtrx_devices_install
11 OsmoFL2K tools and lib fl2k_file | fl2k_tcp | fl2k_fm | fl2k_test osmofl2k_devices_install
12 SignalHound Spike signalhound_sa_device
13 Harogic Devices sastudio harogic_sa_device

View File

@ -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 >}}

5
go.mod Normal file
View File

@ -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

2
go.sum Normal file
View File

@ -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=

88
hugo.yaml Normal file
View File

@ -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

1
i18n/en.yaml Normal file
View File

@ -0,0 +1 @@
copyright: "© 2024 RF Swift"

3
i18n/fr.yaml Normal file
View File

@ -0,0 +1,3 @@
copyright: "© 2024 RF Swift"
documentation: "Documentation"
search: "Rechercher"

3
i18n/pl.yaml Normal file
View File

@ -0,0 +1,3 @@
copyright: "© 2024 RF Swift"
documentation: "Dokumentacja"
search: "Szukaj"

View File

@ -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>

View File

@ -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 -}}

View File

@ -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 }}

View File

@ -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 }}

View File

@ -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>

View File

@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
static/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
static/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

BIN
static/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

12946
static/favicon.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 405 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

12946
static/images/logo.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 405 KiB

View File

@ -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"}

1
static/site.webmanifest Normal file
View File

@ -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"}