Wednesday, November 28, 2007

How To Play RMVB (Real Media) in Mplayer

Mplayer by default doesn't play *.rmvb files, which are real player files, probably because the codecs are proprietary and because of that they can't be packed in the Mplayer basic codec pack.

Basically in this "how to" we are going to show how to add a additional pack of codecs (Windows codecs), in which the RMVB codec is included.

First off all, let's start by installing the Mplayer, using apt-get:

$ sudo apt-get install mplayer

Now that the mplayer is installed let's download the the pack, at:

ftp://opensys.linuxpackages.net/pub/Slackware-10.1/jay/mplayer/MPlayer_codecs-20050412-i686-1jto.tgz


Extract the MPlayer_codecs-20050412-i686-1jto.tgz like this:

$ mkdir /tmp/codecs
$ cd /tmp/codecs
$ tar -zxvf /.../MPlayer_codecs-20050412-i686-1jto.tgz

Now we have all the extracted content of MPlayer_codecs-20050412-i686-1jto.tgz in /tmp/codecs.

The next step is to copy the codecs to the rigth place, so that Mplayer can use them,
that place is the directory /usr/lib/win32 (which probably doesn't exist). To do that just do like this:


$ sudo mkdir /usr/lib/win32
$ sudo cp /tmp/codecs/usr/lib/codecs/* /usr/lib/win32

And that's it, now you can play RMVB files along with many others.

Just one more thing, cleaning up the extracted codecs:

$ sudo rm -rf /tmp/codecs

All set! Enjoy :)

Thursday, August 2, 2007

Tunelling P2P (Bitorrent) Over SSH

Have you ever been on a network somewhere where Bittorrent simply doesn’t work? The ports might be blocked, the packets are inspected, etc…? Well, after a little research and a buck i’ve managed to come up with a pretty good solution. I’d heard about tunneling content through SSH, but never really figured out how to get it working. That is, until now.

I was really excited my first day at Blue Lava when I heard that they had a 20mbps connection. I was told I could download full Linux ISO’s in ten minutes. Pretty quick. Sadly the ports for Bittorrent were blocked and my downloading spree never began.

Right now I am sitting in a Starbucks right near the south shore of Oahu, Hawaii. I’ve got Azureus open and its downloading at a steady pace of 170kbps, I’ve pretty much maxxed out the connection over here. The funny (or cool) thing is, the ports are blocked! So how can you bypass your corporate firewall or public hotspot (like Starbucks T-Mobile WiFi) and work out your download muscle? Read on!

First of all, you are going to need some sort of shell account to tunnel everything through. I’ve already tried using my Silenceisdefeat account, but their SSH server is not configured the way that we want it, so that won’t work. A friend of mine told me about Disflux, a service almost exactly like Silenceisdefeat. Disflux has their SSH servers configured the way we want em though, so that is what we are going to use.

UPDATE: Turns out that Disflux died or something. But! Don’t flip out! As it turns out (Thanks Chris! - #19) Silenceisdefeat.org, which is my choice of shell anyway, does work with this guide. However, it will only work if you connect to ssh.silenceisdefeat.org!

So I shelled out the $1 for my disflux Silenceisdefeat.org shell account (I actually already had one, best thing ever), and went on my merry way figuring out how to configure everything else. Some may think that paying for something like this is nuts, but honestly, Bittorrent has become a part of my everyday life, I depend on it like a crack addict depends on his crack. One buck is totally worth the hours of glee BitTorrent has to offer.

First thing you need to do after buying your shell account is open up a terminal (in OSX its in the Utilities folder), or download putty if you’re on Windows. If you are on Linux and don’t know how to open a terminal I feel sorry for you.

In the terminal type “ssh username@domain -D portnumber”, this goes for OSX and Linux. Now, with PuTTY on Windows I am not quite sure how to go about doing this. I am pretty sure you would just type “-D portnumber” into a extra flags option box or something, but I am really not quite sure. Edit: Scroll down for Eberth’s Windows guide! Or you lazy people can clicky.

For example, I use: “ssh whalesalad@ssh.silenceisdefeat.org -D 7777″. You can use any port you want, but make sure it isn’t being used by anything else. I happen to like the number 7777 so thats what I chose.

Screenshot_3.png

NOTE: In the screenshots Disflux is used, simply replace shelly.disflux.com with ssh.silenceisdefeat.org after creating an account and you will have no problems!

Now, what does this do? This has your open SSH session act as a SOCKS proxy. This is what we are going to have Azureus or any other bittorrent client of choice use.

-----------------------------------------------------------------------------------------------------------------------
In detail the -D [bind_address:]port option does the following:

Specifies a local “dynamic” application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, optionally bound to the specified bind_address. Whenever a
connection is made to this port, the connection is forwarded over
the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine. Currently
the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
as a SOCKS server. Only root can forward privileged ports.
Dynamic port forwardings can also be specified in the configura‐
tion file.

----------------------------------------------------------------------------------------------------------------------------


Once that terminal is open, just minimize or hide it, but leave it open. The proxy will only work if that terminal is open and connected, so try not to fiddle with it.

Now we have to configure our BitTorrent client of choice. I recently “switched” to OSX and am using Azureus, but if I had my way I would be using the greatest client ever: uTorrent. Because I can’t get the internet working in Paralells at the moment I can’t help explain how to configure uTorrent, but here is what you need to do to get Azureus up and running with our newly created SOCKS proxy.

First of all you need to enable the Advanced options area of Azureus. You can do this by re-running (or running if this is your first time using Azureus) the configuration wizard. On OSX this is under the Azureus menu, I’m not quite sure where it is on Windows (=P). Choose the advanced user option, this will let us configure Azureus to use proxies. Once this is done, open up the preferences area of Azureus.

Screenshot_4.png

From there open up the “Connection” sub items and then the “Proxy Options”. From there, check the “Enable proxying of tracker communications” and “I have a SOCKS proxy”. In the host field enter “localhost” and in the port field enter whatever number you used to start the proxy, for me thats “7777″.

Save your options and thats it! Now you should be able to head to any one of the online tracker websites and download away! Legal files of course, we don’t encourage piracy or stealing here at the salad. Make sure to leave comments if it works for you, and any other tips or tidbits you’d like to share!


Edit: For all you windows users out there, Eberth made a comment below on how to get this working. He did such a good job, I’m going to include it right here in my guide.

First you need to get PuTTY. It’s a great client, back when I used Windows it was my SSH client of choice. You can find a direct link to PuTTy here.

Open up PuTTY and enter shelly.disflux.com into the host field.

Go to Connection > SSH > Tunnels, and write your port on the source port field (in this case i’m using the same as Michael, 7777) and select the “Dynamic” checkbox, click the add button.

I’d reccomend what Eberth explains in his comment, which would be to save your session so that next time you can just fire up PuTTY and double click your saved session to reload the same settings. Enter a name for the saved session and click save, its as easy as pie!

Now you’ve got your SOCKS proxy running, time to fire up your favorite BitTorrent client. Azureus users can use the same configuration that I have above, but if you’re smart you’re going to be using uTorrent. Here is a screenshot of the way Eberth configured his client:

Thanks Eberth!


Based on: http://www.whalesalad.com/2006/08/27/tunneling-bittorrent-over-ssh/

Friday, July 27, 2007

Gnome/Nautilus and Mozilla Shortcut Keys

Here are some very handy shortcut keys for Gnome/Nautilus an Mozilla you might not now.

nautilus / gnome:

ctrl-h : show hidden files

ctrl-t : move to trash

f9 : toggle side-pane

alt-home : jump to home folder

alt-enter : file / folder properties

alt-f1 : launch applications menu

alt-f2 : launch “run application” dialogue

ctrl-alt - right/left arrow : move to the next virtual desktop

ctrl-alt-shift - right/left arrow : take current window to the next virtual desktop

ctrl-atl-l - to lock your screen while you are away

firefox:

ctrl-k : firefox search field

ctrl-l : firefox address bar

ctrl-pgup : next tab (left to right)

ctrl-pgdn : previous tab (right to left)

ctrl-t : new tab

ctrl-r / f5: reload page

ctrl-u : view page source


Based on: http://ubuntu-tutorials.com/2007/02/20/shortcut-keys-you-might-not-know-about/

Sunday, July 15, 2007

Sistema de ficheiros /proc

Hugo Cisneiros, hugo@devin.com.br
Última atualização em 06/02/2003

O sistema de arquivos /proc é um diretório especial onde fica todas as informações de depuração do kernel. Também se encontram algumas configurações que habilitam e desabilitam o suporte à alguma coisa no kernel. É muito útil para o diagnóstico do seu hardware. Vou aqui comentar arquivos do /proc para você 'depurar' o seu hardware:


  • /proc/devices
    Aqui estão os dispositivos encontrados no seu sistema, incluindo modem, placa de som, placa de rede, teclado, impressora, etc.
  • /proc/interrupts
    Neste arquivo estão as informações das IRQs dos dispositivos.
  • /proc/ioports
    Informações sobre os endereços das portas I/O (Input/Output).
  • /proc/pci
    Dispositivos PCI instalados no sistema. O comando 'lspci' também serve para mostrar esse arquivo.
  • /proc/cpuinfo
    Aqui você pode ver as características do seu processador e máquina.
  • /proc/filesystems
    Sistemas de arquivos suportados pelo kernel.
  • /proc/devices
    Dispositivos gerais instalados.
  • /proc/meminfo
    Informações da memória usada. O comando 'free' também serve para mostrar este arquivo.
  • /proc/modules
    Módulos carregados no kernel. O comando 'lsmod' também serve para mostrar este arquivo.
  • /proc/mounts
    Partições montadas. O comando 'mount' sem parâmetro nenhum mostra esse arquivo.
  • /proc/partitions
    Partições existentes e que o Linux reconheceu.
  • /proc/version
    Versão do kernel. O comando 'uname' também serve para mostrar este arquivo.

    Explore este diretório! Só não dê um cat no arquivo /proc/kcore, por favor! :) kcore = kernel core.

  • Tirado de: http://www.devin.com.br/eitch/fsproc/
  • Permissões de directorias e ficheiros em Linux

    Hugo Cisneiros, hugo@devin.com.br
    Última atualização em 06/02/2003

    No Linux, como em outros sitemas Unix, cada arquivo tem uma permissão. As permissões são atributos dos arquivos que especificarão se ele pode ser lido, executado ou escrito. Estas permissões que vão definir o que um usuário pode fazer. Para saber se um programa é executável ou não, execute um 'ls -l' e veja no lado esquerdo se o arquivo tem X nos seus argumentos, como no exemplo abaixo:

    drwxr-xr-x   2 root     root         1024 Dec 23 15:22 bin
    drwxr-xr-x 2 root root 1024 Dec 31 05:48 boot
    drwxr-xr-x 2 root root 1024 Dec 6 15:51 cdrom
    drwxr-xr-x 3 root root 8192 Mar 11 10:17 dev
    drwxrwxr-x 2 root root 1024 Feb 27 13:52 dosa
    dr-xr-xr-x 11 root root 2048 Mar 11 10:19 etc
    drwxr-xr-x 11 root root 2048 Feb 23 19:08 home
    drwxr-xr-x 3 root root 1024 Feb 23 19:13 lib
    drwxr-xr-x 2 root root 12288 Nov 2 11:25 lost+found
    -rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup
    -rw-rw-r-- 1 killer users 2342 Mar 10 03:12 teste.txt
    -rw-rw-rw- 1 hugo visits 23412 Mar 09 22:22 teste2.doc

    No exemplo acima todos os arquivos tem como dono root e como grupo também root, com exceção do 'teste.txt' que o dono é 'killer' e o grupo é 'users', e também 'teste2.doc', no qual 'hugo' é o dono e o grupo 'visits' também é dono. Como você pode ver do lado esquerdo de cada arquivo/diretório existe um série de letras r, w, x ou d! Vamos ver o que representa cada uma delas:

    drwxrwxrwx
    0111222333

    No caso acima, a primeira coluna significa (numero 0) se o nome listado é um diretório ou não, caso não seja um diretório ele será exibido da seguinte maneira:

    -rwxr--r--   1 root     root           57 Mar 10 03:44 make-backup
    \--------> Não contém a letra 'd', não é diretório, e sim arquivo

    O exemplo abaixo mostra o que seria um diretório:

    drwxr--r--   1 root     root            1 Mar 10 01:12 bin
    \----------> Contém a letra 'd' na primeira coluna, é um diretório

    Também há casos em que no lugar do 'd', aparecem outras letras que indicam outros tipos de arquivos. A letra 'l' significa que é um link simbólico, as letras 'c' e 'b' correspondem à dispositivos (/dev). Veja alguns exemplos abaixo:

    crw-rw----   1 hugo     audio     14,   4 Dec  2  1999 audio
    brw-rw---- 2 hugo cdrom 22, 64 May 5 1998 hdd
    lrwxrwxrwx 1 root root 8 Oct 17 22:53 cdrom -> /dev/hdd

    Continuando, na segunda coluna (números 1 de acordo com o exemplo mais acima) temos as definições para o dono do arquivo, como mostra o exemplo:

    -rwxr--r--   1 killer   users        1231 Mar 09 12:12 teste.txt
    ||\--------> O dono do arquivo (killer) pode executar o arquivo, x=executable!
    |\---------> O dono do arquivo (killer) pode gravar no arquivo, w=writable!
    \----------> O dono do arquivo (killer) pode ler o arquivo, r=readable!

    Seguindo, na terceira coluna (números 2 de acordo com o exemplo lá em cima) temos as definições para o grupo que é dono do arquivo, como mostra o exemplo:

    -r--rwxr--   1 fernando visits        212 Mar 01 12:42 exemplo.doc
    ||\-----> O grupo dono do arquivo (visits) pode executar o arquivo!
    |\------> O grupo dono do arquivo (visits) pode gravar no arquivo!
    \-------> O grupo dono do arquivo (visits) pode ler o arquivo!

    Finalmente, temos a quarta coluna (composto pelos números 3), essa coluna se refere as permissões para todos os outros usuários do sistema, sem ser os donos e grupos-donos dos mesmos, exemplo:

    -r--r--rwx   1 fernando visits       1231 Mar 03 12:42 exemplo2.doc
    ||\--> Todos os usuários (exceto fernando e usuários do grupo visits)
    || tem permissão para acessar o arquivo!
    |\---> Todos os usuários (exceto fernando e usuários do grupo visits)
    | tem permissão para gravar no arquivo!
    \----> Todos os usuários (exceto fernando e usuários do grupo visits)
    tem permissão para ler o arquivo!

    Quando nos referimos a diretório invés de arquivos, o FLAG x (executável) diz se o diretório é ou não acessível, já que não podemos "EXECUTAR" diretórios... Exemplo:

    drwxr--r-- 1 root       root         2134 Mar 01 12:54 exemplo3
    ||||| \----> Todos os usuários podem ler o interior do diretório, mas não
    ||||| podem usar o comando 'cd' para entrar nele, pois não existe
    ||||| o FLAG 'x' para a quarta coluna!
    ||||\-------> Usuários do grupo 'root' podem ler o interior do diretório,
    |||| mas também não podem usar 'cd' para entrar no diretório!
    |||\--------> O usuário 'root' pode usar 'cd' para entrar no diretório!
    ||\---------> O usuário 'root' pode gravar arquivos nesse diretório!
    |\----------> O usuário 'root' pode ler o interior desse diretório!
    \-----------> Indica que o nome listado é um diretório!

    O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos arquivos e/ou diretórios, a sintaxe básica do comando é:

    chmod [ugoa]{-+}[rwx] nome_do_arquivo_ou_diretório

    Então vamos à um exemplo. Se eu quero mudar a permissão para o dono do arquivo (u=user) poder ler e gravar (rw) no 'arquivo1.txt', faço o seguinte:

    $ chmod u+rw arquivo1.txt

    Caso você queira desfazer o comando, você faria: "chmod u-rw arquivo1.txt". Como se vê, o + ou - define se os FLAGS serão ativados ou desativados! Outros exemplos:

    $ chmod a+r arquivo2.txt

    (Todos usuários (a=all) podem ler o 'arquivo2.txt')>

    $ chmod o+w arquivo3.txt

    (Outros usuários (o=others) sem ser o dono e o grupo dono do arquivo, podem gravar no 'arquivo3.txt')

    $ chmod g+x netscape

    (O grupo-dono do arquivo (g=group) pode executar o arquivo 'netscape')

    O comando chmod pode também ser usado com números, em vez dos flags. Este método é chamado de octal, veja o exemplo abaixo:

    $ chmod 664 arquivo.txt

    O que quer dizer cada um desses números? Veja abaixo:

    Número Significado
    0 Nenhuma permissão
    1 Permissão para executar
    2 Permissão para gravar
    3 Permissão para gravar e executar
    4 Permissão para ler
    5 Permissão para ler e executar
    6 Permissão para ler e gravar
    7 Permissão para ler, gravar e executar

    No exemplo o comando informou que o 'arquivo.txt' pode ser lido e gravado pelo seu dono (numero 6 na primeira coluna), informou que pode também ser lido e gravado pelos usuários que compõem o grupo-dono (numero 6 na segunda coluna), e informou que pode ser lido por todos os outros usuários do sistema (numero 4 na ultima coluna).

    O comando chown é simples e pode ser usado para mudar o dono e o grupo dono de um arquivo/diretório. E é usado da seguinte maneira:

    $ chown usuario.grupo arquivo_ou_diretorio

    Como exemplo, vamos definir que um arquivo 'teste4.txt' terá como dono 'killer' e como grupo 'users':

    $ chown killer.users teste4.txt

    Outros exemplos:

    $ chown mrdvs.visits teste5.txt
    $ chown hugo.users teste6.txt
    Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br

    Tirado de: http://www.devin.com.br/eitch/permissoes/

    Gestão de Utilizadores (Linux)

    Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br
    Última atualização em 12/02/2003

    Como você já deve saber, o Linux é um sistema multi-usuário, então, é claro que não só pode existir um usuário usando o sistema. Uma primeira coisa que possamos dizer é que o Linux não pode de alguma maneira ser usada sem estar sendo um usuário. O usuário 'root' é o administrador do sistema, e é ele quem você vai usar primeiro para criar outros usuários depois (a não ser que você tenha criado um usuário comum durante a instalação do seu Linux).

    Antes de mais nada, fique sabendo que o root é um usuário especial, ele pode fazer TUDO em seu sistema, não importa o que acontecer, ele faz. Ao contrário dos usuários comuns, que têm restrições. Se você já instalou algum Linux, você verá que a primeira coisa que você irá fazer antes de usar o sistema é se logar como root, ou seja, preencher aquele campo login: com o usuário root. Mas aí por alguma razão você quer mudar de usuário, ou criar outro, ou qualquer coisa do tipo, então você se pergunta: "Como?"

    Há um comando específico para isto. Este comando é o "adduser" ou "useradd". Dependendo da distribuição, o comando "adduser" vai ser apenas um comando igual ao "useradd", ou então um script interativo que irá lhe fazendo perguntas, você irá preenchendo, e então o script criará um usuário no sistema para você.

    No caso do "adduser" ser um comando mesmo, você poderá utilizar assim:

    adduser hugo
    passwd hugo

    Isso respectivamente irá criar um usuário padrão chamado hugo, e depois com o comando "passwd", você definirá uma senha para este usuário. Você pode especificar outros parâmetros para o usuário, como no comando a seguir:

    adduser hugo -d /var/usuarios/hugo -s /dev/null

    Com estes parâmetros, especifiquei que o usuário hugo terá como diretório home o "/var/usuarios/hugo" e como shell o "/dev/null" (ou seja, não terá shell). Sem estes parâmetros, o diretório home seria "/home/hugo" e o shell seria "/bin/bash".

    Vamos entender agora como este comando funciona, que é uma coisa essencial que todos deveriam saber em relação ao sistema Linux. Cada um desses programas escrevem o usuário no arquivo de configuração do Linux referente aos usuários do sistema. Este arquivo é o "/etc/passwd". Cada linha deste arquivo é um usuário cadastrado no sistema. Com as informações que vou lhe dar aqui, você pode muito bem criar uma conta sem usar estes programas/scripts citados acima.

    O passwd é formado por linhas onde cada linha é um usuário, como falei acima, então vamos aprender a montar cada linha desta. Vou pegar um exemplo para vocês:

    hugo:x:1001:100:Hugo Cisneiros:/home/hugo:/bin/bash

    Vamos dividir esta linha em "campos", onde cada um é separado por : (dois pontos), olhe só:

    CampoSignificado
    hugoLogin do Usuário, aqui você pode colocar o nome que quiser com até 8 caracteres.
    xAqui diz que o password está no arquivo /etc/shadow. Se estivesse *, a conta estaria desabilitada, e se estivesse sem nada (::), a conta não teria password.
    1001UID (User IDentification), o número de identificação do usuário.
    100GID (Group IDentification), o número de identificação do grupo do usuário.
    Hugo CisneirosComentários do usuário, como nome, telefone, etc
    /home/hugoO diretório HOME do usuário, ou seja, o diretório pertencente a ele. Geralmente estes diretorios sempre estao no /home
    /bin/bashShell do usuário, ou seja, o programa que irá enterpretar os comandos que o usuário executar.

    Obs: O /etc/shadow é um arquivo que contém a senha do usuário criptografada, se alguém tiver posse dela, esta pessoa pode muito bem comparar as senhas com uma lista de palavras, e pode descobrir as senhas dos usuários. Felizmente este arquivo está muito bem protegido pelo sistema :)

    Bem, legal, aprendi sobre adicionar um usuário, mas como faço para removê-lo? Simples, você pode apagar a linha referente a ele no /etc/passwd e os seus arquivos, ou simplesmente digitar userdel usuario. Combine com a opção -r para deletar junto o diretório HOME do usuário.

    Ahhhhh? Você quer mais? O quê? Quer deixar um usuário como se fosse root? Então vamos lá que não temos nada a perder! O root possui o UID e o GID igual à 0 (zero), e um usuário comum não. Se nós forçássemos a mudança do UID e GID de um usuário para 0, ele ficaria como se fosse o root! Por exemplo, eu tenho a linha do usuário no /etc/passwd e mudo:

    hugo:x:1001:100:Hugo Cisneiros:/home/hugo:/bin/bash
    hugo:x:0:0:Hugo Cisneiros:/home/hugo:/bin/bash
    ^ ^

    Pronto, o usuário hugo vai ser também o root do sistema, o administrador do sistema, o deus do sistema, etc. Outra dica: Não é muito bom ficar usando o usuário root, este usuário é somente para a administração do sistema, então eu recomendo à você a usar sempre um usuário normal, ser da plebe :) E se for precisar usar o root, logar como ele ou utilizar o comando "su -" para se tornar o próprio root.

    Outro arquivo que tem muito haver com os usuários no Linux é o /etc/group. Que contém as definições de cada grupo, como por exemplo seus nomes, GIDs, e usuários adicionais que pertencem à ele. Você adicionando uma linha neste arquivo estará criando um novo grupo. Vamos criar aqui um novo grupo no /etc/group:

    metal:x:666:hugo,jim,eitch

    Adicionando esta linha acima no arquivo /etc/group, um novo grupo é criado: com o nome 'metal', o GID '666' e como usuários adicionais pertencentes à ele, 'hugo, jim, eitch'. Fácil não?

    Bem é isso, combinando este conhecimento com algo sobre permissões dos arquivos, você pode controlar muito bem quem usa o seu sistema ou servidor, dizendo quem pertence à que grupo, quais seus diretórios, que arquivos podem acessar, entre outros. Bom proveito!

    Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br

    Tirado de: http://www.devin.com.br/eitch/manip_usuarios/

    Monday, July 2, 2007

    Save of a partition table (MBR)

    Introduction to partitions


    Even if you have only one volume, your hard disk is divided into
    partitions. The standard MSDOS voulme label allows to have up to 4
    primary partitions. The partition table is stored in the MBR (Master
    Boot Record). This area is the first 512 bytes of the physical hard
    drive. It also contain some code which will start the operating system,
    which can be the bootloader (LILO, grub, ...). If your hard disk is
    hda, parimary partitions are hda1, hda2, hda3 and hda4. It's easy to
    save to primary partitions table, by copying the MBR.

    To get past this limitation of 4 primary partitions, you can
    create an extended partition. An extended partition is a primary
    partition which contains a lot of partitions. For example, if hda2 is
    an extended partition, its logicial partitions will lappear as hda5,
    hda6, hda7, ... even if you don't use 4 primary partitions. That's why
    you can have an hda5 device, with no hda4. The problem with extended
    partition is there is no table we can easily save. The extended
    partition contains a linked list. hda5 will point to hda6, hda6 will
    point to hda7 and so on. This makes it difficult to save the partition
    table of the extended partition.

    Partimage can save the data of one partition, but it won't save
    your partition table. If you have a major problem with your hard drive,
    you may have to restore both the partition table and the data - having
    the images of the partitions won't be a lot of help on there own. Which
    is why we'll show you how to save the partition image now.



    Making a backup of the partition entries

    We will save all the partitions entries (both primary and logicial
    ones which appear in the extended partition). In this example, we'll be
    assuming that hda (the first IDE hard disk) is to be backed up.

    First, we will save the MBR with DD (GNU convert and copy)


    cd /root
    mkdir partition-backup
    cd partition-backup
    dd if=/dev/hda of=backup-hda.mbr count=1 bs=512

    It will produce a very small, but very important file: 512 bytes of data. Now, we will save entries of the extended partitions:


    sfdisk -d /dev/hda > backup-hda.sf


    sfdisk is a tool provided with the util-linux package.

    IMPORTANT: You should now put these files somewhere safe
    - copy them to a floppy disk (and take a copy of it!), or burn them
    onto a CD. Keep these files safe. Do not leave them on your hard drive
    - if there is a problem with th drive, you may not be able to access
    these files, and while your partition images won't be wortheless, it
    will certainly be a lot harder to restore your data.


    Restoring partition entries from the backup


    Be careful, restoring is a dangerous action - it can destroy data! First, we will restore the Master Boot Record:


    dd if=backup-hda.mbr of=/dev/hda


    Then, here is how to restore extended partitions entries:


    sfdisk /dev/hda < backup-hda.sf

    To finish, you will have to reboot your computer.

    Wednesday, June 27, 2007

    SSH Tunneling Tested With VNC

    In order to connect to a VNC server (or any other server) via ssh, first you need to create an ssh tunel. A tunel specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side (with -R you have the inverse, remote port forwarded to local).

    You can create a tunel by tiping the folowing command:


    # ssh -L local_port:127.0.0.1:remote_port you_login_on_remote_host@remote_host_ip


    now you will have to input your ssh password, wich is your password on the remote host.
    With this tunel when you connect a VNC client (or any other client) to your "local_port"
    on the localhost (127.0.0.1) the data the client generated is sent through the tunel
    to the "remote_port" on the remote host which is the VNC server port (or any other server).

    To connect your VNC client through the tunel (assuming you use vncviewer), type the folowing comand:


    # vncviewer 127.0.0.1:local_port


    now input the vnc password, and that's it, you sould see a window with the remote desktop.

    Note: the data in the tunel on the network is encripted, so an ssh tunel provides you security on the network, you can have a tunel that goes through the internet and no one will see what you are transfering, because all of the data is encripted.

    Nessus Instalation and Configuration

    Nessus is a vulnerability scaner composed of two parts, the server and the client frontend.
    The first step is to install the server and the client with the folowing comands:


    # apt-get install nessusd

    # apt-get install nessus


    Now you need to add a user to nessus or else it wont connect to the server, even if you try your login and password on the machine where the server is instaled.


    # sudo nessus-adduser

    Password:
    Using /var/tmp as a temporary file holder
    Add a new nessusd user
    ----------------------

    Login : my_login
    Authentication (pass/cert) [pass] :
    Login password :
    Login password (again) :
    User rules
    ----------
    nessusd has a rules system which allows you to restrict the hosts
    that my_login has the right to test. For instance, you may want
    him to be able to scan his own host only.
    Please see the nessus-adduser(8) man page for the rules syntax

    Login : my_login
    Password : ***********
    DN :
    Rules :

    Is that ok ? (y/n) [y] y
    user added.



    On the "Authentication (pass/cert) [pass] :" just press enter.
    Now you just need to start the nessus server, with the folowing command:


    # /etc/init.d/nessusd start


    And start the client with:


    # nessus


    input the login and password you added before, select the plugins you want to use in the vulnerability scan and input the target of scan and press "Start the scan"

    Saturday, June 23, 2007

    APT no RedHat/Fedora

    APT no RedHat/Fedora




    Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br

    Última atualização em 05/03/2004



    1. O que é o APT?


    O APT (Advanced Package Tool, ou Ferramenta de Pacotes Avançada) é uma ferramenta que gerencia de uma maneira muito intuitiva os pacotes de programas no Linux. O APT foi originalmente criado para funcionar junto com dpkg, do Debian, mas ele foi portado pela Conectiva para funcionar com o sistema de pacotes RPM, criado pela RedHat. O APT resolve os conflitos e dependências de pacotes de uma maneira muito fácil e automática. Além disso ela é uma ótima ferramenta para a atualização do sistema através da Internet, instalação de programas adicionais, entre outros. Neste tutorial irei ensinar como instalar e usar o APT em sistemas RedHat ou Fedora, mas com algumas adaptações, os métodos descritos aqui podem ser feitos em outras distribuições que utilizam o RPM. No caso do Debian, nada precisa ser feito pois o sistema já vem com o APT por padrão.



    2. Instalando o APT no RedHat ou Fedora


    Para cada versão do sistema, há pacotes específicos a serem baixados. No site (http://apt.freshrpms.net/) você obtém uma lista das versões do APT para cada versão do seu RedHat ou Fedora. Abaixo segue o link direto para o RPM dos principais sistemas:



    Neste tutorial, iremos usar como exemplo o RedHat 9. Então para instalar o RPM no seu sistema depois de baixado através dos links acima, utilize o comando:


    # rpm -Uhv apt-0.5.5cnc6-fr1.i386.rpm

    Depois de instalado no sistema, você terá de configurar o APT através de seus arquivos de configuração. O diretório /etc/apt foi criado na instalação do pacote e é nele que você vai editar os arquivos necessários para o funcionamento da ferramenta.


    O arquivo /etc/apt/apt.conf contém as configurações padrões do utilitário APT. As configurações neste arquivo já vêm prontas para o uso, e você só precisará modificar alguma coisa se realmente estiver precisando disso. Um exemplo do que você teria que fazer é habilitar o campo Proxy na seção Acquire para utilizar um Proxy ao baixar os pacotes na Internet.


    Já o arquivo /etc/apt/sources.list precisa de nossa configuração. Este arquivo contém a localização dos índices dos pacotes e os próprios pacotes na Internet. Editando este arquivo, você ira especificar onde o APT irá baixar os pacotes para instalá-los na sua máquina. O nome que damos à essa localidade é "repositório apt". Vamos pegar o exemplo que já vem por padrão na configuração:


    rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
    rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms


    As duas linhas acima especificam dois tipos de repositórios APT: um de RPMs binários, e outro de RPMs com código-fonte (SRPMS). Caso você não utilize SRPMS, só é necessário a primeira linha. A linha consiste em campos: O primeiro campo pode ser rpm ou rpm-src como já explicado. O segundo campo é o Host onde o APT se conectará para chegar ao repositório do APT. Este host pode ser HTTP ou FTP. O terceiro campo é o diretório onde o repositório está localizado. E por último, o quarto campo em diante são os módulos contidos no repositório.


    Na primeira linha, eu especifiquei que acessaria o repositório ayo.freshrpms.net, e faria o índice dos RPMS do os (parte principal do sistema, ou seja, os RPMs que vem no CD; updates que são as atualizações de segurança da distribuição; e freshrpms que é um repositório especial do http://freshrpms.net/ que contém pacotes extras que a distribuição oficial não disponibiliza (por exemplo, o apt é um desses pacotes extras).


    Como host do repositório apt, você pode também usar os mirrors (espelhos) disponíveis, como listado na página do http://apt.freshrpms.net/:



    ...Ou você pode criar seu próprio mirror, como explicado mais a frente neste tutorial.



    3. Utilizando o APT


    Agora é hora de colocar a ferramenta pra funcionar. Antes de mais nada precisamos atualizar os índices do repositório APT, armazenando-o no nosso sistema. Para fazer isso, você só precisa de um comando:


    # apt-get update


    E ele irá atualizar o índice do repositório configurado no arquivo /etc/apt/sources.list como explicado antes. Se tudo ocorrer bem, tudo ira seguir mais ou menos como mostro abaixo:


    # apt-get update
    Get:1 http://ayo.freshrpms.ne redhat/9/en/i386 release [714B]
    Fetched 714B in 0s (4010B/s)
    Hit http://ayo.freshrpms.net redhat/9/en/i386/os pkglist
    Hit http://ayo.freshrpms.ne redhat/9/en/i386/os release
    Get:1 http://ayo.freshrpms.ne redhat/9/en/i386/updates pkglist [434kB]
    Hit http://ayo.freshrpms.ne redhat/9/en/i386/updates release
    Fetched 434kB in 2s (208kB/s)
    Reading Package Lists... Done
    Building Dependency Tree... Done


    Depois do indice atualizado no sistema, é hora de você começar a colocar as coisas pra funcionar. Vamos agora por exemplo, tentar atualizar o sistema:


    # apt-get upgrade
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following packages will be upgraded
    libxml2
    1 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.
    Need to get 584kB of archives.
    After unpacking 160B of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://ayo.freshrpms.net redhat/9/en/i386/updates libxml2 2.5.4-3.rh9 [584kB]
    Fetched 584kB in 0s (4262kB/s)
    Executing RPM (-Uvh)...
    warning: /var/cache/apt/archives/libxml2_2.5.4-3.rh9_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
    Preparing... ########################################### [100%]
    1:libxml2 ########################################### [100%]


    Como você pôde ver acima, eu utilizei o comando apt-get upgrade para procurar por pacotes mais novos e atualizar o sistema com eles. Na minha configuração, eu coloquei o módulo updates no /etc/apt/sources.list, então isso quer dizer que as atualizações que estiverem neste local do repositório serão reconhecidas pelo APT. É assim que fica fácil de se atualizar o sistema.

    Se eu fizer novamente o processo acima, olha o que vou conseguir:


    # apt-get upgrade
    Reading Package Lists... Done
    Building Dependency Tree... Done
    0 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.


    Ou seja, todos os pacotes estão atualizados no meu sistema.


    Suponhamos agora que você queira instalar uns pacotes do PHP, mas não sabe ao certo como eles se chamam. Com o APT, você pode procurar no índice por pacotes que tenham em sua descrição certas palavras, como por exemplo PHP. Para fazer isso, utilizamos o comando apt-cache, veja só:



    # apt-cache search php
    asp2php - Converts WWW Active Server Pages to PHP pages
    asp2php-gtk - gtk+ frontend for asp2php
    quanta - K Desktop Environment - core files
    php - The PHP HTML-embedded scripting language. (PHP: Hypertext Preprocessor)
    php-devel - Files needed for building PHP extensions.
    php-imap - An Apache module for PHP applications that use IMAP.
    php-ldap - A module for PHP applications that use LDAP.
    php-manual - The PHP manual, in HTML format.
    php-mysql - A module for PHP applications that use MySQL databases.
    php-odbc - A module for PHP applications that use ODBC databases.
    php-pgsql - A PostgreSQL database module for PHP.
    php-snmp - A module for PHP applications that query SNMP-managed devices.
    squirrelmail - SquirrelMail webmail client

    Viu só? Estes são os pacotes relacionados com o PHP. Que tal a gente instalar o php-manual e dar uma lida pra aprender? Veja só como se faz:


    # apt-get install php-manual
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following NEW packages will be installed:
    php-manual
    0 packages upgraded, 1 newly installed, 0 removed and 0 not upgraded.
    Need to get 13.7MB of archives.
    After unpacking 92.7MB of additional disk space will be used.
    Get:1 http://ayo.freshrpms.net redhat/9/en/i386/updates php-manual 4.2.2-17.2 [13.7MB]
    Fetched 13.7MB in 1s (10.9MB/s)
    Executing RPM (-Uvh)...
    warning: /var/cache/apt/archives/php-manual_4.2.2-17.2_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
    Preparing... ########################################### [100%]
    1:php-manual ########################################### [100%]


    Uma coisa muito legal do APT é que se você quer instalar ou remover um pacote, e este pacote depende de outros pacotes, o APT sabe disso e resolve isso pra você: ele pergunta se você quer também instalar/remover os pacotes dependentes. Ou seja, se você não tiver o PHP instalado em sua máquina e tentar instalar o php-imap, o APT vai querer instalar também o pacote principal php, pois o php-imap é dependente dele. Teste para ver.


    E agora que eu já li o manual do PHP inteiro em apenas alguns segundos, eu quero removê-lo. Você pode remover muito bem utilizando o RPM, mas aqui estamos aprendendo sobre o APT, então utilizaremos:


    # apt-get remove php-manual
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following packages will be REMOVED:
    php-manual
    0 packages upgraded, 0 newly installed, 1 removed and 0 not upgraded.
    Need to get 0B of archives.
    After unpacking 92.7MB disk space will be freed.
    Do you want to continue? [Y/n] y
    Executing RPM (-e)...


    E lá se vai o manual do PHP. Como eu disse acima, se algum outro pacote depender do manual do PHP, o APT perguntará a você se deseja remover o outro pacote também.


    E agora como nota final de uso, você pode atualizar uma versão de distribuição inteira através do APT. Para isso você só precisa mudar a versão do seu repositório (arquivo /etc/apt/sources.list) para uma versão superior a sua e executar o comando apt-get dist-upgrade.


    E pra terminar essa seção, vamos à tabelinha básica dos comandos e suas funções:

    Comando Função

    apt-get install Instala um pacote e suas dependências.
    apt-get remove Remove um pacote e suas dependências.
    apt-get upgrade Procura por pacotes mais novos para fazer atualizações.
    apt-get dist-upgrade Faz uma atualização de versão da distribuição.
    apt-cache search Procura por termo nas descrições dos pacotes disponíveis


    E basicamente é isso. Utilizar o APT é muito simples e não requer muito segredo, nem esforço. Mas uma coisa é certa: uma vez que você começa a usar o APT, não quer parar nunca por causa de sua praticidade.



    4. Montando um repositório local do APT/RedHat

    Se você é um usuário doméstico ou tem poucas máquinas em sua mão rodando Linux, já é muito prático você utilizar o APT com os repositórios disponíveis por aí na Internet. Mas para os administradores de Rede que possuem várias máquinas Linux, seja na mesma rede ou não, pedir para cada uma delas instalar ou atualizar pacotes da Internet é um desperdício de banda, além de um péssimo favor para os servidores externos. Então por que não fazer um repositório APT local?


    O método aqui utilizado criará um mirror (espelho) do FTP da RedHat no seu sistema local, e scripts irão criar os índices do APT em sua máquina. Para fazer o espelho, precisaremos do pacote lftp, então se você não o possue, o que está esperando? apt-get install lftp!


    Criando o espelho da distribuição


    Baixe o script make-redhat-mirror disponível nesta página e coloque-o no diretório /usr/local/bin. Então rode inicialmente o seguinte comando:



    # /usr/local/bin/make-redhat-mirror full 9


    E espere. Espere bastante. O script irá baixar todo o conteúdo do RedHat 9 (inclusive as atualizações) para o diretório /var/mirror/redhat. Este diretório de destino pode ser configurado dentro do script, editando-o. Inclusive você pode editar também o FTP onde o mirror vai tirar seus arquivos. Tente achar um mirror da RedHat mais próximo de você.


    Só será necessário rodar este comando uma vez. Mas depois você vai querer se manter atualizado com os novos pacotes, então para atualizar apenas a parte de updates, utilize o seguinte comando:



    # /usr/local/bin/make-redhat-mirror quick 9


    Mais tarde iremos também colocar no crontab para rodar as atualizações de índice com o FTP da RedHat automaticamente todo dia.


    Preparando o território do APT

    Antes de criar os índices, você precisará primeiro de um método para os clientes do APT baixarem as coisas. O método pode ser HTTP e FTP (Pode ser CD-ROM também, mas isso não vem ao caso). Fica ao seu critério escolher o método. No meu caso eu prefiro criar um host virtual no Apache chamado de apt.meudominio.com.br. Ou se você não tem domínio, pode usar seu próprio IP.


    Isto será extremamente necessário, e a configuração disto está fora do escopo deste tutorial. Se você não sabe, procure saber como configurar um servidor HTTP ou FTP. Provavelmente você sabe um pouco, senão não estaria lendo esta parte do tutorial :)


    Aqui, como eu disse, o lugar do repositório APT vai ser apt.meudominio.com.br, e o diretorio real no sistema vai ser /var/www/dominios/apt.meudominio.com.br/html.



    Criando o repositório APT

    Agora é a hora de criar o repositório do APT em sua máquina. Para isso, baixe o script make-apt disponível nesta página e coloque-o em /usr/local/bin. Edite o script e você verá algumas variáveis no começo para serem configuradas:

    # Absolute directory for top of redhat mirror
    MIRRORDIR=/var/mirror/redhat
    # Absolute directory for top of apt repository
    APTDIR=/var/www/dominios/apt.meudominio.com.br/html
    # URL of repository
    ORIGINURL=apt.meudominio.com.br

    Veja aí o que você precisa. A variável MIRRORDIR indica onde você colocou o mirror do RedHat (isto está configurado também no script make-redhat-mirror). A variável APTDIR indica o diretório no sistema onde vai ficar o repositório do APT, que no nosso caso ficou sendo como /var/www/dominios/apt.meudominio.com.br/html. E por último a variável ORIGINURL indica a URL onde vai estar disponível o repositório, que no nosso caso ficou sendo apt.meudominio.com.br.


    Depois de configurado estas três variáveis, é hora de finalmente criar o repositório. Na primeira vez que você for fazer isso, utilize o comando:

    # /usr/local/bin/make-apt full 9

    Isso irá iniciar o processo de criação do repositório, que deve demorar um pouquinho. Depois de feito, está pronto! Agora seus usuários já podem acessar o seu repositório APT através do seu servidor HTTP.



    Configurando os clientes para usar seu repositório


    Tudo que você precisará fazer para configurar os clientes do APT para utilizar o seu repositório será alterar o arquivo /etc/apt/sources.list e utilizar a seguinte linha:


    rpm http://apt.meudominio.com.br redhat/9/en/i386 os updates


    E pronto! Se você estiver rodando várias máquinas numa rede interna, apenas uma terá o repositório e o resto irá baixar tudo localmente :)



    Atualizando o repositório diariamente

    Como existem as atualizações de segurança, é sempre bom você estar sempre atualizando seu repositório. Para fazer isso diariamente, crie um arquivo chamado /usr/local/bin/mirror-apt com o seguinte conteúdo:


    #!/bin/bash
    /usr/local/bin/make-redhat-mirror quick 9
    /usr/local/bin/make-apt quick 9


    Depois edite o arquivo /etc/crontab, e adicione as seguintes linhas:


    # Atualizacao do Mirror RedHat e APT
    01 1 * * * root /usr/local/bin/mirror-apt


    Isso fará com que o sistema verifique as atualizações no FTP da RedHat e crie o repositório APT caso necessário todo dia às 1:00 da manhã. Se você quiser aprender mais sobre como agendar as tarefas através do crontab, visite meu outro tutorial: Utilizando o crontab.


    E pronto! Seu trabalho está feito. Experimente e modifique as coisas para aprender mais. Não é tão difícil adaptar estas informações para criar um repositório do Fedora por exemplo, ou de outra versão do RedHat. A única coisa que irá mudar será a localização do mirror, entre outras pequenas coisas.



    5. Conclusão e Referências

    Espero que você tenha gostado desse tutorial, e que ele possa ter te ajudado a lidar melhor com sua distribuição. Críticas e Sugestões podem ser mandadas para o meu e-mail. E agora os créditos para este tutorial:




    taken from: http://www.devin.com.br/eitch/apt-redhat/

    Saturday, June 16, 2007

    Configuring a Wifi Network with WPA using WPA_GUI

    For some configuring wpa_supplicant may be a bit complicated, like identifing the rigth kind off key, etc.
    Sometimes people have to use aplications like frontends to configure it's acess to a network.
    This package (wpa_gui) is one off those frontends.

    By default this package detects the wifi networks and you have to configure the
    every time you want to use the network, which is not very practical.

    You can also use it to configure wpa_supplicant.conf, but first you have to edit or create the /etc/wpa_supplicant.conf file, like this (remove the text after the #):


    ctrl_interface=/var/run/wpa_supplicant
    ctrl_interface_group=0 #the group thats used by default (root)
    eapol_version=2 #generaly it's 1 but here we have 2 because we are using wpa2 which is safer

    #eapol is the package that it's used at the start off the client's session

    update_config=1 #this is the line that allows you to configure wpa_supplicant.conf using wpa_gui
    network={
    ssid="any"
    key_mgmt=NONE
    priority=2
    }

    network={
    ssid="my-network"
    psk="my-password"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    }


    Now you run the following command:

    $ sudo wpa_supplicant -Dwext -ieth1 -c /etc/wpa_supplicant.conf -B

    change the interface from eth1 to the interface you are using (ex: ath0, ra0, wlan0, etc.) to connect yourself to the wifi network.

    Now that wpa_supplicant is running , to configure it using wpa_gui (Gui), just run the folowing command:

    $ sudo wpa_gui

    Now you should see the wpa_gui interface, now just go to File | Edit Network to edit one of the networks wpa_supplicant.conf, with the data off the network you want to conect.

    You can also add a new network on File | Add Network or use scan and then then select the one off the detected networks and configure it.

    To delete a network you have to edit wpa_supplicant.conf, you can do it by using vi or any other editor, you use vi execute the following comand:

    $sudo vi /etc/wpa_supplicant.conf

    if you want to use another editor replace 'vi' with the name of the editor you want.


    based on a post by d4rksh3ll at http://www.tux-linux.net

    ---------------------------------------------------------
    Here´s some information on WPA so that you now a a bit more what you are doing.

    Wi-Fi Protected Access (WPA and WPA2) is a class of systems to secure wireless (Wi-Fi) computer networks. It was created in response to several serious weaknesses researchers had found in the previous system, Wired Equivalent Privacy (WEP). WPA implements the majority of the IEEE 802.11i standard, and was intended as an intermediate measure to take the place of WEP while 802.11i was prepared. WPA is designed to work with all wireless network interface cards, but not necessarily with first generation wireless access points. WPA2 implements the full standard, but will not work with some older network cards. Both provide good security, with two significant issues:

    Either WPA or WPA2 must be enabled and chosen in preference to WEP. WEP is usually presented as the first security choice in most installation instructions.
    In the "Personal" mode, the most likely choice for homes and small offices, a passphrase is required that, for full security, must be longer than the typical 6 to 8 character passwords users are taught to employ.
    Contents

    1 History
    2 WPA2
    3 Security in pre-shared key mode
    4 EAP types under WPA- and WPA2- Enterprise
    5 See also
    6 Notes



    1 History

    WPA was created by the Wi-Fi Alliance, an industry trade group, which owns the trademark to the Wi-Fi name and certifies devices that carry that name.

    WPA is designed for use with an IEEE 802.1X authentication server, which distributes different keys to each user; however, it can also be used in a less secure "pre-shared key" (PSK) mode, where every user is given the same pass-phrase. The design of WPA is based on a Draft 3 of the IEEE 802.11i standard.

    The Wi-Fi Alliance created WPA to enable introduction of standard-based secure wireless network products prior to the IEEE 802.11i group finishing its work. The Wi-Fi Alliance at the time already anticipated the WPA2 certification based on the final draft of the IEEE 802.11i standard, therefore the tags on the frame fields (Information Elements or IEs) are intentionally made different from 802.11i to avoid the confusion in unified WPA/WPA2 implementations.

    Data is encrypted using the RC4 stream cipher, with a 128-bit key and a 48-bit initialization vector (IV). One major improvement in WPA over WEP is the Temporal Key Integrity Protocol (TKIP), which dynamically changes keys as the system is used. When combined with the much larger IV, this defeats the well-known key recovery attacks on WEP.

    In addition to authentication and encryption, WPA also provides vastly improved payload integrity. The cyclic redundancy check (CRC) used in WEP is inherently insecure; it is possible to alter the payload and update the message CRC without knowing the WEP key. A more secure message authentication code (usually known as a MAC, but here termed a MIC for "Message Integrity Code") is used in WPA, an algorithm named "Michael". The MIC used in WPA includes a frame counter, which prevents replay attacks being executed.

    By increasing the size of the keys and IVs, reducing the number of packets sent with related keys, and adding a secure message verification system, WPA makes breaking into a Wireless LAN far more difficult. The Michael algorithm was the strongest that WPA designers could come up with that would still work with most older network cards. Due to inevitable weaknesses of Michael, WPA includes a special countermeasure mechanism that detects an attempt to break TKIP and temporarily blocks communications with the attacker.



    2 WPA2

    Main article: IEEE 802.11i
    WPA2 implements the mandatory elements of 802.11i. In particular, in addition to TKIP and the Michael algorithm, it introduces a new AES-based algorithm, CCMP, that is considered fully secure. Note that from March 13, 2006, WPA2 certification is mandatory for all new devices wishing to be Wi-Fi certified.

    Vendor support:

    Official support for WPA2 in Microsoft Windows XP was rolled out on 1 May 2005. Driver upgrades for network cards may be required.
    Apple Computer supports WPA2 on all AirPort Extreme-enabled Macintoshes, the AirPort Extreme Base Station, and the AirPort Express. Firmware upgrades needed are included in AirPort 4.2, released July 14, 2005.



    3 Security in pre-shared key mode

    Pre-shared key mode (PSK, also known as personal mode) is designed for home and small office networks that cannot afford the cost and complexity of an 802.1X authentication server. Each user must enter a passphrase to access the network. The passphrase may be from 8 to 63 printable ASCII characters or 64 hexadecimal digits (256 bits).[1] If you choose to use the ASCII characters, a hash function reduces it from 504 bits (63 characters * 8 bits/character) to 256 bits (using also the SSID). The passphrase may be stored on the user's computer at their discretion under most operating systems to avoid re-entry. The passphrase must remain stored in the Wi-Fi access point.

    Security is strengthened by employing a PBKDF2 key derivation function. However, the weak passphrases users typically employ are vulnerable to password cracking attack. The threat of password cracking can be mitigated by using a passphrase of at least 5 Diceware words or 14 completely random letters with WPA and WPA2.

    Maximum WPA-PSK protection (256 bit) requires a key consisting of 54 random letters or 39 random ASCII characters.

    Some consumer chip manufacturers have attempted to bypass weak passphrase choice by adding a method of automatically generating and distributing strong keys through a software or hardware interface that uses an external method of adding a new Wi-Fi adapter or appliance to a network. These methods include pushing a button (Broadcom SecureEasySetup and Buffalo AirStation One-Touch Secure System) and entering a short challenge phrase through software (Atheros JumpStart). The Wi-Fi Alliance has standardized these methods in a program called Wi-Fi Protected Setup (formerly Simple Config).



    4 EAP types under WPA- and WPA2- Enterprise

    The Wi-Fi alliance has announced the inclusion of additional EAP (Extensible Authentication Protocol) types to its certification programs for WPA- and WPA2- Enterprise. This was to ensure that WPA-Enterprise certified products can interoperate with one another. Previously, only EAP-TLS (Transport Layer Security) was certified by the Wi-Fi alliance.

    The EAP types now included in the certification program are:

    EAP-TLS (previously tested)
    EAP-TTLS/MSCHAPv2
    PEAPv0/EAP-MSCHAPv2
    PEAPv1/EAP-GTC
    EAP-SIM
    Other EAP types may be supported by 802.1X clients and servers developed by specific firms. This certification is an attempt for popular EAP types to interoperate; their failure to do so is currently one of the major issues preventing rollout of 802.1X on heterogeneous networks.



    5 See also

    WPS — A standard for easy and secure establishment of a wireless home network with WPA(2)
    WAPI — Chinese National Standard for wireless LAN security.
    tinyPEAP — A small-footprint RADIUS server designed to load into a wireless access point
    FreeRADIUS - A free open source RADIUS server
    Radiuz — A "cooperative WiFi network" that provides free RADIUS service for WPA-Enterprise compatible routers
    SecureEasySetup — A technology developed by Broadcom to easily set up wireless LANs with WPA
    Internet Authentication Service (IAS) Microsoft's Radius server that ships as part of Windows 2000 Server and Windows 2003 Server



    6 Notes

    ^ Each character in the pass-phrase must have an encoding in the range of 32 to 126 (decimal), inclusive. (IEEE Std. 802.11i-2004, Annex H.4.1)
    The space character is included in this range.


    Taken from wikipedia at: http://en.wikipedia.org/wiki/WPA2 on 17/06/07

    Tuesday, June 12, 2007

    Configuração de Acesso 802.1x/PEAP para Linux (e-U da FEUP)

    Configuração de Acesso 802.1x/PEAP para Linux (testado na e-U de FEUP)

    O exemplo de configuração apresentado representa os passos necessários para a configuração do método de autenticação 802.1x/PEAP para o sistema operativo Linux. Este método de autenticação é utilizado na rede wireless do IPLeiria identificada com o SSID "e-U".

    0) Atenção: Sistemas Testados

    Portátil NEC P520 com Ubuntu 6.10

    A placa de rede utilizada foi uma Intel ProWireless 2100


    Portátil HP DV6175EA com Kubuntu 6.10 versão 64 bits

    A placa de rede utilizada foi uma Intel ProWireless 3985.


    1) Instalação do cliente wpasupplicant

    Para usar este método de autenticação em Linux, é necessário instalar o cliente wpasupplicant. No caso do ubuntu, basta efectuar o comando:

    apt-get install wpasupplicant


    2) Download do Certificado

    Comece por efectuar o download do certificado com o comando:

    wget http://www.fe.up.pt/si/web_gessi_docs.download_file?p_name=F474906633/FEUP-ROOT-CA-2005.pem

    Copie o certificado para a directoria /etc/cert/ (em principio é preciso criar a directoria)

    NOTA: Este certificado está num formato adequado para a utilização com o wpa supplicant, sendo por isso diferente do já disponibilizado para as configurações em Windows. No caso de já possuir esse certificado em formato .cer, poderá convertê-lo utilizando o comando:

    openssl x509 -in FEUP-ROOT-CA-2005.cer -inform d -out FEUP-ROOT-CA-2005.pem


    3) Criar o ficheiro de configuração do WPA Suppplicant
    Crie o ficheiro /etc/wpa_supplicant.conf e coloque as seguintes configurações:

    Nota: no howto do IPL em vez de /etc/wpa_supplicant.conf tinha /etc/wpa_supplicant/pa_supplicant.conf
    mas o script IPLwifi.sh (abaixo) ia buscar o /etc/wpa_supplicant.conf e não funcionava.

    --------------------------------------------------------------------------------

    ctrl_interface=/var/run/wpa_supplicant
    ctrl_interface_group=0
    eapol_version=1
    ap_scan=1 #se a placa n suportar testar com ap_scan=0 e ap_scan=2
    fast_reauth=1

    network={
    ssid="e-U"
    scan_ssid=1 # only needed if your access point uses a hidden ssid
    key_mgmt=IEEE8021X
    eap=PEAP
    identity="o_teu_login@fe.up.pt"
    password="a_tua_password"
    ca_cert="/etc/cert/FEUP-ROOT-CA-2005.pem"
    phase2="auth=MSCHAPV2"
    }

    --------------------------------------------------------------------------------
    NOTA: Alterar os campos "o_teu_login" e "a_tua_password" com os teus dados.


    4) Funcionamento

    Se a sua placa estiver instalada correctamente, apenas é necessário utilizar o script para iniciar a ligação à rede e-U. Poderá efectuar o download deste script com o comando:

    wget http://wireless.ipleiria.pt/configuracao/IPLwifi.sh

    Terá de dar permissões de execução ao ficheiro com o comando:

    chmod +x IPLwifi.sh

    O script terá de ser executado como root com o comando:

    sudo ./IPLwifi.sh start | stop | restart


    NOTA: Edite o script e altere a váriável interface (geralmente eth1) de acordo com as configurações existentes no seu computador.


    Baseado em: http://wireless.ipleiria.pt/configuracao/peaplinux

    Tuesday, June 5, 2007

    Adaptação Joysticks de Video Games (Consolas) pro PC

    Aqui ficam os links para a fazer adaptadores para os gamepads(joysticks) das consolas abaixo referidas de forma a funcionarem no PC:

    Joystick de Mega Drive

    http://www.clubedohardware.com.br/artigos/759/1

    Joystick de Playstation

    http://www.clubedohardware.com.br/artigos/759/2

    Joystick de Super Nintendo

    http://www.clubedohardware.com.br/artigos/759/3

    Joystick de Nintendo 64

    http://www.clubedohardware.com.br/artigos/759/4

    Thursday, May 31, 2007

    Pic Programmer With Only Resistors, Capacitor and Diodes - RCD

    I found this page with a pic programmer that is very simple and cheap. It's built off only Resistors, Capacitors and Diodes, and suports lots of o PICs, check it out at:

    http://feng3.cool.ne.jp/en/rcd.html

    Wednesday, May 30, 2007

    Instaling Java in Mozilla Firefox on Linux

    First you need to download the Java Runtime Environment (JRE) or the Java Development Kit (JDK) and install it.


    The JRE is what you need to run java programs on your computer, but it doesn't allow you to develop in java, This is probably the more suited solution for you if you are not a developer, because is smaller the de JDK.

    If you are a developer download the JDK (if you already don't have it already) which includes the JRE and adds the tools for developing.

    To download you can go to:

    http://java.sun.com/javase/downloads/index.jsp


    Basically what we need to do is put a symbolic link for the plugin in the jre of either the JDK or the JRE, in Mozilla Firefox

    -----------------------------------------------------------------------------------------------------
    For JDK you must execute in the shell something like this:

    # ln -s /path_to_jdk/jdkx.x.x_xx/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins/libjavaplugin_oji.so

    where you should replace "path_to_jdk" with the path to you JDK and replace "jdkx.x.x_xx" with the version of your JDK

    ----------------------------------------------------------------------------------------------------
    For JRE you must execute in the shell something like this:

    # ln -s /path_to_jre/jrex.x.x_xx/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins/libjavaplugin_oji.so

    where you should replace "path_to_jdk" with the path to you JDK and replace "jrex.x.x_xx" with the version of your JDK


    And that's it, you can now see pages that use java components.

    Thursday, May 24, 2007

    Linux (Ubuntu) Network Install

    Introduction

    Some days ago I had to install Ubuntu Breezy – a GNU/Linux flavour based on Debian and powered by apt-get – on four machines and I had only one CD-Rom available. And doing some fast calculations you can find out that it’s faster to install through a 100Mbps LAN (~12.5 Mb/s highest peek) than using a normal 52x CD-Rom.

    Initially, the idea was to load the boot sector directly from the onboard network card. Unfortunately, I wasn’t able to do so (it skipped network boot as if it didn’t detect anything) and I decided to stick with that sometimes useful floppy disk and include a small boot sector that had the drivers included.

    Ready to start?

    Setting up the server

    First off, you'll need a server where your clients will be connecting. That server must have a small FTP, HTTP and DHCP server and, obviously, an Ubuntu installation CD available. The DHCP allows your clients to connect to your network and the HTTP/FTP server will deliver installation files and package repositories.

    Our FTP server will be tftpd-hpa. On Ubuntu/Debian this is a matter of

    CODE:
    1. root@server$ apt-get install package-name

    and that’s it, everything gets installed and set up. Let’s install everything at once:

    CODE:
    1. root@server$ apt-get install tftpd-hpa apache2 dhcp3-server

    Now it’s time to copy the content of the Ubuntu cd. Just do

    CODE:
    1. root@server:/var/lib/tftpboot$ mkdir ubuntu
    2. root@server:/var/lib/tftpboot$ mount -o loop /var/lib/tftpboot/ubuntu-5.10-install-i386.iso /var/lib/tftpboot/ubuntu

    In order to get an ISO of your installation CD, you can do (astonish yourself)

    CODE:
    1. root@server$ cat /dev/hdb > ubuntu-5.10-install-i386.iso

    where hdb is your CD-Rom device. It can be anything else other than hdb so you’d better figure out with dmesg (root@server # dmesg) or doing whatever suits you.

    Make a symlink from apache's root to the mounted ISO

    CODE:
    1. root@server:/var/www # ln -s /var/lib/tftpboot/ubuntu/

    configure the DHCP server according to your network:

    CODE:
    1. root@server:~ # cat /etc/dhcp3/dhcpd.conf
    2. ping-check = 1;
    3. filename = "ubuntu/install/netboot/pxelinux.0";
    4. subnet 192.168.1.0
    5. netmask 255.255.255.0 {
    6. range 192.168.1.10 192.168.1.254;
    7. }
    CODE:
    1. root@server:~ # /etc/init.d/dhcp3-server restart
    2. Stopping DHCP server: dhcpd3.
    3. Starting DHCP server: dhcpd3.

    And now run the clients. If you were able to see the Ubuntu boot prompt, that’s it. Now you just have to carry on with the installation. Otherwise, if you didn’t see anything and the boot continued as usual – just like happened to me – then keep reading this tutorial.The alternative is, like I said before, using a boot disk with the drivers. Etherboot has what we’re looking for. Download the latest version and read the README file. Then you just have to find out which network card you have and follow the very quick instructions.


    taken from: http://mywheel.net/blog/index.php/ubuntu-network-install/

    For other distros it's probably the same except for the packages download, here we used apt-get for downloading the needed packages, in other distros you may have some other way of downloading the packages like yum or you can always can go the internet and search for it.

    Friday, May 18, 2007

    Save a partition directly to a compressed file

    To save a partion directly to a compressed file in linux is very easy regardless of the filesytem, you can save for example a NTFS (Windows NT File System) whith this.

    To save the partition and later restore it, we are going to use three programs the first is 'dd' the which is used to make exact copies of partitions and restore them and the others are 'bzip2' which is used to compress and 'bunzip' to uncompress.

    In order to save a partition to a compress a partition to a compress file, just do:


    # dd if=/dev/hda2 bs=10M | bzip2 > /.../hda2_save.bz2


    Where '/.../' must be replaced with the path to the dir where you want your partition compress save to be.

    Has you can see above 'dd' has no 'of' (output file) so it's output will be the standart output (the shell), wich we redirect with '|' (pipe) to 'bzip2' standart input (which if not redirected is the keyboard), buzip2 will continuously compress the stream of data coming from 'dd', and that's it.




    In order to save a partition to a compress a partition to a compress file, just do


    # bunzip2 /.../hda2_save.bz2 --stdout | dd of=/dev/hda2


    Where '/.../' must be replaced with the path to the dir where you want your partition compress save is.

    Has you can see above 'bunzip2' has the option '--stdout' wich means that it will uncompress the file to the standart output (the shell) wich we redirect with '|' (pipe) to 'dd' standart input (which if not redirected is the keyboard).

    Thursday, May 10, 2007

    Instalar drivers da Nvidia em Ubuntu Feisty

    A instalação foi realizada no meu notebook. A placa de vídeo aqui é uma NVIDIA GeForce 6150 256MB

    Faça uma cópia de segurança do aquivo xorg.conf antes de iniciar a instalação.

    $ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf_bkp

    1- Removendo pacotes antigos

    $ sudo apt-get --purge remove nvidia-glx nvidia-settings nvidia-kernel-common

    2- Instalando pacotes necessários

    Certifique-se de ter habilitado os repositórios universe e multiverse

    $ sudo apt-get install linux-restricted-modules-$(uname -r) build-essential xserver-xorg-dev

    3- Baixe o driver aqui!

    Esse é o ultimo release do driver

    Mais informações sobre o driver aqui!

    www.nvidia.com

    4- Edite o arquivo linux-restricted-modules-common

    $ sudo gedit /etc/default/linux-restricted-modules-common

    Altere a linha DISABLED_MODULES=”"

    Para DISABLED_MODULES=”nv”

    5- Entrando em modo texto

    Precione as teclas Ctrl + Alt + F1 e efetue o login. Não se assuste esse é o lado negro da força.

    Após logado no modo texto vamos parar o gdm.

    6 - Parando o gdm

    $ sudo /etc/init.d/gdm stop

    7- Executando o driver

    Entre no diretório em que o foi salvo o aquivo .run

    Transforme o aquivo em executável e em seguida execute o aquivo .run

    $ sudo chmod +x NVIDIA-Linux-x86-1.0-9755-pkg1.run

    A instalação e bem tranquila e só responder Ok em quase todas as perguntas. Só responda não na pergunta em que ele diz não ter um kernel compilado no sistema, se você aceitaria fazer o download desse kernel no site da nvidia.

    $ sudo sh ./NVIDIA-Linux-x86-1.0-9755-pkg1.run

    8 - Reinicie o sitema

    $ sudo shutdown -r now

    Pronto driver instalado!

    9- Verificando a instalação

    O primeiro sintoma que ocorreu no pc após a instalação do driver foi uma tela preta com o logo da nvidia antes de iniciar o gdm.

    No menu Aplicações->Ferramentas do Sistema aparecerá a opção NVIDIA X Server Settings.

    No terminal digite:

    $ glxinfo | grep direct

    Deve retornar

    $ direct rendering: yes


    retirado de: http://dfthiagodf.wordpress.com/2007/03/27/instalando-driver-nvidia-no-ubuntu-feisty/

    Monday, May 7, 2007

    Seeing and changing your DNS servers

    To see which dns server that as been assingned to your by dhcp or inputed manualy, just do:

    cat /etc/resolv.conf

    To alter (and also see) your dns servers you can always edit /etc/resolv.conf using a text editor like vi or gedit or any other for vi do the following:

    # vi /etc/resolv.conf

    for gedit the following:

    # gedit /etc/resolv.conf

    Starting, Stoping and Restarting Services in Linux

    To start, stop and restart a service in ubuntu (probaly in all other distros), you go to /etc/init.d, there you have the scripts to all the services (ex: dhcp, newtworking, ...).

    For example if you want to stop the dhcp service you just need to do :

    # sudo /etc/init.d/dhcp stop

    to start it again do:

    # sudo /etc/init.d/dhcp start

    to restart it do:

    # sudo /etc/init.d/dhcp restart

    For the other services you just change "dhcp" to the name service script in /etc/init.d.
    As you migth already noticed, you can see which services you have by seeing which scripts exist in /etc/init.d.

    Friday, May 4, 2007

    Basic Use of NetCat (Windows e Linux)

    Netcat is already avaible in linux for windows you can download it, it's free.


    TCP
    ---------------------------------------
    With the comand below you can start a netcat server in any TCP port (here we use 53), in you local machine, and lets assume your local machine has the following IP 192.136.49.47.

    # sudo nc -l -p 53

    Now in another machine you can connect to the server at 192.136.49.47:53, with netcat as a client.

    # sudo nc 192.136.49.47 53

    To see if it's working you can type text in the bash (comand line) of the server or client and press enter and see if the text you inputed reaches the other machine, this is a simple and very reliable way to test connections between machines, and also firewalls

    Bellow we have the same but for the UDP protocol.

    UDP
    ------------------------------------
    # sudo nc -l -p 53 -u

    # sudo nc -u 192.136.49.47 53

    Thursday, May 3, 2007

    How to wire Ethernet and Console Cable (Cisco - Roll Over)

    Cables form layer 1 of the network — the physical layer. Properly connecting cables is fundamental to healthy network communication. Faulty connections could interrupt service or cause packets to be dropped. Without a clear understanding of cabling, you won’t be able to troubleshoot or design your LAN or WAN. Additionally, knowledge of cable types is important for certification tests like the Cisco CCNA/CCENT.


    Cabling basics for network admins

    • Your cable works at layer 1 — Physical of the OSI Model. Also at that layer are the 1’s and 0’s that traverse the cable as an electrical or light signal (depending on what type of cabling you are using).
    • Unshielded twisted pair (UTP) copper cable is used for many functions in network cabling: Ethernet, Serial, ISDN, Console, and more.
    • While you could put different ends on a UTP cable, typically it will have a RJ45 end with 8 pins.
    • With a normal Ethernet cable, the wires run straight through, from one end to the other. Straight-through cables are used to connect a PC to a switch, as in Figure A-1 and Figure A-2. Where each one uses one off the cabling standards, the T568B and T568B
     Figure A-1 - Straight-Through Cable 


    Figure A-2 - Straight-Through Cable 

    Graphic Courtesy of Cisco Systems
    • With a crossover cable (Figure B), the source and destination of the UTP wires are crossed. This allows you to use it to connect a PC to PC, switch to switch, or router to router.
    • In a crossover cable we use both off the cabling standads, T568A and T568B, one in each end, if one end uses T568B the other uses T568A, and vice-versa.



    Figure B - Cross Over Cable 


    Graphic Courtesy of Cisco Systems
    Now, how is cabling for Cisco routers and switches different?


    Cisco console and AUX port cabling
    There are a few differences between Cisco cabling and other network device cabling. Two things immediately come to mind:
    • Cisco routers, switches, and firewalls use a special “rolled” cable for console and auxiliary port access.
    • Cisco offers intelligent serial cabling.
    One of the most confusing things to Cisco newcomers is the concept of the console cable. Other SMB and home-networking devices don’t usually have a console port. With those devices, they receive a DHCP IP address and then you can configure them over the network from there. With Cisco devices, there is no IP address on the device, and you must first use the console port and console cable to configure the router, switch, or firewall OOB (out of band).
    The Cisco console cable is a special cable. It isn’t wired like an Ethernet cable. However, if you didn’t have a console cable, you could cut off the end of a straight-through Ethernet cable, change the pin out, and recrimp it to make it a console cable.
    Below, you can see the pin out of a console cable. The console cable is a “rolled” cable, because if you look at the pins from one end to the other, it is as if the end was rolled over (the order is flipped), as in Figure C.

    Figure C - Console Cable (Rolled Cable)

    Graphic Courtesy of Cisco Systems
    Traditionally Cisco console cables were RJ45-RJ45 and then you would use a RJ45-DB9 adaptor to connect it to your PC’s serial port (COM port). Today, new Cisco devices come with console cables that have a DB9 adaptor integrated/molded to the cable on one end (Figure D). Keep in mind that the data moving across the console cable is serial data (not Ethernet).

    Figure D - RJ45-DB9 adaptor


    Graphic Courtesy of Cisco Systems
    For those equipements tha don't have an integrated DB9 ports, here how you can make your own DB9 adapter:


    Click on the images to enlarge
    While what I said above concerning console cables is true for most Cisco devices, there are variations on the console cable. For more detailed information about Cisco console and AUX port cabling (including the pin-out for a console cable so that you can make your own), see this Cisco document Cisco Cabling Guide for Console and AUX Ports.

    David Davis has worked in the IT industry for 15+ years and holds several certifications, including CCIE, CCNA, CCNP, MCSE, CISSP, VCP. He has authored hundreds of articles and numerous IT training videos. Today, David is the Director of Infrastructure at Train Signal.com. Train Signal, Inc. is the global leader in video training for IT Professionals and end users.

    Taken From: http://blogs.techrepublic.com.com/networking/?p=649
    and added some stuff about the cabling standards (like here)


    Another good reference for building ethernet cables is:
    http://www.ertyu.org/steven_nikkel/ethernetcables.html