Pular para o conteúdo

macchanger

sudo apt-get update
sudo apt-get install macchanger
sudo yum install macchanger
# or
sudo dnf install macchanger
sudo pacman -S macchanger
brew install macchanger
git clone https://github.com/alobbs/macchanger.git
cd macchanger
./configure
make
sudo make install
CommandDescription
macchanger -hDisplay help message and available options
macchanger -vShow version information
macchanger -s INTERFACEShow current MAC address of interface
macchanger -r INTERFACESet random MAC address
macchanger -m INTERFACESet random MAC from same vendor
macchanger -a INTERFACESet random vendor MAC address
macchanger -p INTERFACEReset to permanent/original MAC
# Show MAC of eth0
macchanger -s eth0

# Show MAC of wlan0
macchanger -s wlan0

# Using ifconfig
ifconfig eth0 | grep HWaddr

# Using ip command
ip link show eth0
# Generate completely random MAC
sudo macchanger -r eth0

# Show the change was applied
macchanger -s eth0

# Set random MAC on WiFi interface
sudo macchanger -r wlan0
# Set a specific MAC address
sudo macchanger -m AA:BB:CC:DD:EE:FF eth0

# Verify change
macchanger -s eth0

# Another interface example
sudo macchanger -m 00:11:22:33:44:55 wlan0
# Generate MAC with same vendor as original
sudo macchanger -m eth0

# Generate MAC with random vendor
sudo macchanger -a eth0

# View vendor information
macchanger -s eth0 | grep Vendor
# Reset to permanent/factory MAC
sudo macchanger -p eth0

# Verify original MAC restored
macchanger -s eth0

# Reset all interfaces
sudo macchanger -p eth0
sudo macchanger -p wlan0

Create /etc/systemd/network/99-macchanger.link:

[Match]
MACAddress=OLD:MAC:ADDRESS

[Link]
MACAddress=NEW:MAC:ADDRESS
NamePolicy=kernel database onboard slot path
# Edit connection
sudo nmtui

# Or manually edit configuration
sudo nano /etc/NetworkManager/conf.d/macchanger.conf

Add to file:

[connection]
cloned-mac-address=AA:BB:CC:DD:EE:FF

Create /etc/udev/rules.d/75-macchanger.rules:

ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", RUN+="/usr/bin/macchanger -m wlan0"

Reload rules:

sudo udevadm control --reload-rules
sudo udevadm trigger

Create /etc/init.d/macchanger-startup:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          macchanger
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

sudo macchanger -r eth0
sudo macchanger -r wlan0

Make executable:

sudo chmod +x /etc/init.d/macchanger-startup
sudo update-rc.d macchanger-startup defaults
# Disconnect from WiFi
sudo ip link set wlan0 down

# Change MAC address
sudo macchanger -r wlan0

# Reconnect to network
sudo ip link set wlan0 up

# Verify new MAC
macchanger -s wlan0
# Some captive portals use MAC filtering
# Change MAC to bypass authentication requirement

sudo macchanger -r wlan0
sudo service network-manager restart
# If network uses MAC whitelist, spoof allowed MAC
sudo macchanger -m AA:BB:CC:DD:EE:FF eth0

# Test connectivity
ping -c 1 8.8.8.8
# Test multiple MAC addresses simultaneously
for i in {1..5}; do
  sudo macchanger -r eth0
  echo "MAC $i: $(macchanger -s eth0 | grep HWaddr)"
  sleep 2
done
# Change MAC before connecting to untrusted networks
sudo macchanger -r wlan0

# Connect to network
nmcli device wifi connect "SSID" password "PASSWORD"

# Verify anonymity
macchanger -s wlan0

Create ~/.local/bin/auto-macchanger.sh:

#!/bin/bash
# Auto-change MAC for both wired and wireless interfaces

INTERFACES=("eth0" "wlan0" "enp0s3" "wlp2s0")

for interface in "${INTERFACES[@]}"; do
  if ip link show "$interface" &>/dev/null; then
    echo "[*] Changing MAC on $interface..."
    sudo macchanger -r "$interface"
    sleep 1
  fi
done

echo "[+] All interfaces updated"

Make executable and run at startup:

chmod +x ~/.local/bin/auto-macchanger.sh
# Add to crontab or systemd service

Create a cron job for periodic MAC changes:

# Edit crontab
crontab -e

# Add entry (change MAC every hour)
0 * * * * /usr/bin/sudo /usr/bin/macchanger -r eth0 >/dev/null 2>&1
#!/bin/bash
# macchange.sh - Smart MAC changer

INTERFACE="${1:-eth0}"
ACTION="${2:-random}"

case "$ACTION" in
  random)
    echo "[*] Setting random MAC on $INTERFACE"
    sudo macchanger -r "$INTERFACE"
    ;;
  vendor)
    echo "[*] Setting vendor MAC on $INTERFACE"
    sudo macchanger -m "$INTERFACE"
    ;;
  restore)
    echo "[*] Restoring original MAC on $INTERFACE"
    sudo macchanger -p "$INTERFACE"
    ;;
  *)
    echo "Usage: $0 <interface> [random|vendor|restore]"
    exit 1
    ;;
esac

# Verify change
echo "[+] Current MAC:"
macchanger -s "$INTERFACE"
#!/bin/bash
# Change MAC on multiple interfaces

for iface in $(ip link show | grep -oP '^\d+: \K[^:]+'); do
  if [[ "$iface" != "lo" ]]; then
    echo "[*] Changing $iface"
    sudo macchanger -r "$iface" 2>/dev/null
  fi
done
# View current and permanent MAC
macchanger -s eth0

# Show vendor information
macchanger -s eth0 | grep Vendor

# List all network interfaces
ip link show

# View MAC in detailed format
cat /sys/class/net/eth0/address
TipDescription
Run as rootmacchanger requires sudo/root privileges for actual changes
Disable IPv6Some systems leak IPv6 addresses; disable or use privacy extensions
Use consistent vendorUsing -m maintains vendor consistency for less obvious spoofing
Test connectivityAlways verify network access after changing MAC
Reset before troubleshootingIf network issues arise, reset to original MAC with -p
Document original MACSave original MAC before changes: macchanger -s eth0 > mac_backup.txt
Automate responsiblyUse cron jobs cautiously on shared systems
Network loggingBe aware that network admins may log MAC changes
# macchanger requires root
sudo macchanger -r eth0

# Or add user to network group (less secure)
sudo usermod -aG netdev $USER
# List available interfaces
ip link show

# Common interface names
# eth0, eth1 - wired
# wlan0, wlan1, wlp2s0 - wireless
# lo - loopback (don't change!)
# Check if interface is being reset by network manager
sudo systemctl restart networking

# Or use NetworkManager commands
sudo nmcli connection reload
sudo nmcli connection up <connection-name>
# Bring interface down first
sudo ip link set eth0 down

# Change MAC
sudo macchanger -r eth0

# Bring interface up
sudo ip link set eth0 up
ToolPurpose
ifconfigView/configure network interfaces
ip linkModern interface configuration
nmcliNetworkManager command-line tool
iproute2Advanced network routing
ethtoolEthernet device settings
aircrack-ngWiFi security testing suite