Month: January 2008

Acessando a serial em kernel mode

As vezes precisamos acessar a serial a partir do kernel para criamos algum protocolo de rede que comunique com a serial ou algum driver que use a serial.

Pesquisando por isto, encontrei várias informações, então vamos começar pelo quick and dirt way:

struct file *filp = filp_open("/dev/ttyS0");
char buf[4096];
mm_segment_t oldfs = get_fs();
loff_t pos = 0;

set_ds(KERNEL_DS);
while (vfs_read(filp, buf, sizeof(buf), &pos) > 0)
printk("%s\n", buf);
filp_close(filp);

Isto até funciona, mas não é a forma correta de fazer.

A forma certa chama-se Line Discipline, e está descrita neste artigo:

http://www.linux-mag.com/id/1891

Eu e minha mania de fazer tudo do jeito mais difícil

Após instalar o firefox 32 bits no meu computador (AMD64) resolvi instalar o java e o flash. O java instalou sem problema, pois ele só descompacta e nada mais.

Já o flash deu um pouquinho de chateação. Após executar o flashplayer-installer aparece a mensagem dizendo que ele não suporta arquitetura x86-64, ora eu estou usando a ia32lib então tenho direito de instalá-lo.

Usando strace verifiquei que o instalador chama o programa “uname” para obter esta informação.

Então resolvi criar meu próprio uname.c :

int main(int argc, char **argv)
{
if(strcmp(argv[1],"-s") == 0)
printf("Linux");

if(strcmp(argv[1],"-m") == 0)
printf("i686");

return 0;
}

Depois de compilado copiei para /bin (claro fiz backup do original antes) e testei novamente.

Funcionou, enganei o instalador da Adobe/Macromedia ūüėČ

Eu poderia ter copiado a lib de outro computador, mas não teria a mesma graça e mesma dificuldade ūüôā

Uma técnica parecida com essa, porém mais apurada, pode ser utilizada para descobrir senhas em programas para Linux:

http://video.reverse-engineering.net/displayimage.php?album=28&pos=0

Palavras em portugu√™s que eu desconhecia

Resolvi criar uma nova categoria no blog, uma “omenage” √† nossa lingua t√£o importante e constantemente maltratada. Confesso com dois ss, que sempre tive problema com o portugu√™s (com a lingua portuguesa), prova disso √© o fato que a √ļnica mat√©ria que fiquei de recupera√ß√£o durante minha vida acad√™mica foi exatamente o portugu√™s.

Então vamos lá, chega de blablabla, vocês já devem estar curiosos para saber as palavras que eu desconhecia:

A:
abaetê Рpessoa sábia, pessoa feia, repelente
acintoso – apoquentador, teimoso
acreção Рprocesso pelo qual algo aumenta gradualmente de tamanho através do acréscimo de partes menores
acro Рfrágil, quebradiço
acropole – a parte mais elevada das antigas cidades gregas
ado – leite recentement mungido
aduz – apresenta, introduz, conduz
alcadafe – vaso de barro
alguidar – vaso muito largo e comprido, com boca maior que o fundo
amanhar – tratar a terra, cultivar
√Ęnfora – vaso com duas asas
ancho – vaidoso, orgulhoso
apa – bolo em forma de disco, p√£o sem fermento
apetecer Рdesejar muito, cobiçar
apoplexia – golpe violento, algo que provoca morte instant√Ęnea
arrear – colocar enfeite e adorno em algo
arrefecer – esfriar, tornar-se frio, moderar o zelo, o entusiamos
aru – esp√©cie de sapo das regi√Ķes do Amazonas
ascética Рque ou quem se entrega às práticas espirituais, vida de monge
asinino – est√ļpido, pr√≥prio de asno
ataraxia – Serenidade de √Ęnimo. Pessoa que n√£o se preocupa com os problemas
ata√ļde – caixa
atoar Рconduzir a reboque, rebocar, levar à toa
atoarda Рnotícia vaga, boato
atro – l√ļgubre, medonho
√°ulico – cortes√£o, palaciano

B:
barriga Рinformação falsa noticiada em jornal
basal – essencial, principal
batel – barco pequeno
beliz – sagaz, esperto, ladino
bramar – gritar, rugir, bramir
bramir Рrugir, soltar gritos de cólera
buril – estilo apurado, ferramenta para fazer gravuras em madeira

C:
cabotino – comediante ambulante
cacareno – velho, usado, de pouco valor
calandrar – lustrar, acetinar, alisar
camelice – tolice, sandice
caronte – Deus do mundo inferior e dos mortos (Mit. romana)
catafalco РEstrado alto sobre que se coloca o féretro
catarse Рpurificação, libertação do sofrimento de quem sofreu repressão
chicana – tramoia em quest√Ķes judiciais, trapa√ßa
colombina Рpersonagem de um gênero de comédia italina (Commedia dell’Arte), pedra da qual se extrai chumbo
contendas Рlutar, brigar, discutir, controvérsia
contritos – estar arrependido, pesaroso, penoso
cornija Рdecoração no alto de prédios, portas ou lareiras
coruscante – reluzente, cintilante, faiscante
cróceo Рamarelado, dourado, da cor do açafrão

D:
demover – fazer renunciar, dissuadir, abalar
digress√£o – passeio, excurs√£o
dole – comuna francesa

E:
ebó Рoferenda, despacho
efígie Рrosto ou vulto de uma pessoa numa moeda ou nota, retrato
elucubra√ß√Ķes – compor, realizar √† for√ßa de lig√≠lias
enação Рsaliência superficial dos vegetais (Bot.)
engrupir – enganar, ludibriar, induzir ao erro
engodo Рísca, atrativo, chamariz, lisonja, adular
éreo Рde bronze ou de cobre
esculento Рcomestível, que é bom de se comer
esgar – trejeito, visagem
estupefaciente – que entorpece, que deixa at√īnito (not√≠cia estupefaciente)

F:
falarica – dardo incendi√°rio, flecha com um chama na ponta
falca – t√°bua da borda de um barco
f√©retro – Caix√£o, ata√ļde, esquife
fleuma Рhumor, paciência

G:
gabão Рcapote com capuz, mangas e cabeção
garbosa – elegante, charmosa, aprumada, bonita
gauro – boi de chifre curtos da India
ginetes – pe√£o, cavaleiro, cavalo pequeno e ligeiro
gorgona Рmulher mitológica com cobras no lugar do cabelo
grei – rebanho de gado mi√ļdo, conjunto de paroquianos e diocesanos
guampo – chifre, aspa
gurma Рdoença que ataca os potros na época da dentição.

H:
hipomane Рveneno extraído de éguas no cio, feitiço feito com este veneno

I:
i√ßa – F√™mea alada da formiga sa√ļva
ilativo – conclusivo, que deduz os fatos
inane – f√ļtil, can√≠nha
incola Рmorador (poét.)
intruj√£o – enganador, burlador
írrito Рsem validade, sem confirmação

J:
jacente Рherança que fica para o governo, quando não há herdeiros necessários

L:
ladeada – flanqueada, acompanhada
lapa – grande pedra, gruta
litania – ladainha
loa – mentira, elogios, apologia
l√ļgubres – escuro, medonho

M:
maioral Рchefe, cabeça
menear – manejar, mexer, mover de um lado pro outro
messe – seara madura, ceifa, ganho, conquista

N:
nevr√°lgico – o ponte perigo ou delicado de uma quest√£o
nicar – picar com o bico

O:
oblação Рoferenda, oferta a Deus
ocaso – p√īr do sol, ocidente, poente, decl√≠nio, ru√≠na, cadente
odre Рsaco para líquidos
orago – santo, or√°culo, padroeiro
orate – idiota, louco

P:
pato√° – dialeto
patu√° – amuleto
peremptório Рdecisivo, terminante, categórico, que perime
pierr√ī – personagem da com√©dia italiana, Pierr√ī Apaixonado – marchinha de Noel Rosa
pinoia Рcoisa sem préstimo (pop.)
potentado – soberano de um estado poderoso, pessoa influente, podera ou rica
procrastinar – adiar, postergar, demorar
proxenetismo Рaquisição

R:
reigada – rego entre as n√°degas de certos animais
ribalta Рsérie de luzes à frente do palco, entre o pano de boca e o lugar da orquestra.
rififi – barulho, briga (pop.)
rossio Рterreno aberto, rua larga, praça
runa – antigo alfabeto germ√Ęnico

S:
sarc√īmero – um dos componentes b√°sicos do m√ļsculo estriado
sauveiro – reuni√£o de formegueiros de sauva
sisudo Рpredunte, justo, sério
solaparia – escavar, arruinar, encobrir
solapasse – aniquilar, arruinar

T:
taciturno – calado, silencioso
talmude – livro sagrado dos judeus
tarol – tambor achatado
tépido Рcom pouco calor, morno, frouxo
tesas Рestiradas, imóveis
teso – tenso, esticado, impetuoso, fig.: sem dinheiro
tororó Рcurto, muito aparado
tudesco Рalemão, germano, língua dos antigos Germanos

U:
uca – aguardente, caninha
udo – gra√ļdo, algo grande
ugar – gritar, alarmar, tornar plano, plainar

V:
valhala/valhalla Рlocal para guerreiros mortos em batalha (Mit. nórdica)
vénia Рlicença, permissão, absolvição
vereda Рlocal fértil, com vegetação abundante
vern√°culo – linguagem correta, idioma proprio do pais, genuino
verve Рimaginação viva, entusiasmo, energia
vilta – afronta, inj√ļria, vitup√©rio

Algumas podem ser conhecidas da maioria das pessoas, mas eu n√£o as conhecia ou n√£o tinha certeza do seu significado.

Janela de símbolos

Estou procurando por um plugin para adicionar ao gedit para que ele possa fazer referência cruzada usando como base um arquivo de índice ctags.

Encontrei um visualizador de símbolos (equivalente aqueles do MSVC e Eclipse) para o gedit:

http://www.micahcarrick.com/11-14-2007/gedit-symbol-browser-plugin.html

A instalação no Ubuntu é simples, basta descompactar o plugin em ~/.gnome2/gedit. No meu computador este diretório gedit não existia, então eu o criei e copiar para lá, funcionou corretamente.
Para ativar o plugin deve-se ir em Edit->Preference->Plugin e ativar o Symbol Browser.

Uma listagem com todos (vários) plugins para gedit pode ser encontrada eim:
http://live.gnome.org/Gedit/Plugins

O plugin que eu preciso é o CTags parser: http://live.gnome.org/Gedit/PluginCodeListing , porém para usá-lo terei que recompilar tudo com o fonte do gedit, pois só tem o binário para x86.

Debugger for Linux

Estava pesquisando sobre engenharia reversa e encontrei duas ferramentas interessantes nesta área, a primeira é para Windows e chama-se OllyDbg:

http://www.ollydbg.de

Infelizmente o código fonte não é aberto, trata-se de shareware que mais parece um freeware ūüôā

A segunda ferramenta é uma clone desta só que, felizmente software livre, para Linux:

http://www.codef00.com/projects.php#Debugger

Por enquanto ela só suporta x86, mas é provável que em breve passe a suportar outras arquiteturas, seria ótimo suportar ARM, facilitaria na modificação de firmware de smartphones e celulares.

Se o que você procura é apenas um disassembler para Windows então sem dúvida o IDA é o melhor, ele suporta vários processadores:
http://www.hex-rays.com/idapro/

Sai LinuxBIOS, entra coreboot

Esta notícia já está um pouco velha, mas como não foi muito divulgada vou postá-la aqui.

O projeto LinuxBIOS mudou de nome para refletir melhor a idéia do projeto, agora ele se chama coreboot.

Realmente faz sentido, uma vez que o sistema é utilizado para inicializar outros sistemas operacionais também e pode ser usado para outros fins que não tenham relação com Linux.

O site do projeto também mudou, alias o que não mudou ainda é a logomarca do projeto:

http://www.coreboot.org/Welcome_to_coreboot