-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add release CI #44
Add release CI #44
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
name: Build Release | ||
|
||
on: | ||
push: | ||
branches: [main] | ||
|
||
env: | ||
CARGO_TERM_COLOR: always | ||
|
||
jobs: | ||
build_serial: | ||
strategy: | ||
matrix: | ||
platform: | ||
- os: ubuntu-latest | ||
build_name: serial | ||
- os: windows-latest | ||
build_name: serial.exe | ||
- os: macos-latest | ||
build_name: serial | ||
runs-on: ${{ matrix.platform.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Build serial | ||
run: cargo build --bin serial --release | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: serial-${{ matrix.platform.os }} | ||
path: ./target/release/${{ matrix.platform.build_name }} | ||
if-no-files-found: error | ||
build_rootshell_and_rayhunter: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
targets: armv7-unknown-linux-gnueabihf | ||
- name: Install cross-compilation dependencies | ||
uses: awalsh128/cache-apt-pkgs-action@latest | ||
with: | ||
packages: build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf | ||
version: 1.0 | ||
- name: Build rootshell (arm32) | ||
run: cargo build --bin rootshell --target armv7-unknown-linux-gnueabihf --release | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: rootshell | ||
path: target/armv7-unknown-linux-gnueabihf/release/rootshell | ||
if-no-files-found: error | ||
- name: Build rayhunter-daemon (arm32) | ||
run: cargo build --bin rayhunter-daemon --target armv7-unknown-linux-gnueabihf --release | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: rayhunter-daemon | ||
path: target/armv7-unknown-linux-gnueabihf/release/rayhunter-daemon | ||
if-no-files-found: error | ||
build_release_zip: | ||
needs: | ||
- build_serial | ||
- build_rootshell_and_rayhunter | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/download-artifact@v4 | ||
- name: Setup release directory | ||
run: mv rayhunter-daemon/rayhunter-daemon rootshell/rootshell serial-* dist | ||
- name: Archive release directory | ||
uses: thedoctor0/[email protected] | ||
with: | ||
type: 'zip' | ||
filename: 'release.zip' | ||
directory: 'dist' | ||
# TODO: have this create a release directly | ||
- name: Upload release | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: release.zip | ||
path: dist/release.zip | ||
if-no-files-found: error |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,41 +32,17 @@ Rayhunter is an IMSI Catcher Catcher for the Orbic mobile hotspot. Based on code | |
Code is built and tested for the Orbic RC400L mobile hotspot, it may work on other orbics and other | ||
linux/qualcom devices but this is the only one we have tested on. Buy the orbic [using bezos bucks](https://www.amazon.com/gp/product/B09CLS6Z7X/) | ||
|
||
|
||
|
||
|
||
## Setup | ||
### If your are on x86 linux | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we should actually leave these instructions in but under a development header instead of a setup header. BUt they are useful for people who want to contribute to the project. |
||
on your linux laptop install rust the usual way and then install cross compiling dependences. | ||
run `sudo apt install build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf` | ||
|
||
set up cross compliing for rust: | ||
``` | ||
rustup target add x86_64-unknown-linux-gnu | ||
rustup target add armv7-unknown-linux-gnueabihf | ||
``` | ||
|
||
Now you can root your device and install rayhunter by running `./install.sh` - **Note:** You will have to install the cross compile tooling below before running this. | ||
|
||
|
||
### If you aren't on linux or can't run the install scripts | ||
Root your device on windows using the instructions here: https://xdaforums.com/t/resetting-verizon-orbic-speed-rc400l-firmware-flash-kajeet.4334899/#post-87855183 | ||
|
||
Build for arm using `cargo build` | ||
|
||
Run tests using `cargo test_pc` | ||
|
||
Push the scripts in `scripts/` to /etc/init.d on device and make a directory called /data/rayhunter using `adb shell` (and sshell for your root shell if you followed the steps above) | ||
|
||
you also need to copy `config.toml.example` to /data/rayhunter/config.toml | ||
|
||
Then run `./make.sh` this will build the binary and push it over adb. Restart your device or run `/etc/init.d/rayhunter_daemon start` on the device and you are good to go. | ||
|
||
## Development | ||
Write your code and write tests | ||
1. Install the Android Debug Bridge (ADB) on your computer (don't worry about instructions for installing it on a phone/device yet). You can find instructions for doing so on your platform [here](https://www.xda-developers.com/install-adb-windows-macos-linux/#how-to-set-up-adb-on-your-computer). | ||
2. Download the latest rayhunter release bundle and unzip it. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. link to this |
||
3. Run the install script inside the bundle corresponding to your platform (`install-linux.sh`, `install-mac.sh`, or `install-windows.bat`). | ||
4. Once finished, rayhunter should be running! You can verify this by visiting the web UI as described below. | ||
|
||
Build for arm using `cargo build` | ||
## Usage | ||
|
||
Run tests using `cargo test_pc` | ||
Once installed, rayhunter will run automatically whenever your Orbic device is running. It serves a web UI that provides some basic controls, such as being able to start/stop recordings, download captures, and view heuristic analyses of captures. You can access this UI in one of two ways: | ||
|
||
push to the device with `./make.sh` | ||
1. Over wifi: Connect your phone/laptop to the Orbic's wifi network and visit `http://192.168.1.1:8080` (click past your browser warning you about the connection not being secure, rayhunter doesn't have HTTPS yet!) | ||
* Note that you'll need the Orbic's wifi password for this, which can be retrieved by pressing the "MENU" button on the device and opening the 2.4 GHz menu. | ||
2. Over usb: Connect the Orbic device to your laptop via usb. Run `adb forward tcp:8080 tcp:8080`, then visit `http://localhost:8080`. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#!/bin/env bash | ||
|
||
install() { | ||
if [[ -z "${SERIAL_PATH}" ]]; then | ||
echo "SERIAL_PATH not set, did you run this from install-linux.sh or install-mac.sh?" | ||
exit 1 | ||
fi | ||
check_adb | ||
force_debug_mode | ||
setup_rootshell | ||
setup_rayhunter | ||
} | ||
|
||
check_adb() { | ||
if ! command -v adb &> /dev/null | ||
then | ||
echo "adb not found, please ensure it's installed or check the README.md" | ||
exit 1 | ||
fi | ||
} | ||
|
||
force_debug_mode() { | ||
# Force a switch into the debug mode to enable ADB | ||
$(SERIAL_PATH) AT | ||
echo -n "adb enabled, waiting for reboot" | ||
until adb shell true 2> /dev/null | ||
do | ||
echo -n . | ||
sleep 1 | ||
done | ||
echo | ||
echo "it's alive!" | ||
} | ||
|
||
setup_rootshell() { | ||
_adb_push rootshell /tmp/ | ||
$(SERIAL_PATH) "AT+SYSCMD=mv /tmp/rootshell /bin/rootshell" | ||
sleep 1 | ||
$(SERIAL_PATH) "AT+SYSCMD=chown root /bin/rootshell" | ||
sleep 1 | ||
$(SERIAL_PATH) "AT+SYSCMD=chmod 4755 /bin/rootshell" | ||
echo "we have root!" | ||
adb shell /bin/rootshell -c id | ||
} | ||
|
||
_adb_push() { | ||
adb push "$(dirname "$0")/$1" "$2" | ||
} | ||
|
||
setup_rayhunter() { | ||
adb shell '/bin/rootshell -c "mkdir /data/rayhunter"' | ||
_adb_push config.toml.example /data/rayhunter/config.toml | ||
_adb_push rayhunter-daemon /data/rayhunter/ | ||
_adb_push scripts/rayhunter_daemon /tmp/rayhunter_daemon | ||
_adb_push scripts/misc-daemon /tmp/misc-daemon | ||
adb shell '/bin/rootshell -c "mv /tmp/rayhunter_daemon /etc/init.d/rayhunter_daemon"' | ||
adb shell '/bin/rootshell -c "mv /tmp/misc-daemon /etc/init.d/misc-daemon"' | ||
adb shell '/bin/rootshell -c "chmod 755 /etc/init.d/rayhunter_daemon"' | ||
adb shell '/bin/rootshell -c "chmod 755 /etc/init.d/misc-daemon"' | ||
adb shell '/bin/rootshell -c "/etc/init.d/rayhunter_daemon start"' | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/bin/env bash | ||
|
||
set -e | ||
export SERIAL_PATH="./serial-ubuntu-latest/serial" | ||
. "$(dirname "$0")"/install-common.sh | ||
install |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/bin/env bash | ||
|
||
set -e | ||
export SERIAL_PATH="./serial-mac-latest/serial" | ||
. "$(dirname "$0")"/install-common.sh | ||
install |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ECHO TODO |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have we tested and confirmed that this will run correctly on windows and mac targets, if not we should or we should leave these targets out until we do.