No puedo probarlo bien porque no tengo 2 tarjetas a mano.. decidme si va bien please.
#!/bin/bash
###############################################################################
# Fichero: WAP #
# Version: 1.0 #
# Autor: Warcry (warcry7474@hotmail.com) #
# Fecha: 15/NOV/2013 #
# #
# Agradecimientos: A todos los componentes de seguridadwireless.net #
# en especial a geminis_demon, USUARIONUEVO y sanson #
# ya que sin su ayuda este script no habria visto la luz #
# #
# El Autor no se responsabiliza del uso indebido que esta herramienta pueda #
# tener, ya que el usuario tiene la obligación de utilizarla siempre acorde #
# a la legislación vigente del país donde se utilice. #
# #
# Este programa es software libre; puedes redistribuirlo y/o modificarlo #
# bajo los terminos de la Licencia Publica General GNU (GPL) publicada #
# por la Free Software Foundation; en su version numero 3, o (bajo tu #
# criterio) la ultima version. Mira http://www.fsf.org/copyleft/gpl.txt #
# #
# Este programa se distribuye SIN GARANTIA de ningun tipo. #
# #
###############################################################################
#funcion que muestra el titulo
function mostrarheader(){
echo -e '\e[1;32m#########################################################'
echo -e '\e[1;32m# #'
echo -e '\e[1;32m#''\e[1;33m WAP' '\e[1;32m #'
echo -e '\e[1;32m#''\e[1;33m Warcry Access Point''\e[1;32m #'
echo -e '\e[1;32m# #'
echo -e '\e[1;32m#########################################################\e[0m'
}
# funcion que activa y configura todos los servicios
function activacion(){
# establecimiento configuracion dhcp
echo "default-lease-time 600;
max-lease-time 7200;
subnet 172.168.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 172.168.0.255;
option routers 172.168.0.1;
option domain-name-servers 8.8.8.8;
range 172.168.0.2 172.168.0.254;
}" > /tmp/dhcpd.conf
clear
mostrarheader
# activamos el ap en background
hostapd -B /tmp/hostapd.conf >/dev/null 2>&1
sleep 1
ifconfig $device 172.168.0.1 netmask 255.255.255.0
ifconfig $device mtu 1400
route add -net 172.168.0.0 netmask 255.255.255.0 gw 172.168.0.1
sleep 1
# configuracion de iptables
## borrado de reglas de iptables
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
# el localhost se deja
iptables -A INPUT -i lo -j ACCEPT
# al firewall tenemos acceso desde la red local
iptables -A INPUT -s 172.168.0.0/24 -i $device -j ACCEPT
# ahora hacemos enmascaramiento de la red local
iptables -t nat -A POSTROUTING -s 172.168.0.0/24 -o $device1 -j MASQUERADE
# activamos forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# activamos el dhcp
xterm -iconic -e dhcpd -d -f -cf /tmp/dhcpd.conf $device
}
# funcion para resetear todos los interfaces
reset() {
if [ "$device" ]; then
# Identificamos el driver de la interface seleccionada
DRIVER="$(basename "$(ls -l "/sys/class/net/$device/device/driver")")"
if [ ! "$DRIVER" ] && [ -d "/sys/class/net/tiwlan0/wireless" ]; then
DRIVER="WiLink"
fi
# Se desmonta y se vuelve a montar el driver
rmmod -f "$DRIVER" >/dev/null 2>&1
sleep 1
modprobe "$DRIVER" >/dev/null 2>&1
sleep 1
# Se pone la interface "up" para evitar problemas
# con algunos adaptadores inalámbricos
ifconfig "$device" up >/dev/null 2>&1
fi
if [ "$device1" ]; then
# Identificamos el driver de la interface seleccionada
DRIVER="$(basename "$(ls -l "/sys/class/net/$device1/device/driver")")"
if [ ! "$DRIVER" ] && [ -d "/sys/class/net/tiwlan0/wireless" ]; then
DRIVER="WiLink"
fi
# Se desmonta y se vuelve a montar el driver
rmmod -f "$DRIVER" >/dev/null 2>&1
sleep 1
modprobe "$DRIVER" >/dev/null 2>&1
sleep 1
# Se pone la interface "up" para evitar problemas
# con algunos adaptadores inalámbricos
ifconfig "$device1" up >/dev/null 2>&1
fi
}
function Salir() {
blacklist-iface "$device" ON >/dev/null 2>&1
exit
}
trap "Salir" SIGHUP SIGILL
clear
mostrarheader
# comprobacion de usuario
if [ $(whoami) != "root" ]; then
echo -e '\e[1;31m
¡¡¡ Debes ser root para ejecutar WAP !!!
Prueba: sudo bash wap o sudo sh wap
\e[0m'
sleep 5
exit 1
fi
# seleccion de parametros
echo -e '\e[1;37m \e[0m'
# detectamos el inteface que esta conectado a internet
echo -e '\e[1;37m
detectando conexion a internet...
\e[0m'
sleep 1
if [ -z ]; then
device1=$(ip route show|awk '(NR == 1) { print $5}')
fi
# si no hay interface conectado a internet
if [ $device1 == "link" ]; then
echo -e '\e[1;31m
¡¡¡ No se encontró ningún interface conectado a internet !!!
No se puede continuar.
\e[0m'
sleep 5
exit 1
fi
# si hay interface conectado a internet
echo -e '\e[1;36m
se ha seleccionado \e[0m' $device1
sleep 2
clear
mostrarheader
echo -e '\e[1;34m
WAP es una herramienta para crear un punto de acceso con
una interface wifi y proporcionar internet mediante un
puente con otra interface de tu pc que previamente este
conectada a internet mediante un gestor de conexion como wicd
\e[0m'
# crea lista con los interfaces wifi del sistema
if [ -z ]; then
interfaceList=$(iwconfig 2>/dev/null |grep "802.11" |grep -v Monitor |grep -v $device1 |awk '{print $1}')
fi
# si no hay interfaces wireless
echo -e '\e[1;36m'
if [ -z "$interfaceList" ]; then
echo -e '\e[1;31m
¡¡¡ No se encontró ningún interface wireless o en mode Managed !!!
No se puede continuar.
\e[0m'
sleep 5
exit 1
fi
echo
# crea array con dispositivos WiFi existentes
i=0
for interface in $interfaceList; do
if [ -z "`iwconfig 2>/dev/null |grep -A1 $interface|grep -i "Mode:Monitor"`" ]; then
deviceList[i]=$interface
i=`expr $i + 1`
fi
done
# muestra menu para elegir dispositivo
echo -e '\e[1;37m Selecciona el número de dispositivo WiFi que quieres utilizar
para crear el punto de acceso:\n\e[0m'
echo -e '\e[1;36m\tINTERFACE\tDRIVER\t\tFABRICANTE
\e[0m'
i=0
for device in ${deviceList[@]}; do
DRIVER="$(basename "$(ls -l "/sys/class/net/$device/device/driver")")"
FABRICANTE="$(macchanger -s $device|head -1|cut -d' ' -f6-)"
echo -e " [$i]\t$device\t\t$DRIVER\t$FABRICANTE"
i=`expr $i + 1` #let i=$i+1
done
echo -e "\n"
# read -s -N 1 n #leer un caracter en n, sin esperar intro -N 1, sin eco -s
read n #leer un caracter en n, sin esperar intro -N 1, sin eco -s
device=${deviceList[n]}
echo -e '\e[1A\e[1;36mHas seleccionado: '$device "espera...."
# proceso de limpieza
echo "
Preparando dispositivo....
"
[ "$(which blacklist-iface)" ] && blacklist-iface $device OFF >/dev/null 2>&1
# Eliminando interfaces en modo monitor
interfaces=$(ifconfig|awk '/^mon/ {print $1}')
if [ "$interfaces" != "" ]; then
for monx in $interfaces; do
airmon-ng stop $monx >/dev/null 2>&1
done
fi
ifconfig $device down >/dev/null 2>&1
ifconfig $device up >/dev/null 2>&1
sleep 1
clear
mostrarheader
# definimos el nombre del ap
echo -e '\e[1;31m
Selección de Essid (nombre de la red de tu Access Point)
\e[0m''\e[1;37mejemplo:\e[0m' '\e[1;36mPrueba_AP\e[0m'
echo -e '\e[1;37m
Teclea el Essid
\e[0m'
read red
clear
mostrarheader
# seleccionamos el canal que utilizara nuestro ap
echo -e '\e[1;31m
Selección de canal (si se esta utilizando otro interface wifi para obtener
internet se recomienda dejar unos 5 canales de separacion)
\e[0m''\e[1;37mejemplo:\e[0m' '\e[1;36m10\e[0m'
echo -e '\e[1;37m
Teclea el canal (1-11)
\e[0m'
read canal
clear
mostrarheader
echo -e '\e[1;31m
Selección de cifrado
\e[0m''\e[1;37mejemplo:\e[0m' '\e[1;36m 2\e[0m'
echo -e '\e[1;31m
[1] OPEN
[2] WEP
[3] WPA
[4] WPA2
[5] WPA/WPA2
[6] WPA/WPA2 con WPS
\e[0m'
echo -e '\e[1;37m
Teclea el numero de cifrado que deseas
\e[0m'
read cifrado
case $cifrado in
1 ) echo "# Define interface
interface=$device
# Select driver
driver=nl80211
# Set access point name
ssid=$red
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=$canal" > /tmp/hostapd.conf
activacion & continue >/dev/null 2>&1;;
2 ) echo -e '\e[1;37m
Teclea la clave wep (10 o 26 caracteres hexadecimales que no sean todo ceros)
ejemplo 1a2b3c4d5e
\e[0m'
read wepkey
echo "# Define interface
interface=$device
# Select driver
driver=nl80211
# Set access point name
ssid=$red
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=$canal
# Enable WEP
wep_default_key=0
wep_key0=$wepkey" > /tmp/hostapd.conf
activacion & continue >/dev/null 2>&1;;
3 ) echo -e '\e[1;37m
Teclea la clave wpa (entre 8 y 63 caracteres)
\e[0m'
read wpakey
echo "# Define interface
interface=$device
# Select driver
driver=nl80211
# Set access point name
ssid=$red
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=$canal
# Enable WPA2 only (1 for WPA, 2 for WPA2, 3 for WPA + WPA2)
wpa=1
wpa_passphrase=$wpakey" > /tmp/hostapd.conf
activacion & continue >/dev/null 2>&1;;
4 ) echo -e '\e[1;37m
Teclea la clave wpa (entre 8 y 63 caracteres)
\e[0m'
read wpakey
echo "# Define interface
interface=$device
# Select driver
driver=nl80211
# Set access point name
ssid=$red
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=$canal
# Enable WPA2 only (1 for WPA, 2 for WPA2, 3 for WPA + WPA2)
wpa=2
wpa_passphrase=$wpakey" > /tmp/hostapd.conf
activacion & continue >/dev/null 2>&1;;
5 ) echo -e '\e[1;37m
Teclea la clave wpa (entre 8 y 63 caracteres)
\e[0m'
read wpakey
echo "# Define interface
interface=$device
# Select driver
driver=nl80211
# Set access point name
ssid=$red
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=$canal
# Enable WPA2 only (1 for WPA, 2 for WPA2, 3 for WPA + WPA2)
wpa=3
wpa_passphrase=$wpakey" > /tmp/hostapd.conf
activacion & continue >/dev/null 2>&1;;
6 ) echo -e '\e[1;37m
Teclea la clave wpa (entre 8 y 63 caracteres)
\e[0m'
read wpakey
echo -e '\e[1;37m
Teclea el pin (ejemplo 12345670)
\e[0m'
read pin
echo "# Define interface
interface=$device
# Select driver
driver=nl80211
# Set access point name
ssid=$red
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=$canal
# Enable WPA2 only (1 for WPA, 2 for WPA2, 3 for WPA + WPA2)
wpa=3
wpa_passphrase=$wpakey
# Enable WPS
eap_server=1
wps_state=2
ap_pin=$pin" > /tmp/hostapd.conf
activacion & continue >/dev/null 2>&1;;
esac
sleep 2
clear
mostrarheader
echo -e '\e[1;31m
Pulsa cualquier tecla para finalizar
¡¡¡ NO CIERRES LA VENTANA DIRECTAMENTE
PRESIONA CUALQUIER TECLA PARA FINALIZAR
O NO SE EJECUTARA LA LIMPIEZA, LO QUE PUEDE
PROVOCAR CONFLICTOS CON OTRAS APLICACIONES !!!
\e[0m'
read -N 1
# eliminando demonios y archivos temporales creados
killall dhcpd
killall hostapd
killall dhcpcd
rm -f /tmp/dhcpd.conf
rm -f /tmp/hostapd.conf
# eliminando reglas de iptables
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# eliminando forwarding
echo "0" > /proc/sys/net/ipv4/ip_forward
# reseteando interfaces
reset
Salir
#Fin