Piero V.

Prosody, strophe.js e websocket

XMPP (Extensible Messaging and Presence Protocol), è uno standard nato nel 1999 per l’instant messaging col nome di Jabber. È stato usato ed è tuttora usato da moltissime compagnie: Google Talk non era che un servizio jabber, Facebook lo usava come API per la sua chat, Whatsapp usa un server jabber (ejabberd) notevolmente modificato.

Oggi questo protocollo può essere utilissimo alle app per smartphone e tablet: è stato disegnato apposta per l’uso in tempo reale e per essere esteso e i server XMPP sono testati moltissimo, quindi sono ottimi per il concetto di “Don’t reinvent the wheel”.

Inoltre, dopo l’introduzione delle websocket, è stato anche creato uno standard per usarle come canale per XMPP.

Lato server ho testato il server Prosody. L’idea con cui è sviluppato è la semplicità e la leggerezza: è altamente modulare, quindi si possono abilitare solo le funzionalità necessarie, ed è scritto in Lua, un linguaggio molto leggero e performante. … [Leggi il resto]

OpenWRT su DGN2200v1

Il mio firmware preferito per i router è OpenWRT: è estremamente versatile, in quanto trasforma un router in una Linux box, e molto molto stabile. Basti pensare che il mio router principale, il TP-Link TD-W8970, ha fatto più di 100 giorni di uptime senza mai dare problemi.

Questa volta il router su cui ho cercato di installarlo è il Netgear DGN2200 prima versione. Può essere riconosciuto dall’assenza di versioni nel nome del modello dell’eticheta posta sul fondo.

Questo device è basato su piattaforma Broadcom brcm63xx, quindi su OpenWRT l’ADSL non sarà più disponibile poiché richiede dei blob proprietari compatibili solo con un kernel di 10 anni fa. Se vi serve ma volete comunque potenziare il vostro dispositivo, dovrete per forza ricorrere a ModFS, un firmware basato su quello stock che rende possibile l’aggiuntà di funzionalità tramite una memoria USB.

Un’altra cosa che può far desistere dal cambio è che per flashare OpenWRT è necessario utilizzare l’interfaccia seriale. Il formato dell’interfaccia originale è proprietario e aggiunge al filesystem squash e al kernel compresso con LZMA un header proprietario. Ci sarebbero anche i tool per creare quell’immagine, basterebbe scaricare il pacchetto GPL dal sito ufficiale Netgear. Ci ho anche provato, portando al brick il router a causa di un’incompatibilità tra la versione di JFFS2 dei tool e del kernel di OpenWRT. … [Leggi il resto]

Script shell per ottenere l'IP

Spesso ho bisogno di conoscere il mio indirizzo IP, quindi ho deciso di creare uno script shell (molto semplice) che rilascio sotto il pubblico dominio. Ha bisogno del comando wget, ma penso che possa essere adattato facilmente anche a curl o simili. Lo script vi dà sia l’IPv4 che l’IPv6, se disponibile.

#!/bin/bash
IP4=$(wget -q -O- -4 http://wtfismyip.com/text)
IP6=$(wget -q -O- -6 http://wtfismyip.com/text)
if [ $? -eq 0 ]; then
	echo "IPv4: $IP4"
	echo "IPv6: $IP6"
else
	echo "IP: $IP4"
fi

BadUSB

Ormai siamo a Dicembre 2014 e non si può di certo dire che questo sia stato un anno molto fortunato per la sicurezza: Heartbleed e OpenSSL, Poodle e SSL 3, Shellshock e BASH e l’ultimo, che secondo me è passato molto più in sordina, è BadUSB.

Ieri mi sono stupito leggendo di articoli su internet che parlavano di una grossissima falla su USB, la più grande del protocollo, a detta di alcuni.

Ma veniamo al dunque: USB, al contrario di interfacce più vecchie molto più semplici, può fornire molte funzionalità: da periferiche HID (Human Interface Device) tipo mouse, a memorie, a schede audio etc… Perciò i dispositivi necessitano di un software che gestisca anche questo aspetto, come anche chi si è dilettato un po’ con l’elettronica digitale sa.

Ma questa è una funzionalità di USB, se i produttori di chip non fanno il loro lavoro, la colpa non è di USB. Non si può negare che sia preoccupante quest’apparente facilità nel riprogrammare i firmware dichiarata dai media, ma a me sembra solo un abuso da parte di media che cercano di attirare lettori.

In ogni caso non sono preoccupato: penso mi accorgerei di un’interfaccia di rete in più…

Comunque magari questa sfortuna del 2014 potrebbe essere vista invece positivamente: abbiamo chiuso bug di anni e anni fa…

Python SSH Tunnel Server

SSH tunnels are great!

They allow to bypass firewalls and NAT problems, and you can use as unprivileged user, since you don’t have to install virtual network devices such as TUN or TAP.

Another good reason to chose SSH is that it is a standard protocol, so there are many implementations: OpenSSH on most Unices, PuTTY on Windows and cross platform libraries (Java, Python…).

However there is a great disadvantage: the SSH server. If you have a server you probably already use SSH, therefore you don’t want to share your custom port and grant access to your server, or create accounts to allow it.

A solution could be creating a chroot or something like that, but I wasn’t really confident in it, therefore I looked for an alternative SSH server, and I’ve come up with this library: TunnelServer.

Python already has a brilliant SSH library: Paramiko. It’s very transparent: it manages the packages for you, but you are the one who should manage the rest (login check, shell comunication, PTY allocation…, socket-ssh channel synchronization). That’s great, but sometimes unhandy, so I’ve written this class, which is a middleware: the class user still has to check login, but you don’t have to create threads to listen on forwards etc… … [Leggi il resto]