Raspberry chat encrypted


Todos precisamos de vez em quando de uma ferramenta para uma conversa rápida, anónima e sem grandes configurações. Ao navegar pela Internet encontrei vários serviços de chat que me ofereciam tudo isso mas houve um que me agradou mais.
O ChatCrypt é um serviço de chat simples e directo.

Escolhemos um nome para a sala, um utilizador e uma palavra-chave. É aberta uma nova janela de chat.
Cada pessoa que quiser entrar só tem de colocar o nome da sala e palavra-passe correctas. Quem tentar entrar na sala sem ter a password correcta, não vai conseguir ler o que os restantes membros escrevem.

Isto porque, de acordo com os autores do chat a encriptação ocorre antes da nossa mensagem sair do navegador que estamos a usar, utilizando para isso o algoritmo AES-256 no modo CTR com uma palavra-passe especificada pelo utilizador.
Os criadores foram ainda mais longe e permitem que possamos usar este serviço numa pagina externa à do serviço, como por exemplo numa página gerida por nós.
Lembrei-me logo do Raspberry 🙂

Num Raspbian criado de fresco apenas tive que instalar o Apache:
sudo apt-get install apache2

Depois Criei um ficheiro dentro da pasta /var/www/html/
nano /var/www/html/chat.html

Inseri o seguinte conteúdo:

https://www.chatcrypt.com/iframe.php

Salvei o ficheiro e acedi ao raspberry:
http://ip_do_raspberry/chat.html

Experimentem!

 

Ubuntu 16.04 no Raspberry

A Canonical suporta oficialmente o Ubuntu no Raspberry Pi 2 (também disponibilizam uma imagem para o Raspberry 3)!

Podem fazer download da imagem aqui para o vosso Pi 🙂

Como instalar? Na consola do nosso Ubuntu e já com o cartão SDCard do Raspberry inserido verificamos o path para o cartão (que deverá ser /dev/mmcblk0) com o seguinte comando:
lsblk

Em seguida fazemos download da imagem:
cd /tmp
wget http://cdimage.ubuntu.com/ubuntu/releases/16.04/release/ubuntu-16.04-preinstalled-server-armhf+raspi2.img.xz

E instalamos no cartão:
xzcat ubuntu-16.04-preinstalled-server-armhf+raspi2.img.xz | sudo dd of=/dev/mmcblk0

Esta imagem é para um cartão de 4Gb. Podem preencher o resto do cartão com recurso ao GPARTED. Se não o tiverem basta instalar com sudo apt-get install gparted.

No primeiro arranque autentiquem-se com username ubuntu e password ubuntu. Vai ser solicitada a alteração para uma nova password.

A instalação do Ubuntu no Raspberry traz algumas vantagens relativamente ao Debian das quais destaco o Kernel mais recente e pacotes de instalação mais actuais. Isto pode ser útil em algumas situações. Experimentem!

NTP Server no Raspberry

ntp-server

Uma boa função para  o nosso Raspberry é ser um servidor NTP na nossa rede local.
A sua configuração é bastante simples

Começamos por actualizar o sistema:
sudo apt-get update 
sudo apt-get dist-upgrade

Garantimos que o nosso Raspberry está na zona correcta:
sudo dpkg-reconfigure tzdata
(Escolher Europa e depois Lisboa)

Instalamos o NTP:
sudo apt-get install ntp

Editamos o ficheiro de configuração:
sudo nano /etc/ntp.conf

Primeiro comentamos os servidores existentes:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# pool 0.ubuntu.pool.ntp.org iburst
# pool 1.ubuntu.pool.ntp.org iburst
# pool 2.ubuntu.pool.ntp.org iburst
# pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu’s ntp server as a fallback.
# pool ntp.ubuntu.com

Em seguida acrescentamos os portugueses:
# Servidores portugueses
server 2.pt.pool.ntp.org
server 1.europe.pool.ntp.org
server 0.europe.pool.ntp.org

Logo a seguir permitimos pedidos NTP apenas na nossa rede local:
# Permitir apenas a rede local
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
(Ajustar a rede para a vossa rede local)

Salvamos o ficheiro e reiniciamos o serviço NTP:
sudo service ntp restart

Verificamos o estado:
ntpq -p

Deveremos obter uma mensagem assim:
==============================================================================
+2.pt.pool.ntp.o 194.117.9.136 3 u 37 64 1 26.271 0.666 0.001
*1.europe.pool.n 81.2.117.235 2 u 36 64 1 55.100 1.474 0.001
+0.europe.pool.n 192.33.96.102 2 u 40 64 1 74.266 2.486 0.001

E pronto! Não esquecer de abrir a porta 123 UDP caso usemos uma firewall.

SSH ao Raspberri

Um dia destes ao falar com um amigo meu que tinha comprado um raspberry, perguntei todo entusiasmado o que já tinha feito quando ele triste me responde que “dá muito trabalho escrever o comboio de comandos que aparecem nos artigos!”
Bom, sei que isto parece estranho de dizer mas os maluquinhos de Linux são tão preguiçosos como os outros e fazem tudo para facilitar a vida no dia-a-dia!
Para  acedermos a um Raspberry e inserir os comandos que vemos na Internet não precisamos de escrever no teclado local. Podemos fazer isso com um “copiar & colar”, a partir do nosso computador pessoal, usando para isso um protocolo de nome SSH. Aliás, podemos fazer tudo como se tivéssemos ligados directamente ao Raspberry desde que este esteja ligado pelo menos com o cabo de rede, no mesmo Router onde o nosso computador pessoal está ligado. A única informação que precisamos é de saber qual o IP do nosso Raspberry. Para isso basta ver no arranque do nosso Raspberry o IP:
raspberry_piNeste caso é o IP 192.168.1.15.

Também é possível ver com o comando ifconfig:
raspberry_pi1Neste caso é o IP 192.168.1.70

Assim, já temos como aceder ao nosso Raspberry. Vamos imaginar que o IP do nosso Raspberry é o 192.168.2.100 e que o utilizador é o “pi“.
Em Linux ou em OSX abrimos uma consola e escrevemos “ssh pi@192.168.2.100“. Se o sistema conseguir chegar ao nosso Raspberry, vai ser pedida a password (por defeito é Raspberry). E pronto, é como se estivéssemos ligados directamente no nosso Raspberry!

Em Windows podemos usar um programa muito simples mas poderoso, de nome Putty. O programa não exige instalação e é um só ficheiro.
putty-defaultNo hostname escrevemos o IP do nosso Raspberry e clicamos em Open. Abre-se uma janela de consola onde inserimos o utilizador e password. E pronto! Já podemos copiar os comandos dos milhares de projectos que há pela Internet para o nosso Raspberry, sem ter que os escrever. Para “colar” no Putty basta clicar com o botão direito do rato na consola.

Bons projectos! 🙂

Raspberry Openfire Social Server

Com o passar dos anos todos vamos acumulando várias contas de conversação on-line. Os mais “antigos” (como eu) terão começado no IRC, depois no MSN, Google talk e mais recentemente no Facebook chat.

Bom, isto dá uma dor de cabeça na hora de configurar um novo pc ou telemóvel, para além de ter que lembrar palavras-passe e usar vários programas. E porque não ter uma única conta em que as várias contas de chat já estão configuradas e na hora de se configurar um novo dispositivo basta uma simples configuração? Muitos dirão: “Isso já há!” Temos o EBuddy ou comercialmente o fantástico Trillian. É verdade mas isso obriga a manter as nossas contas nas mãos de terceiros, o que de certo modo põe a nossa privacidade em risco. E se tivéssemos um servidor em casa que fizesse o mesmo?

Quando olho para o meu Raspberry Pi surge-me logo o seguinte pensamento: “O que vou tentar fazer hoje contigo?” Pois bem, desta vez o meu RasPi ficou social 😀

Há uma pérola no Open-Source de seu nome OpenFire que nos vai ajudar nesta missão!

Este projecto é válido para qualquer máquina e sistema compatível com OpenFire mas parto do princípio que o vão fazer num Raspberri Pi Mod. B, com o mais recente Raspbian. O baixo consumo do RasPi, tamanho pequeno e razoável performance tornam-no o equipamento ideal para o efeito. Também presumo que vão ter um serviço de DNS dinâmico configurado e pelo menos a porta 5222 aberta no router para o vosso RasPi.

Começamos então por desinstalar o Java da Oracle caso esteja instalado (no Raspbian mais recente está!):

sudo apt-get purge oracle-java7-jdk

Em seguida instalamos o Java-JRE:

sudo apt-get install default-jre

Por fim fazemos download do pacote de instalação do OpenFire:

wget -O openfire_3.8.2.deb  http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.8.2_all.deb

E instalamos:

sudo dpkg -i openfire_3.8.2.deb

… Já está instalado! Vamos configurar?

Temos  que aceder por browser ao nosso RasPi. Abrimos o navegador e escrevemos:

http://raspberry_ip:9090

openfire

Se tudo correu bem vamos encontrar uma página onde escolhemos a linguagem de configuração Tem Português Brasil que foi a minha escolha. Nas páginas seguintes vamos configurar o servidor. Podem usar os valores que são apresentados por defeito em caso de dúvida.

Posso-vos dizer que no meu RasPi, após a ultima página (onde defini a palavra-passe do admin) tive que aguardar uns bons 20 minutos. Altura para um café 😛

Por fim deparamo-nos com a seguinte página:

OpenFire1

Como configurar?

OpenFire1

1 – Configurar o utilizador (tab Usuários/Grupos) e se for para mais que um utilizador convém criar um grupo também para que possam conversar directamente (quem quiser mais protecção pode até encriptar a conversa)

2 – Ir ao tab Plugins e ativar o Kraken IM Gateway

3 – Ir ao tab Servidor e no sub-tab  Gateways realizar duas tarefas:

a) Nos Transports activar os protocolos pretendidos:

OpenFire2

b) Nos Registrations adicionamos as nossas contas sociais:

OpenFire3

usuário (JID) – Utilizador criado no ponto 1
gateway – Protocolo pretendido
usuário – Utilizador da conta externa (Gmail, Facebook, etc)
senha – Palavra-passe da conta externa
apelido – Nome a apresentar para a conta externa (nickname)

E pronto! Podemos ligar-nos ao nosso servidor com um IM-client. O protocolo usado será o XMPP.

Relativamente a portas do router que este servidor usa serão:
TCP 7777 – IM file transfer
TCP 7443 – SSL HTTP Bind
TCP 7070 – HTTP Bind
TCP 5269 – S2S port
TCP 5223 – SSL XMPP Jabber
TCP 5222 – TLS XMPP Jabber
TCP 9090 – Gestão Backoffice
TCP 9091 – Gestão Backoffice SSL
TCP 3478-3479 – STUN port
TCP 1935 – Red5 RTMP port
TCP,UDP 3000-3039 – RTP port
TCP,UDP 5060-5099 – SIP ports

A mais importante (essencial mesmo!) será a 5222. A porta 7777 será necessária se quiserem trocar ficheiros com os outros contactos. Não aconselho mais nenhuma a não ser que precisem mesmo 🙂

Para desktop costumo usar o Pidgin (Em Linux, Windows ou OSX). Para o Android uso o Xabber mas podem usar qualquer um que suporte o protocolo XMPP.
Como configurar?
Fácil, Adicionam uma conta XMPP, no campo de utilizador escrevem o criado_no_ponto1@DNS_dinamico e respetiva palavra passe. Por exemplo, eu criei um utilizador joao e o DNS dinâmico é mensageiro.dyndns.org. No nome de utilizador coloco joao@mensageiro.dyndns.org. 
Após alguns segundos o programa vai perguntar se aceitam o certificado e os vossos contactos começarão a aparecer!