lunedì 18 novembre 2013

Attaccare una WIFi/WPA mediante WPS e Reaver


Come ex amministratore di rete presso l'universita' e come ex white hat conosco un po' di trucchetti per attaccare una rete WiFi
Con l'arrivo del protezione WPA pero' pensavo che non fosse possibile entrare in una rete Wireless a meno di un colpo di fortuna (l'attacco WPA si basa sulla forza bruta) o stupidita' nella configurazione dell'access point (mi e' capitato di vedere degli access point con la password wpa che coincideva con l'SSID)

Frugando su Internet mi  sono imbattuto in Reaver, un software che sfrutta una vulnerabilita' sull'autenticazione automatica WPS, ed ho voluto provare sulla mia attrezzatura

Ho a disposizione un solo router wireless con capacita' Wps ed e' un access point portatile PN51T.
Per usare Reaver e' inoltre necessario avere a disposizione una scheda di rete che possa entrare in Monitor Mode..con mia grande sorpresa una scheda wifi Alfa AWUS036H su porta USB e dotata di chipset Realtek 8087 supporta questa modalita' in modo eccellente aggiungendo anche una antenna ad alto guadagno



Per usare Reaver conviene usare la distribuzione Back Track in modo da avere gia' tutto configurato

L'attacco e' piuttosto semplice perche si deve mandare prima la scheda in Monitor Mode
airmon-ng start wlan1

dopo si individuano gli access point visibili con capacita' wps mediante wash
wash -i mon0

guardando alla colonna WPS Locked si puo' vedere come alcuni access point siano protetti da questo tipo di attacco (Yes)

Selezionato l'obbiettivo di iniziare l'attacco (che rientra nella categoria di forza bruta perche' prova tutte le combinazioni di wps pin code) 
reaver -b mac_access_point -i mon0 -v


con un po' di disappunto la chiave wpa del mio access point e' stata trovata in meno di 30 secondi.
Il motivo della rapidita' e' che l'access point e' configurato con il pin code di default (12345670) che e' il primo che reaver prova

Un paio di controindicazioni:
1) l'attacco e' molto rumoroso perche' genera traffico per tutto il tempo in cui vengono provati i pin code (possono occorrere anche ore) e quindi e' facile da identificare. Alcuni access point prevedono un numero limitato di tentativi nell'unita' di tempo od addirittura disabilitano il wps dopo un certo numero di tentativi falliti

2) l'access point bersaglio deve essere piuttosto vicino all'attaccante perche' il traffico e' basato su una sequenza precisa di pacchetti che non devono essere persi (nel mio caso questo era sicuramente soddisfatto  perche' trra l'antenna e l'access point c'erano circa 20 cm)

PS: ovviamente questi esperimenti si fanno sulle reti che si amministrano....no su quelle dei vicini anche perche' e' reato 

venerdì 15 novembre 2013

Utilizzo di IP Camera Maygion su Linux

aggiornamento 20 maggio 2016
---------------------------------------
se si collega la camera con il cavo 192.168.1.111
per resettare il firmware si seguono le istruzioni a questa pagina
le istruzioni sul movimento della ptz del codice Python non sono esattamente corrette. Debuggando
la pagina web dell'amministrazione della camera le istruzioni corrette sono



html=urlopen(ur+"moveptz.xml?dir="+direzione+"&user=admin&password=admin")
time.sleep(0.1)
html=urlopen(ur+"moveptz.xml?dir=stop&user=admin&password=admin"

in pratica si fa movimento in una direzione, si attende e poi si stoppa, altrimenti il movimento va a fine corsa
---------------------------------------


Per cercare un sostituto a basso costo della IP Camera Samsung PTZ vista in questo post mi sono per una trentina di euro questa Ip Camera non marcata su un e-commerce cinese

La cosa divertente dell'acquistare prodotti cinesi e' che arrivano totalmente privi di istruzioni e sostanzialmente privi di marca per cui la prima sfida e' stata quella di capire cosa avevo davanti. Il cd incluso con i driver recava un directory denominata asw-380 ed un manuale in inglese ma senza indicazioni di marca e modello.


Guardando in una immagine relativa all'uso del software Android IP Cam Viewer viene riportato che deve essere selezionata l'opzione MayGion IP Camera V3 e questa e' stata l'indicazione fondamentale per individuare il modello.
Per quanto riportato dal manuale la camera e' pilotabile via browser mediante un OCX..quindi non solo sarei stato costretto ad usarlo sotto Windows ma sarei stato costretto ad usare Internet Explorer...la presenza di un programma per Android comunque mi lasciava speranze

La configurazione della rete wireless e' stata semplice perche' sul retro della camera e' disponibile il pulsante WPS per cui il WiFi e' stato autoconfigurato senza l'utilizzo di un computer esterno

Frugando su Internet vi sono frammentarie e scarse informazioni ma sono riuscito a trovare un paio di Pdf in cinese che mostrano la possibilita' di pilotare il dispositivo mediante delle URL (attenzione: esistono due versioni del software della IP Camera MayGion che differiscono sensibilmente, si deve individuare quindi il corretto set di URL)

Per visualizzare lo stream video si puo' utilizzare VLC usando come sorgente del flusso di rete questa URL
http://ipcamera:81/videostream.asf?usr=admin&pwd=admin

Per quanto riguarda il movimento PTZ ho scritto invece un semplice programmino in Python che sfrutta un joystick per muovere la camera

----------------------------------------------
import pygame,time

try:
    from urllib.request import urlopen
except ImportError:
    from urllib2 import urlopen

pygame.init()
j = pygame.joystick.Joystick(0)
j.init()
conta = 0
tick = 100

try:
    while True:
conta=conta+1
        pygame.event.pump()
        if j.get_button(0) == 1:
print "Pulsante 1 : "+str(j.get_button(0))
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&tick="+str(tick)+"&nPtzTimes="+str(conta)+"&dir=up&user=admin&password=admin")
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&nPtzTimes="+str(conta)+"&dir=none&user=admin&password=admin")

        if j.get_button(1) == 1:
print "Pulsante 2 : "+str(j.get_button(1))
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&tick="+str(tick)+"&nPtzTimes="+str(conta)+"&dir=right&user=admin&password=admin")
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&nPtzTimes="+str(conta)+"&dir=none&user=admin&password=admin")

        if j.get_button(2) == 1:
print "Pulsante 3 : "+str(j.get_button(2))
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&tick="+str(tick)+"&nPtzTimes="+str(conta)+"&dir=down&user=admin&password=admin")
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&nPtzTimes="+str(conta)+"&dir=none&user=admin&password=admin")

        if j.get_button(3) == 1:
print "Pulsante 4 : "+str(j.get_button(3))
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&tick="+str(tick)+"&nPtzTimes="+str(conta)+"&dir=left&user=admin&password=admin")
html=urlopen("http://192.168.0.102:81/cmd.xml?cmd=moveptz&nPtzTimes="+str(conta)+"&dir=none&user=admin&password=admin")


        if j.get_button(4) == 1:
print "Pulsante 4 : "+str(j.get_button(4))
tick = tick+25
if tick > 200:
tick = 200

        if j.get_button(5) == 1:
print "Pulsante 5 : "+str(j.get_button(4))
tick = tick-25
if tick < 50:
tick = 25


time.sleep(0.1)

except KeyboardInterrupt:
    j.quit()

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


giovedì 14 novembre 2013

Arduino Amplifier Shield

Cercando di rendere utilizzabile il circuito visto in questo post, ho pensato di rendere la versione definitiva come uno shield Arduino in modo da evitare al massimo cavi volanti

Per fare cio' e' stata presa una normale piastrina millefori tagliata sulle dimensioni di una Arduino a cui sono stati aggiunti pin mediante una strip (i pin inseriti sul lato dei contatti digitali dell'Arduino servono solo a rendere meccanicamente stabile lo shield e non sono elettricamente connessi)



I cavi dalla strumentazione vengono connessi alle morsettiere verdi (il contatto centrale non e' connesso...avevo solo morsettiere a tre posti)
Nelle foto e' mostrato il circuito completo per l'amplificazione da un solo canale dell'LM358 ma sono gia' stati predisposte la morsettiera ed il trimmer per regolare l'amplificazio (a destra nella foto sottostante) per il secondo canale

La lettura dei dati avviene sui Pin A3 (canale 1) e A5 (canale 2) dell'Arduino

Lo shield rovesciato
Alla fine la realizzazione e' piuttosto pulita ed ordinata (almeno per i miei standard)


mercoledì 13 novembre 2013

Doppio arcobaleno su Firenze

Foto da www.repubblica.it degradata e ridotta per motivi di copyright

Questo arcobaleno lo ho visto ma non ho avuto il tempo e la posizione per fotografarlo. A parte la particolarita' della posizione dell'arcobaleno c'e' da segnalare che si tratta in realta' di un doppio arcobaleno.
Come si vede dalla foto (ma era piu' evidente dal vivo) all'esterno dell'arco piu' luminoso era presente un secondo arco piu' tenue e dai colori invertiti (si nota come il rosso dell'arco esterno coincida con il rosso di quello interno). Per riferimento l'arco esterno e' in corrispondenza della Cupola del Brunelleschi
Per meggiori dettagli come al solito Wikipedia

Debian Wheezy su Acer Aspire 3003 LMi

Questo computer e' primo portatile personale che mi sono comprato (prima usavo solo quelli di lavoro o materiale obsoleto scartato da altri) ed ha una storia piuttosto complicata perche' e' una macchina che ho quasi subito odiato (costata poco ma con una pessima batteria, un monitor inguardabile alla luce ambientale e plastiche veramente economiche) e lo ho prestato varie volte (anche per prestiti annuali) ed e' sempre ritornato indietro....l'ultima volta giusto ieri


Si tratta di una macchina del 2007 con una scheda grafica SIS, 1024x768, 512 Mb di Ram (in due banchi da 256 Mb un altro motivo per cui ho odiato questa macchina), AMD Sempron 3000+ 1.8GHz

Per rimetterla in vita ho montato una Debian Wheezy XFCE che gira egregiamente (si consideri che nel momento in cui usci' il portatile era in circolazione Debian 4 ..adesso siamo alla 7 e non ci sono problemi)

Per attivare il Wifi si devono aggiungere i repository non-free e poi digitare
apt-get install firmware-b43-installer

Un paio di pecularita' del portatile
1) la scheda WiFi non si attiva di default ma si deve premere il pulsante frontale di destra fino a quando non si accende la luce arancione (vedi foto)
2) Effettuare il boot da USB non e' banale perche' premendo semplicemente F12 al boot non e' mostrata come periferica quella USB anche se inserita. Accendendo con la periferica USB inserita si deve entrare nel Setup del Bios, Boot, Hard Drive,Enter per espandere il ramo, si seleziona la chiavetta (in questo caso una Kingstone DataTraveler) ed con F6 si porta di un passo sopra il disco fisso HTS54xxxxxx. Si esce dal Bios salvando e si riavvia selezionando Hard Disk (in questo caso l'USB viene vista come HD) 




martedì 12 novembre 2013

Installare Ubuntu su disco esterno

Al lavoro ho, come penso piu' o meno tutti, un calcolatore che uso come un utente dai bassi privilegi. Cio' impedisce di giocare sul posto di lavoro ma impedisce anche di installare software per fare elaborazioni che possono essere utili per la mia attivita'

Visto che mi avanza un disco esterno piuttosto capiente ma vecchiotto (120 Gb) e visto che il computer di lavoro e' settato per fare il boot anche da USB Storage ho provato a montare Ubuntu su questa unita', non come Live Cd ma proprio come una vera installazione.
Su Internet ci sono diverse istruzioni che consigliano come prima cosa di rimuovere il disco fisso interno alla macchina con cui si crea l'installazione di Ubuntu sul disco esterno ma sono riuscito a portare a termine l'operazione senza modificare l'hardware della macchina .... basta sapere cosa si sta facendo


Si parte scaricando il file iso di Ubuntu (ho preferito la LTS attualmente al 12.04.03) ed ho creato una pennetta USB con cui fare il boot,
Una volta partito il sistema ho inserito il disco esterno (nella foto sopra si vede male ma e' appoggiato per traverso a sinistra del touchpad con la sigla Kraun) ed ho iniziato l'installazione.
Dopo un primo tentativo andato a vuoto perche' l'installer non voleva inserire GRUB su /dev/sdc (disco esterno) sono ripartito ed invece di creare due partizioni sul disco esterno (/ e swap) ne ho creato tre aggiungendone una di boot (/, /boot e swap).
Al successivo riavvio, selezionando il disco esterno, il sistema Ubuntu e' partito e la velocita' e' sostanzialmente discreta tanto da farne un sistema utilizzabile

sabato 9 novembre 2013

Arduino Aroboto Duemilanove (clone cinese)

Ho comprato per una decina di euro un clone cinese dell'Arduino Duemilanove da usare come scheda da battagli su DealExtreme

Arduino Duemilanove originale

Clone Cinese
come si vede dal confronto con l'originale, il clone cinese mostra una serie di pin aggiuntivi per montare dei servo ma si tratta solo di pin connessi ai normali PWM dell'Arduino

Al momento di provarla ho caricato lo skecth di esempio Blink ma il programmatore si rifiutava sempre di completare il lavoro

Sul momento ho pensato che si fosse corrotto il bootloader dell'Arduino (i led della scheda si accendono quindi l'alimentazione e' presente) e stavo per sostituire il processsore con uno originale comprato direttamente programmato da Arduino
Cercando meglio sul sito di DealExtreme, tra i commenti, viene riportato che le prime schede prodotte presentavano una resistenza denominata R2 che deve essere rimossa per permettere la programmazione (nelle nuove schede sembra che questa resistenza sia stata rimossa)

Francamente non so dissaldare un componente con saldatura SMD ed ho provato prima ad interrompere la pista con un trincetto ma senza risultato. Ho preso quindi il coraggio ed ho provato a rimuovere direttamente il componente sollevandolo con un trincetto

Scheda con R2 rimosso

Fatto cio' la scheda e' risultata programmabile e perfettamente funzionante....questo e' il divertente di comprare in Cina



Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...