
Collects macOS and iOS artifacts to build timelines of network activity, cross-device identity, and physical location correlation for reconnaissance and red team operations.
RinHit - macOS ecosystem reconnaissance framework. Collects artifacts from the Apple ecosystem to build timelines of network activity, cross-device identity, and physical location correlation.
This is the open-source reconnaissance module. The closed-source Swift payload (
rinhit-agent) is used internally by our redteam and is not part of this repository.
com.apple.wifi.known-networks.plist (legacy) or uses networksetup (macOS 15+ Data Vault)com.apple.Bluetooth.plistioreg (IOKit) and system_profilerhigh, mobile hotspot = medium, etc.# Clone
git clone https://github.com/toxy4ny/rinhit.git
cd rinhit
# Build
go build -o rinhit ./cmd/rinhit
# Or install directly
go install ./cmd/rinhit
./rinhit list
sudo for Wi-Fi)sudo ./rinhit scan -v
sudo ./rinhit scan -c wifi,bluetooth -v
sudo ./rinhit scan --correlate -v
sudo ./rinhit scan -o report.json
# Import Wigle CSV dump
./rinhit geo import wigle-export.csv
# Lookup a BSSID
./rinhit geo lookup AA:BB:CC:DD:EE:FF
# Show cache stats
./rinhit geo stats
{
"generated_at": "2026-08-21T21:09:10Z",
"hostname": "MacBook-Pro-test.local",
"user": "root",
"artifacts": [
{
"id": "wifi-ns-iPhone7",
"collector": "wifi",
"type": "wifi-network",
"name": "iPhone7",
"severity": "medium",
"timestamp": "2026-08-21T14:09:10-07:00",
"source": "networksetup",
"data": {"ssid": "iPhone7", "source": "networksetup"},
"tags": ["wifi", "network", "macos15-fallback", "mobile-hotspot", "cross-device"]
}
],
"summary": {
"total_artifacts": 12,
"by_severity": {"info": 11, "medium": 1},
"by_collector": {"wifi": 12}
},
"data": {
"correlations": [
{
"type": "mobile-hotspot",
"confidence": 0.7,
"description": "Mobile hotspot 'iPhone7' detected - indicates iPhone/iPad tethering usage",
"artifact_ids": ["wifi-ns-iPhone7"],
"tags": ["mobile-hotspot", "tethering", "cross-device"]
}
]
}
}
rinhit/
├── cmd/rinhit/main.go # CLI entrypoint
├── pkg/
│ ├── collector/ # Collector interface & registry
│ │ ├── wifi/ # Wi-Fi artifact collector
│ │ ├── bluetooth/ # Bluetooth device collector
│ │ └── usb/ # USB device collector
│ ├── model/ # Artifact & Report structs
│ ├── parser/plist/ # Plist parsing with SIP fallback
│ ├── reporter/json/ # JSON reporter
│ ├── correlator/ # Cross-artifact correlation engine
│ └── geoloc/ # Offline BSSID geolocation cache
To add a new collector, implement the Collector interface:
type Collector interface {
Name() string
Description() string
Collect(ctx context.Context) ([]model.Artifact, error)
RequiresRoot() bool
}
Register it in buildRegistry() in cmd/rinhit/main.go.
networksetup (living off the land)wifi collector requires sudoMIT - see LICENSE.
"Just as the weevil drills into fruit, lays eggs, and severs the stem to cover its tracks, RinHit drills into the Apple ecosystem, plants persistence, and erodes security boundaries from within."