80 lines
2.2 KiB
Bash
Executable File
80 lines
2.2 KiB
Bash
Executable File
#!/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"
|