How to convert MDB (Access Database) to Mysql/MariaDB using MDB tools (linux tricks)

PC Pixel Art
Standard

Depois de instalar o mdbtools no Linux é necessário criar um shellscript, vamos lá:

 

#!/bin/bash

TABLES=$(mdb-tables -1 $1)

MUSER="rootdoMysql"
MPASS="senhadeRootdoMysql"
MDB="$2"

MYSQL=$(which mysql)

for t in $TABLES
do
    $MYSQL -u $MUSER -p$MPASS $MDB -e "DROP TABLE IF EXISTS $t"
done

mdb-schema $1 mysql | $MYSQL -u $MUSER -p$MPASS $MDB

for t in $TABLES
do
    mdb-export -D '%Y-%m-%d %H:%M:%S' -I mysql $1 $t | $MYSQL -u $MUSER -p$MPASS $MDB
done

Para rodar o script…:

./mdbconvert.sh meuBancoACCESS.mdb NomeDaBaseDoMysql

Vai restaurar tudo!

OBS só funciona se CRIAR o BANCO DE DADOS ANTES, então:

 

mysql -u root -p

Coloca a senha do mysql

CREATE DATABASE NomeDaBaseDoMysql;

 

Resolvido 🙂

FIAT + FIORI – UMA PARCERIA DE BABACAS FOREVER ALONE

Standard

A concessionária Fiori, revendedora da linha Fiat em João Pessoa, comercializou em dezembro de 2011 um veículo ‘Novo Palio’, modelo 2012, de placas OFB-7139-PB, com falhas ao cliente José Fernando Santos de Carvalho.

De acordo com o comprador, dois dias após a aquisição do veículo, começaram os intermináveis problemas. Inicialmente, o veículo não deu partida, ou seja, quando a chave de ignição era acionada, o painel não acendia e o carro não ligava o motor.

Indignação
“Procurei a Fiori para solucionar o problema e ‘eles’ (Fiori) não detectaram nenhuma anomalia, informando que o carro estava em perfeitas condições de uso. No entanto, o problema persistiu e eu retornei diversas vezes na concessionária para relatar a mesma anomalia, além de outros tantos, como um alarme de velocidade excedida sem que o veículo estivesse em tal condição. Houve travamento de porta-malas, ponteiro pulando, computador de bordo todo sem regulagem, entre outros problemas”, disse José Fernando.

Medo
O consumidor prejudicado teme pela sua vida e da sua família. Ele revelou que por conta de sua vida profissional, necessita  viajar constantemente. “Eu não posso nem me arriscar, pois não confio mais no Palio que adquiri na Fiori. Vou procurar meus direitos e tenho fé que tudo será resolvido”, desabafou José Fernando.

O outro lado

A reportagem do Paraíba Já entrou em contato com a Fiori, pelo 3208-1512, porém, a ligação passou por diversos ramais e acabou sendo desligada.

Paraíba Já

 

 

=============

 

http://paraibaja.com.br/?p=noticia_int&id=19509

 

Defeito de fábrica em Novo Palio 2012 e o descaso da FIAT

Nos ultimos 3 meses e meio, tenho retornado à Concessionária Fiat varias vezes. O fato é que comprei um carro(NOVO PALIO 2012) com anomalias, que eles nao conseguem resolver. Eles alegam: “O carro está em perfeitas condicoes de uso”.

Pasmem, ja experimentei porta-malas eletrico travado(no dia que ia viajar para ser padrinho de casamento), computador de bordo informando problemas no motor, dificuldades pra ligar o carro, ponteiro do velocimetro “PULANDO”, cortes na ingestão de combustível enquanto em movimento, controle das portas não respondendo e outras falhas na entrega do produto(direção desalinhada, risco no painel, peças alteradas).

Eu ja não aguento mais relatar o problema a empresa ou ficar vários dias à pés, por deixar o carro na Concessionária. Passo por diversos transtornos e incovenientes.

Tenho um filho de 1 ano. Todo pai sabe que “é lei”, chegar em casa e dar uma voltar na rua com o bebe pra ele nao chorar.Ficar se o unico carro da familia é MUITO PROBLEMATICO.

Faço viagems constantes à refice-PE, devido ao meu mestrado na UFPE e tenho MEDO DA INTEGRIDADE FISICA DA MINHA FAMILIA.

Sugiro que NÃO COMPREM VEICULOS FIAT, É JOGAR DADOS COM A SORTE. se o carro sair bem, ok, senão, vc ESTARÁ NO PREJUIZO (FATO).

 

Fullbackup parando no meio do caminho em algumas contas no CPANEL

Standard

Existe uma coisa estranha, e acontece mais do que imaginamos!

Já viu um fullbackup simplesmente parar no meio do caminho (pkgacct via console, por exemplo)?

Ou um user reclama que o backup está incompleto ou foi restaurar e o site não funfa mais? (um cms, por exemplo, como wordpress)

Isto ocorre em detrimento a limites do mysql (normalmente é esta a causa) no momento de gerar o dump, veja mais abaixo.

Um passo a segu1r é o seguinte, como root devemos executar o seguinte comando:

tail -f /usr/local/cpanel/logs/error_log

Se a saída do log (recomendo fazer isso via screen, por exemplo) for essa:

Script::Pkgacct::__ANON__() called at /scripts/pkgacct line 2154
Script::Pkgacct::run_dot_event(CODE(0x2b3d547e1050)) called at /scripts/pkgacct line 1141
Script::Pkgacct::script(‘Script::Pkgacct’, ‘LOGINDOCLIENTE‘) called at /scripts/pkgacct line 85
[UMA DATA] warn [pkgacct] LOGINDOCLIENTE_NOMEDOBD: mysqldump: Couldn’t execute ‘SHOW TRIGGERS LIKE ‘bl\_NOMEDOBD”: Got error 28 from storage engine (1030)
at /scripts/pkgacct line 1535
Script::Pkgacct::_check_error_file(‘LOGINDOCLIENTE_NOMEDOBD‘, ‘/home/cpmove-LOGINDOCLIENTE/mysql/LOGINDOCLIENTE_NOMEDOBD.sql.err’) called at /scripts/pkgacct line 1504
Script::Pkgacct::mysqldumpdb(HASH(0x2b3d547e1000)) called at /scripts/pkgacct line 1138
Script::Pkgacct::__ANON__() called at /scripts/pkgacct line 2154
Script::Pkgacct::run_dot_event(CODE(0x2b3d547e1050)) called at /scripts/pkgacct line 1141
Script::Pkgacct::script(‘Script::Pkgacct’, ‘LOGINDOCLIENTE‘) called at /scripts/pkgacct line 85

É simples de sanar!

Entre no /etc/my.cnf e comente as linhas que limitam uso de memória de cache (principalmente as de querys) do mysql.
Feito isto:

service mysql restart

Depois mande gerar o backup!

 

Se o problema não for resolvido veja se o erro é de EOF (end of file), se isso rolar, analise o disco, ou load (i/o no geral), pois pode ser falha no disco ou overload.
Abraços galera.

Service Unavailable HTTP Error 503 – Coisas que só o IIS pode “proporcionar” a você

Standard

Das coisas que mais me irritam a mais especial é a falta de logs precisos por parte do sistema operacional. Em se tratando de Microsoft aí é que a coisa pega e pega FEIO!

Um dos erros que me fizeram gastar aproximadamente 8 horas de troubleshooting foi o erro Service Unavailable HTTP Error 503. Das coisas que mais se alegam são:

– Chaves pré-definidas junto aos serviços do IIS:
http://blogs.iis.net/webtopics/archive/2010/02/17/a-not-so-common-root-cause-for-503-service-unavailable.aspx
e
http://blogs.msdn.com/b/drnick/archive/2006/10/16/configuring-http-for-windows-vista.aspx

– Contas sem autoridade junto ao IIS:
http://social.msdn.microsoft.com/Forums/en/mdmsetup/thread/4689da4a-0452-45b6-bbb4-21ccb76d8ff9

– IIS operando com recursos de 32 bits em plataformas 64 bits:
http://forums.asp.net/p/1502755/3560390.aspx

– IIS com “loucuras” que só Deus para não duvidar:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/55f71614-ef1b-4015-b9c8-a42c1e700c25.mspx?mfr=true

– Falaram que pode ser algum sysadmin modificando algo, por isso o downtime:
http://www.checkupdown.com/status/E503_pt.html
http://technet.microsoft.com/pt-br/library/cc736325%28WS.10%29.aspx

Caso você tenha “passado” pelos pontos acima e nenhum deles “sanou” seu problema, e além disso, você tem CERTEZA de que sua appweb está 100% depurada, debug 100% ok, tudo filé, e ainda tem CERTEZA que nenhum admin andou fazendo besteira em seu servidor, a saída pode ser alcançada da seguinte forma:

1 – Observe se existe alguma tabela corrompida em suas consultas SQL na appweb (caso consiga – detalhe, foi meu caso com BDs do tipo Mysql).
2 – Permissões em arquivos remotos ou tempo de resposta a tais chamadas.

Perceba que não é erro em nada de configuração, servidor e etc (evite loucuras como as minhas de tuning, pensando que era um erro de alto processamento, i/o e etc).

Normalmente os logs ineficientes (ex: 503 “n/a” nome do POOL_com_paranente_problema) do IIS falam que o pool de aplicativos “XXX” (nome que você deu ao pool) para rodar aplicativos DOTNET expirou/expulso/estuprou/estrangulou e etc a requisição (quer seja por POST ou GET). (na pasta logfiles dentro de windows – aonde o iis guarda seus logs)
O mais top dos erros:

1. “Connection_Dropped DefaultAppPool”
2. “Connection_Abandoned_By_AppPool DefaultAppPool”

Mesmo que você venha utilizar-se do software de debug que a MS tem, sinto muito em lhe avisar, mas será em vão utilizar-se tal ferramenta!
Siga os meus conselhos nas linhas em negrito, aquilo ali pode salvar seu dia. Use um frontend para executar suas querys e ver se não estão ali as saídas.

Ferramenta: http://support.microsoft.com/kb/919792/

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Could not use ‘(unknown)’; file already in use., SQL state S1000 in SQLConnect in

Standard

Antemão estou quase chorando por estar usando access, mas como se diz: “Sábio é o que dança conforme a música manda!”.
Estou desenvolvendo ferramentas para automatizar algumas replicações de dados de uma empresa e estou usando php (tecnologia) + access (isso é um banco?)

Este erro é ocasionado pelo fato de existir um drive fechando a conexão (na realidade aberto e acaba bloqueando novas conexões), por exemplo o Access abrindo a bendita base de dados access (.MDB).

Garanta que nada esteja abrindo o access database.

Uma forma de ver que isto está ocorrendo é observar se na pasta aonde o banco de dados esteja, exemplo nerdblog.mdb contenha também um arquivo nerdblog.ldb.

Ao fechar o driver ele automaticamente removerá o arquivo .LDB.

😀

max_allowed_packet PHPBB ou erro em qualquer aplicação PHP ou não PHP

Standard

Outro erro muito comum é este aí.
Considero um erro de fácil correção, bastando somente que você abra o arquivo my.cnf (no caso de pasta root) e my.cnf dentro do /etc e informe ou substitua a seguinte linha:

max_allowed_packet = 1G

Caso já tenha algum valor, aumente-o.
Este erro ocorre por limitação no tamanho do pacote no processo de querys do mysql.
Ajuste-o e tudo estará resolvido.

😉

Abraços.

Fazendo análise de disco e análise básica de um servidor

Standard

dmesg | grep -i err

Irá verificar erros recentes, problemas de RAM, aplicativos gerando qualquer log de erro significativo pro sistema operacional

tail -f -n XXXXX /var/log/messages

Similar ao anterior. XXX é o numero de linhas para trás. Sempre que o servidor travar, procure as ultimas entradas neste arquivo antes do travamento.

hdparm -Tt /dev/sda (sda, sdb, md0… seja qual for seu disco)

Te dá um relatório de leitura e escrita pro seu disco.

Os valores mínimos aceitáveis são:
Timing cached reads superior a 700
Timing buffered disk reads superior a 25

Se estiver inferior, é grande chance de problema no disco.

Faz um “top” e acompanha o parametro “wa” ou “iowait”.

Este parametro é o quanto seu sistema operacional espera por leitura/escrita do disco. Se durante 5 minutos esse parametro se mantiver muito alto (a cima de uns 60-70%), pode indicar sobrecarga do servidor e/ou problema no disco.

Servidor travou. Será que é Firewall?

Não é dificil acontecer. As vezes o firewall pode estar em um nível de segurança muito alto (acontece muito com o CSF), e o servidor barra todo o tráfego sainte. Tente desativar o Firewall por alguns dias. Não é nada bom ficar sem firewall, mas ir por eliminação nunca faz mal. O APF é uma boa alternativa de firewall pra Linux.

Se usar o CSF, nunca esqueça de sempre fazer update nele.

Alugue um KVM remoto

Outra dica nossa, seria pedir a instalação de um KVM remoto. Desta forma você consegue verificar de forma segura a temperatura do processador, gabinete e outros parametros. Quando o servidor travar, você terá acesso total a máquina e poderá investigar uma possível mensagem de erro no sistema (se houver).

É basicamente isso.. Existem muitas variáveis. Principalmente quando muitos clientes rodam aplicações que desconhecemos.

fonte: http://littleoak.wordpress.com/2009/08/14/fazendo-analise-de-disco-e-analise-basica-de-um-servidor/

Starting MySQL.Manager of pid-file quit without updating fi[FAILED]

Standard

Se você não consegue fazer nada no mysql e o bandido ainda assim só lhe diz:

Starting MySQL.Manager of pid-file quit without updating fi[FAILED]

Nada de pânico, para resolver isto use os comandos abaixo:

cd /var/lib/mysql/mysql
myisamchk -r *.MYI

Após, service mysql start.

Fonte: http://littleoak.wordpress.com/2009/08/27/starting-mysql-manager-of-pid-file-quit-without-updating-fifailed/

Software livre: Necessidade ou Xiitismo?

Standard

É muito comum ver pessoas criticando o software livre ou mesmo elogiando sem entender seu impacto no mundo comercial.

Vamos falar um pouco da realidade do Software Livre em um foco totalmente comercial para que as pessoas entendam a real necessidade desta metodologia/visão de negócio e também possam aplicar em suas vidas esta estratégia. (mais à frente explicarei o porquê de estratégia)

Em primeiro passo devemos fixar em nossas mentes que Software Livre NÃO é software gratuito, isto mesmo, o fato de você ter usado uma ferramenta de código-fonte aberto e se beneficiado da gratuidade deste utilitário não quer dizer que as pessoas não tirem proveitos financeiros sobre tal metodologia/visão.

Abaixo vou citar alguns casos aonde se extrai muito dinheiro do software livre.

Dentro deste seguimento prestemos atenção em um dos mais populares fenômenos do Software Livre, o Gnu/Linux e seus sabores.

Temos no mercado corporativo do pingüim 3 distribuições em especial que se destacam pela sua aceitação de mercado, estabilidade e suporte de alta qualidade:

* Red Hat
* Suse Enterprise
* Mandriva

As três distribuições acima citadas COBRAM pelo suporte e acesso a repositórios comerciais.

Em algum instante você pode estar se perguntando:
Isto é maquiavélico, por que eles cobram por Gnu/Linux se ele é gratuito?

Mentira! Gnu/Linux é um sistema de código-fonte aberto, mas isto não quer dizer que todos têm sua disponibilidade ou licença gratuitos.

Explique-me como manter um suporte via fone, helpdesk e ter servidores ligados 24 horas, com alta disponibilidade de rede e software?
Quem pagará as contas de luz, água e internet?

Quem pagará os desenvolvedores?

Vejamos outro caso de sucesso – Ubuntu. Sistema amigável, Gnu/Linux, grátis para uso, porém, o suporte cobra para impor seu know how e ajustar sua plataforma, mas pergunto, isto é maquiavélico?

Não, muito pelo contrário, é uma forma de manter o negócio das pessoas bem estruturado e reter lucratividade para empresa. (isto resulta em contratações de desenvolvedores mais experientes e equipamentos mais sofisticados para que sejam testados os softwares com mais stress)

Saindo do globo do pingüim, voltemos à situação do software livre como alternativa as empresas, como sua empresa ou sua casa, até mesmo seu escritório poderiam beneficiar-se de uma metodologia tão forte, melhor dizendo, uma tendência tão evidente e aplicável a qualquer mercado?

Simples, vamos analisar um caso bastante comum nas empresas e entender o porquê do Software Livre ser tão necessário para uma implementação.

Há meses presto consultoria em uma empresa mineira, tendo a mesma uma utilização software proprietário (isto não quer dizer Microsoft, mas qualquer código fechado é de propriedade do desenvolvedor) em alta escala. Até aí as coisas transcorriam de vento em polpa, entretanto, como nem tudo tende a ser um mar de rosas sem espinhos, houve a necessidade de implementação de uma simples funcionalidade no software que a empresa usa para gestão de seus negócios, o que aconteceu?
Houve um investimento de R$ 1000 (mil reais) para implementação de um campo.
Havendo 2 programadores na empresa (um programando em VB e outro em PHP), por que tal campo não foi implementado sem custos?
A resposta é clara, AONDE estava o código-fonte? Ele estava aberto? Quem diabos o fechou?

Pois é amigo, nesta hora as coisas começam a fazer sentido, e para piorar, o software utiliza cliente como sendo pontos de acesso, fazendo consultas infinitas no banco de dados, com resultados pesadíssimos, o que gera gargalo na rede, mesmo sabendo que um front-end no servidor resolveria tudo, visto que somente ele processaria toda a demanda, e o melhor, somente ele precisaria de alta capacidade de armazenamento e processamento, assim como evitar que cada terminal cliente não estivesse obrigado a utilizar-se de um Sistema Operacional Windows, visto que o mesmo tem custos e as bibliotecas da ferramenta comercial só operam nele.

Em cálculos mais claros, vamos analisar custo de licença e vantagens comerciais:

Se cada licença Windows XP Profissional custa R$ 250 (duzentos e cinqüenta reais), preço este sob compra em maior escala, e se a instituição possui 14 computadores nós temos 14 x R$ 250 = R$ 3500 (três mil e quinhentos reais). Cada hardware deve suportar Windows XP e os requisitos mínimos do software que não utiliza conceitos de mercado de TI do século XXI, ou seja, se cada máquina custa R$ 590 (sem monitor, é claro) nós temos R$ 8260 (oito mil duzentos e sessenta reais), então concluímos que o total gasto pela empresa para rodar a aplicação e estar provida dos recursos que a mesma disponibilizava foi de R$ 11760 (onze mil setecentos e sessenta reais) + custo de desenvolvimento e implementação da plataforma proprietária.

Vamos levar este foco agora para o Software Livre e ver o quanto as coisas começam a ficar claras:

Como o software utiliza-se de browser (nem tudo, por que os desenvolvedores podem usar linguagens como C, C++ ou Java) podendo ter sido feito até mesmo em Java (Java desktop) nós cortaríamos gastos com o sistema operacional, visto que não depende de sistema operacional para trabalhar, ou seja, abateremos (pelo menos) R$ 3500 (três mil e quinhentos reais) e o processamento (em caso de browser) é centralizado no servidor, o que faria com que máquinas de baixo processamento fossem utilizadas (sabe aqueles k6-II- 500 mhz parados aí na sua empresa?).

No caso acima, compilando e devolvendo o fonte principal ao cliente, é claro.(em caso caso de linguagens que necessitam de compiladores)

De posse de simples afirmações citadas não tenha medo de focar-se em Gnu/Linux e em Software Livre, por que com SL nós temos a possibilidade de analisar o fonte e mudar as coisas ao nosso estilo, seguindo as necessidades triviais de nossa empresa sem qualquer falta de qualidade, escalabilidade ou dificuldade na manutenção.

Quanto a utilizar-se de Gnu/Linux em sua empresa, faça isto por amar sue negócio, use Gnu/Linux para economizar em seu negócio.

Se às pessoas vierem justificando a não utilização por falta de recursos como impressão, rede e etc, fique certo de que a plataforma Gnu/Linux tem suporte as mais variadas impressoras que o mercado disponibiliza, tem suporte pesado a redes (servidores de dns, logon, ldap – que te dão a mesma autonomia de unidades organizacionais do Windows Server, assim como suporte dhcp, compartilhamento de arquivos e bancos de dados).

Em outras palavras, utilizar-se de Windows para facilidades já não é um argumento válido. Programar soluções proprietárias é outra afirmação equivocada, quer saber por quê?

1 – Software de código-fonte aberto permite uma interação mútua no suporte, ocorrendo de maneira mais simples,

2 – Software aberto permite que qualquer pessoa, inclusive o dono da empresa saibam o que realmente o código faz no back-end, (em background)

3 – Software aberto permite manutenção mais abrangente e update de software com mais qualidade,

4 – Software aberto permite que o código seja visto por qualquer desenvolvedor, o que dá mais amplitude na aplicação de técnicas mais maduras e sofisticadas.

Então, ainda vai ficar no mundo “Redmond”?

Lá em cima afirmei como estratégia o software livre, pois bem, pergunte ao Obama o que ele acha disto, visto que tornou tal metodologia como sendo padrão no desenvolvimento de aplicações para o governo (escolas, hospitais e etc).

Abraços a todos.

Como fazer downgrade do mysql 5 para o 4 no cpanel – how to downgrade mysql 5 to 4

Standard

Primeiro entre no arquivo:

vim /var/cpanel/cpanel.config

procure pela linha mysql-version=5.0 e em seguida coloque 4.1 no lugar de 5.0

saia salvando o arquivo, em seguida rode:

/scripts/mysqlup –force

Após isto, confirme a versão com:

rpm -qa | grep -i mysql-

Obs: Se funcionar eu quero uma caixa de Bis hein?

Ferro-Velho, “a verdadeira casa dos Geeks”!

Standard

Você pode até estar se perguntando o porquê deste título.
De fato é algo estranho, juro que não vou mentir em uma palavra sequer do meu post aqui, mas até foto tenho do que realmente vi.

Semana passada o dono do estabelecimento do qual presto consultoria me chamou para irmos ao ferro-velho, isto devido o fato de um amigo (o dono do ferro-velho) ter arrematado um lote de informática gigantesco, e que possivelmente acharíamos algo interessante.

Topei, mas dentro de mim aquela interrogação:

– Como alguém pode encontrar um parafuso que funcione em um computador no meio de um lugar como este que iremos visitar?

Talvez esta seria sua pergunta também, e concordAVA com você até o momento em que pisei lá.

Assim que chegamos atentei para uma pilha gigantesca de máquinas Itautec.
Corri atrás daquela pilha e comecei uma busca de apenas 4 dias úteis corridos.
Ah, em meio a tantas coisas impressionantes, sabe o que achei de bom? Sim existe algo de bom, mas sabe o que achei?

Nada de ter uma taquicardia hein?

1 – Um kit Celeron 2,5 ghz + 512 ddr 333 Samsung + Placa Asus
2 – Um kit pcchips Duron 750 mhz + 256 pc133 + hd 20 gb Seagate
3 – Um kit Celeron 566 mhz + 256 pc 133 + hd Seagate 20gb.

Entre muitas coisas.

Sabe quanto custou o trio acima citado?

R$ 300 reais.

Abaixo segue foto do Celeron 2.5 ghz + placa de rede 3com (achada lá também):

05-02-09_1417

05-02-09_1418

Sabe o que ele vai ser?

Servidor Slave de Banco de Dados e vai rodar Ubuntu Server 8.04!
Para os amantes de tecnologia antiga, achei um server Itautec 100mhz, só que tinha pouca memória e o hd scsi era muito pequeno, senão levava para casa!

Abraços.

=]

 

Como decompilar programas em Delphi – How to Decompiler Delphi application decompilar delphi

Standard

PRESTE ATENÇÃO em TODO o artigo para depois não dizer que o NerdBlog cometeu crime ou que “não souberam passar o macete”.
Irei mostrar a parte “burocrática da coisa” e a parte expert da “coisa”.

O texto abaixo foi tirado do link (logo após a nossa avaliação): http://www.ramosdainformatica.com.br/art_recentes01.php?CDA=45

Questão/Problema:

Aqui vou esclarecer porque não é possível decompilar aplicações desenvolvidas em Delphi. E apresentar as ferramentas existentes que prometem fazer isso.

Resposta:

Sempre encontramos pessoas interessadas em decompilar programas desenvolvidos em Delphi, sempre com desculpas de perda dos Fontes, ou perda de Disco Rígido.

O que é Decompilação? É muito simples, é o inverso de compilação. É a transformação de um Executável, em seu código fonte, no caso do Delphi, formulários e os fontes.

Suponha-se que você desenvolveu um Sistema que levou meses e até anos para estar pronto, derrepente você perde todos os fontes, ficando com apenas o executável. Qual a solução? Utilizar a engenharia reversa (decompilação) para recuperar todo seu trabalho (os fontes).

Uhhmm, então quer dizer que posso decompilar o projeto de outras pessoas? Bem, sim e não…

Então é possível Decompilar um programa?

Não, claro que não. Total decompilação não é possível – não exatamente como ele foi desenvolvido, ou seja, com o fonte original….

Quando um projeto em Delphi é compilado e linkado, para produzir um executável, a maioria dos nomes usados no programa é convertido em endereços. Na decompilação, se você observar em seus fontes originais, com os fontes de um executável decompilado, você irá perceber a troca de nomes em constantes, variáveis e procedures.

Porque e quando usar:

A engenharia reversa, pode ser usada por várias razões, eis algumas:

Ø Recuperação de Código Perdido;
Ø Migração de Aplicações para uma plataforma de Hardware nova;
Ø Determinação de existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;
Ø Recuperação dos fontes de outra pessoa;

Mas é Legal?

Engenharia Reversa NÃO é cracking, embora as vezes é difícil traçar um panorama entre os dois. Programas de computador são protegidos por direitos autorais e leis de marca registrada. Em alguns países são permitidos, como por exemplo a Rússia.

Na Rússia, se você compra um programa, ele é seu, pode-se fazer o que quiser com ele, inclusive aplicar a engenharia reversa. Recentemente um russo, decompilou alguns programas da Macromedia, alterou-os e distribuiu gratuitamente pela Internet, e a Macromedia não pode fazer nada contra isso, pois conforme as Leis da Rússia, o programa, uma vez alterado (não importa o que) passa ser de propriedade do indivíduo que o alterou.

Mas atenção, isso é apenas na Rússia. No Brasil, deve-se tomar bastante cuidado, por isso recomendo consultar um advogado, antes de realizar algum tipo de engenharia reversa, seja ela qual for.

Algumas leis que permitem a engenharia reversa:

Ø Suspeita da existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;

Mas existem outras leis, mas deve ser consultado com especialistas antes de sua execução.

Para escrever este texto, tive que consultar um advogado, o qual me falou que não haveria problemas, uma vez que é somente para estudos, e que os exemplos de decompilação de programas, sejam feitos com um programa por mim desenvolvido.

Por enquanto, os produtos da Inprise, não possui nenhum produto capaz de decompilar um arquivo executável (.exe) ou a “Delphi Compiled Unit” (DCU), volta para o código original (.PAS).

Delphi compiled unit: DCU

Quando um projeto Delphi é compilado, os arquivos .pas são convertidos para .dcu. Armazenando assim, em arquivos binários os fontes do projeto. Ou seja, unit1.dcu é igual a unit1.pas.

Isso significa que se você tem somente os DCU do projeto pode decompilar e obter os fontes do projeto. Errado. O arquivo com formato DCU não é documentado, e muda de versão para versão.

Após a Compilação: Engenharia Reversa no Delphi

Para quem quer tentar decompilar um projeto desenvolvido em Delphi. Eis algumas coisas que deveria saber:

Os programas desenvolvidos em Delphi, tem seus arquivos divididos em dois tipos de formatos: Código ASCII (.pas, .dpr) e arquivos de recursos (resource files) (.res, .rc, .dfm, .dcr).

Os arquivos DFM, contém os detalhes (Propriedades) dos objetos contidos em um formulário. Quando criamos um executável, o Delphi armazena as informações dos Formulários em um arquivo DFM para a geração do EXE.

Todas informações de um componente dos formulários, suas propriedades, localização e até mesmo nome, são armazenados em um arquivo DFM pelo Delphi. (Não os códigos de procedimento de eventos, esses são armazenados em arquivos .pas e .dcu.). Para se obter o arquivo DFM de um executável, é necessário conhecer a fundo como funciona um executável Win32.

Todos os programas compilados pelo Delphi, possuem as seguintes seções: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc. O mais importante ponto de vista de decompilação são os códigos e seções de .rsrc.

Entre muitos recursos que são armazenados em um arquivo executável, o RT_RCDATA segura as informações que estavam armazenadas em arquivos DFM, antes da compilação.

Alguns Decompiladores Existentes no Mercado

A arte da Engenharia Reversa, é uma área para técnicos, acostumados com a linguagem Assembler e Debugers, No entanto há diversas ferramentas que ajudam qualquer pessoa a realizar a engenharia reversa em Delphi.

Se você está interessado em aplicar a engenharia reversa em seus programas, aconselho a dar uma olhada nestes programas de Decompilação para Delphi:

DeDe (www.balbaro.com/dede/index.html )

DeDe é um grande programa de decompilação de programas desenvolvidos em Delphi. Ele analisa todo o executável, e fornece o seguinte:

Ø Todos os DFM, podendo ser alterados pelo Delphi;
Ø Todos os Fontes, .pas, .res, .dfm, etc… Todos comentados com os fontes em Assembler.
Ø Muito bom, se não fosse os arquivos .pas serem em Assembler, às vezes não podendo ser recompilado.

Reverendepro (www.puthoon.com/Revendepro/index.html )

Reverendepro acha quase todas estruturas (classes, types, procedures, etc) no programa e gera a representação de pascal e procedures escritas em Assembler. Devido a algumas limitações do Assembler, às vezes pode não ser recompilado. Os códigos fontes deste decompilador é livre. Devido a algumas limitações deste decompilador eu não pude explorar ele mais a fundo.

MRIP ( www.delphi32.com/vcl/4549/ )

Este programa procura e extraí arquivos de outros arquivos. MRIP pode pegar mais de 100 formatos de arquivos. O mais importante para nós é que o MRIP pode decompilar qualquer executável Delphi. Esta ferramenta pode extrair todos os recursos de uma aplicação Delphi: Cursores, Ícones que o DFM arquiva, arquivos .pas e outros. Nos arquivos PAS não contém os procedimentos de eventos. MRPI é uma aplicação DOS.

DfmExplorer (www.instinct.org/fravia/aitodelp.htm )

Isso é o que o DfmExplorer faz (Inclui os Fontes): Ele procura e separa todos os arquivos DFM do executável.

Exe2Dpr (www.instinct.org/fravia/aitodelp.htm )

Este programa é talvez o mais utilizado na decompilação de aplicações Delphi, mas ele só pega o DPR de um Executável.

CONCLUSÃO

A engenharia reversa (decompilação), é possível no Delphi? Sim, mas não 100%.

Então vamos acabar agora com este mito de decompilação de executáveis Delphi. Mas aconselho a você explorar todas as ferramentas aqui citadas, como uma forma de aprendizagem e curiosidade, e fazendo com que você mesmo, tire as suas próprias conclusões.

É isso aí, espero ter esclarecido este tabu, que sempre acompanha milhares de programadores.
++++++++++++++++++++++++++++++++++++++++++++++++

Agora entra a parte maliciosa da coisa (aonde o NerdBlog entra).

Já que entendemos como funciona a legislação brasileira sobre decompilação nós agora podemos tentar “salvar o mundo”… rsrsrs.

Primeiro passo
Ache o programa Certo!
Isto mesmo, testei a sistemática da situação e só obtive bons resultados com a seguinte ferramenta:

– reshacker em: http://angusj.com/resourcehacker/

O que ela me “rendeu” e como fiz?
Primeiro tive que decompilar a aplicação delphi que é o sistema da empresa, no caso, aquele EXE do tamanho do mundo.
Abrindo o reshacker a sua única dificuldade será  apontar a origem e o destino da decompilação.
Feito isto, quando o processo começar será gerado todo o fonte (inclusive arquivos de imagem bmp, por exemplo, tais arquivos retornam também).
Terminada a decompilação você terá em mãos o fonte.
Abra o projeto com o delphi e tente compilar (para localizar algum erro), caso consiga sucesso, parabéns, agora você tem o fonte do sistema, caso contrário o que você terá de problemas são os componentes ou erro de caracters (sendo muito fácil a correção, para este caso).

Acabou tudo, isto quer dizer que não posso mais concluir o meu projeto de decompilação delphi com sucesso?
NADA DISSO, faça como o carinha do site (aquele tosco de camisa do hacker),  o que você vai fazer é -> Buscar os componentes que “podem” ser os que você precisa.
O podem entre aspas duplas significa que nem sempre você vai encontrar todos os componentes necessários, até por que algumas pessoas vendem componentes feitos sob demanda de um cliente importante, em outras palavras, algo customizado, então trate de preparar seu cliente torrent e seu emule + limewire para pegar fogo com suas pesquisar e mandar ver. Antes iremos fazer uma busca básica nos sites:

http://inf.unisul.br/~osmarjr/delphi/componentes.htm
http://www.webmundi.com/delphi/dfuncaoc.asp?SubTipo=Visuais

Pronto, dependendo de sua aplicação a agonia acabará aí, mas a minha foi além… rsrsrs… mas houve triunfo.

De posse disto, instale os componentes no delphi e veja a necessidade que as units estão declarando e etc, em outras palavras, veja se lhe faltará algo mais e BINGO!

Zoneminder no Ubuntu ou Debian – Serviço de Câmeras Web (cftv)

Standard

Bom, vamos falar sobre a instalação do Zoneminder e algumas dicas e truques para o mesmo funcionar adequadamente.

Como tudo começou:

Meu chefe me passou a url do programa dizendo que seria uma boa solução para o controle das imagens geradas pelas câmeras internas. Pediu pra eu testar.

Equipamentos:

Placa de Captura com chipset bttv. Como já havia visto uma funcionando, indiquei a Pico2000. Que pode ser encontrada em média de 50 reais no mercado livre (http://www.mercadolivre.com.br).

Computador com slot pci, e os cabos para ligar as câmeras a placa.

E o sistema operacional usado será o Linux, distribuição Ubuntu.

A escolha da distribuição pesou devido ao fato de que todos os desktops da empresa rodarem Ubuntu, então pra não ficar inventando moda resolvi usar a mesma coisa para padronizar. E provavelmente o servidor que vamos colocar em produção vai ser Debian, não vai haver grandes mudanças na hora da instalação para produção.

Vamos ao que interessa.

ara fazer a verificação se o sistema detectou a placa, faça o seguinte procedimento:

# dmesg | grep bttv

Deve aparecer a seguinte saída:

Com isso já guarde as seguintes informações:

[ 82.180611] bttv0: registered device video0
[ 82.180792] bttv0: registered device vbi0

Instalações

Agora vamos a parte boa, instalar o que é necessário.

Vamos fazer a instalação por partes:

1. Apache, MySQL e PHP:

# apt-get update
# apt-get install apache2 mysql-server mysql-client php5-mysql php5-gd php5-cgi php-pear libgd-tools php5-dev libmysql++-dev libmysqlclient15-dev

Depois dessa instalação, já vai estar com seu servidor web pronto para o serviço.

2. Codecs de vídeo:

# apt-get update
# apt-get install libavcodec-dev libavcodec1d libavformat-dev libavformat1d libavutil-dev libavutil1d ffmpeg libavifile-0.7c2

3. As demais dependências:

# apt-get update
# apt-get install g++ make netpbm libssl-dev libjpeg62-dev libmime-perl libwww-perl libarchive-tar-perl libdate-manip-perl libarchive-zip-perl libmime-lite-perl libdbi-perl libdbd-mysql-perl libpcre3-dev libgnutls-dev

Feito isso seu sistema já vai estar pronto para receber o Zoneminder, após claro a pequena compilação dele.

Instalação do Zoneminder

Tendo instalado todos os programas anteriores, essa parte é mais simples pois provavelmente não vai dar erro agora.

Baixe o source pelo site:

# wget -c http://www2.zoneminder.com/downloads/ZoneMinder-1.23.2.tar.gz
# tar czf ZoneMinder-1.23.2.tar.gz
# cd ZoneMinder-1.23.2

Agora vem o pulo do gato, se você fizer sem alterar nada vai dar erro no make, se quiser testar, fique a vontade, se quiser fazer o trem funcionar de primeira edite o arquivo src/zm_mpeg.cpp e na linha 280 altere de:

#if ZM_FFMPEG_SVN

Para:

#if !ZM_FFMPEG_SVN

Isso mesmo, só adicionar um “!” ali depois do if.

Agora proceda com a instalação:

# ./configure –with-webdir=/var/www/zm –with-cgidir=/usr/lib/cgi-bin –with-webuser=www-data –with-webgroup=www-data
# make
# make install

Agora vamos usar o script para criar o banco de dados:

# mysql mysql < db/zm_create.sql -p

E agora logar no mysql para dar permissão ao usuário criado:

# mysql -u root -p
mysql> grant select,insert,update,delete on zm.* to ‘zmuser’@localhost identified by ‘zmpass’;
mysql> flush privileges;

Prontinho, prontinho, prontinho…

Script de inicialização

Crie um arquivo chamado zoneminder e coloque dentro dele as seguintes linhas para a criação de um script de inicialização “automágica”:

#!/bin/sh
# description: Control ZoneMinder as a Service
# chkconfig: 2345 35 15

# Source function library.
#. /etc/rc.d/init.d/functions

prog=ZoneMinder
ZM_PATH_BIN=”/usr/bin”
command=`which zmpkg.pl`

start() {
echo -n “Starting $prog: ”
$command start
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && touch /var/lock/zm
return $RETVAL
}
stop() {
echo -n $”Stopping $prog: ”
#
# Why is this status check being done?
# as $command stop returns 1 if zoneminder
# is stopped, which will result in
# this returning 1, which will stuff
# dpkg when it tries to stop zoneminder before
# uninstalling . . .
#

result=`$command status`
if [ ! “$result” = “running” ]; then
echo “Zoneminder already stopped”
echo
RETVAL=0
else
$command stop
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && rm -f /var/lock/zm
fi
}
status() {
result=`$command status`
if [ “$result” = “running” ]; then
echo “ZoneMinder is running”
RETVAL=0
else
echo “ZoneMinder is stopped”
RETVAL=1
fi
}

case “$1” in
‘start’)
start
;;
‘stop’)
stop
;;
‘restart’ | ‘force-reload’)
stop
start
;;
‘status’)
status
;;
*)
echo “Usage: $0 { start | stop | restart | status }”
RETVAL=1
;;
esac
exit $RETVAL

De acordo com sua distribuição, coloque o script no local adequado, dê permissão 775 para ele ser executado e reinicie sua máquina para fazer o teste.

Se for no Ubuntu também:

– copie para o diretório /etc/init.d
– faça os links simbólicos:

# ln -s /etc/init.d/zoneminder /etc/rc0.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc1.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc2.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc3.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc4.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc5.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc6.d/K20zoneminder

– pronto, ele irá iniciar sozinho.

Depois de feito todo o procedimento anterior, verifique se o apache está rodando, se sim acesse:

http://localhost/zm

Agora o resto é simples, para as configurações iniciais só clicar em Opções (ou Options se ele não pegar o idioma pt-br). Como na imagem abaixo:

Na primeira tela você pode escolher a linguagem da forma que achar melhor:

Na aba caminhos você edita onde deseja salvar os arquivos capturados:

Na aba imagens você escolhe como deseja que seja feito o streaming de vídeo e também o caminho do ffmpeg.

O resto das opções são bem intuitivas, basta ler. Isso vou deixar com você.

Dicas e conclusão

Dicas (Onde eu tropecei):

  • Verificar o padrão da câmera se é PALM ou NTSC.
  • Colocar pra gravar os dados em outra partição separada.
  • Ler os manuais

Conclusões

Esse artigo foi escrito com a finalidade de dar uma luz pra quem esta ralando nessa área e não quer mexer com esses GEOVISION. Então está aí pra mostrar o caminho, o resto depende de cada um. Qualquer dúvida, estamos aqui pra saná-la.

fonte: http://www.vivaolinux.com.br/artigo/Ubuntu-+-Zoneminder-=-Solucao-Livre-para-CFTV/?pagina=1

Hello world!

Standard

Esse termo Hello World é interessante, por que se observarmos o cidadão torna-se bem vindo ao mundo… rsrsrs, sem graça não é? Sim, mas faz sentido aqui em 2 situações:

Hello Nerd World and Hello Program World.

Seja bem vindo ao nosso site de How Tos e “contos de TI”.
Divirta-se ou aprenda algo interessante.

Prometemos How tos sobre Redes, PHP, Mysql, Postgres, Windows, BSD e Gnu/Linux, sem contar notícias sobre Apple, Sun, IBM e outros “monstrinhos” do mercado de TI, como Red Hat e a “pequenina” GOOGLE.

Obrigado por nos prestigiar.