Portando 0trace al Motorola a1200 (output extraño)

Algoritmos, estructuras de datos, estrategias o patterns. Lenguaje' de programasión, vieja! Ce, loco, Ce! Páison, y todo eso.

Portando 0trace al Motorola a1200 (output extraño)

Notapor john_doe el Lun Ene 05, 2009 9:40 pm

Gente, así como hice andar nmap en mi Motorola a1200 ahora le tocó el turno a 0trace, no spe si lo conocen. Es un script que utiliza un binario (que en la versión original lo compila al vuelo, por cuestión de portabilidad supongo, pero lo modifique para que que corra el binario que yo ya generé). El tema es que el script me larga un output con unos errores que no tengo ni idea qué puede estar mal...miren les dejo el output y el script.

Este es la salida de la ejecución:

Código: Seleccionar todo
root:~/tmp/0trace$ ./0trace.sh usbl0 68.180.206.184 80
0trace v0.01 PoC by <lcamtuf@coredump.cx>
[+] Waiting for traffic from target on usbl0...
[+] Traffic acquired, waiting for a gap...
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITING+1]: bad number
[: $[WAITTIME+1]: bad number
[: $[WAITTIME+1]: bad number
[+] Target acquired: 192.168.1.2:1029 -> 68.180.206.184:80
(3894805874/3846873942).
[+] Setting up a sniffer...
[+] Sending probes...

TRACE RESULTS
-------------
$[0x01] 192.168.1.1
Target reached.

root:~/tmp/0trace$


Este es el script:

Código: Seleccionar todo
#!/bin/bash
# Port to Motorola a1200 - John Doe [lugsam@gmail.com]
# Added for debugging.
#set -x
# Modified the path to usleep and tcptraceroute to mkezx ones.
umask 077

# Modified for my convenience.
# T=`mktemp "$HOME/.0trace-XXXXXX"`
T=`mktemp ".0trace-XXXXXX"`

if [ "$2" = "" ]; then
  echo "Usage: $0 iface target_ip [ target_port ]" 1>&2
  exit 1
fi

if [ ! -x /ezxlocal/mmc/bin/usleep ]; then
  echo "[-] /ezxlocal/mmc/bin/usleep not found on this system, sorry." 1>&2
  exit 1
fi

if [ ! "`uname`" = "Linux" ]; then
  echo "[-] WARNING: Only Linux is believed to work fine with this utility." 1>&2
fi

# Disabled: we have no way to build it (no gcc).
# It is already built.
#make sendprobe >/dev/null
test -f ./sendprobe || exit 1

echo "0trace v0.01 PoC by <lcamtuf@coredump.cx>"

RULE="(tcp[13] & 0x17 == 0x10) and src host $2"
test "$3" = "" || RULE="$RULE and src port $3"

echo "[+] Waiting for traffic from target on $1..."

tcpdump -c 1 -s 200 -S -q -i "$1" -n -x "$RULE" >"$T" 2>/dev/null

if [ ! -s "$T" ]; then
  echo "[-] Something went wrong with tcpdump (check parameters)."
  rm -f "$T"
  exit 1
fi

echo "[+] Traffic acquired, waiting for a gap..."

WAITING=0
WAITTIME=0

while [ "$WAITTIME" -lt "80" ]; do
  tcpdump -c 1 -s 200 -S -q -i "$1" -n -x "$RULE" >"$T-2" 2>/dev/null &
  TPID="$!"
  usleep 100000

  while kill -0 "$TPID" 2>/dev/null; do
    WAITING=$[WAITING+1]
    if [ "$WAITING" -gt "20" ]; then
      kill "$TPID" 2>/dev/null
      break
    fi
    usleep 100000
  done
 
  test -s "$T-2" || break
  WAITING=0
  cat "$T-2" >"$T"
  WAITTIME=$[$WAITTIME+1]
 
done

if  [ "$WAITTIME" -ge "80" ]; then
  echo "[-] Couldn't find a sufficient period of no activity."
  exit 1
fi

cat "$T" | head -3 | tail -1 | sed 's/0x[0-9]*:/ /g' | cut -b25- >"$T-2"
read A1 A2 S1 S2 <"$T-2"
cat "$T" | head -1 | sed 's/IP //' | cut -d' ' -f2,4 | sed  's/\.\([0-9]*\)[: ]/ \1 /g' >"$T-2"
read DADDR DPORT SADDR SPORT <"$T-2"
rm -f "$T-2"

SEQ=`printf "%u" 0x$S1$S2`
ACK=`printf "%u" 0x$A1$A2`

echo "[+] Target acquired: $SADDR:$SPORT -> $DADDR:$DPORT ($SEQ/$ACK)."

echo "[+] Setting up a sniffer..."

tcpdump -l -s 200 -S -q -i "$1" -n -x "icmp or ($RULE)" >"$T" 2>/dev/null &
TPID="$!"

echo "[+] Sending probes..."

./sendprobe $SADDR $DADDR $SPORT $DPORT $SEQ $ACK
sleep 2
kill "$TPID" 2>/dev/null

echo
echo "TRACE RESULTS"
echo "-------------"

cat "$T" | sed 's/ IP//g;s/^[    ]*0x[0-9]*: //g' | grep -vE '45.0 00' | grep -iA1 'time.excee' | \
  grep -vE '^--' | cut -d' ' -f2 | \
  sed 's/\([0-9a-f][0-9a-f]\)[0][0]$/\1/g' | \
  awk '{if (NR%2) {SAVE=$0} else {print $0 " " SAVE}}' | \
  grep -v '[0-9a-f][0-9a-f][0-9a-f][0-9a-f]' | \
  while read -r num dat; do echo "$[0x$num] $dat"; done | sort -n -u

if grep -qF ': tcp 0' "$T"; then
  echo "Target reached."
else
  echo "Probe rejected by target."
fi

echo

rm -f "$T"

exit 1


Estos mensajes de [: $[WAITING+1]: bad number me suenan a una variable que tiene un contenido equivocado...pero la verdad que miré de arriba abajo el script y no veo qué cosa puede ser...segunro alguna boludez que ustedes van a ver al toque y yo no :D
Estoy casi seguro que no fue algo que le pifie yo porque lo que modifiqué fueron dos paths y un par de líneas que no creo que tuvieran que ver con esa variable loca...

El original puede bajarse de aca y acá explica como usarlo.

Bueno, se agradece cualquier soga que puedan tirarme, incluso si solo se acercan al pozo a verme XD

¡Abrazo!
A veeer...
homer@head:~# ln -s /dev/null /dev/brain
homer@head:~# doh!
bash: doh!: command not found
Connection to head closed.
Avatarde Usuario
john_doe
Amigo del Jefe
 
Posts: 133
Registrado: Dom Ene 07, 2007 11:44 am

Portando 0trace al Motorola a1200 (output extraño)

Sponsor

Sponsor
 

Volver a Programación y Diseño de Sófwer.

¿Quién está conectado...?

Usuarios navegando este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron