Month: June 2007

Entendo o Stack Smashing Protection

Além dos problemas que tive com o stack-protection relatado no post sobre a compilação do FILO, estou tendo problemas quando tento abrir o visualizador de binário hte (pacote ht) quando tento abrir qualquer arquivo.

Procurando na internet achei este site:
http://www.debian-administration.org/articles/408

Agora entendi melhor o SSP, isto é uma proteção para evitar que o seja copiado mais bytes que o reservado para o buffer, que é o que sempre acontece nos buffer overflow.

Outra coisa interessante que descobri neste artigo é que no kernel 2.6 a posição do stack na memória irá variar, o que torna difícil um ataque, e uma forma de desativar esta função é executando o comando:

# sysctl -w kernel.randomize_va_space=0

Efeito iPhone

Não, não irei falar da fila quilométrica de pessoas na porta da Apple para comprar o iPhone. Acredite, o iPhone é 50% marketing, 40% produto e 10% inovação.

Irei falar do efeito que está levando a concorrência ao desespero, é incrível como num curto espaço de tempo apareceram tantos concorrentes do iPhone, para citar alguns:

Samsung F700:
————————-
http://www.engadget.com/2007/02/08/samsung-outdoes-itself-with-ultra-smart-f700/
* Pós:
quase tudo que o iPhone tem, além de camera de 5MP, teclado deslizante;

* Contras:
não tem WiFi, não tem zoom (isso mesmo, nem digital e muito menos ótico), não tem flash, não tem GPS;

Motorola MC 35:
————————-
http://www.clove.co.uk/viewProduct.aspx?Product=105FE791-5CD6-49AA-BD14-275C12DBFBEF
* Pós:
tem GPS, teclado frontal, bateria de 2740 mAh;

* Contras:
Windows Mobile 5, não tem camera, USB 1.1, 20.6mm espessura, muito grande;

SonyEricsson W960:
————————-
http://www.mobileburn.com/review.jsp?Id=3450
* Pós:
bom design, teclado numérico frontal, além da tela touch-screen, WiFi, rádio FM, Camera de 3.2 MP com zoom digital;

* Contra:
não tem GPS, não é tão fino: 16mm de espessura (já que não tem teclado deslizante), não tem slot pra memória SD;

Samsung SGH-F520
————————-
http://www.mobileburn.com/review.jsp?Id=3142&source=RSS
* Pós:
mesmo com teclado deslizante não é tão grande 17mm de espessura, camera de 3MP com flash, HSDPA (3G);

* Contra:
não tem WiFi;

HTC Touch
————————-
http://www.mobiletechreview.com/phones/HTC-Touch.htm
* Pós:
pequeno e fino (99.9 x 58 x 13.9 mm), tem WiFi, camera;

* Contra:
camera não tem flash, não tem GPS, não tem conexão a redes 3G.

É interessante ver esta “corrida pelo ouro”, mas no meio do caminho muitas empresas se afobam e lançam produtos de má qualidade, por exemplo é um erro grave uma empresa lançar um smartphone com USB 1.1 ou com um tamanho descabido.

Eu disse acima que o iPhone é muito marketing, mas ele tem qualidades sim, um ótimo design, fino, mas não é perfeito.

Dos concorrentes citados o que chega mais perto é sem dúvida o HTC Touch, apesar de não ter GPS, não ter rede 3G (o iPhone também não) e a camera não ter uma resolução tão alta e nem flash, ele ganham pelo equilibrio entre design e recursos.

Não comentei aqui, pois ele não é um concorrente, é um divisor de águas: o FIC Neo 1973 (GTA2), acho o protótipo de desenvolvimento (GTA1) muito grande e não sei se eles irão mudar isso na versão GTA2. Mas ele terá quase tudo que se espera de um smartphone, além de 2 acelerômetros 3D para aplicações ainda inimagináveis?

Já pensou escrever palavras movendo o celular como se move um giz no quadro, não parece muito prático, mas isso poderá ser possível com este smartphone.

Desculpe leitor amigo pelo longo texto, mas eu tinha que dizer o que penso.

undefined reference to `__stack_chk_fail’

Compilando o FILO no Ubuntu recebi esta msg de erro:

main/builtin.o: In function `number’:
printf.c:(.text+0x924): undefined reference to `__stack_chk_fail’
main/builtin.o: In function `elf_load’:
(.text+0x18c6): undefined reference to `__stack_chk_fail’
main/builtin.o: In function `grub_menulst’:
(.text+0x2060): undefined reference to `__stack_chk_fail’
main/grub/builtin.o: In function `run_menu’:
stage2.c:(.text+0xe76): undefined reference to `__stack_chk_fail’
main/grub/builtin.o: In function `terminfo_func’:
builtins.c:(.text+0x1510): undefined reference to `__stack_chk_fail’
main/grub/builtin.o:builtins.c:(.text+0x1c7d): more undefined references to `__stack_chk_fail’ follow
make: *** [filo] Error 1

Após pesquisar na Internet descubro que o problema é causado porque o Ubuntu é compilado por padrão com o “Stack Smashing Protection” (-fstack-protector) ativado por padrão.

Para resolver o problema apenas editei o arquivo “makerules” e acrescentei -fno-stack-protector ao CFLAGS.

Firewall pessoal Yoggie Pico

Hoje recebi o Yoggie Pico, fiquei impressionado com o tamanho do brinquedinho, é como imaginar um iPod nano rodando a 520MHz. Caramba meu primeiro Pentium rodava a 166MHz e dois anos depois quando fiz upgrade foi para um Pentium 3 500MHz.
Estou espantado com a velocidade de minuaturização dessas coisas.
A primeira impressão que tive foi muito boa, a começar pela embalagem do produto, a caixa tem pouco texto, mas o suficiente para descrever o produto e suas características. Na frente 3 selos chamam a atenção: Most Inovative Company concedido pela RSA; RED HERRING 100 WINNER e como não poderia deixar de ser Microsoft Windows (éca). Após remover a caixa externa (do tipo deslizante) têm-se uma caixa estojo, contendo internamente: de um lado dispositivo (Yoggie Pico) e do outro o CD e manual.

Primeiro teste com o dispositivo, verificar como o Linux o reconhece:

usb 5-7: new high speed USB device using ehci_hcd and address 2
usb 5-7: configuration #1 chosen from 2 choices
usb0: register 'cdc_ether' at usb-0000:00:10.4-7, CDC Ethernet Device, aa:91:56:18:7d:88
usbcore: registered new interface driver cdc_ether

Então o dispositivo é registrado como uma interface ethernet, um pouco estranho, mas já que o aparelho lida com a parte de rede do computador não há nada de errado com isso.

Como iniciar o computador sem teclado?

É comum vermos a mensagem “keyboard error or no keyboard present” quando tentamos ligar o computador sem teclado. Mas pouca gente sabe que é possível sim iniciar um computador sem teclado.

Para isso entre no programa Setup do BIOS (pressione Del ou F2), vá em “STANDARD CMOS SETUP” e mude a opção “Halt On” para “All,But Keyboard”, salve e saia.

Então remova o teclado e tente ligar o computador.

P.S.: Esta dica é para BIOS AWARD, para outros modelos o procedimento deve ser equivalente, em computadores mais antigos também tem que desativar o “A20 gate” que depende do controlador do teclado.

Coisa inútil, mas engraçada

Que tal mandar a vaca dizer o resultado de determinados comandos?

Muito engraçado, olha as tetas dela, rs:

$ cowsay `uname -a`
_______________________________________
/ Linux diderot 2.6.16-2-686 #1 Fri Aug \
\ 18 19:01:49 UTC 2006 i686 GNU/Linux   /
---------------------------------------
\   ^__^
\  (oo)\_______
(__)\       )\/\
||----w |
||     ||
$

Baixando as 100 mais da Antena 1

Não sei se esta é a forma mais fácil, mas eu tentei baixar todos os arquivos usando aquela dica de baixar todos os arquivos de um diretorio, mas não funcionou pq o diretório onde estão as musicas não permite listar o conteúdo.
Por sorte todas as musicas estão numeradas de 01 a 100.

Primeiro baixamos as musicas de 01 a 09

$ i=1
$ while [ $i -lt 10 ] ; \
do \
w_get http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/0$i.wma;  \
i=$(($i+1)); \
done

Em seguida baixamos as musicas de 10 a 100.

$ i=10
$ while [ $i -lt 101 ] ; \
do \
w_get http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/$i.wma; \
i=$(($i+1)); \
done

Pronto, todas as músicas foram descarregadas.
Não esqueça de tirar o underline_ de w_get

Nota:
Como percebo que tem várias pessoas acessando o site apenas procurando os links das músicas, aqui estao:

http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/01.wma
http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/02.wma
http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/03.wma

http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/98.wma
http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/99.wma
http://www.antena1.com.br/descricao/som/As_100_Mais_da_Antena_1/100.wma

Criando um branch no SVN

Esta dica pode ser encontra em:

http://svnbook.red-bean.com/en/1.1/ch04s02.html

Primeiro baixe a cópia do diretório pai:

svn co https://lbdistro.svn.sourceforge.net/svnroot/lbdistro

Entre no diretório pai:

cd lbditro

Copia o desenvolvimento atual para o branch desejado:

svn copy trunk branches/LBdistro-old

Veifica se está ok:

svn status
A  +   branches/LBdistro-old

O sinal de + indica que a cópia foi criada

Agora é só dar o commit:

svn commit -m "Creating a branch of old LBdistro."

Descobrindo IP reverso no Windows

As vezes temos o IP do computador e queremos fazer o nome do mesmo, para isso basta executar o comando ping passando o argumento “-a”.

ping -a 16.127.36.52

Onde 16.127.36.52 é o IP da rede interna ou externa.