An intuitive macOS status bar application written in Swift + Rust to help you spoof the MAC addresses of your Wi-Fi and Ethernet interfaces. Free and open-source.
LinkLiar (SwiftUI) -- GUI, status bar menu, settings
└─ RustBridge (FFI) -- Swift <-> Rust interop
└─ linktools-rs -- MAC parsing, vendor lookup, random generation
LinkTools -- shared models, config, observers
linkdaemon -- privileged background daemon (runs as root)
Core MAC address operations are implemented in Rust (linktools-rs/) and exposed to Swift via C FFI, providing better performance and format support.
- macOS Ventura (13.0) or later
- Administrator privileges (you will be asked for your root password once)
- Xcode 15.0+ and Rust toolchain (for building from source)
If you have Homebrew, just run brew install --cask linkliar.
To install it manually, follow these instructions in the documentation.
Prerequisites: Xcode 15.0+, Rust toolchain (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh)
# Quick build
./build.sh
# Release build
./build.sh -r
# Clean, build release, and run tests
./build.sh -c -r -t
# Package as .app / .dmg
./build.sh -r -pThe build script will:
- Compile the Rust library (
linktools-rs) - Copy
liblinktools.dylibinto the app bundle - Build the Xcode project
- Optionally run tests and package
End-user documentation is at halo.github.io/LinkLiar.
To update the HelpBook, change the source files in LinkLiarHelp/en.lproj and then generate the output with bin/docs.
- When Wi-Fi is turned off, its MAC address cannot be changed. Turn it on first.
- Changing a MAC address while connected will briefly drop the connection.
- As of macOS 12.3+, the interface must be disassociated from a network before modifying its MAC address. LinkLiar handles this automatically.
System Preferenceswill still show the original hardware MAC address. This is normal; actual network traffic uses the spoofed address.
Enable logging:
touch "/Library/Application Support/LinkLiar/linkliar.log"Delete the log file to silence logging. For live colorful output:
/Applications/LinkLiar.app/Contents/Resources/logsHold the Option key while the menu is visible for advanced options.
- Original project by halo
- Icon from Iconmonstr
MIT. See LICENSE.md.