Arquivo mensal: setembro 2009

Vulnerabilidade no Windows 2008/Vista e 7!

bsodJogando conversar fora e tomando uma cerveja com o Carlão (Carlos Barcellos), ele mencionou sobre uma falha de  negociação no protocolo SMB2 do Windows. Na hora não dei muita atenção, pois pensei que tal  vulnerabilidade não atingiria as maquinas com o sistema operacional atualizado. Para a  minha surpresas, todas as máquinas submetidas ao teste sofreram a famosa BSOD (blue screen of death)  seguido do desligamento imediato.

A vulnerabilidade ocorre no protocolo SMB2 (Server Message Block — versão 2) da Microsoft,  localizado na camada de rede, utilizado geralmente para o acesso aos recursos compartilhados e autenticação IPC (Comunicação Inter-Processo).

Este  protocolo é o padrão de compartilhamento de arquivos entre computadores rodando Windows, e especificamente a versão 2 (SMB2) pode ser derrubada por um código de prova de conceito. Por questões éticas não disponibilizarei  o código. A seguir a lista das versão comprometidas:

  • Windows 7 (32 e 64 bits);
  • Vista, Vista SP1, Vista SP2 (32 e 64 bits);
  • Windows 2008, e 2008 SP2 (32 e 64 bits, e Itanium-based).

“Esse método ataca via negociação de requisição de protocolo (negotiate protocol request) que é a primeira query enviada pelo SMB. A vulnerabilidade está presente apenas nas versões de Windows que incluem o Server Message Block 2.0 e tem o protocolo ativado. O sucesso no ataque não requer acesso local na máquina e resulta na Tela Azul da Morte (Blue Screen of Death).”

smb

A seguir, uma versão do pacote modificado:

 0x01, 0x00, 0x00, 0x90, // Cabecalho
 0xff, 0x53, 0x4d, 0x42, // String SMB
 0x72, 0x00, 0x00, 0x00, // Protocolo de negociacao
 0x00, 0x18, 0x53, 0xc8, // Codigo operacao 0x18 & sub 0xc853
 0x00, 0x26,             // Valor antigo esperado pelo protocolo "\x00\x00"
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x02, 0x50, 0x43, 0x20, 0x4e, 0x45, 0x54,
 0x57, 0x4f, 0x52, 0x4b, 0x20, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x20, 0x31,
 0x2e, 0x30, 0x00, 0x02, 0x4c, 0x41, 0x4e, 0x4d, 0x41, 0x4e, 0x31, 0x2e, 0x30, 0x00,
 0x02, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x57,
 0x6f, 0x72, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x33, 0x2e, 0x31, 0x61,
 0x00, 0x02, 0x4c, 0x4d, 0x31, 0x2e, 0x32, 0x58, 0x30, 0x30, 0x32, 0x00, 0x02, 0x4c,
 0x41, 0x4e, 0x4d, 0x41, 0x4e, 0x32, 0x2e, 0x31, 0x00, 0x02, 0x4e, 0x54, 0x20, 0x4c,
 0x4d, 0x20, 0x30, 0x2e, 0x31, 0x32, 0x00, 0x02, 0x53, 0x4d, 0x42, 0x20, 0x32, 0x2e,
 0x30, 0x30, 0x32, 0x00
OBS: Como mencionou o José Mateus Ucelli, quem conseguir controlar esse ponteiro na hora do estouro da pilha, pode apontar para execuçao de qualquer programa na memória…

OBS2: Sugiro aos usuários Windows (credo!) ficarem atentos com relação ao problema, e consequentemente  buscarem a  solução o mais breve possível junto ao fornecedor do sistema operacional. Pois códigos maliciosos surgirão de forma exponencial.

Fontes de informação:
Hack A Day

ARM Cortex A9 MPCore: processador dual-core de 2GHz

Uma nova versão do processador ARM (Advanced RISC Machine) surge com velocidade de 2GHz e uma arquitectura de 40 nanómetros. Com isto o processador Cortex A9 MPCore entrar na competição direta com o Atom, da Intel. Informações sobre esta criança, afirma que o seu novo processador consegue cinco vezes mais desempenho do que o rival e ainda consome menos energia.

A ARM menciona que este novo processador não impõe qualquer tipo de limitações aos fabricantes de hardware, apenas não suporta o sistema Windows (ainda bem…). Imaginem a capacidades dos futuros smartphones com este processador rodando SymbianOS ou Linux.

Fonte : http://www.arm.com

Print

Mensagens subliminares: Turbine o seu cérebro.

Acdm CerebroLendo um  pouco sobre mensagens subliminares, esbarrei no projeto Mentis cujo texto foi publicado no Viva O Linux. ” Mentis vem da palavra latina “mentis”, que significa Mente. É um software para ajudar os usuários com exercícios de reprogramação mental através da introdução de mensagens subliminares em forma de texto no desktop do usuário enquanto ele trabalha.”

O subconsciente é capaz de perceber uma mensagem exibida até mesmo com a duração de apenas 1/3000 de segundo, uma frase dita ou escrita de traz para frente ou um desenho perdido no meio de um fundo confuso. Ou seja o subconsciente é capaz de absorver informação muito mais rápido do que o consciente.

ATENÇÃO: O utilitário Mentis NÃO DEVE SER USADO POR PESSOAS COM EPILEPSIA. Esta é a maior recomendação.  2 das 10 pessoas que utilizaram o Mentis reclamaram de dores de cabeça depois de uma hora de uso. Recomendo então não usar por longos períodos de tempo caso isto aconteça. Alternar de 30 em 30 minutos.

Fonte de  pesquisas:

http://www.midiaindependente.org/pt/blue/2005/11/338054.shtml
http://jorgehessen.net/mensagens-subliminares-breve-esboco.html

http://www.vivaolinux.com.br/artigo/Mentis-Reprogramese/

Codec On2 VP8 pode ameaçar o reinado do H.264.

filtroO mercado de codecs pode sofre modificações a médio prazo, pois foi anunciado o acordo de aquisição da On2 Technologies pela Google ainda este ano. A On2 (A.K.A. The Duck Corporation ) é uma empresa especializada no mercado de compressão de vídeos em alta qualidade. Seguinte o site da empresa, mais de 2 bilhões de computadores no mundo utilizam a sua tecnologia de compressão, “On2 Video é o formato líder entre as empresas de soluções de mídia incluindo Adobe, Skype, Nokia, Infineon, Sun Microsystems, Mediatek, Sony, Brightcove e Move Networks”.

Sendo assim, é muito provável a Google passar a utilizar o codev VP8 na versão HTML5 do YouTube. Isto provocaria uma atualização imediata de codecs em massa nos navegadores (substituindo os formatos padrões em Flash).

Pensei que o reinado do h.264 estava intocável por um breve período. Mas com esta compra da On2 pela Google, o cenário muda completamente. A especificação técnica menciona que o VP8 é mais eficiente que H.264. Se a Google liberar o uso do VP8 (como sempre faz)  ou utilizar uma política de licenciamento menos agressiva ao mercando, com certeza  o futuro do vídeo monitoramento e das mídia  digitais não estará tão definido como eu imaginava.

O VP8 possui o loop filter (permite filtro em diferentes partes do quadro), suporta processadores a partir do ARM 9 100MHZ (Viva \o/ !!!) e explora com e eficiência os processadores multicore paralelizados SMP (multiprocessamento simétrico).

Para efeito de informação, lembro como se fosse hoje, quando em 2002  (Ainda  usava o Conectiva ) a On2 liberou para domínio público o codec VP3. O mesmo serviu de base para o desenvolvimento do codec de código aberto Ogg Theora que utilizo no meu dia-a-dia.

Mais informações em On2 .

h264

Visão Computacional:Reconhecimento de figuras em tempo real.

Estou atualmente testando algorítimos de visão computacional com treinamento, reconhecimento de padrões e também de imagens em tempo real. Os resultados são animadores, mas existe muito longo caminho para evoluir… O próximo passo é abstrair as funções em C++ assim levando o desenvolvimento para o alto nível e obtendo ganhos de produtividade na produção de soluções mercadológicas. Vejam o resultado laboratorial no vídeo a seguir.

Vídeo captura com webcam via Browser (Windows/Linux).

webcam1Conversando com o  Estevão e  Leandro (Pipoca) na NETi TECNOLOGIA sobre os  procedimentos necessários para efetuar video captura ao vivo via web, resolvi buscar minhas pesquisas passadas e encontrei  o projeto FlashCam.

Este  projeto demonstrou conceitualmente que o flash é capaz de resolver com eficiência tal demanda.

Neste LINK podemos conferir a  sua funcionalidade.A seguir  o código encontrado em oldes.multimedia.cz

background 0.0.0
obj_video: video
myVid: place obj_video [at 5x5 scale 2] ;default size is 160x120
doAction [
    webcams: Camera.names.length
    if webcams = 0 [
        test: "No WebCam found"
    ] else if webcams > 1 [
        System.showSettings(3)
    ]

    myCam: Camera.get()
    myCam.setMode(160  120 12) ;(width height fps)
    myVid.attachVideo(myCam)

    ;motion detection:
    x: 0
    motion: func[mode][
        test: reform [
            "move" x  mode
            "bandwidth:" myCam.bandwidth
        ]
        x++
    ]
    myCam.setMotionLevel(30 100) ;(sensitivity, timeout)
    myCam.onActivity: func[mode][motion(mode)]
]

fnt_Courier: Font [name "_typewriter" bold]
txt_test: EditText test 320x18 [ReadOnly border Font [fnt_Courier 11]]
place txt_test at 5x245
showFrame
end

webcam2

Artigo: ARToolKit – Criando aplicativos de Realidade Aumentada

“Em 30/03/2009 disponibilizei um documento sobre o jogo Levelhead, um jogo de realidade aumentada.
Agora, neste documento apresento a ARToolKit, uma biblioteca criada para facilitar o desenvolvimento de aplicativos com o recurso de realidade aumentada. Ou seja, a sobreposição de objetos virtuais e tridimensionais gerados por computador junto ao ambiente real.”

Clique AQUI e leia o documento na íntegra.

Estampando a data de criação em imagens jpeg.

Comprei uma câmera digital DSC W220  da Sony.  Não  tenho nada a  reclamar  exceto a ausência da função Date/Time Stamp. Fique surpreso,  quando a  minha esposa pediu para  habilitar tal recurso.  Pois constatei que esta função não estava  disponível neste modelo :(

Procurando na internet, encontrei este script que  imprime a data e  hora  de criação na imagen. Adaptei o script  para imprimir apenas  a Data  (assim suprimindo  a hh:mm:ss para evitar problemas  como horário de verão entre outros). Veja o resultado a seguir:

bolo_DT

Disponibilizo  a versão do script que sofreram as minhas alterações:

#!/bin/sh
font="/usr/share/fonts/truetype/LiberationMono-Bold.ttf"
if [ $# -eq 0 ]
 then
 cat << _EOF_
USAGE: $0 file1 file2 ..., or
 $0 *.jpg, or
 $0 dir/*.jpg
 ...
_EOF_
exit
fi
while [ "$1" != "" ]; do
 if [ -d "$1" ]; then
 shift
 continue
 fi
 if [[ $1 == *_DT* ]]
 then
 echo "------  Skipping: $1"
 shift
 continue
 fi
 file=$1
 echo "######  Working on file: $file"
 filename=${file%.*}
 extension=${file##*.}
 output=${filename}_DT.${extension}
 dim=$(identify -format "%w %h" "$file")
 width=${dim%% *}
 height=${dim#* }
 data=`identify -format "%[EXIF:*]" $file | sed -r '/:DateTimeOriginal=/!d;s#.*=([0-9]{4}):([0-9]{2}):([0-9]{2}).*#\3/\2/\1#'`
 if [ $width -ge $height ]
 then
 pointsize=$((`expr $width / 30`))
 else
 pointsize=$((`expr $height / 30`))
 fi

 echo "        Width: $width, Height: $height. Using pointsize: $pointsize"
 convert "$file" -gravity SouthEast -font "$font" -pointsize $pointsize -fill white -annotate +$pointsize+$pointsize $data "$output"
 shift
done

exit 0