it.png

Ciao ragazzi, se vi può interessare è uscito un mio articolo che riguarda il mondo mobile sulla rivista Hakin9, versione in inglese. Per informazioni a riguardo, Mobile Exploitation.
Di cosa si parla?? Esso tratta l'eventualità di utilizzare un dispositivo mobile come hacking tool, mostrando anzitutto i fondamenti del mobile web ed in secondo luogo tutta una serie scenari di attacco. Inoltre si fa ampio riferimento alla privacy evidenziando un esempio carino di spoofing.
Qualora avesse intenzione di leggerlo, è necessario acquistarlo online (mail a customer_service@hakin9.org o subscription_support@software.com.pl) o avere un abbonamento alla rivista (info).


um.png

Hello guys, my article about the mobile web has been pubblished on Hakin9 magazine, English version. For information you can see here: Mobile Exploitation.
What's it about?? It concerns the possibility of using a mobile device as a hacking tool, showing first the basics of the mobile web, and secondly, a range of attack scenarios. Furthermore, it makes an extensive reference to privacy, highlighting a nice spoofing example.
If you were going to read it, you must buy it online (email to customer_service@hakin9.org or to subscription_support@software.com.pl) or have a subscription (info).
You can also find this issue in: Barnes & Noble, Borders, B. Dalton, Microcentre.

2009-12-01-100758_615x233_scrot.png
Sending a lot of messages is not a crime! :P

Si tratta di un "lavoretto" realizzato da me ed Emilio Coppa, ercoppa, circa un anno fa. L'obiettivo era quello di prendere confidenza con le swing di java in modo tale da realizzare un gui per un programma di qualsiasi tipo.
La voglia di rompere le scatole agli utenti di una lan dotata di macchine con windows nt è stata tanta, per cui... abbiamo deciso di scrivere qualcosa di estremamente semplice, ma per certi versi altamente funzionale.

Download code

E' possibile reperire qualche informazione sul net send qui.Si tratta di un servizio Windows che permette di scambiare messaggi istantanei tra i vari sistemi connessi in rete.

Digitando net send da prompt dei comandi:

Microsoft Windows 2000 [Versione 5.00.]
(C) Copyright 1985-1999 Microsoft Corp.F:>net send
Sintassi del comando:

NET SEND {nome | * | /DOMAIN[:nome] | /USERS} messaggio

Il client permette di mandare un numero a scelta di messaggi ad una macchina target. E' previsto inoltre un file di log per ciascun invio effettuato, il quale sarà creato nella cartella Log\. :)

Esecuzione della chiamata:
Runtime r = Runtime.getRuntime();
Process p = r.exec("net send " + num + " " + msg);
p.waitFor();

Il main di MyFrame.java prevede un controllo sul sistema operativo dal quale viene lanciato il programma. Rimuovete il seguente codice per bypassarlo. Ciò risulterà necessario per utenti XP.

if ( (OS.indexOf("nt") > -1) || (OS.indexOf("windows 2000") > -1 )){
MyFrame c = new MyFrame();
} else {
JOptionPane.showMessageDialog(null,"Sorry friend... You have to use Win nt or 2000","Error",JOptionPane.WARNING_MESSAGE); }

Informazioni utili:

Compilazione:

> javac MyFrame.java
> javac FrameLog.java

Esecuzione:
> java MyFrame

Download Code
> NetS3nd [easy] Client - powered by sneak & ercoppa

L'idea principale è quella di realizzare un grabber di gesture realizzabili sullo schermo del nostro device. Ad ogni movimento delle dita sullo schermo potrebbe corrispondere l'apertura di una specifica applicazione. Nel caso di seguito è possibile scorrere un dito dall'alto a sinistra dello schermo sino al basso a destra per fare in modo che una applicazione a scelta venga avviata. L'immagine di seguito potrà chiarire;

Parte del codice deriva dallo screenlocker di lindi, il quale blocca lo schermo sino a quando una gesture verticale (dall'alto al basso) viene rilevata.
In touchscreen_gesture.c viene usato EVIOCGRAB mediante I/O asincrono per evitare che lo schermo venga bloccato durante l'esecuzione (vedasi ioctl(...)) e la matematica delle operazioni diviene leggermente più complessa. Giustamente occorre verificare che gli eventi legati alla coordinata x non assumano valori costanti e che questi siano crescenti.

[C] Download source code:

touchscreen_gesture.c ~ Do you need help?

Evito di trattare nel dettaglio la matematica delle operazioni. In pratica lo schermo riceve degli eventi tra cui le coordinate x ed y del mouse (del dito nel nostro caso) e touchscreen_gesture.c controlla ciclicamente la storia degli eventi ricevuti. Qualora la gesture dovesse matchare con quella mostrata sopra verrà aperta una finestra con zenity. E' possibile modificare il comando da eseguire a seguito della gesture, vedasi la riga relativa all'execlp(...). Il risultato a seguito della gesture è il seguente mostrato:




<b>Compilazione:</b><br>
gcc -c touchscreen_gesture.c<br>
gcc -o touchscreen_gesture touchscreen_gesture.o<br><br>

<b>Uso: </b> <br>
./touchscreen_gesture /dev/input/touchscreen0

Salve ragazzi, dopo un pò di problemi con Arch dovuti all'aggiornamento di gnome, ho deciso di proporvi qualche piccola miglioria riguardo l'ui presentata precedentemente.
Dopo una serie di considerazioni ho concluso che un pannello (tint2 nel dettaglio) non è affatto piacevole. D'altro canto un orologio centrale (conky) risulta molto funzionale e coglie a pieno lo spirito minimale che contraddistingue il tutto :)

Qui riporto un'immagine:

L'interfaccia è essenziale, ma carina. Tint2 è stato rimosso ed un grande orologio "riempie" lo schermo; è possibile trovare il .conkyrc qui. Ho tentato a lungo di compilare conky 1.7.2 in modo tale da avere il supporto ad i widgets in lua, tuttavia mi sono scontrato con un vero e proprio dependency hell.

Come precedentemente messo alla luce è pensabile di sostituire l'openmoko-panel-plugin con opportuni pipe menu per openbox. Da cui riporto il codice per mostrare ed editare la luminosità dello schermo ed avere statistiche sulla batteria. Il tutto è banale, ma al tempo stesso punto di inizio per qualcosa di più complesso.

[+] brightness
#!/bin/sh
#brightness -> pipe menu per la luminosità dello schermo

bright=$(cat /sys/class/backlight/gta02-bl/brightness)

cat << _EOF_
<openbox_pipe_menu>
<item label="Level: $bright">
<action name="Execute">
<execute>-</execute>
</action>
</item>
<separator/>
<item label="Set to 20%">
<action name="Execute">
<execute>brightness 51</execute>
</action>
</item>
<item label="Set to 40%">
<action name="Execute">
<execute>brightness 102</execute>
</action>
</item>
<item label="Set to 60%">
<action name="Execute">
<execute>brightness 153</execute>
</action>
</item>
<item label="Set to 80%">
<action name="Execute">
<execute>brightness 204</execute>
</action>
</item>
<item label="Set to 100%">
<action name="Execute">
<execute>brightness 255</execute>
</action>
</item>
</openbox_pipe_menu>
_EOF_

[+] batterylevel
#!/bin/sh
#batterylevel -> pipe menu per il livello di carica della batteria

Batterylev=$(cat /sys/class/power_supply/battery/capacity)
Status=$(cat /sys/class/power_supply/battery/status)

cat << _EOF_
<openbox_pipe_menu>
<item label="$Batterylev % ~ $Status">
<action name="Execute">
<execute>
$Batterylev
</execute>
</action>
</item>
</openbox_pipe_menu>
_EOF_



La soluzione può risultare a tratti sporca, si può risolvere creando in ~ (nella home, /root di default) un file .var del tipo:

export sys_brightness=/sys/class/backlight/gta02-bl/brightness
export sys_battery=/sys/class/power_supply/battery

Quindi modificare i pipe menu ad hoc "includendo" quest'ultimo in modo tale da modularizzare il tutto.. ;)

Keyboard?

Xvkbd è un'ottima soluzione, nonostante occorra individuare un giusto layout in modo tale che sia effettivamente finger-friendly. D'altronde questa tastiera è usata anche su NeoPwn. :P


File correlati:

L'"esperimento" prosegue...ghghgh :) [Se desideri saltare l'intera trattazione, guarda il risultato].

(Openbox files -> menu.xml | rc.xml)

In riferimento ai post precedenti la possibilità di mandare file mediante il bluetooth verso altri dispositivi mobili dal terminale senza procedere con il pairing non mi sembra realizzabile su debian (sul neofreerunner). Vi prego di smentirmi.
Ho cercato di ottimizzare qualche altro aspetto del rootmenu di openbox tramite l'introduzione di ulteriori utili pipemenu.
Anzitutto è possibile scaricare da qui un pipemenu (dirlist) che permette di navigare il filesystem ricorsivamente. Esso è notevolmente efficace e per di più permette di associare a file con estensioni specifiche l'applicazione con cui aprirli. Vedi l'immagine seguente per avere un'idea a riguardo.

2l.png

Per quanto riguarda la tastiera, ho pensato di automatizzare l'apertura e la chiusura della stessa. Dal menu è possibile aprire la matchbox-keyboard e quando questa è attiva, è possibile chiuderla con soli tre tocchi sullo schermo (apertura menu - kbd - close kbd).

0l.png
1l.png

Di seguito riporto il pipemenu in bash (kbd):
#!/bin/bash


IsKbdOn=$(pgrep matchbox-keyboa)


if [ "$IsKbdOn" != "" ];
then

cat << _EOF_
<openbox_pipe_menu>
<item label="Close kbd">
<action name="Execute">
<execute>
kill -9 $IsKbdOn
</execute>
</action>
</item>
</openbox_pipe_menu>
_EOF_

else

cat << _EOF_
<openbox_pipe_menu>
<item label="Open Kbd">
<action name="Execute">
<execute>
matchbox-keyboard
</execute>
</action>
</item>
</openbox_pipe_menu>
_EOF_
fi

Infine ho pensato di ricorrere a conky per mostrare in modo immediato lo stato del sistema e soprattuto l'ora. Utilizzare qualcosa di più gradevole, quali gdesklets o adesklets, avrebbe migliorato di gran lunga la user interface, ciononostante ho appurato che un orologio digitale su desktop produce un notevole rallentamento. Da cui conky fa al caso nostro.

Di seguito riporto il .conkyrc:

#avoid flicker
double_buffer yes

own_window yes
own_window_transparent yes
own_window_type desktop
own_window_hints undecorate,sticky,skip_taskbar,skip_pager

#borders
draw_borders no
border_margin 0

#shades
draw_shades no

#position
gap_x 2
gap_y 0
alignment top

#behaviour
update_interval 15

#colour
default_color 8f8f8f
default_shade_color 000000

#font
use_xft yes
xftfont Arial Condensed:pixelsize=15

#to prevent window from moving
use_spacer none
minimum_size 1098 0

TEXT

Cpu: ${color e0e0e0}${font}${cpu}% ${color} Mem: ${color e0e0e0}${font}${mem} ${color} |
${color} Up: ${color e0e0e0}${font}${uptime_short}${color} |
Ora: ${color e0e0e0}${font}${time %H:%M} ${color}


3l.png

Non intendo dilungarmi più di tanto.. Per informazioni commentate :)

wallpaper by ~ScaryDeadGirl