Emular fonera conectada con OpenWrt

De Seguridad Wireless
Saltar a: navegación, buscar

Instalación

wget http://www.tufonera.com/ftp/paquetes_instalacion_fonera/hearbeat.tar.gz
cd hearbeat
./instalar.sh

Thinclient para kamikaze

Nota: Con la instalación anterior es suficiente. Aquí queda explicado el método antiguo.
Link alternativo:

Actualizada para la versión de Fon 0.7.2-0

Situamos 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:

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

root@kamikaZe:~# crontab -e

Y creamos el script: /usr/bin/thinclient

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


#!/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:


#!/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