{"id":13641855,"url":"https://github.com/arall/sigint","last_synced_at":"2026-01-22T00:43:24.332Z","repository":{"id":152607717,"uuid":"233063020","full_name":"arall/sigint","owner":"arall","description":"Signals intelligence (SIGINT) gathering by interception of WiFi, Bluetooth and GSM","archived":false,"fork":false,"pushed_at":"2025-01-09T16:04:12.000Z","size":7991,"stargazers_count":80,"open_issues_count":6,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-30T09:40:36.136Z","etag":null,"topics":["bluetooth-tracking","imsi","imsi-catcher","sigint","signal-intelligence","wifi-tracking"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-10T14:22:45.000Z","updated_at":"2025-09-17T15:10:35.000Z","dependencies_parsed_at":"2024-06-11T17:08:26.639Z","dependency_job_id":null,"html_url":"https://github.com/arall/sigint","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arall/sigint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arall%2Fsigint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arall%2Fsigint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arall%2Fsigint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arall%2Fsigint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arall","download_url":"https://codeload.github.com/arall/sigint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arall%2Fsigint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28648460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluetooth-tracking","imsi","imsi-catcher","sigint","signal-intelligence","wifi-tracking"],"created_at":"2024-08-02T01:01:25.065Z","updated_at":"2026-01-22T00:43:24.316Z","avatar_url":"https://github.com/arall.png","language":"PHP","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Sigint\nThe idea is to build a small device (Raspberry Pi 3 in my case) that will scan **WiFi probes**, **Bluetooth devices** and **IMSI numbers** (still work in progress) nearby, and log those into a server.\n\nThis have different purposes. My original idea is to use it as an (potential) intruder monitoring system for off-grid properties.\n\n## How it works\n\nServer \u0026 Stations.\n\n\n## Requirements\n\nThis project was tested on:\n* Raspberry Pi 3 B+ with Kali linux 2020\n* Raspberry Pi 4 B with Raspberry Pi OS\n\n### Software\n\n#### Linux Packages\n`sudo apt-get install -y bluez wireless-tools tcpdump tshark`\n\n#### Python dependencies\n`cd scripts; pip install -r requirements.txt`\n\n#### IMSI Catcher\nhttps://github.com/Oros42/IMSI-catcher\n\nFor installing it under Raspberry Pi follow this script / guide: https://gist.github.com/arall/370b5fe5277506026c078a7cf5cb97e3\n\nGet your device info with: `*#*#4636#*#*`\n\n#### Laravel Nova License\nThe admin panel works with [Laravel Nova](https://nova.laravel.com/) and requires a commercial license.\nYou can still use the project without an admin GUI by querying the MySQL DB or by implementing any other Laravel Admin panel.\n\nIf you want to remove Laravel Nova, remove it from `composer.json` before the setup.\n\n### Hardware\n\n#### WiFi device with monitor mode\n\nRaspberry Pi onboard Wi-Fi adapter doesn't support monitor mode out of the box.\nAny external USB WiFi cards that support monitor mode *should* work with additional drivers. I've tested it with Alfa `AWUSO36NH` and `AWUS036NHA` in a Raspberry Pi 4.\n\nSource: https://www.intuitibits.com/2021/02/17/using-a-raspberry-pi-4-as-a-remote-sensor-for-wifi-explorer-pro-and-airtool\n\n```sh\nsudo apt update\nsudo apt install raspberrypi-kernel-headers\nsudo reboot\ngit clone https://github.com/aircrack-ng/rtl8812au\ncd rtl8812au\n```\n\nFor RPI 1/2/3/ \u0026 0/Zero:\n\n```sh\nsed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile\nsed -i 's/CONFIG_PLATFORM_ARM_RPI = n/CONFIG_PLATFORM_ARM_RPI = y/g' Makefile\n```\n\nFor RPI 3B+ \u0026 4B you will need to run those below which builds the ARM64 arch driver:\n```sh\nsed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile\nsed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile\n```\n\n```sh\nmake\nsudo make install\n```\n\n#### Bluetooth device\nBuilt in Raspberry Pi bluetooth works out of the box.\n\n#### SDR device\nUSB [DVB-T key (RTL2832U)](https://osmocom.org/projects/rtl-sdr/wiki/Rtl-sdr) with antenna (less than 15$) or a [OsmocomBB phone](https://osmocom.org/projects/baseband/wiki/Phones) or [HackRF](https://greatscottgadgets.com/hackrf/).\n\n## Setup\n\n### Server\n\nCopy the `.env.example` into `.env` and set the variables to connect to the database, as well as your Nova License and Docker settings (in case you want to use those).\n\n### Docker\n\nBuild and start the container:\n```sh\ndocker compose up -d\n```\n\nPrompt a bash into the docker container:\n```sh\ndocker exec -it sigint-app-1 bash\n```\n\nThen follow the non-docker setup.\n\n### Non-Docker\nFor the server, install using [Composer](https://getcomposer.org/):\n```sh\ncomposer install\n```\n\nGenerate a Laravel application key:\n```sh\nphp artisan key:generate\n```\n\nAnd then run the database migrations and seeders:\n```sh\nphp artisan migrate --seed\n```\n\nIf you're using Laravel Nova, you can create a web user with:\n```sh\nphp artisan nova:user\n```\n\nThen you will be able to login using the web panel at `http://127.0.0.1/nova`.\n\n### Stations\n\nFirst create your station in the DB. If using Nova, you can do that using the web panel.\nOtherwise you can manually create that directly from the DB.\nEach station have a token that will be used as authentication for the API calls.\n\nThe monitoring scripts are located in `scripts/` directory.\n\nFirst, set the server `API_URL` (for example `http://127.0.0.1/api/`) and the `API_KEY` (the station token) in `scripts/.env`.\n\n\n#### WiFi\nStart monitor mode on your WiFi device: `sudo airmon-ng start wlan1` (requires `aircrack-ng`) or `sudo iw phy phy2 interface add wlan1mon type monitor; sudo ifconfig wlan1mon up`.\n\nList the wifi interfaces with `sudo iwconfig`.\n\nRun the script in a background session (or as a daemons), change the interface if needed:\n\n```sh\ncd scripts\nsudo python3 wifi.py wlan1mon\n```\n\n#### Bluetooth\nMake sure the Bluetooth service is enabled: `sudo systemctl status bluetooth.service`. \nIf not, enable it with `sudo systemctl enable bluetooth.service` and `sudo systemctl start bluetooth.service`.\nList the Bluetooth interfaces with `bt-adapter -i` (requires `bluez-tools`).\n\nRun the script in a background session (or as a daemons), change the interface if needed:\n\n```sh\ncd scripts\npython3 bluetooth.py hci0\n```\n\n#### IMSI\n\n*To-do*\n\n## Devices specs\n\nhttps://www.raspberrypi.org/documentation/faqs/\n\n```\nRaspberry Pi 4 B\nPower: 5V/3A\nConsumption: 600mA\nWiFi: 2.4 GHz and 5.0 GHz IEEE 802.11b/g/n/ac\nBT: Bluetooth 5.0, BLE\n\nRaspberry Pi 3 B+\nPower: 5V/2.5A\nConsumption: 500mA\nWiFi: 2.4 GHz and 5.0 GHz IEEE 802.11.b/g/n/ac\nBT: Bluetooth 4.2, BLE\n\nRaspberry Pi Zero W\nPower: 5V/1.2A\nConsumption: 150mA\nWiFi: 802.11 b/g/n wireless LAN\nBT: Bluetooth 4.1, BLE\n```\n\n## Limitations\nThe randomized MAC addresses being used are locally administered MAC addresses.  \nYou can recognize a locally administered address by inspecting the 2nd least significant bit of the 2nd byte of the MAC address.\nhttp://www.dfrc.com.sg/mac-randomization-crowd-analytics/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farall%2Fsigint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farall%2Fsigint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farall%2Fsigint/lists"}