GDH Press: Blog
 
RSS

Entendendo os ataques de ARP poisoning e MAC flooding

novembro 12, 2008 – 7:24 pm

Sniffers como o Wireshark podem ser usandos tanto de forma legítima, permitindo que você monitore o tráfego da rede e localize problemas, quanto de forma maliciosa. Se você estiver em uma rede local, com micros ligados através de um hub ou através de uma rede wireless, outro usuário pode usá-lo para capturar todas as suas transmissões.

Isto é extremamente perigoso. Qualquer um que tenha a chance de plugar um notebook na rede ou colocá-lo dentro da área de cobertura de sua rede wireless, poderá capturar dados e senhas suficientes para comprometer boa parte do sistema de segurança da sua empresa. Apenas conexões feitas através do SSH e outros programas que utilizam encriptação forte estariam a salvo.

Naturalmente, além de alguém de fora, existe a possibilidade de um dos seus próprios funcionários resolver começar a brincar de script kiddie, pregando peças nos outros e causando danos. Enfim, a menos que você esteja em uma simples rede doméstica, onde exista uma certa confiança mútua, utilizar um hub burro (onde os dados são simplesmente retransmitidos em todas as portas) é simplesmente um risco grande demais a correr.

Ao utilizar um hub-switch, o risco é um pouco menor, já que, por default, os pacotes são enviados apenas às portas corretas. Entretanto, muitos sistemas são vulneráveis a ataques de ARP poisoning, sem falar dos ataques de MAC flooding, que permitem burlar a proteção. Vamos então a uma explicação mais detalhada de como eles funcionam.

No ARP poisoning, o micro do atacante envia pacotes com respostas forjadas para requisições ARP de outros micros da rede. Como vimos no capítulo 4, o ARP é utilizado para descobrir os endereços MAC dos demais micros da rede, já que os switches não entendem endereços IP. Esses pacotes forjados fazem com que os outros micros passem a enviar seus pacotes para o micro do atacante, que é configurado para capturar as transmissões e retransmitir os pacotes originais para os destinatários corretos.

A rede continua funcionando normalmente, mas agora o atacante tem chance de logar todo o tráfego, usando o Wireshark ou outro sniffer. Felizmente, o Wireshark também pode ser usado para perceber as anormalidades na rede e chegar até o espertinho.

Os ataques de MAC flooding, por sua vez, tem como alvo o switch da rede e trabalham dentro de um princípio bastante simples. O switch possui uma área limitada de memória para armazenar a tabela com os endereços MAC dos micros da rede (que permite que ele encaminhe as transmissões para as portas corretas), de forma que, ao receber um grande número de pacotes com endereços MAC forjados, a tabela é completamente preenchida com os endereços falsos, não deixando espaço para os verdadeiros.

Nessa situação, existem apenas duas opções: ou o switch simplesmente trava, derrubando a rede, ou abandona o uso da tabela de endereços e passa a trabalhar em modo failopen, onde os frames são simplesmente retransmitidos para todas as portas, da mesma forma que um hub burro, permitindo que o atacante capture todo o tráfego da rede (até que o switch seja reiniciado).

Como switches que travam não são uma boa propaganda, os fabricantes normalmente utilizam a segunda opção, o que faz com que a maioria dos switches baratos e quase todos os hub-switches sejam vulneráveis a esse tipo de ataque. Leia mais »

Script paro o Vivo Zap no Linux (atualizado)

novembro 12, 2008 – 2:05 pm

As conexões móveis estão se tornando as sucessoras do acesso discado, no sentido de que estão disponíveis em praticamente qualquer lugar, atendendo até mesmo as áreas mais afastadas, onde outras modalidades de conexões não estão disponíveis, além de fazerem a alegria de quem precisa de uma conexão contínua em qualquer lugar para trabalhar ou manter contato com os amigos.

Embora existam muitas arestas a aparar, as conexões via 3G são bem suportadas no Linux, muito embora a configuração nem sempre seja tão simples quando poderia.

Uma avanço importante foi a adição do suporte a modems 3G no NetworkManager, que já está disponível para os usuários do Ubuntu 8.10. Ao plugar um modem compatível, ele pergunta se você quer configurar a conexão e a partir daí a opção da rede 3G fica disponível na lisa de redes, pronta para ser ativada quando necessário. Entretanto, o NetworkManager ainda não oferece suporte a conexões via Bluetooth e nem atende a usuários de todas as distribuições.

Recentemente, recebi alguns equipamentos da Vivo para testes (agradecimentos ao Átila e ao Celso), o que me permitiu elaborar um script de conexão cobrindo as principais formas de conexão usando um plano de dados no Linux. Usando o script você pode conectar usando:

1- Um modem USB (o script inclui regras para o udev e workarounds para ativar modems Huawei E156, Huawei E220/226 e Aiko 82D mesmo em distribuições antigas).
2- Um celular ou smartphone plugado na porta USB, sendo usado como modem. Nos Nokia você precisa apenas ligar o cabo e escolher o modo PC Suite.
2- Conexão via Bluetooth DUN (o modo de compartilhamento usado nos Nokia e na maioria dos outros aparelhos)
3- Conexão via Bluetooth PAN (o modo usado no Windows Mobile)

A conexão via modems USB é relativamente simples, mas as outras duas são um pouco mais complicadas, mas o script ajuda a configurar a conexão fazendo apenas algumas perguntas simples.

Intencionalmente, ele foi escrito usando uma interface o mais simples possível, utilizando apenas menus de texto, de forma a ser o mais compatível possível e rodar em qualquer distribuição sem a necessidade de instalar pacotes adicionais. Para as conexões via USB ele precisa apenas que o wvdial esteja instalado (e que o Kernel em uso ofereça suporte ao modem) e para as conexões via Bluetooth ele precisa também do bluez, que vem pré-instalado em quase todas as distribuições atuais.

Ele inclui também alguns workarounds para problemas comuns (como o ajuste da rota padrão) e mensagens explicativas para erros comuns.

Baixe aqui: http://www.gdhpress.com.br/blog/arquivos/vivozap.zip

O arquivo inclui o script "conectar-vivoza" original, juntamente com uma versão com codificação ISO-8859-1 (que você pode utilizar caso os caracteres acentuados estejam aparecendo trocados), o arquivo huawei.out, que é necessário para alguns modems e pacotes do wvdial para distribuições baseadas no Debian, que você pode utilizar caso não tenha outra conexão disponível para instalar via apt. 

Para usar o script, valem os passos de sempre:

1- Baixe o arquivo .zip e descompacte-o (no Linux você pode descompactar usando o comando "unzip", como em "unzip vivozap.zip).

2- Acesse a pasta que será criada e, caso necessário, transforme o script em executável usando o comando "chmod +x", como em:
$ chmod +x conectar-vivozap

3- Logue-se como root usando o comando "su".

4- Execute o script, usando o "./conectar-vivozap" ou "sh conectar-vivozap":
# ./conectar-vivozap

Da primeira vez que é executado, o script faz as perguntas necessárias e gera um arquivo de configuração e a partir da segunda conexão ele conecta diretamente, usando a configuração anteriormente gerada. A idéia central é tornar a conexão o mais simples possível.

Se você está curioso em ver os passos que são executados pelo script, abra o arquivo usando um editor de textos, como o gedit ou o kwrite. O código está bem comentado.

Por enquanto o script funciona apenas quando executado diretamente como root, devido à necessidade de modificar a configuração do pppd e do bluetooth. Apesar do nome, ele pode ser usado também para conexões com outras operadoras, basta substituir a linha "vivomode="1" por "vivomode="0" no início do script. O arquivo foi gerado com codificação UTF-8 (que é usada por padrão no Ubuntu e na maioria das outras distribuições atuais. Se estiver vendo caracteres estranhos, baixe a versão alternativa com codificação ISO-8859-1 ou mude a codificação para UTF-8 nas configurações do terminal ou do editor de textos.

Para quem está curioso, aqui vai o "código fonte" do script (o Wordpress troca as aspas e alguns outro caracteres por causa do UTF-8, por isso não tente copiar o texto diretamente. Em vez disso, baixe usando o link acima).

#!/bin/sh
# Script para conectar no Vivo Zap usando um smartphone como modem
# Por Carlos E. Morimoto
# http://www.gdhpress.com.br
# http://www.guiadohardware.net
# Pode ser alterado e redistribuído livremente dentro dos termos da GPL
# Caracteres estranhos? Mude a codificação do editor para UTF-8# Mude de 1 para 0 para que o script pergunte qual operadora utilizar:
vivomode="1"# Ajusta o charset
export LANG=pt_BR.UTF-8
export CHARSET=UTF-8
clear
echo 'Este é um script para conectar no Vivo Zap usando um modem 3G USB ou um
smarthphone que permita o acesso via DUN ou PAN, via Bluetooth. Escrito por
Carlos Morimoto <http://www.gdhpress.com.br>, em parceria com a Vivo.Versões atualizadas podem ser baixadas em:
http://www.gdhpress.com.br/blog/script-vivo-zap/
'
sleep 1

# Verifica se o script está sendo executado pelo root.
# Por enquanto ele não funciona através do sudo por causa do uso do echo para
# escrever em arquivos de configuração.
if [ "`id -u`" != "0" ]; then
echo 'Este script precisa ser executado como root. Digite "su -" para se logar
como root e execute o script novamente.
Se você está usando o Ubuntu, defina a senha de root usando o comando
"sudo passwd" e em seguida logue-se usando o "su -".
Para facilitar, você pode copiar este script para a pasta /usr/local/bin/, de
forma a não precisar mais executá-lo usando o caminho completo ou o ./
'
read pausa
exit 0
fi

# Funções usadas ao longo do scrip

bpairing()
{

# Fecha o kbluetoothd
killall kbluetoothd.real &>/dev/null

echo "Localizando aparelhos com bluetooth nas proximidades:"
echo "
hcitool scan
echo "
echo 'Digite o endereço do endereço bluetooth do seu aparelho, conforme mostrado
na lista acima (dica: você pode colar usando o botão do meio do mouse).
Se por acaso ele não aparecer, verifique se ele está configurado em modo
"Visível por todos", ou informe o endereço manualmente. Nos Nokia, você pode
descobrir o endereço do bluetooth digitando *#2820#.
Ex: 00:21:FE:CF:A2:E1'
read blueaddr
echo blueaddr=\"$blueaddr\" >> /home/$USER/.3gconfig

echo "
echo 'Testando a conexão com o smartphone'
l2ping -c 3 $blueaddr
echo "

echo "
echo 'Digite o PIN que será usado ao fazer o pairing entre o PC e o smartphone
O PIN é um código numérico de segurança, que você digita nos dois aparelhos ao
fazer o pareamento. É recomendável escolher um código com pelo menos 8 dígitos.
Ex: 2985679833'
read pin
echo "pin=\"$pin\"" >> /home/$USER/.3gconfig

# Descobre o nome da maquina. Se algo der errado, o nome é 'pc'
nome=`cat /etc/hostname`
if [ -z "$nome" ]; then
nome="pc"
fi

# Gera a configuração do hcid:
cat <<EOF >/etc/bluetooth/hcid.conf
options {
autoinit yes;
security auto;
pairing multi;
passkey "$pin";
}
device {
name "$nome";
class 0×3e0100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}
EOF

# Coloca o PC em modo discoverable
cd /var/lib/bluetooth/??:??:??:??:??:??
sed -i -e "s/mode connectable/mode discoverable/g" config &>/dev/null
verif=`cat config | grep discoverable`
if [ -z "$verif" ]; then echo "mode discoverable" >> config; fi
cd /

# Reinicia o bluetooth e ativa a porta
/etc/init.d/bluetooth restart
hciconfig hci0 up &>/dev/null
}

bcanal()
{
echo "
echo 'Preciso agora saber qual é o canal usado pelo DUN no seu aparelho.
Os aparelhos da Nokia usam o canal 2 e aparelhos de outras marcas usam
geralmente o canal 1. Use o comando "sdptool search DUN" para descobrir qual
canal seu aparelho usa, em caso de dúvidas.

2 : Aparelhos da Nokia
1 : Aparelhos de outros fabricantes

Ex: 2'
read canal
channel="channel $canal"
echo channel=\"channel $canal\" >> /home/$USER/.3gconfig

# Gera a configuração do rfcomm
echo 'rfcomm0 {' > /etc/bluetooth/rfcomm.conf
echo '        bind yes;' >> /etc/bluetooth/rfcomm.conf
echo "        device $blueaddr;" >> /etc/bluetooth/rfcomm.conf
echo "        $channel;" >> /etc/bluetooth/rfcomm.conf
echo "        comment \"$nome\";" >> /etc/bluetooth/rfcomm.conf
echo '}' >> /etc/bluetooth/rfcomm.conf
}

bmesg()
{
echo "
echo 'Falta agora o mais importante, que é fazer o pareamento entre o PC e
o smartphone. No aparelhos da Nokia com o S60, isso é feito através do
Configuraçs. > Conectiv. > Bluetooth. Use o direcional para a direita para
acessar o  menu de dispositivos pareados e acesse o Opções > Novo Disp.
pareado > Mais dispositivos para iniciar a busca. Assim que o PC aparecer
na lista, clique no Parar e clique sobre ele para fazer o pairing. Quando
perguntado, informe o mesmo código PIN que definiu na opção anterior e
responda que sim quando ele perguntar se você deseja que o PC possa
abrir conexões automaticamente.
Obs: Se você está usando o Ubuntu, faça o pairing usando o applet Bluetooth
ao lado do relógio, clicando no Configurar novo dispositivo.
Se você já fez o pairig anteriormente, não é necessário fazê-lo de novo.

Depois de feito o pareamento, pressione Enter para continuar.'
read pausa
}

errowvdial()
{
echo 'Não consegui encontrar o wvdial, que preciso para estabelecer a conexão.
Você pode instalá-lo usando o gerenciador de pacotes, ou diretamente via linha
de comando:

No Ubuntu, Kubuntu, Kurumin, Satux ou outra distribuição derivada do Debian use:
apt-get update
apt-get install wvdial

No Mandriva, use:
urpmi wvdial

No Fedora, use:
yum install wvdial

No OpenSUSE, use:
zypper install wvdial

(se por acaso ele estiver instalado em uma localização fora do padrão, crie
o link /usr/bin/wvdial, apontando para ele)'
}

huaweiout()
{
if [ -e "huawei.out" ]; then
echo '
Arquivo huawei.out encontrado. Gostaria de executá-lo para ativar o modem?
(Pressione "s" para executá-lo ou qualquer outra tecla para ignorar
'
read resposta
if [ "$resposta" = "s" ]; then
./huawei.out
echo "Esperando 15 segundos para que o modem seja ativado…"
sleep 15
jarodei="1"
fi
fi
}

checaporta()
{

# Checa se o huawei.out está disponível
huaweiout
echo "Detectando o modem USB…"
sleep 1

if [ -e "/dev/ttyACM0" ]; then
echo "Modem encontrado em /dev/ttyACM0"; sleep 2
porta="/dev/ttyACM0"
echo 'porta="/dev/ttyACM0"' >> /home/$USER/.3gconfig

elif [ -e "/dev/ttyUSB0" ]; then
echo "Modem encontrado em /dev/ttyUSB0"; sleep 2
porta="/dev/ttyUSB0"
echo 'porta="/dev/ttyUSB0"' >> /home/$USER/.3gconfig

elif [ -e "/dev/ttyUSB1" ]; then
echo "Modem encontrado em /dev/ttyUSB1"; sleep 2
porta="/dev/ttyUSB1"
echo 'porta="/dev/ttyUSB1"' >> /home/$USER/.3gconfig

elif [ -e "/dev/ttyUSB2" ]; then
echo "Modem encontrado em /dev/ttyUSB2"; sleep 2
porta="/dev/ttyUSB2"
echo 'porta="/dev/ttyUSB2"' >> /home/$USER/.3gconfig

elif [ -e "/dev/usb/ttyUSB0" ]; then
echo "Modem encontrado em /dev/usb/ttyUSB0"; sleep 2
porta="/dev/usb/ttyUSB0"
echo 'porta="/dev/usb/ttyUSB0"' >> /home/$USER/.3gconfig
else
echo 'Não consegui localizar o modem. No Linux, modems GSM USB (e smartphones
em modo de acesso à web conectados ao PC via USB) são acessados pelo sistema
através da porta /dev/ttyACM0 ou /dev/ttyUSB0 , que é automaticamente criada
ao plugar o modem.

Se você está usando um smartphone, experimente desligá-lo, ligá-lo e conectá-lo
novamente. Se está usando um aparelho da Nokia, certifique-se de que ele está
configurado para se conectar ao PC em modo PC suíte (a configuração vai no
Conectividade > USB). Em alguns aparelhos novos, como o E71 está disponível o
modo "Conect. PC à Internet", mas ele não funciona no Linux. Use o modo PC
Suíte.

Se você está usando um modem huawei E220 ou E226 em uma distribuição antiga
(com um Kernel anterior ao 2.6.20), você precisa executar o arquivo huawei.out
para ativar o modem antes de executar este script. Veja a dica no:
http://wiki.ubuntu-br.org/TimWeb

Se você está usando o Kurumin 7 (ou outra distribuição baseada no Debian Etch)
pode baixar uma versão pré-compilada do arquivo no:
http://www.gdhpress.com.br/blog/arquivos/k7/huawei.out

Salve o arquivo huawei.out na mesma pasta onde está este script e passarei a
perguntar se quer executá-lo.

Se por acaso seu modem utiliza uma porta diferente, você pode indicá-la aqui,
e deixar que o script tente utilizá-la. Caso contrário pressione Ctrl+C para
sair.

Especifique a porta ou pressione Ctrl+C para sair
Ex: /dev/usb/ttyUSB1'
read porta

if [ -n "$porta" ]; then
echo "Usando $porta"
porta="/dev/usb/ttyUSB0"
echo 'porta="/dev/usb/ttyUSB0"' >> /home/$USER/.3gconfig
else
exit 1
fi
fi
}

checarrota()
{
echo "
echo 'Muitas distribuições antigas (anteriores a 2008) usam uma versão bugada do
wvdial que não altera a rota padrão depois de conectado, o que faz com que o
sistema continue tentando acessar através da placa de rede ou outra conexão já
existente em vez de acessar usando a conexão 3G, o que causa o famoso "conecta
mas não navega". Nesses casos, é necessário rodar o comando "route del default"
antes de estabelecer a conexão. Se este é o seu caso, responda "s" e farei isso
para você.'
echo "
echo 'Remover a rota padrão antes de conectar? (s/n)'
read resposta

if [ "$resposta" = "s" ]; then
delroute="1"; echo 'delroute="1"' >> /home/$USER/.3gconfig
else
delroute="0"; echo 'delroute="0"' >> /home/$USER/.3gconfig
fi
}

configoperadora()
{

if [ "$vivomode" = "1" ]; then

# Configurações da Operadora
user="vivo"
pass="vivo"
telc="*99#"
APN="zap.vivo.com.br"

else

echo '
Qual operadora você está usando?

1) Vivo
2) Claro
3) TIM
4) Oi
5) Giro
6) Outra (configuração manual)

(responda 1, 2, 3, 4, 5 ou 6)
'
read operadora
case $operadora in
1)
user="vivo"
pass="vivo"
telc="*99#"
APN="zap.vivo.com.br"
;;
2)
user="claro"
pass="claro"
telc="*99***1#"
APN="bandalarga.claro.com.br"
;;
3)
user="tim"
pass="tim"
telc="*99#"
APN="tim.br"
;;
4)
user="oi"
pass="oi"
telc="*99***1#"
APN="gprs.oi.com.br"
;;
5)
user="giro@giro.click21.com.br"
pass="giro"
telc="#777"
APN="giro.click21.com.br"
;;
6)
echo '
Qual o telefone de discagem?
ex: *99#
'
read telc
echo '
Qual a APN da operadora?
ex: operadora.com.br
'
read APN
echo '
Qual o login de usuário?
ex: operadora
'
read user
echo '
Qual a senha?
ex: operadora
'
read pass
;;
*)
echo 'Ops, você digitou uma opção inválida. Este script ainda não foi
devidamente instruído a lidar com condições inesperadas, por isso será fechado.'
exit 1
;;
esac

echo "user=\"$user\"" >> /home/$USER/.3gconfig
echo "pass=\"$pass\"" >> /home/$USER/.3gconfig
echo "telc=\"$telc\"" >> /home/$USER/.3gconfig
echo "APN=\"$APN\"" >> /home/$USER/.3gconfig

fi

}

reconfigurar()
{

addudevrules

echo '
Este script permite conectar usando um modem 3G ligado na porta USB (ou um
smartphone ligado na porta USB) ou um smartphone ligado via Bluetooth.

Para os modems USB, você provavelmente não precisará fazer nada, já que o script
é capaz de detectar o modem sozinho. Para conectar via Bluetooth, é necessário
fazer o pareamento entre o PC e o smartphone, o que faremos no passo seguinte.

O script usa o wvdial para fazer a conexão, por isso é necessário que ele
esteja instalado. Você pode instalá-lo usando o gerenciador de pacotes, basta
fazer uma busca por "wvdial."'
echo "
echo 'Qual tipo de aparelho você está usado?'
echo "
echo '1 Modem USB, ou um smartphone ligado na porta USB'
echo '2 Smartphone com o Windows Mobile 6, com o Compartilhamento de Internet'
echo '3 Smartphone da Nokia ou outro com suporte a DUN via Bluetooth'
echo "
echo "(responda 1, 2 ou 3)"
read resposta
echo "

# Só por via das dúvidas…
mkdir /home/$USER/ &>/dev/null

if [ "$resposta" = "1" ]; then
conn="usb"
echo 'conn="usb"' > /home/$USER/.3gconfig
elif [ "$resposta" = "2" ]; then
conn="pan"
echo 'conn="pan"' > /home/$USER/.3gconfig
elif [ "$resposta" = "3" ]; then
conn="dun"
echo 'conn="dun"' > /home/$USER/.3gconfig
else
echo 'Ops, você digitou uma opção inválida. Este script ainda não foi
devidamente instruído a lidar com condições inesperadas, por isso será fechado.'
exit 1
fi

configoperadora

# Função para conexão USB
if [ "$conn" = "usb" ]; then
echo 'Certifique-se de que seu modem GSM ou smartphone está ligado à porta USB.'
sleep 2
checaporta
checarrota
ativafirewall
# Esta opção é ncessária para que o sistema consiga obter o DNS ao conectar
opt1=`cat /etc/ppp/options | sed -e '/^\#/D' | grep "ipcp-max-failure 30"`
[ -z "$opt1" ] && echo 'ipcp-max-failure 30' >> /etc/ppp/options
# E sem essas o Aiko 82D, Huawei E156 e outros modelos não conectam
opt2=`cat /etc/ppp/options | sed -e '/^\#/D' | grep "asyncmap 0xa0000"`
[ -z "$opt2" ] && echo 'asyncmap 0xa0000' >> /etc/ppp/options
opt3=`cat /etc/ppp/options | sed -e '/^\#/D' | grep "mru 1500"`
[ -z "$opt3" ] && echo 'mru 1500' >> /etc/ppp/options
opt4=`cat /etc/ppp/options | sed -e '/^\#/D' | grep "refuse-chap"`
[ -z "$opt4" ] && echo 'refuse-chap' >> /etc/ppp/options
fi

# Função para Bluetooth DUN
if [ "$conn" = "dun" ]; then
bpairing
bcanal
bmesg
checarrota
porta="/dev/rfcomm0"
echo 'porta="/dev/rfcomm0"' >> /home/$USER/.3gconfig
ativafirewall
fi

# Função para Bluetooth PAN (Windows Mobile)
if [ "$conn" = "pan" ]; then
bpairing
bmesg
# Precisamos remover a rota padrão antes de ativar a conexão, já que não
# usamos o wvdial
delroute="1"
echo 'delroute="1"' >> /home/$USER/.3gconfig
fi

# Pergunta sobre o DNS
echo "
echo "Usar os servidores DNS do provedor? (s/n)"
read resposta
if [ "$resposta" = "n" ]; then
echo 'Digite o servidor de DNS primário'
echo 'ex: 208.67.222.222'
read dns1
echo "dns1=$dns1" >> /home/$USER/.3gconfig
echo "
echo 'Digite o servidor de DNS secundário'
echo 'ex: 208.67.220.220'
read dns2
echo "dns2=$dns2" >> /home/$USER/.3gconfig
autodns="off"
echo 'autodns="off"' >> /home/$USER/.3gconfig
else
autodns="on"
echo 'autodns="on"' >> /home/$USER/.3gconfig
fi
}

ativafirewall()
{
echo "
echo 'Ativar o firewall para a conexão da Internet? (s/n)'
read resposta
if [ "$resposta" = "s" ]; then
sifirewall="on"; echo 'sifirewall="on"' >> /home/$USER/.3gconfig
else
sifirewall="off"; echo 'sifirewall="off"' >> /home/$USER/.3gconfig
fi
}

checafirewall()
{
if [ "$sfirewall" = "on" ]; then
echo "Ativando o firewall…"
sleep 1
echo "iptables -A INPUT -p tcp -i ppp0 --syn -j DROP" >> /etc/ppp/ip-up
echo "iptables -A INPUT -p udp -i ppp0 --dport 1:1024 -j DROP" >> /etc/ppp/ip-up
fi
}

checadns()
{
if [ "$autodns" = "off" ]; then
echo "echo \"nameserver $dns1\" > /etc/resolv.conf" > /etc/ppp/ip-up
echo "echo \"nameserver $dns2\" >> /etc/resolv.conf" >> /etc/ppp/ip-up
else
echo " > /etc/ppp/ip-up
fi
}

addudevrules()
{
checaaiko=`lsusb | grep 19d2:2000`
if [ -n "$checaaiko" ]; then
echo "
echo "Modem Aiko 82E detectado, adicionando regras do UDEV…"
sleep 1
echo 'SUBSYSTEM=="block", \
ACTION=="add", \
SYSFS{idVendor}=="19d2", \
SYSFS{idProduct}=="2000", \
OPTIONS="ignore_device"

SUBSYSTEM=="usb", \
SYSFS{idVendor}=="19d2", \
SYSFS{idProduct}=="0001", \
RUN+="/sbin/modprobe usbserial vendor=0×19d2 product=0×0001"
' > /etc/udev/rules.d/99_aiko82e.rules
udevcontrol reload_rules
echo '
Desconecte e em seguida reconecte o modem para que ele seja detectado
(pressione Enter para continuar)'
read pausa
echo "Aguardando 15 segundos para que o modem seja ativado…"
sleep 15
fi

checahuawei=`lsusb | grep 12d1:1003`
if [ -n "$checahuawei" ]; then
echo "
echo "Modem Huawei E156/220/226 detectado, adicionando regras do UDEV…"
sleep 1
echo 'SUBSYSTEM=="block", \
ACTION=="add", \
SYSFS{idVendor}=="12d1", \
SYSFS{idProduct}=="1003", \
OPTIONS="ignore_device"

SUBSYSTEM=="usb", \
SYSFS{idVendor}=="12d1", \
SYSFS{idProduct}=="1003", \
RUN+="/sbin/modprobe usbserial vendor=0×12d1 product=0×1003"
' > /etc/udev/rules.d/99_huawei.rules
udevcontrol reload_rules
fi

}

# Início do script

# Verifica o arquivo de configuração e decide entre usá-lo ou gerar um novo
if [ -e "/home/$USER/.3gconfig" ]; then
echo "
echo "Configuração encontrada em /home/$USER/.3gconfig:"
echo '
Pressione Enter para continuar (e usar a configuração salva) ou
pressione "c" (e depois Enter) se quiser reconfigurar o script.

Pressione Enter para continuar ou c para reconfigurar:
'
read resposta

if [ "$resposta" = "c" ]; then

# Se respodido "c", reconfigura
rm -f /home/$USER/.3gconfig
reconfigurar

else

# Senão, carrega a configuração
echo "Carregando configuração em /home/$USER/.3gconfig"
sleep 1
. /home/$USER/.3gconfig

fi

else

# Se não encontra o script, reconfigura
reconfigurar

fi

# Terminada a configuração, a conexão é ativada:

# Deleta a rota padrão caso tenha sido solicitado pelo usuário
if [ "$delroute" = "1" ]; then
echo "Desativando rota padrão (para que seja usada a conexão 3G)"
echo "route del default"
route del default
fi

# Função para conexão USB

if [ "$conn" = "usb" ]; then

# Carrega o módulo do kernel
modprobe usbserial

# Checa se o huawei.out está disponível
if [ "$jarodei" = "1" ]; then
echo "
else
huaweiout
fi

# Sem isso o ppp não consegue alterar o DNS ao conectar
chmod 666 /etc/resolv.conf

# Substitui o DNS do provedor caso solicitado
checadns

# Ativa o firewall, caso solicitado
checafirewall

echo '[Dialer 3g]' > /etc/wvdial.conf
echo Modem = $porta >> /etc/wvdial.conf
echo Baud = 921600 >> /etc/wvdial.conf
echo DialCommand = ATDT >> /etc/wvdial.conf
echo Check Def Route = on >> /etc/wvdial.conf
echo 'FlowControl = Hardware(CRTSCTS)' >> /etc/wvdial.conf
echo Username = $user >> /etc/wvdial.conf
echo Password = $pass >> /etc/wvdial.conf
echo Phone = $telc >> /etc/wvdial.conf
echo Stupid mode = 1 >> /etc/wvdial.conf
echo Auto Reconnect = on >> /etc/wvdial.conf
echo "Auto DNS = $autodns" >> /etc/wvdial.conf
echo Init1 = ATZ >> /etc/wvdial.conf
echo 'Init2 = ATQ0 V1 E1 S0=0 &C1 &D2' >> /etc/wvdial.conf
echo Init3 = AT+CGDCONT=1,\"IP\",\"$APN\" >> /etc/wvdial.conf
echo ISDN = 0 >> /etc/wvdial.conf
echo Modem Type = Analog Modem >> /etc/wvdial.conf

if [ -e "/usr/bin/wvdial" ]; then

echo 'discando…

Pressione Ctrl+C para encerrar a conexão.

wvdial 3g'
sleep 1
wvdial 3g

# Caso tenha deletado a rota padrão no início do script, recarrega a
# configuracao da rede, restaurando a rota padrao
if [ "$delroute" = "1" ]; then
/etc/init.d/networking restart &>/dev/null
/etc/init.d/NetworkManager restart &>/dev/null
fi
exit 0

else
errowvdial
fi

fi

# Função para Bluetooth DUN

if [ "$conn" = "dun" ]; then

# Fecha o kbluetoothd
killall kbluetoothd.real &>/dev/null

# Reinicia o bluetooth e ativa a porta
/etc/init.d/bluetooth restart
hciconfig hci0 up

echo "Gerando configuracao do wvdial…"

sed -i -e "/lcp-echo-interval 30/D" /etc/ppp/options
sed -i -e "/lcp-echo-failure 4/D" /etc/ppp/options

# Sem isso o ppp não consegue alterar o DNS ao conectar
chmod 666 /etc/resolv.conf

# Substitui o DNS do provedor caso solicitado
checadns

# Ativa o firewall, caso solicitado
checafirewall

echo '[Dialer 3g]' > /etc/wvdial.conf
echo Modem = $porta >> /etc/wvdial.conf
echo Baud = 921600 >> /etc/wvdial.conf
echo DialCommand = ATDT >> /etc/wvdial.conf
echo Check Def Route = on >> /etc/wvdial.conf
echo 'FlowControl = Hardware(CRTSCTS)' >> /etc/wvdial.conf
echo Username = $user >> /etc/wvdial.conf
echo Password = $pass >> /etc/wvdial.conf
echo Phone = $telc >> /etc/wvdial.conf
echo Stupid mode = 1 >> /etc/wvdial.conf
echo Auto Reconnect = on >> /etc/wvdial.conf
echo "Auto DNS = $autodns" >> /etc/wvdial.conf
echo Init1 = ATZ >> /etc/wvdial.conf
echo 'Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0' >> /etc/wvdial.conf
echo Init5 = AT+CGDCONT=1,\"IP\",\"$APN\",\"\",0,0 >> /etc/wvdial.conf
echo ISDN = 0 >> /etc/wvdial.conf
echo Modem Type = Analog Modem >> /etc/wvdial.conf

if [ -e "/usr/bin/wvdial" ]; then

echo 'discando…

Pressione Ctrl+C para encerrar a conexao

Se algo der errado durante a discagem, experimente reiniciar o smartphone
e tentar de novo. Nos Nokia, é muito comum que o subsistema bluetooth fique
travado, impedindo que você se conecte, o que é rapidamente resolvido ao
desligar e ligar novamente.

wvdial 3g'
sleep 1
wvdial 3g

# Caso tenha deletado a rota padrão no início do script, recarrega a
# configuracao da rede, restaurando a rota padrao
if [ "$delroute" = "1" ]; then
/etc/init.d/networking restart &>/dev/null
/etc/init.d/NetworkManager restart &>/dev/null
fi
exit 0

else

errowvdial

fi

fi

# Função para Bluetooth PAN (Windows Mobile)

if [ "$conn" = "pan" ]; then

echo 'Ative o compartilhamento no smartphone, clicando no "Iniciar > Programas >
Compartilhamento de Internet". Use a opção "PAN do Bluetooth" como conexão para
o PC. Ao clicar no "Conectar" o aparelho passa para o modo NAP, onde ele fica
disponível para conexão do PC. Em caso de erros, verifique se o pairing foi
feito corretamente e se o PC foi definido como dispositivo autorizado nas
configurações do Bluetooth.

Pressione Enter para ativar a conexão.
'
read pausa

echo "Tentando se conectar a $blueaddr…"
echo 'Da primeira vez que a conexão é feita, o smartphone exibe uma mensagem
perguntando se deve aceitar conexões vindas do PC.
'
echo "pand -n --role PANU --connect $blueaddr"
pand -n --role PANU --connect $blueaddr
sleep 1
echo "dhclient bnep0"
dhclient bnep0
echo "
ifconfig bnep0

echo "(pressione Enter para continuar)"
read pausa

echo 'Se tudo deu certo, a rede bluetooth foi estabelecida e seu PC recebeu
um endereço na faixa 192.168.0.x, com o smartphone compartilhando a conexão
e ficando disponível através do endereço 192.168.0.1 (que é usado pelo PC
como gateway e como DNS), de forma similar ao que temos ao compartilhar a
conexão usando o ICS do Windows.

Para fechar a conexão posteriormente, use (como root):

pand -K

Para listar as conexões ativas (em caso de dúvidas sobre se a conexão está
ativada ou não) use:

pand -l
'

echo "(pressione Enter para sair do script)"
read pausa
exit 0

fi

exit 0

Usando o smartphone como modem Bluetooth, no Linux

novembro 11, 2008 – 8:17 pm

Apesar de ser mais associado com o uso de headsets e transferência de pequenos arquivos, o Bluetooth possui dois perfis que permitem que o smartphone compartilhe sua conexão de dados com outros aparelhos, incluindo, naturalmente, os PCs e notebooks.

O sistema mais tradicional e mais usado é o DUN (dial-up network), onde o celular simula o comportamento de um modem, permitindo que o desktop "disque" e acesse a rede da operadora através dele. Na verdade, a conexão é estabelecida pelo próprio celular, apenas os pacotes são repassados ao desktop, usando o Bluetooth como uma porta serial.

Atualmente, os aparelhos da Nokia com o S60 são (de uma forma geral) as melhores opções para conectar usando o notebook, já que eles suportam DUN nativamente e o recurso fica disponível por padrão depois de fazer o pairing e autorizar as conexões proveniente do PC, sem que você precise de nenhuma configuração em especial.

O suporte ao DUN é tão maduro que você pode até mesmo usar a conexão simultaneamente no PC e no próprio aparelho (o que permite que você "empreste" a conexão para algum amigo necessitado, sem precisar deixar o smartphone parado enquanto ele a está usando). Você também não terá grandes dificuldades em usar a conexão em outros dispositivos, como navegadores GPS, ou mesmo em Pocket PCs ou outros smartphones que ofereçam suporte ao DUN.

Obviamente, tudo isso é válido apenas para quem tem um plano de dados ilimitado, já que é inviável usar a conexão no notebook se você paga por megabyte transferido.

A configuração básica inclui o número de discagem, a porta em que o modem está conectado (que no caso da conexão via Bluetooth no Linux é a "/dev/rfcomm0") e a APN da operadora). Aqui vão os parâmetros de configuração para as principais operadoras (no final de 2008). As configurações mudam conforme as operadoras atualizam suas redes, por isso não deixe de checar em caso de erro:

Vivo:
Usuário e senha: vivo/vivo
Telefone: *99#
APN: zap.vivo.com.br

Claro:
Usuário e senha: claro/claro
Telefone: *99***1#
APN: claro.com.br ou bandalarga.claro.com.br

TIM:
Usuário e senha: tim/tim
Telefone: *99# (para as conexões 3G) ou *99***1# (para os planos antigos, com EDGE)
APN: tim.br

Se por acaso você ainda estiver usando um dos planos CDMA da Vivo, o número de discagem é "#777" e o login é o número do telefone (incluindo o código de área), seguido de um "@vivozap.com.br" como em "1199998888@vivozap.com.br", com a senha "vivo".

Conectar via Bluetooth pode ser um pouco mais complicado do que simplesmente usar um modem USB, mas oferece a vantagem de ser uma solução 100% wireless. Você pode deixar o celular com o DUN ativado e efetuar a conexão a partir do notebook sempre que precisar, sem nem tirar o celular do bolso. Muitos notebooks já vem com transmissores Bluetooth integrados, nos demais você pode usar um dos transmissores bluetooth em miniatura que hoje são relativamente fáceis de encontrar em lojas online. O tamanho compacto permite que você deixe o transmissor instalado continuamente, como se fosse um transmissor interno:

Para conectar no Linux, o primeiro passo é descobrir qual é o endereço do transmissor Bluetooth do smartphone, usando o comando "hcitool scan":

$ hcitool scan

Scanning …
00:21:FE:CF:A2:E1 E71

Precisamos também descobrir qual é o canal que é usado pelo smartphone para o acesso ao DUN. Para isso, usamos o comando "sdptool search DUN":

$ sdptool search DUN

Inquiring …
Searching for DUN on 00:1B:AF:E4:AA:5B …
Service Name: Dial-Up Networking
Service RecHandle: 0×10003
Service Class ID List:
"Dialup Networking" (0×1103)
Protocol Descriptor List:
"L2CAP" (0×0100)
"RFCOMM" (0×0003)
Channel: 2

Language Base Attr List:
code_ISO639: 0×454e
encoding: 0×6a
base_offset: 0×100
Profile Descriptor List:
"Dialup Networking" (0×1103)
Version: 0×0100

Como pode ver, ele vomita uma grande quantidade de informações, mas o que nos interessa é a linha "Channel", que no meu caso é 2. O canal 2 é usado pela maioria dos aparelhos da Nokia, enquanto aparelhos de outros fabricantes usam normalmente o canal 1 mas, de qualquer forma, não custa verificar.

O passo seguinte é ativar o rfcomm, que cria um link serial entre o desktop e o smartphone, permitindo o uso do DUN. Para isso, edite o arquivo "/etc/bluetooth/rfcomm.conf", deixando-o com o seguinte conteúdo:

rfcomm0 {
bind yes;
device 00:21:FE:CF:A2:E1;
channel 2;
comment "E71";
}

Note que o "00:21:FE:CF:A2:E1" e o "E71" correspondem ao ID e ao nome do aparelho, que você obtém ao rodar o comando "hcitool scan". É importante indicar corretamente o canal, já que sem ele o PC não consegue se conectar ao smartphone.

Continuando, dê uma olhada também no arquivo "/etc/bluetooth/hcid.conf", onde vão as configurações gerais do Bluetooth. Este é um exemplo de arquivo de configuração, que você pode usar como modelo:

options {
autoinit yes;
security auto;
pairing multi;
passkey "1234";
}

device {
name "Semprao";
class 0×3e0100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}

As opções importantes aqui são as linhas "passkey" e "name". As demais já vêm configuradas por padrão, permitindo a conexão de qualquer dispositivo.

A opção "name" determina o nome com o qual seu PC aparecerá na piconet (a rede Bluetooth). A passkey (também chamada de PIN) é um código de segurança, que você precisa fornecer na hora de conectar seu celular ou qualquer outro dispositivo ao seu PC. A passkey default é "1234", depois de testar, não deixe de mudar para algo mais seguro.

Depois de terminar, reinicie o serviço do Bluetooth para que a configuração entre em vigor:

# /etc/init.d/bluetooth restart

Nesse ponto, o comando "rfcomm" deve mostrar algo como:

# rfcomm
rfcomm0: 00:21:FE:CF:A2:E1 channel 2 clean

Isso indica que o link entre o PC e o celular foi criado com sucesso. Verifique também se o arquivo "/dev/rfcomm0" foi criado. Em alguns casos, pode ser necessário desligar e ligar o celular para que ele seja criado corretamente.

O próximo passo é (se já não fez anteriormente) fazer o pairing entre o PC e o smartphone. A principal dica é que você deve definir seu notebook como dispositivo autorizado dentro da configuração do Bluetooth (que nos Nokia vai no Configurações > Conectiv. > Bluetooth) depois de fazer a conexão inicial, de forma que você possa ativar a conexão quando quiser, sem precisar ficar respondendo a conexões adicionais. Com isso, você pode ativar a conexão no notebook sem precisar tirar o smartphone do bolso.

Neste ponto, o suporte a Bluetooth já está configurado e testado, falta apenas estabelecer a conexão usando o kppp, gnome-ppp ou outro discador.

A forma mais rápida de gerar a conexão é usar o wvdial, que é um discador de modo texto, onde você pode simplesmente colocar as configurações de discagem dentro de um arquivo de texto e chamá-lo sempre que quiser ativar a conexão. Para usá-lo, edite o arquivo "/etc/wvdial.conf", deixando-o com o seguinte conteúdo:

# Modelo do /etc/wvdial.conf para conexões via DUN
# Ao copiar e colar, verifique as aspas e o aparecimento de caracteres estranhos (cortesia do UTF-8)

[Dialer 3g]
Modem = /dev/rfcomm0
Baud = 921600
DialCommand = ATDT
FlowControl = Hardware(CRTSCTS)
Username = vivo
Password = vivo
Phone = *99#
Check Def Route = on
Stupid mode = 1
Auto Reconnect = on
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init5 = AT+CGDCONT=1,"IP","zap.vivo.com.br","",0,0
ISDN = 0
Modem Type = Analog Modem

As linhas "Modem", Username", "Password" e "Phone" especificam a porta e as configurações da operadora, enquanto as linhas "Init1", "Init2" e "Init5" especificam as strings de discagem. Estas do exemplo são as strings para conexões via Bluetooth, mas outros tipos de conexões podem utilizar strings diferentes. Veja que a antepenúltima linha especifica a APN da operadora, não se esqueça de alterá-la caso necessário.

Depois de salva a configuração, você precisa apenas usar o comando "wvdial 3g" (como root) quando quiser conectar:

# wvdial 3g

--> WvDial: Internet dialer version 1.56
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","zap.vivo.com.br","",0,0
AT+CGDCONT=1,"IP","zap.vivo.com.br","",0,0
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT

Como pode ver, o wvdial mostra todos os detalhes da conexão, o que acaba sendo útil para solucionar problemas inesperados, já que você pode ver as mensagens de erro e pesquisar sobre elas. Para encerrar a conexão pressione Ctrl+C (apenas uma vez) e deixe que ele faça o processo normal de desconexão e restaure a rota padrão.

Se algo der errado durante a discagem (mesmo que a configuração esteja correta), experimente reiniciar o smartphone e tentar de novo. Nos Nokia, é muito comum que o subsistema bluetooth fique travado, impedindo que você se conecte, o que é rapidamente resolvido ao desligar e ligar novamente.

Algumas operadoras, com destaque para a Claro e a Embratel (com o Giro), tem implementado um sistema de timeout nas conexões 3G, que faz com que as conexões sejam encerradas depois de alguns segundos de inatividade e restabelecidas automaticamente assim que é necessário transmitir dados. O problema é que em áreas com muitos assinantes o processo pode demorar alguns segundos, ou mesmo travar a conexão, obrigando-o a desconectar e reconectar novamente, fazendo com que na prática a conexão fique bastante instável.

Uma solução simples para isso no Linux é usar o ping para enviar um pacote de dados a cada dois segundos, evitando que a conexão seja encerrada. Basta abrir um terminal e deixar o comando correndo indevidamente enquanto estiver conectado:

$ ping -i 2 google.com

Se por acaso você tiver problemas de estabilidade, com a conexão caindo a cada dois minutos, abra o arquivo "/etc/ppp/options" e comente (ou remova) as linhas:

lcp-echo-interval 30
lcp-echo-failure 4

O "lcp-echo" é um pacote de controle, usado para verificar se a conexão ainda está ativa. Quando o servidor do provedor de acesso deixa de responder, o discador presume que a conexão foi perdida e desconecta automaticamente. O problema é que estes pacotes não são suportados em muitos aparelhos (como no Treo 650), fazendo com que a conexão sempre caia depois de dois minutos.

Se estiver preocupado com a segurança, você pode ativar o firewall simples para bloquear tentativas de conexão vindas da Internet adicionando os comandos:

iptables -A INPUT -p tcp -i ppp0 --syn -j DROP
iptables -A INPUT -p udp -i ppp0 --dport 1:1024 -j DROP

… no final do arquivo "/etc/ppp/ip-up".

Se quiser compartilhar a conexão com outros micros ligados em rede com o primeiro (você pode criar uma rede ad-hoc usando a placa wireless e assim compartilhar a conexão rapidamente com os amigos, por exemplo), adicione as três linhas abaixo no mesmo arquivo:

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

O arquivo "/etc/ppp/ip-up" é executado automaticamente pelo sistema quando a conexão é ativada, de forma que ao colocá-los no final do arquivo o firewall e/ou o compartilhamentos passam a ser ativados automaticamente sempre que você ativa a conexão. Você pode também executá-los de forma avulsa diretamente no terminal.

Outra dica é que muitas distribuições antigas (anteriores a 2008) usam uma versão bugada do wvdial que não altera a rota padrão depois de conectado, o que faz com que o sistema continue tentando acessar através da placa de rede ou outra conexão já existente em vez de acessar usando a conexão 3G, o que causa o famoso "conecta mas não navega". Nesses casos, é necessário rodar o comando "route del default" antes de estabelecer a conexão, como em:

# route de default
# wvdial 3g

Para reconectar à rede local depois de fechar a conexão (se for o caso), use:

# /etc/init.d/networking restart

ou:
# /etc/init.d/NetworkManager restart
(no Ubuntu ou outras distribuição que usam o NetworkManager)

Debranding e desbloqueio de aparelhos da Nokia

novembro 10, 2008 – 6:58 pm

Via de regra, ao comprar um aparelho em qualquer operadora, ele virá com um firmware personalizado, que faz com que ele mostre o logo da operadora na inicialização, entre outras pequenas modificações, que permanecem mesmo depois de desbloquear o aparelho.

O grande problema é que no caso dos aparelhos da Nokia, a personalização das operadoras bloqueia a instalação das atualizações de firmware da Nokia. Ao tentar atualizar o aparelho através do Software Updater, ele verifica o código da operadora e permite apenas a instalação das atualizações aprovadas por ela. Como na maioria dos casos as operadoras não se dão o trabalho de verificar e aprovar as atualizações (se limitando a disponibilizar atualizações críticas, ou muitas vezes nem isso), você acaba ficando trancado do lado de fora, sem ter como atualizar o aparelho.

A informação sobre a operadora, que faz o Software Updater disponibilizar apenas os firmwares "autorizados" é gravada no product code, um código de identificação de 7 dígitos que especifica o modelo do aparelho, a linguagem, país ou região e a operadora para a qual ele foi customizado. Você pode descobrir o product code atual do seu aparelho digitando *#0000# na tela inicial, ou através da etiqueta no compartimento da bateria.

Quando você tenta atualizar o firmware usando o Software Updater, ele verifica as informações e disponibiliza apenas as versões de firmware específicas para ele. Alterando o product code, é possível "enganar" o software updater, fazendo com que ele disponibilize os firmwares oficiais da Nokia. Além de permitir a instalação de firmwares mais atuais, o processo também remove o logo e as outras personalizações da operadora, daí o "debranding".

Caso exista alguma restrição nos recursos (como no caso de aparelhos antigos da Vivo, onde o Bluetooth era capado, ou no caso de aparelhos da Claro com o cliente VoIP da Nokia desativado) ela é também removida com a atualização.

É importante enfatizar que o debranding não desbloqueia o aparelho, apenas remove as personalizações e as travas da operadora, além de permitir que você atualize para o firmware mais recente.

A única forma de desbloquear os aparelhos atuais (BB5) é digitando o código de destravamento, que é calculado a partir da combinação do IMEI e um código secreto definido pela operadora. Diferente dos códigos de aparelhos DCT-3/DCT-4 (modelos antigos, anteriores a 2004) cujo algoritmo foi quebrado, dando origem às várias ferramentas gratuitas de cálculo dos códigos, os códigos os aparelhos BB5 são conhecidos apenas pelas operadoras, pela Nokia e por algumas empresas especializadas. Na web você encontra muitos anúncios de empresas que oferecem o serviço de desbloqueio, mas são sempre serviços pagos. Como no Brasil as operadoras são obrigadas a desbloquear os aparelhos quando solicitado, a forma mais simples de desbloquear o seu é simplesmente insistir até conseguir.

Você pode imaginar o desbloqueio e o debranding como dois processos complementares. Ao desbloquear o aparelho, você passa a poder usar chips de outras operadoras, mas ele continua exibindo o logo da Claro/Vivo/TIM/Oi e qualquer função desativada pela operadora continua desativada. Ao fazer o debranding esta última camada de restrições é removida, fazendo com que você tenha um aparelho completamente destravado, como se tivesse sido comprado diretamente na loja da Nokia. O processo pode ser usado também para alterar a linguagem de aparelhos obtidos no exterior, deixando-os em Português do Brasil.

O primeiro passo é baixar e instalar o Nokia Software Updater. Execute-o pela primeira vez e deixe que ele pesquise por atualizações para seu smartphone. No exemplo estou usando um Nokia 6120c da Claro, com o firmware 3.83. Como esta é a última versão aprovada pela Claro, o Software Updater se recusa a atualizar o aparelho, muito embora já estejam disponíveis versões bem mais atualizadas do firmware:

Para alterar o product code precisamos do Nemesis Service Suite (NSS), que pode ser baixado no: http://www.b-phreaks.co.uk/ (clique no link "download"). Ele é desenvolvido pela B-phreaks, que é uma empresa especializada em destravamento de aparelhos e outros serviços e distribuído gratuitamente como uma forma de publicidade. O servidor de download não é muito estável; se tiver problemas no download, tente de novo depois de algumas horas. Se não puder esperar, faça uma busca pelo nome do arquivo (como em "NSS103814.zip") para encontrar endereços alternativos.

Durante a instalação, ele pergunta sobre o driver USB a utilizar. Mantenha o "Virtual USB device", que é a opção default. Depois de instar o NSS, conecte o smartphone em modo PC Suite, usando o cabo USB. Abra o NSS e clique no "Scan for new device" (o ícone da lupa) e em seguida no "Phone Info".

Dentro da janela, clique no "Actions > Scan". O processo demora alguns segundos e devolve diversas informações sobre o aparelho no campo da esquerda, incluindo a versão, número do IMEI, código da placa e assim por diante. Se você receber um "product scan: Error", veja se o Nokia PC Suíte não está aberto em segundo plano (os dois ícones ao lado do relógio) e se o smartphone está mesmo ligado em modo PC Suite e não em modo de transferência de dados.

Para obter o product code, que é o que nos interessa, marque o campo "Product Code > Enable" (no campo da direita) e clique no "Read", o que devolve o código atual:

Para alterar o código você precisa apenas especificar o novo número e clicar no "write". O código da Claro era o "0553126" (que especifica tratar-se de um 6120c, localizado para o Brasil e da operadora Claro), que substituí pelo "0556329", que é o código para o firmware original da Nokia para o 6120c, em PT-BR:

Feche e abra novamente o NSS para confirmar se o código foi realmente alterado. Até aqui, o procedimento é livre de riscos, já que alteramos apenas o código de identificação, que é checado apenas durante as atualizações de firmware e não tem efeito sobre a operação do aparelho.

O próximo passo é abrir o Nokia Software Updater para fazer a atualização de firmware propriamente dita. Embora muitos prefiram reiniciar o PC e/ou o smartphone antes de prosseguir isso não é necessário. Basta fechar o NSS e abrir o Software Updater.

Dessa vez ele identificará o aparelho como um aparelho destravado e oferecerá a versão mais atual do firmware. Tudo depende de você indicar o código correto no passo anterior. Se ele insistir que o firmware já está na versão mais atual, ou se ele passar a não reconhecer o aparelho (sinal de que você especificou um código inválido), basta testar outros até conseguir. Se tudo mais falhar, você pode simplesmente restaurar o código original e deixar as coisas como estão.

A partir dos aparelhos com o S60 terceira edição FP1 (como é o caso do 6120c), a atualização de firmware é bem tranquila, pois não reseta o aparelho nem apaga os dados. De qualquer forma, é importante fazer um backup antes para o caso de qualquer eventualidade.

O principal risco é que o Software Updater vai sempre se basear pelo código especificado e tentar instalar o firmware correspondente. Se você especificar um código de outro aparelho, o Software Updater pode realmente se enganar e tentar subscrever o firmware pelo do outro aparelho, o que pode ser desastroso. Justamente por isso ele exibe a foto e o modelo antes de atualizar, permitindo que você verifique o modelo.

Outro problema, menos grave porém mais comum é que você especifique o código da versão em Inglês, ou em Português de Portugal, fazendo com que o aparelho fique em outra língua. Nesses casos, você pode continuar procurando até encontrar o código correto e atualizar novamente o firmware para que ele volte a ficar em Português do Brasil.

O maior risco é que o Software Updater não permite voltar para versões anteriores do firmware, de forma que se você instalou o firmware 4.21 em Inglês, por exemplo, não vai conseguir voltar para o firmware 3.83 da Claro. Teria que continuar procurando até encontrar o código da versão 4.21 (ou mais recente) em Português do Brasil para conseguir restaurar a linguagem original.

Continuando, chegamos à dica mais importante, que é como encontrar os códigos. Nesse caso, não existe muito o que inventar, o jeito é usar o bom e velho Google. Encontrar códigos genéricos é relativamente fácil, a maior dificuldade é encontrar códigos para firmwares em Português do Brasil, e não em Inglês ou Português de Portugal. A melhor dica é simplesmente fazer uma busca por "Nokia modelo product code", "generic product code modelo" ou "Nokia modelo product code brasil".

Outra boa opção é simplesmente procurar pelo modelo e pelo product code antigo, como em "6120c 0553126". Quase sempre isso vai lhe levar a postagens com listas de códigos, contendo seu código atual e outras opções de códigos para o mesmo aparelho.

Os códigos com "EURO1" utilizam os firmwares com suporte ao Inglês, Francês, Alemão, Espanhol, Italiano e Português de Portugal (configurável através das preferências), enquanto os com "Brazil" (mais difíceis de achar e disponíveis apenas para os aparelhos lançados oficialmente no Brasil) são os com suporte ao Português do Brasil e as demais personalizações.

Na falta de um código para o firmware genérico, você pode testar também os códigos das operadoras (Claro. TIM, etc.). O fato de usar o firmware de uma determinada operadora não bloqueia o aparelho para os chips dela, apenas inclui o logo e as demais personalizações implantadas por ela.

Você pode verificar rapidamente se os códigos que encontrou realmente se aplicam ao seu aparelho e se eles dão acesso às versões mais recentes no firmware através da busca disponível no: http://europe.nokia.com/A4577224.

Aqui vai uma pequena lista de códigos para firmwares genéricos da Nokia em Português do Brasil:

N73 (RM-133): 0553150
N76 (RM-135): 0515773
N81 (RM-223): 0550127
N91 (RM-43): 0532262
N93 (RM-55): 0531273
N93i (RM-156): 0540953
E50 (RM-170): 0541451
E51 (RM-244): 0556381
E61 (RM-89): 0540981
N95 (RM-159): 0565550
6120c (RM-243): 0556329

Você pode encontrar uma lista com muitos códigos (a maioria para EURO ou outros países, poucos para Português do Brasil) no http://smartwiki.ru/index.php?title=Product_codes. Outra coleção com códigos para muitos modelos está disponível no: http://forum.smart60.ru/index.php?showtopic=16010

Em muitos casos, você pode querer fazer um hard reset depois de atualizar o firmware, para apagar todos os dados e configurações e ter aquele gostinho de aparelho novo. Nos aparelhos com o S60, você pode fazer um hard reset digitando *#7370# na tela inicial. O aparelho exibe uma mensagem de confirmação e em seguida pede o código de bloqueio que, se você não alterou anteriormente através das preferências é 12345. Isso faz com que o aparelho reinicie sozinho (e fique um pouco mais tempo que de costume na tela com o logo da Nokia) e em seguida pergunte em que cidade você está.

Em casos de problemas com a atualização, que façam o aparelho deixar de inicializar, você pode usar a seqüência alternativa, deligando o aparelho, pressionando simultaneamente as teclas "3", "*" e o botão de chamada (verde) e, sem largar as três teclas, ligá-lo novamente. Mantenha os botões pressionados até que seja exibida a mensagem "formatting".

Escolhendo um plano de dados

novembro 7, 2008 – 7:54 pm

Com a disponibilidade das redes 3G, as operadoras passaram a viver um dilema. Além de permitirem usar o MSN, e-mail e outras formas de comunicação (reduzindo o uso das caras mensagens SMS) as redes 3G podem ser usadas também para realizar chamadas VoIP, o que ameaça reduzir o uso das chamadas de voz.

Não estou me referindo apenas ao uso do Skype através de notebook, mas sim de chamadas usando o próprio smartphone, através do Fring e outros aplicativos. Nos aparelhos da Nokia da série E (e alguns modelos da série N) você pode configurar o cliente SIP integrado para utilizar o Vono, Gizmo ou outro serviço baseado no protocolo SIP, o que adiciona a opção de realizar a chavada via VoIP ou usando a rede de voz na hora de discar, como mostrei na dica de terça:

Com isso, não é de se estranhar que as operadoras relutem em reduzir o valor dos planos de acesso (muito embora já existam opções bastante populares, como no caso do Giro) e de combinar planos de voz com planos de dados com tráfego ilimitado, muito embora isso esteja mudando.

Um bom exemplo são os planos 3G da Claro. Mesmo no plano 3G 120, que custa R$ 98 mensais você tem direito a apenas 20 MB de tráfego de dados, com tarifa de R$ 6 por MB excedente. Usá-lo em um smartphone seria com ter uma Mercedes e só poder rodar 200 metros por mês:

Se você resolvesse tentar usar o smartphone como modem em um destes planos, teria uma surpresa bem desagradável no final do mês, com a cobrança dos megabytes excedentes.

Temos em seguida os "Pacotes de Internet", que podem ser combinados com os planos de voz. O problema é que mesmo no plano "2000", de R$ 99 mensais, a quota de tráfego é de apenas 2 GB. Como o valor é cumulativo sobre o valor do plano de voz, a conta acaba saindo cara.

A brecha reside nos planos de dados (os números miúdos no topo), onde você tem tráfego ilimitado por um valor mensal fixo. Você pode assinar o plano de dados comprando apenas o chip e usá-lo em seu smartphone, acessando a web do notebook, fazendo chamadas VoIP e usando todos os recursos de que tem direito.

No caso da Claro, o tráfego de dados é ilimitado em todos os planos e o que muda é a velocidade do acesso. O plano de 500 kbits, que acaba sendo o melhor custo-benefício para quem não pode gastar muito, simplesmente por que a velocidade da rede oscila e raramente é possível obter 1 megabit de velocidade por mais do que alguns segundos antes que a taxa de transferência oscile. No plano de 500 kbits você tem um cap mais baixo, mas na média a velocidade acaba não sendo tão diferente assim.

A grande limitação destes planos é que os chips tem o sinal de voz desativado, de forma que podem ser usados apenas para a transmissão de dados, sem possibilidade de realizar chamadas. Você pode solucionar isso mantendo algum aparelho antigo, simples e leve apenas para voz. Esta não é a solução ideal, mas, afinal, ao usar um modem USB você precisaria carregar dois aparelhos de qualquer forma.

O mesmo se aplica à TIM, que oferece planos de acesso ilimitado, mas também sem voz. Os preços são muito similares aos da Claro (R$ 119 pelo ilimitado de 1 megabit e R$ 89 pelo de 600 kbits). Já houve quem as acusasse de formação de cartel.

A TIM é a mais atrasada com relação à implantação da rede 3G, de forma que em muitas áreas o acesso ainda está limitado ao EDGE. Mesmo que os vendedores prometam acesso 3G na sua cidade, é preciso muita cautela ao assinar.

Em seguida temos a Vivo que, novamente, oferece um plano de 1 megabit com tráfego ilimitado por R$ 119, com algumas opções com tráfego limitado que não interessam muito no nosso caso:

Uma vantagem no caso da Vivo é que é os preços dos planos de dados são os mesmos para os planos de acesso avulso e para os que incluem voz. O problema é que, enquanto escrevo, ele está disponível apenas a partir do plano "Escolha 90", que custa R$ 68 por mês. Para quem prefere um plano de voz mais barato, ou um plano pré-pago, a única opção é usar dois chips, um para voz e outro para dados.

Antigamente, existia a briga do GSM x CDMA, mas com a migração da Vivo para o UMTS a diferença deixou de existir. As três operadoras passaram a utilizar a mesma tecnologia, de forma que o diferencial passou a ser unicamente a qualidade do serviço.

Para quem está interessado em números, vai aqui um teste rápido do Vivo Zap ilimitado contra o Claro de 500 kbps, em Porto Alegre:

Vivo:

Claro:

Pela taxa de transferência você pode notar que numa das duas ainda implantou a limitação de velocidade, de forma que simplesmente obtenho a velocidade máxima da rede. Na Vivo, onde a taxa seria supostamente limitada a 1 megabit a velocidade oscila na maior parte do tempo entre 135 e 180 KB/s (ou seja, picos de quase 2 megabits) e na Claro oscila entre 85 e 135 kbps, novamente bem mais do que os 500 kbits do plano. Muito provavelmente a diferença se deve ao volume de assinantes conectados no momento em que tirei os screenshots.

O problema no caso da Claro é que o acesso é bastante instável, com paradas de vários segundos e quedas freqüentes. Depois de alguns testes rápidos descobri o motivo. A Claro tem usado um sistema de timeout nas conexões 3G, que faz com que as conexões sejam encerradas depois de alguns segundos de inatividade e restabelecidas automaticamente assim que é necessário transmitir dados. O problema é que em áreas com muitos assinantes o processo pode demorar alguns segundos, ou mesmo travar a conexão, gerando as quedas.

Uma solução simples para isso no Linux é usar o ping para enviar um pacote de dados a cada dois segundos, evitando que a conexão seja encerrada. Basta abrir um terminal e deixar o comando correndo indevidamente enquanto estiver conectado:

$ ping -i 2 google.com

Com isso o acesso normalizou e passou a ficar dentro do esperado.

Barra de endereços do Firefox 2 de volta

novembro 7, 2008 – 10:45 am

Uma das novidades mais polêmicas do Firefox 3 é a "AwesomeBar", uma versão aperfeiçoada"do recurso de auto-completar da barra de enredeços, que em vez se se limitar a exibir URLs do histórico iniciadas com o texto digitado, realiza uma pesquisa cruzando informações do histórico e dos bookmarks, exibindo URLs que incluem o texto digitado em qualquer ponto da URL ou do título da página.

Naturalmente, a nova barra não agradou a todos, de forma que logo surgiu a OldBar, uma extenção para o FF3 que restaura o visual da antiga barra, sem entretanto modificar seu comportamento. Algums tutoriais recomendam alterar o valor da opção "browser.urlbar.maxRichResults" de 12 para 0 no about:config, mas o resultado é que o autocompletar é desativado completamente, em vez de retornar ao comportamento antigo.

Se você quer ter de volta a barra antiga, a melhor opção combinação de opções é usar:

browser.urlbar.autoFill : true
browser.urlbar.matchBehavior : 0
browser.urlbar.matchOnlyTyped : true

Isso restaura o comportamento antigo, fazendo com que ele volte a pesquisar pelo texto digitado apenas na URL e complete a URL automaticamente com a escolha mais próxima, sem que você precise escolher na lista.

Para editar as opções, digite "about:config" na barra de endereços do FF3 e faça uma busca por "urlbar" para localizar as opções, deixando-as como no screenshot:

O resultado ainda não é exatamente idêntico à barra do FF2, mas é o mais próximo que é possível chegar ajustando as configurações. Você pode completar as alterações instalando também o oldbar, de forma que além do comportamento, seja também restaurado o visual antigo.

Transforme seu smartphone em um hotspot wireless

novembro 6, 2008 – 8:04 pm

Se você tem um aparelho com Wi-Fi (e um plano de dados com tráfego ilimitado) uma forma alternativa de compartilhar a conexão é transformar seu smartphone em um hotspot wireless, compartilhando a conexão via NAT, assim como em um PC com duas placas de rede. A rede 3G passa então a ser a interface da Internet e a rede Wi-Fi a interface de rede local, permitindo a conexão dos micros PC. Se você tiver um carregador em mãos, pode deixar o smartphone ligado por horas a fio, servindo como um verdadeiro roteador 3G.

Para os aparelhos baseados no S60, a melhor opção é o JoikuSpot Light, que está disponível no http://www.joikuspot.com/.

O uso não poderia ser mais simples. Ao ser aberto, ele confirma a conexão de internet que será usada, exibe o alerta de praxe com relação ao uso do tráfego de dados e a partir daí fica disponível para a conexão dos clientes, exibindo um monitor de status, através do qual você pode monitorar o volume de pacotes transmitidos e os clientes conectados:

Assim que o hotspot é ativado, ele imediatamente aparece entre as redes disponíveis para os PCs próximos, com um nome escolhido aleatoriamente pelo programa:

Por default, a rede fica completamente aberta, permitindo que os PCs se conectem da forma mais simples possível, com direito a DHCP (fornecendo endereços dentro da faixa 192.168.2.x) e tudo mais. Essa é uma forma muito prática de criar um hotspot wireless em eventos ou em qualquer lugar onde você queira disponibilizar uma rede para os amigos de forma prática mas, naturalmente, não é a melhor opção se você quer privacidade.

Nas configurações, você encontra a opção de ativar a encriptação via WEP, que embora não seja muito segura, é melhor do que nada. Use o WEP de 128 bits em modo WEP Open e com chave ASCII, que é o mais compatível. Você pode também definir um canal preferencial, de forma a evitar os canais já usados por outras redes próximas:

Mesmo usando uma chave de 128 bits, o WEP é relativamente fácil de quebrar. Uma dica para reduzir a exposição do seu aparelho em situações onde a rede vai ser acessada apenas por você (e presumindo que você vai deixar o smartphone próximo ao notebook) é reduzir a potência do transmissor Wi-Fi no "Configs. > Conexão > LAN sem fio". Acesse o "Menu > Configs. avançadas" e ajuste a opção "Nível de energia TX com o menor valor". Com isso, você reduz o alcance da rede, reduzindo o problema:

Se você estiver com o carregador por porto, aproveite para desativar a economia de energia para a interface Wi-Fi, no mesmo menu. Isso aumenta bastante o consumo elétrico, mas em troca melhora bastante a velocidade e a latência do acesso, evitando que o smartphone fique continuamente ativando e desativando a interface de rede.

Usando o JoikuSpot você vai logo perceber que ele permite apenas o acesso a HTTP e HTTPS, deixando de fora aplicativos que utilizam outros protocolos, daí o "Light" no nome. No mesmo site está disponível também o JoikuSpot Premium, que é a versão "completa" do programa, com todas as portas liberadas e alguns recursos adicionais, como a conexão com VPNs. Ele custa 15 Euros, mas acaba sendo uma boa aquisição se você realmente gostou do recurso.

Para quem usa o Windows Mobile, existe o WMWifirouter, disponível no http://www.wmwifirouter.com/. Embora seja desenvolvido por outra empresa, ele funciona de forma muito similar, também oferecendo encriptação via WEP. Ele custa 19 euros, com um trial de 21 dias.

» Leia mais sobre Redes wireless

Você sabe o que é EDR?

novembro 5, 2008 – 10:45 am

O padrão bluetooth original oferece uma taxa bruta de transmissão de 1 megabit mas, devido à modulação do sinal, a taxa obtida na prática são apenas 736 kbits em modo assíncrono ou 432 kbits em modo síncrono. Apesar da velocidade ser mais do que suficiente para o uso de headsets USB, conexão de teclados e mouses, ou mesmo para a transferência de pequenos arquivos, ela limita severamente o uso do Bluetooth para algumas funções, como ao criar redes PAN (onde o Bluetooth é usado como interface de rede) e ao conectar via DUN, usando o smartphone como modem Bluetooth.

Como no DUN é usado o modo síncrono de transmissão, a velocidade da conexão fica limitada a cerca de 54 KB/s, bem menos que as taxas máximas de transmissão das redes HSDPA, que vão de 1.8 a 72 megabits. Na Vivo, por exemplo, utiliza a versão de 3.6 megabits, é possível obter uma taxa real de cerca de 145 KB/s (assim como nas redes Wi-Fi existe uma grande perda devido à modulação do sinal e ao compartilhamento da banda), mas ao conectar via Bluetooth sua conexão fica limitada aos 54 KB/s oferecidos por ele.

A solução para o problema é o padrão EDR, introduzido juntamente com o Bluetooth 2.0. No EDR, a velocidade de transmissão foi multiplicada por três, atingindo 3 megabits de taxa bruta de transmissão, com 2.1 megabits em modo síncrono, suficientes para comportar uma conexão HSDPA sem grandes limitações, além de ajudar bastante na transferência de arquivos.

Ao comprar o adaptador Bluetooth, certifique-se de que ele oferece suporte ao EDR (o EDR é um recurso opcional, de forma que nem todos os adaptadores Bluetooth 2.0 oferecem suporte a ele) além de, naturalmente, dar preferência a smartphones com transmissores Bluetooth que também ofereçam suporte, já que ele só entra em ação quando suportado pelas duas pontas.

» Leia mais sobre Bluetooth