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:

  1. Runtime r = Runtime.getRuntime();
  2. Process p = r.exec("net send " + num + " " + msg);
  3. 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.

  1. if ( (OS.indexOf("nt") > -1) || (OS.indexOf("windows 2000") > -1 )){
  2. MyFrame c = new MyFrame();
  3. } else {
  4. 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

Merry Xmas!!

santa-icon.png

Tanti auguri di buon Natale a tutti! :)


santa claus icon by http://www.kidcomic.net/

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:


Compilazione:
gcc -c touchscreen_gesture.c
gcc -o touchscreen_gesture touchscreen_gesture.o

Uso:
./touchscreen_gesture /dev/input/touchscreen0

php l0gg3r 0.2: a very simple php logger

PE.png

Ciao ragazzi...! Sulla scia del vecchio post, ho pensato di modificare molto lo script per renderlo notevolmente più funzionale.

Ho pensato di realizzare il tutto mediante le sessioni del php in modo tale da avere un file di log degli accessi al sito, che rappresenti visite "uniche". Nella prima versione aprire una file di circa 500k (in continua crescita) dal proprio browser non era affatto piacevole in termini di tempo. In termini di spazio, avere un file unico in continua espansione e per di più senza alcun tipo di mirroring o ridondanza (leggasi backup) non è affatto astuto!

Il contenuto loggato rimane il medesimo:

  1. [+] User Agent -> $_SERVER['HTTP_USER_AGENT']
  2. [+] IP -> $_SERVER['REMOTE_ADDR']
  3. [+] Date / Time
  4. [+] $_SERVER['REQUEST_METHOD'] - $_SERVER['REQUEST_URI'] - $_SERVER['SERVER_PROTOCOL'];
  5. [+] Os (non completo!)
  6. [+] Referer -> $_SERVER['HTTP_REFERER']

Statistiche

Ciò che differisce dalla vecchia versione è sostanzialmente un meccanismo semplicissimo di statistiche; una tabella mostra i browser ed i sistemi operativi che hanno visitato il sito con una serie di percentuali a riguardo. Al tempo stesso una tabella mostra le parole chiave di ricerca da google con cui un utente è giunto alla nostra pagina. (Vedi Immagine 1.)

Struttura

Il tutto è strutturato in modo banale; basta aprire il codice sorgente di l0gg3r.php per capire il funzionamento. I percorsi all'interno dei file sono relativi.
La cartella stat presenta una serie di file *.log, ognuno dei quali funge da contatore globale.

Immagine 1.

2009-11-29-151732_1276x353_scrot.png

Clicca sull'immagine per ingrandire

Download source code

phpl0gg3r_0.2.tar.gz

EDIT 30/11/09: ho modificato alcune piccolezze che producevano delle discrepanze nelle statistiche. Il file di cui sopra è aggiornato.

(icona iniziale by dimpoart)

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

  1. #!/bin/sh
  2. #brightness -> pipe menu per la luminosità dello schermo
  3.  
  4. bright=$(cat /sys/class/backlight/gta02-bl/brightness)
  5.  
  6. cat << _EOF_
  7. <openbox_pipe_menu>
  8. <item label="Level: $bright">
  9. <action name="Execute">
  10. <execute>-</execute>
  11. </action>
  12. </item>
  13. <separator/>
  14. <item label="Set to 20%">
  15. <action name="Execute">
  16. <execute>brightness 51</execute>
  17. </action>
  18. </item>
  19. <item label="Set to 40%">
  20. <action name="Execute">
  21. <execute>brightness 102</execute>
  22. </action>
  23. </item>
  24. <item label="Set to 60%">
  25. <action name="Execute">
  26. <execute>brightness 153</execute>
  27. </action>
  28. </item>
  29. <item label="Set to 80%">
  30. <action name="Execute">
  31. <execute>brightness 204</execute>
  32. </action>
  33. </item>
  34. <item label="Set to 100%">
  35. <action name="Execute">
  36. <execute>brightness 255</execute>
  37. </action>
  38. </item>
  39. </openbox_pipe_menu>
  40. _EOF_

[+] batterylevel

  1. #!/bin/sh
  2. #batterylevel -> pipe menu per il livello di carica della batteria
  3.  
  4. Batterylev=$(cat /sys/class/power_supply/battery/capacity)
  5. Status=$(cat /sys/class/power_supply/battery/status)
  6.  
  7. cat << _EOF_
  8. <openbox_pipe_menu>
  9. <item label="$Batterylev % ~ $Status">
  10. <action name="Execute">
  11. <execute>
  12. $Batterylev
  13. </execute>
  14. </action>
  15. </item>
  16. </openbox_pipe_menu>
  17. _EOF_


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

  1. export sys_brightness=/sys/class/backlight/gta02-bl/brightness
  2. 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: