Emular fonera conectada con OpenWrt

Written by blitous on Febrero 14, 2008

Hiba a realizar un tuto sobre como hacerlo, pero encontre este otro en castellano que explica muy bien como hacerlo.
Sacado de http://www.fonera.info/index.php/topic,332.0.html

Como es interesante esto, por si alguien quiere probar hacer cosas con su foenra pues asi no le diran nada los de fon.

Aquí os pongo una modificación del thinclient que se encuentra en http://fon.freddy.eu.org/heartbeat/

Esta revisión está depurada y actualizada para que notifique como si tuvieramos una fonera con el último firmware de FON (actualmente 0.7.2-0).

Necesitareis la fonkey en /etc:

root@kamikaZe:~# wget http://fon.freddy.eu.org/heartbeat/fonkey -O /etc/fonkey

root@kamikaZe:~# crontab -e

Añadimos esto en el crontab:
Código:

0 * * * * /usr/bin/thinclient cron | logger

root@kamikaZe:~# crontab -e

Y creamos el script: /usr/bin/thinclient

root@kamikaZe:~# vi /usr/bin/thinclient

Código:

#!/bin/sh

# config paths
ROOTHOME=”/tmp”
SSHPATH=”/usr/bin/ssh”
KEY=”/etc/fonkey”
THINCLIENT=”/tmp/.thinclient.sh”

# script and firmware info
THCLVER=”1.0″
CHILLVER=”1.0-1″
FONREV=”0″
FIRMWARE=”0.7.2″
DEVICE=”fonera”
MODE=”$1″

# fon.com info
USER=”openwrt”
SERVER=”download.fon.com”
PORT=”1937″
FONSIG=”$SERVER ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA0zJFtj5NtrVsj8+qG0dtPE8WpHHDpTXp5+d3vvtSS7Hx7vYHyrfN/8PBVrrYOgl4dySY65sGtq34EU04VN4a7xQHSKJBunDUSQ/2Xz+eyo53LCVeFy1zNRCmB6jrFlJQvl5yviLvXmMtOGxG8Z1dfu4qavfGtBxwtwxKPKuiyhs=”

# mac info
if [ ! -z "$3" ]
then
WLMAC=”$2″
ETMAC=”$3″
else
WLMAC=$(ifconfig ath0 | grep HWaddr | sed -e “s/^.*HWaddr //” | sed -e “s/ //g”) >> /dev/null 2>&1
ETMAC=$(ifconfig eth0 | grep HWaddr | sed -e “s/^.*HWaddr //” | sed -e “s/ //g”) >> /dev/null 2>&1
fi

export HOME=”$ROOTHOME”

check_mac () {
if [ -z "$WLMAC" ] || [ -z "$ETMAC" ]
then
echo “Ooops! Error getting MAC Addresses!”
exit 0
fi
}

check_env () {
[ -d "$ROOTHOME/.ssh" ] || mkdir $ROOTHOME/.ssh
[ -f "$ROOTHOME/.ssh/known_hosts" ] || touch $ROOTHOME/.ssh/known_hosts
[ `grep -c $SERVER $ROOTHOME/.ssh/known_hosts` = "0" ] && echo $FONSIG >> $ROOTHOME/.ssh/known_hosts
}

send_data () {
DATA=”mode=’$MODE’ wlmac=’$WLMAC’ mac=’$ETMAC’ fonrev=’$FONREV’ firmware=’$FIRMWARE’ chillver=’$CHILLVER’ thclver=’$THCLVER’ device=’$DEVICE’”
echo $DATA | $SSHPATH -T ${PORT:+ -p $PORT}${KEY:+ -i $KEY} “${USER}@${SERVER}” > $THINCLIENT
echo “sent: $DATA”
}

exec_start_mode () {
check_mac
sleep “$((0x$(head /dev/urandom | hexdump | awk ‘$2 > 0 {print $2}’ | head -n1) % 60 + 60))”
check_env
send_data
exec_check_thinclient
}

exec_cron_mode () {
check_mac
sleep “$((0x$(head /dev/urandom | hexdump | awk ‘$2 > 0 {print $2}’ | head -n1) % 3600))”
check_env
send_data
exec_check_thinclient
}

exec_check_thinclient () {
if [ -f $THINCLIENT ]
then
THINSIZE=”$(wc -c < $THINCLIENT)”

if [ $THINSIZE = "0" ]
then
echo “Ooops! $THINCLIENT is empty! No Internet available?”
elif [ $THINSIZE != "33" ]
then
echo “Something is different in $THINCLIENT:”
cat $THINCLIENT
else
echo “$THINCLIENT is the default one, deleted.”
rm -f $THINCLIENT
fi
else
echo “Ooops! $THINCLIENT does not exist!”
fi
}

case “$1″ in
start)
exec_start_mode
;;
cron)
exec_cron_mode
;;
check)
exec_check_thinclient
;;
*)
echo “Usage: `basename $0` {start|cron|check} [WLMAC ETMAC]”
exit
esac

Le damos permiso de ejecución:

root@kamikaZe:~# chmod +x /usr/bin/thinclient

Creamos /etc/init.d/thinclient

root@kamikaZe:~# vi /etc/init.d/thinclient

con el siguiente contenido:

Código:

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org

START=60

start() {
/usr/bin/thinclient start &
}

Le damos permiso de ejecución:

root@kamikaZe:~# chmod +x /etc/init.d/thinclient

Habilitar este script de inicio (esto creará automáticamente /etc/rc.d/S60thinclient):

root@kamikaZe:~# /etc/init.d/thinclient enable

Y reiniciamos la fonera.

root@kamikaZe:~# reboot

———————-

02/Jul/2007:

He añadido la posibilidad de simular múltiples foneras. Para ello teneis que pasarle la WLMAC y la ETMAC como en el siguiente ejemplo:

/usr/bin/thinclient start 00:18:11:11:11:11 00:18:11:11:11:10

Es decir, se le añaden las MAC de la otra Fonera al final como parámetros.
Si no se le indícan estos parámetros, cojerá las MAC de la Fonera actual.

Para obtener la WLMAC y ETMAC de nuestras Foneras, lo podemos hacer así:
root@kamikaZe:~# echo “WLMAC:” `ifconfig ath0 | grep HWaddr | sed -e “s/^.*HWaddr //” | sed -e “s/ //g`
root@kamikaZe:~# echo “ETMAC:” `ifconfig eth0 | grep HWaddr | sed -e “s/^.*HWaddr //” | sed -e “s/ //g`

Debeis añadir una línea más en el crontab para cada una de las Foneras indicando su WLMAC y ETMAC, como en el siguiente ejemplo:
Código:

0 * * * * /usr/bin/thinclient cron 00:18:11:11:11:11 00:18:11:11:11:10 | logger

Y otra en el /etc/init.d/thinclient:
Código:

/usr/bin/thinclient start 00:18:11:11:11:11 00:18:11:11:11:10 &

Con la colaboracion de Seguridadwireless.net

Subscribe to my RSS feed

Leave a Comment

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Comment spam protected by SpamBam