Jun 23 2009

MD5 “Decrypter”, Java

Boa noite,

Nas aulas de programação concorrente o professor passou uma introdução de Programação Distribuida e pediu que nós criassemos algo que utilizasse ela. Então eu sugeri ao meu colega Olav para implementarmos um “quebrador” de senha por força bruta. O mesmo funciona da seguinte maneira, existe um master onde os slaves se conectam, o master informa a string a ser quebrada e qual faixa de caracteres o slave deve tentar. Após terminar aquela faixa caso ele não obtenha sucesso o slave recebe uma nova faixa, caso ele encontre, ele informa o master qual a string utilizada para gerar tal MD5.

Implementação do “MD5 Decrypter”

Existem muitas coisas que ainda podem ser aperfeiçoadas nesse programa como:
- Não precisar um número fixo de Slaves. Aceitar todos que forem se conectando em tempo real.
- Melhor distribuição de faixas.

Ele pode ser praticamente o inicio de um programa de Força Bruta Distribuida, que já devem existir vários por ai.

Espero que goste,
Matheus

Jun 22 2009

Exercício Estacionamento, Java, Programação Concorrente.

Boa tarde,

Semana passada fiz a última prova de Programação Concorrente deste semestre. O problema que devia se solucionar era o seguinte:

O estacionamento de uma universidade possui 30 vagas. Enquanto o mesmo possue vagas, não existe prioridade para quem estaciona. Quando o mesmo está cheio, forma-se uma fila, onde professores possuem a mais alta prioridade, seguido pelos funcionarios e após os alunos. Utilize java com Threads para “simular” este problema. Utilize 10 professores, 15 funcionários, 30 alunos.

O Professor Mazzucco, disponibilizou uma implementação do mesmo que vou disponibilizar para vocês.

Implementação problema estacionamento em Java

Matheus

Jun 18 2009

Seja livre.

Boa noite,

Como você deve saber, estou numa correria, final de semestre, provas, trabalhos e tudo mais. Por estas razões não tenho publicado regularmente no blog mas em breve isso passa e tudo volta ao normal. Hoje, consegui tirar um tempo para ver um documentário que já queria ter visto a algum tempo. Venho por meio deste recomendar o mesmo “IN Proprietario – O mundo do software livre” e outros.

IN Proprietario – O mundo do software livre
- Documentário Brasileiro que tem como tema o Software Livre.

Revolution OS (Ingles) | Link Alternativo (BestDocs) | Legenda (BestDocs)
- Documentário Revolution OS, que fala sobre um sistema operacional revolucionário. Linux.

Freedom Downtime | Legenda
- Documentário Freedom Downtime, que fala um pouco sobe a história da vida de Kevin Mitnick e mostra uma visão mais realista do que aconteceu com ele. Diferente do filme Antitrust.

Espero que você goste,
Matheus

Jun 16 2009

Tabela de “conversão” – 3 – Organização de Computadores (INE5411)

Olá

Este tópico tem o intuito de complementar os dois anteriores, adicionando as novas lectures e a “conversão” de mais páginas do livro em inglês para a versão em Português

Para ver as novas atualizações continue lendo, não quero socar a página principal de números e coisas sem sentido para muitos.

Matheus Bratfisch

Read more »

Jun 15 2009

Atualizar End Point, TunnelBroker.

Bom dia!

Estou utilizando IPv6 aqui na minha rede local, porém sempre que eu iniciava o servidor tinha que acessar o site tunnelbroker e atualizar o End Point, então tive a idéia de fazer um script que atualizasse sozinho. Enviei um e-mail para o suporte deles e recebi a seguinte url como resposta: http://ipv4.tunnelbroker.net/ipv4_end.php

ipv4b = Novo endereço de IP
pass = md5 da sua senha (http://hash-it.net/)
user_id = O “UserID” da página principal no tunnelbroker (não é seu usuário)
tunnel_id = O “Global Tunnel ID” da página de detalhes do tunnel

Adicionei o seguinte comando no /etc/rc.local para pegar o IP atual da interface eth0 (externa):

IP=`ifconfig eth0 | grep “inet addr” | cut -d : -f 2 | cut -d B -f 1 | sed ‘s/^ *//;s/ *$//’`

Após isso adicionei a seguinte linha para fazer a requisição e atualizar o End Point:

wget https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$IP&pass=senha&user_id=USERID&tunnel_id=TUNNELID

Abraço,
Matheus

Jun 08 2009

Liberar acesso por MAC e IPtables.

Boa noite,

Como pretendo fazer um Captive Portal em meu servidor resolvi instalar um Apache para exibir as páginas de autenticação ou seja quando o usuário não estiver autenticado ele ficará vendo está página em toda sua requisição WEB. O problema é que quando acessavamos algum endereço de IP a página era exibida mas ao se utilizar endereços isto não acontecia pois ele não conseguia acesso até o DNS. Pesquisei um pouco pela internet e vi alguns falando sobre a instalação de um servidor DNS no próprio servidor, fiz isso mas não achei muito interessante então pensando sobre regras de iptables me veio a grande idéia de simplesmente redirecionar os acessos a porta 53. As regras que utilizei para Bloquear acesso de MAC não liberados, redirecionar a porta 80 para meu apache, permitir acesso ao DNS foram as seguintes:

Ainda estou brincando com o servidor e hoje estava querendo liberar acesso exclusivamente para os MAC aqui de casa, garantindo assim que nenhum vizinho vai pegar meu sinal e utilizar. Demorei algum tempo para conseguir regras que funcionassem efetivamente.

Liberar acesso de tal MAC ADDRESS:

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -m mac –mac-source MAC -j ACCEPT

Redirecionar porta 80 para 8080

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -p tcp –dport 80 -j REDIRECT –to-port 8080

Liberar acesso somente ao servidor DNS:

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -p udp –dport 53 -j DNAT –to IP:53

Bloquear todos os acessos:

iptables -t nat -A PREROUTING -i INTERFACE_INTERNA -j DROP

Matheus

PS: Se as mesmas não estiverem funcionando, não se esqueca de dar uma verificada nas suas regras atuais de iptables pois pode ter algo proibindo ou liberando tudo antes. Então fique atento.

Jun 07 2009

Liberando ping no servidor.

Boa noite,

Na publicação anterior comentei sobre a liberação do “ping” (ICMP) de tal local para seu servidor. Caso você utilizesse Iptables e por padrão DROP em todas as “regras”, você poderá liberar pings apenas de determinado ip da seguinte maneira:

$ sudo iptables -A INPUT -p icmp -s 150.162.60.37 -j ACCEPT

Lembrando que você deve olhar a ordem das regras, pois isto importa em iptables.

Matheus Bratfisch

Jun 06 2009

Utilizar IPv6 em toda a sua rede.

Boa noite,

Como você deve saber o número de IPS na internet estão acabando, as previsões indicam que eles devem se esgotar até 2011. E como ficaremos? Calma, não se assuste! Já foi inventada a alguns anos a tecnologia que está substituindo os IPv4, são os chamados IPv6. (Que eu publiquei o link pro curso da CGI.BR lembra?). Então, hoje em dia já existem serviços destinados ao IPv6. Para fazer o uso do IPv6 existem alguns métodos e vou demonstrar como fiz na minha rede para conseguir IPv6 para os computadores. Lembrando que a minha rede possui um “Ubuntu Server” para receber e compartilhar a internet.

Inicialmente crie um cadastro em http://www.tunnelbroker.net. Após o cadastro realizado e confirmado acesse o menu “Create Regular Tunnel” e coloque o IP da sua residencia, o ponto final do tunnel, escolha o servidor mais perto de você e pronto. (Você não deve bloquear pings (ICMP) do servidor, se não ele não permitira que o tunnel seja criado).

Pressione o link ao lado direito de “Routed /48:”, assim ele lhe dará uma “classe” de ip para você utilizar em sua rede caseira.

Após feito isso, acesse seu servidor e crie o tunnel para ele da seguinte maneira:

# IPV6 da sua placa de rede INTERNA
sudo ifconfig eth1 inet6 add 2001:470:d8dd:1::1/64
# Levanta interface sit0
sudo ifconfig sit0 up
# Cria um tunnel para o IP do seu servidor (Substituia o IP_DO_SERVIDOR pelo valor do “Server IPv4 address”)
# MANTENHA OS “::”
sudo ifconfig sit0 inet6 tunnel ::IP_DO_SERVIDOR
# Levanta interface sit1
sudo ifconfig sit1 up
# Adiciona o IPv6 a interface sit1 (Substitua ROUTED pelo valor “Routed /48″)
sudo ifconfig sit1 inet6 add ROUTED
# Redireciona os tráfegos IPv6 para sit1
sudo route -A inet6 add ::/0 dev sit1
# Habilita IPv6 Forwarding.
sysctl net.ipv6.conf.all.forwarding=1

Teste se você está utilizando IPv6 da seguinte maneira:
$ ping6 ipv6.google.com

Nas demais máquinas das redes deve ser feito o seguinte:

$ sudo ifconfig eth1 inet6 add IPv6_DA_SUA_MAQUINA
$ sudo ip route add ::/0 via IPv6_DO_SERVIDOR

Caso você não queira configurar manualmente você pode utilizar o RaDVD que é um “router advertisement daemon”.

Vamos supor que seu Routed/48 é 2001:530:d822::/48 o IP da placa de rede do seu servidor conectada a rede local poderia ser: 2001:530:d822:1::1/64. Então o IP da sua máquina seria 2001:530:d822:1::2/64.

Agora de sua máquina tente pingar com ping6 o seu servidor e ipv6.google.com. Se obter resposta está tudo certo. (é claro ¬¬’)

Espero que seja de utilidade a você,
Matheus

PS: Caso você deseje utilizar IPv6 somente em uma máquina conectada diretamente na internet cadastre-se no mesmo site, crie seu tunnel e siga as instruções no final da página do tunnel.

Jun 06 2009

Instalar e Configurar servidor DHCP.

Boa noite,

Estou pensando em uma estrutura de rede que seja eficiente para a minha casa e no momento resolvi fazer alguns testes com idéias sugeridas pela galera do irc.freenode.net @ #ipv6.br e do meu laboratório e me funcionaram bem até o momento.

Retirei o meu Servidor da porta WAN do meu roteador deixando a rede na seguinte estrutura:

Modem -> (eth0) Ubuntu Server (eth1) -> (LAN PORT) Roteador (LAN PORT) -> Computadores.

Desabilitei o Servidor DHCP do Roteador e criei o meu na mesma faixa de IPS do Roteador no Ubuntu Server para instalar e configurar o mesmo procedi da seguinte maneira:

$ sudo apt-get install dhcp3-server

Após a instalação do mesmo abri o arquivo “/etc/dhcp3/dhcpd.conf” e comentei todas as linhas, após feito isso fiz o seguinte:

INTERFACES=”eth1″; # INTERFACE CONECATADA AO MEU ROTEADOR
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative; # DHCP PRINCIPAL DA REDE

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.150; # FAIXA DE IPS A SER DISTRIBUIDA
option routers 192.168.0.254; # GATEWAY
option domain-name-servers 200.247.141.11; # SERVIDOR DNS
option subnet-mask 255.255.255.0; # MASCARA DE SUBREDE
option broadcast-address 192.168.0.255; # ENDEREÇO DE BROADCAST
default-lease-time 600;
max-lease-time 7200;
}

Lembrando que a faixa de IPs utilizada normalmente por meu roteador era 192.168.0.x mas eu poderia alterar a mesma porém preferi utilizar a default.

Após feita as configurações executei o seguinte comando:

$ sudo /etc/init.d/dhcp3-server restart

O mesmo reiniciou com alguns problemas porque esqueci alguns “;” mas após corrigido os pequenos erros o DHCP Server iniciou normalmente, testado e funcionando.

Espero que seja de utilidade a todos,
Matheus Bratfisch

PS: Lembrando que com a atual estrutura de redes eu posso utilizar filtros por MAC ADDRESS conseguindo assim implementar meu Captive Portal. *espero que nós proximos dias eu consiga implementa-lo*

Referencias:
Google + DHCP SERVER UBUNTU (tantos links que eu tentei que nem sei especificar quais que mais me ajudaram. Agradeço aos que me ajudaram e peço desculpas por não saber referenciar ao certo.)

Jun 04 2009

Tradução unetbootin

Boa noite,

Ontem pela madrugada resolvi ajudar a tradução do unetbootin entrei em contato com o responsável e ele me informou que poderia fazer a mesma na sua página de tradução. Entrei na mesma e verifiquei que é muito simples fazer traduções pelo sistema “translations da launchpad”.

Lá existem vários projetos que precisam de tradução, então por que não colaborar? E você aproveita e pratica seu ingles. ;)

Matheus