Files

80 lines
2.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# Local-only hotspot using Android's built-in SoftAP (wlan1)
# SSID & password are set in Android Settings → Hotspot
# This script only takes control of the interface afterwards
IFACE="wlan1"
AP_IP="192.168.43.1"
NET="192.168.43.0/24"
DHCP_RANGE="192.168.43.10,192.168.43.50,12h"
[ "$(id -u)" -ne 0 ] && { echo "Need root"; exit 1; }
echo "[*] Waiting for Android hotspot interface ($IFACE)..."
# Give you time to turn the hotspot on
for i in $(seq 1 15); do
if ip link show "$IFACE" >/dev/null 2>&1; then
echo " Found $IFACE"
break
fi
sleep 1
done
if ! ip link show "$IFACE" >/dev/null 2>&1; then
echo "Interface $IFACE not found."
echo "Turn on the normal Android Wi-Fi Hotspot first, then run this script again."
exit 1
fi
echo "[*] Taking control of $IFACE..."
# Kill any existing DHCP / hostapd from Android or previous runs
killall dnsmasq hostapd 2>/dev/null
sleep 1
# Disable reverse path filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/"$IFACE"/rp_filter 2>/dev/null
# Flush old addresses and routes
ip addr flush dev "$IFACE" 2>/dev/null
ip route flush dev "$IFACE" 2>/dev/null
# Assign our fixed gateway IP
ip addr add "$AP_IP/24" broadcast 192.168.43.255 dev "$IFACE"
ip link set "$IFACE" up
ip route add "$NET" dev "$IFACE" src "$AP_IP" 2>/dev/null
# Allow traffic
iptables -I INPUT -i "$IFACE" -j ACCEPT
iptables -I OUTPUT -o "$IFACE" -j ACCEPT
iptables -I FORWARD -i "$IFACE" -j ACCEPT
iptables -I FORWARD -o "$IFACE" -j ACCEPT
# Start our own DHCP (local only – no internet)
echo "[*] Starting local DHCP server..."
dnsmasq \
--interface="$IFACE" \
--bind-interfaces \
--dhcp-range="$DHCP_RANGE" \
--dhcp-option=3,"$AP_IP" \
--dhcp-option=6,"$AP_IP" \
--port=0 \
--no-resolv \
--pid-file=/tmp/dnsmasq-"$IFACE".pid \
--log-dhcp &
sleep 2
echo
echo "=== Local-only Hotspot ready ==="
echo "Interface : $IFACE"
echo "Gateway : $AP_IP"
echo "DHCP : 192.168.43.10 – 192.168.43.50"
echo
echo "SSID and password are whatever you set in Android Hotspot settings."
echo "Connect your PC and try: ping 192.168.43.1"
echo
ip -4 addr show "$IFACE"