Andei procurando por um equipamento para análise de rede e acabei caindo no EtherScope II, da Fluke Networks. Apesar do preço, que gira em torno de dez mil dólares para o produto e alguns acessórios, continuei pesquisando sobre ele. As fotos do site eram muito pequenas e iniciei uma procura por fotos com resolução maior. Encontrei algumas no site da BlackBox, bem melhores. Até aí nada demais, se não fosse eu ter visto o símbolo da Trolltech no cantinho da tela … Como seria óbvio desconfiar, o EtherScope também roda Linux e é ARM. Óbvio também seria eu ir dar uma analisada no que eles colocaram dentro dele …

Foi interessante notar que a Fluke Networks seguiu a cartilha da GPL2, colocando um link claro, sem enrolação ou custos adicionais para o download do software modificado por eles. Conjunto básico de software embarcado para Linux, com algumas pequenas surpresas. Notei que eles estão usando o webserver da GoAhead, com suporte a SSL e RSA e, aparentemente, usado por várias empresas grande. Outro programa menos usual foi o Microcom, um emulador de terminal com suporte a scripting. Também vi um VNC server e o konqueror lá dentro. O kernel original era versão 2.4.19 mas não fui olhar as modificações.
Existe uma opção de update de firmware no site. Um programa da Fluke baixa a atualização para o disco ou equipamento. Baixei para o disco o EtherScopeUpdate.zip e perdi mais alguns minutos com o pacote.

Usando técnicas já vistas por aqui, podemos extrair o kernel do sistema, que está a partir da posição 11340, sem grandes problemas.
$ gunzip EtherScopeUpdate.zip
Archive: EtherScopeUpdate.zip
inflating: cardbus-050304
inflating: paramet-102705
inflating: pcmcia-120203
inflating: root-2-5-10
inflating: splashscreen-011504
inflating: txrx-100406
inflating: zImage-product-030304
inflating: update.dat
$ dd if=zImage-product-030304 of=kernel.gz skip=11340 bs=1
938812+0 registros entrando
938812+0 registros saindo
938812 bytes (939 kB) copiados, 4,39043 segundo, 214 kB/s
$ gunzip -v kernel.gz
kernel.gz:
gzip: kernel.gz: decompression OK, trailing garbage ignored
51.0% — replaced with kernel
Também não teve segredos para abrir o sistema de arquivos, não havia nenhuma proteção.
$ mkdir romfs
$ sudo mount -t cramfs -o loop root-2-5-10 romfs
$ cd romfs/
$ ls -l
total 16
drwxrwxrwx 1 root root 2692 1969-12-31 21:00 bin
drwxrwxrwx 1 root root 3804 1969-12-31 21:00 dev
lrwxrwxrwx 1 root root 13 1969-12-31 21:00 etc -> mnt/ramfs/etc
drwxrwxrwx 1 root root 176 1969-12-31 21:00 flukenet
drwxrwxrwx 1 root root 16 1969-12-31 21:00 home
drwxrwxrwx 1 root root 3264 1969-12-31 21:00 lib
-rwxrwxrwx 1 root root 335 1969-12-31 21:00 linuxrc
drwxrwxrwx 1 root root 104 1969-12-31 21:00 mnt
drwxrwxrwx 1 root root 0 1969-12-31 21:00 proc
drwxrwxrwx 1 root root 72 1969-12-31 21:00 ramfs
lrwxrwxrwx 1 root root 3 1969-12-31 21:00 sbin -> bin
lrwxrwxrwx 1 root root 13 1969-12-31 21:00 tmp -> mnt/ramfs/tmp
drwxrwxrwx 1 root root 36 1969-12-31 21:00 usr
lrwxrwxrwx 1 root root 13 1969-12-31 21:00 var -> mnt/ramfs/var
$ cat linuxrc
#!/bin/sh
/bin/mount -n -t proc proc /proc
/bin/mount -n -t ramfs ramfs /mnt/ramfs
/bin/busybox cp -dar /ramfs/* /mnt/ramfs
/flukenet/bin/cpypersist
/bin/mount -t jffs2 /dev/mtdblock5 /mnt/home
/bin/hostname –file /mnt/home/Settings/HOSTNAME
/bin/ifconfig lo 127.0.0.1 netmask 255.255.255.0 broadcast 255.255.255.255
exec /sbin/init
Alguma diversão pode ser encontrada no diretório flukenet. Note que estão usando o qpe.
$ ls flukenet/
bin classes Help libs modules qpe qt scripts share web
Cuidado, Fluke, tem um pessoal por aí doido pra copiar … Dá pra fazer um EtherScopeXingLing por bem menos (e, obviamente, longe da qualidade da Fluke) … Bom, eu paro por aqui. O resto fica como dever de casa.

#1 by acassis on março 5, 2008 - 1:35 pm
Será que este firmware roda no QEMU como os firmware dos PDAs?
Brinquedinho caro eim? O jeito é continuar usando a placa wireless em modo monitor, rs.
Alan
#2 by jedizone on março 6, 2008 - 12:56 am
Tem chance de rodar, viu ? Preciso dar um jeito de testar de forma decente este qemu para arm. Talvez o Poky Linux seja uma boa saída pra isso.
http://pokylinux.org/