Screencast Perfetto di una singola finestra con FFmpeg

 

Il titolo di questo post inizia con "Screencast Perfetto", e magari ad alcuni potrà sembrare un tantino esagerato, ma secondo me non lo è affatto. In Gnu/Linux esistono diversi programmi per fare uno screencast, ne cito uno per tutti, RecordmyDektop, anche se io ho sempre preferito utilizzare FFmpeg, Quello che ho notato in tutti i programmi è la "difficoltà" di centrare la finestra o il terminale in maniera precisa, certo nulla di grave, basta mettersi lì e perdere un pò di tempo per trovare il rettangolo perfetto. Però finalmente io ho trovato la soluzione che mi soddisfa completamente, e questo grazie a FFmpeg, che io amo molto, tanto è vero che gli ho dedicato una categoria esclusiva 🙂 Comunque andando al sodo la soluzione è la seguente:

$ xwininfo

digitando nel terminale xwininfo e successivamente toccando una finestra, avremo a disposizione molte informazioni:

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x2424585 (has no name)

  Absolute upper-left X:  274
  Absolute upper-left Y:  219
  Relative upper-left X:  274
  Relative upper-left Y:  219
  Width: 654
  Height: 439
  Depth: 0
  Visual: 0x21
  Visual Class: TrueColor
  Border width: 0
  Class: InputOnly
  Colormap: 0x0 (not installed)
  Bit Gravity State: ForgetGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: yes
  Corners:  +274+219  -352+219  -352-366  +274-366
  -geometry 654×439+274+219
 

io ho preso queste informazioni toccando la finestra che mi interessava, e come si può vedere ci sono molti dati utili, tra cui il posizionamento-Corners-geometry. Adesso non bisogna fare altro che darle in pasto a FFmpeg. Quindi per prima cosa bisogna creare lo script record.sh, ed incollarci dentro:

 

#!/bin/sh

INFO=$(xwininfo -frame)

WIN_GEO=$(echo $INFO | grep -oEe 'geometry [0-9]+x[0-9]+' | grep -oEe '[0-9]+x[0-9]+')
WIN_XY=$(echo $INFO | grep -oEe 'Corners:\s+\+[0-9]+\+[0-9]+' | grep -oEe '[0-9]+\+[0-9]+' | sed -e 's/\+/,/' )

ffmpeg -f x11grab -r 25 -b 2000k -s $WIN_GEO -i :0.0+$WIN_XY /tmp/screencast.avi

 

in caso di problemi di formattazione si può scaricare da quà:

settare i permessi:

$ chmod +x record.sh

e lanciare:

$ ./record.sh

adesso non dobbiamo fare altro che toccare la finestra da registrare e lo script si occuperà in automatico della posizione precisa, salvando lo screencast in /tmp. Attenzione: per registrare il terminale bisogna toccare la barra della finestra, altrimente lo script non riesce a determinare l'esatta posizione, non so il motivo, per quanto riguarda tutto il resto, basta cliccare in un punto qualsiasi delle finestre.

FFmpeg ti amo!!!

enjoy 😉

Inserire logo in un video con FFmpeg

 

Un pò di tempo fa c'era la possibilità di inserire un logo in un video con FFmpeg usando vhook, ma ho scoperto che adesso questo non è più possibile, o meglio, non è più possibile con vhook, ma si può fare lo stesso usando Soc e libavfilter, infatti nel mio post precedente, ho parlato di come installare FFmpeg da sorgenti, appunto per poter compilare ed utilizzare queste librerie. Diciamo che la possibilità di inserire un logo in un video può essere molto utile, specialmente per chi vuole marchiare i propri video per renderli unici, non proprio come il mio dove ho inserito tux-sioux gigante 🙂

Ed ecco di seguito un' altro dei comandi magici:

$ ffmpeg -i video.avi  -vf "movie=0:png:immagine.png [logo]; [in][logo] overlay=10:10:1" output.avi

ps: per chi è pigro ed interessato a limite inserirò i pacchetti ffmpeg e x264 nel mio repository.

ps: la "cosa mancante" del post precedente è –enable-filter=movie

enjoy 😉

Velocizzare boot e prestazioni su Debian Squeeze parte 2

 

 

Nella guida precedente ho iniziato a sperimentare la possibilità di velocizzare Debian Squeeze ed LMDE, partendo dalla fase di boot, fino ad arrivare in questa seconda parte ad aumentare, ove possibile, la reattività del sistema. Già con l'installazione di preload si cerca di aumentare la reattività dei programmi usati più spesso, ma per ottenere questo bisogna dare a preload alcune ore di utilizzo, affinche memorizzi le abitudini. Le modifiche successive io le ho testate sul mio sistema, senza problemi, ma ciò non toglie che è meglio stare attenti.

 

atime ed /etc/fstab:

la prima modifica riguarda  /etc/fstab e l'inserimento dell'opzione noatime e nodiratime. Linux di default tende a tenere traccia di tutto quello che si fà, non solo delle modifiche dei file, ma anche della solo lettura, e scrive tutto sul disco. Questo sicuramente è d'obbligo su un server, ma su un pc Desktop secondo me non è necessario. C'è da tenere conto che una minore scrittura, significa anche aumento della durata dell' hard disk. Quindi /etc/fstab dovrebbe essere così:

/dev/sdaxx    /    ext4    rw,noatime,nodiratime,errors=remount-ro    0    0

lo stesso discorso vale per la partizione di /home separata.

 

vm.swappiness:

un'altra modifica che si può fare riguarda /etc/sysctl.conf e cioè andare a modificare il file, ed inserire un valore  a vm.swappiness che andrà a dire al kernel se tenere tutto in Ram oppure nella cache su disco.  Oggi ci si ritrova ad avere tanta Ram che nemmeno si utilizza, quindi cerchiamo di sfruttarla. Di default questo valore in Debian è 60, e la modifica si può fare da 0 a 100, io ho optato per 20. Per chi ha un pc portatile, può essere utile diminuire la scrittura su disco, in quanto la durata della batteria ne gioverebbe.

# echo 'vm.swappiness=20' >> /etc/sysctl.conf

 

vm.vfs_cache_pressure:

anche questa opzione da inserire in /etc/sysctl.conf aiuta a velocizzare il sistema, il valore di default in Debian è 100, si può provare a dimezzarlo:

# echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf

 

per le mie esigenze queste opzioni vanno benissimo e mi ritrovo con un pc veloce e reattivo:

 

Boot=25 secondi circa

Halt=5 secondi circa

 

ps: in LMDE consiglio di rimuovere il mintMenu dal pannello, che è pesantissimo, ed aggiungere la classica Barra del menu di Gnome.

 

enjoy 😉

Wake on LAN (WOL) su Debian Squeeze

 

Wake on LAN (WOL) è uno standard Ethernet che consente di avviare un computer in standby da una postazione remota, a patto di conoscerne l'indirizzo MAC. Tutto questo è possibile dato che i computer recenti anche se spenti, continuano ad essere alimentati con una tensione di standby. Questa guida è stata testata su Debian Squeeze con dei pc in lan.

 

Requisiti:

Verificare che WOL sia attivato nel Bios dei pc che vogliamo accendere.

 

# apt-get install ethtool wakeonlan

 

verificare che sulla schede di rete sia abilitato WOL:

# ethtool eth0

 

il risultato nel mio caso è questo:

 

root@debian:/home/edmond# ethtool eth0
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: on
    Supports Wake-on: pumbag
    Wake-on: g
    Current message level: 0x00000001 (1)
    Link detected: yes
 

"g" significa che WOL è abilitato

nel caso fosse su "d" significa che è disabilitato, quindi per abilitarlo:

 

# ethtool -s eth0 wol g

 

creare uno script chiamato wol ed inserire:

 

## /etc/init.d/wol
#
# chkconfig: 2345 99 99
# description: Force NIC into WOL mode
#
ethtool -s eth0 wol umbg
exit

 

quindi:

 

$ chmod a+x wol

# cp wol /etc/init.d/

# update-rc.d wol defaults

 

adesso per svegliare il nostro pc, basta inviare i Magic Packet:

 

$ wakeonlan indirizzo_mac_pc

 

 

enjoy 🙂

Installazione di Metasploit su Debian Squeeze

 

 

Metasploit Project è un progetto di sicurezza informatica che fornisce informazioni sulle vulnerabilità, semplifica le operazioni di penetration testing ed aiuta nello sviluppo di sistemi di rilevamento di intrusioni. Il sub-project più conosciuto è Metasploit Framework, uno strumento per lo sviluppo e l'esecuzione di exploit ai danni di una macchina remota. Altri sub-project importanti comprendono l'Opcode Database, l'archivio di shellcode e la ricerca nella sicurezza (Wikipedia) Ci sono diverse distribuzioni Linux che si occupano di testare la sicurezza di un sistema, tra cui la più famosa è sicuramente Backtrack. Ma Metasploit possiamo anche installarlo sulla nostra distro preferita, nel caso specifico Debian Squeeze.

 

Requisiti:

 

# apt-get install build-essential subversion ruby libruby irb rdoc libyaml-ruby libzlib-ruby libopenssl-ruby libdl-ruby libreadline-ruby libiconv-ruby rubygems sqlite3 libsqlite3-ruby libsqlite3-dev

 

Installazione:

 

$ svn co https://metasploit.com/svn/framework3/trunk/ metasploit

$ cd metasploit

$ svn up

 

avvio in modo console:

 

$ ./msfconsole

 

premere help per visionare ulteriori comandi. Per il momento mi fermo quà, in una prossima guida non escludo di proseguire con degli esempi di utilizzo.

 

enjoy 😉

Modificare SpringBoard Iphone su Debian/Ubuntu

 

 

 

Per modificare la SprigBoard del proprio Iphone da Linux c'è bisogno di Sbmanager e di libimobiledevice-1.0 >= 0.9.7.       Per avere Sbmanager su Ubuntu 10.10 basta aggiungere i PPA:

 

$ sudo add-apt-repository ppa:vbkaisetsu/ppa
$ sudo apt-get update
$ sudo apt-get install sbmanager

 

inserire l'Iphone e dare il comando:

 

$ sbmanager

 

Per avere sbmanager su Debian:

 

$ sudo apt-get install build-essential git automake autoconf libtool libgnutls-dev libglib2.0-dev libxml2-dev libreadline5-dev swig python-dev libusbmuxd-dev libplist-dev libplist++-dev libplist++1 libzip-dev libclutter-1.0-dev libclutter-gtk-0.10-dev intltool

 

scaricare ed installare libimobiledevice-1.0.1:

 

$ wget https://www.libimobiledevice.org/downloads/libimobiledevice-1.0.1.tar.bz2

$ tar xvjf libimobiledevice-1.0.1.tar.bz2

$ cd libimobiledevice-1.0.1

$ ./configure

$ make

$ sudo make install

 

scaricare ed installare sbmanager:

 

$ git clone git://git.sukimashita.com/sbmanager.git

$ cd sbmanager

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

 

inserire l'Iphone e dare il comando:

 

$ sbmanager

 

enjoy 😉

Come aggiungere PPA in Debian

 

Chi ha provato ad aggiungere repo PPA in Debian, si sarà senz'altro accorto del tipico errore add-apt-repository: command not found, quindi non è possibile aggiungerli…..anzi è possibile, anche se sconsigliato. Comunque per chi vuole avere anche questa possibilità sulla propria Debian o Debian based, ha bisogno di questo script:

 

#!/bin/bash
if [ $# -eq 1 ]
then
    ppa_name=`echo "$1" | cut -d":" -f2 -s`
    if [ -z "$ppa_name" ]
    then
        echo "PPA name not found"
        echo "Utility to add PPA repositories in your debian machine"
        echo "$0 ppa:user/ppa-name"
    else
        echo "$ppa_name"
        echo "deb maverick main" >> /etc/apt/sources.list
        apt-get update >> /dev/null 2> /tmp/apt_add_key.txt
        key=`cat /tmp/apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3`
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        rm -rf /tmp/apt_add_key.txt
    fi
else
    echo "Utility to add PPA repositories in your debian machine
"
    echo "$0 ppa:user/ppa-name"
fi

 

salvare come add-apt-repository.sh e copiarlo in /usr/bin:

 

$ sudo cp add-apt-repository.sh /usr/bin/add-apt-repository

$ sudo chmod o+x /usr/bin/add-apt-repository

$ sudo chown root:root /usr/bin/add-apt-repository

 

adesso siamo in grado di aggiungere PPA:

 

$ sudo add-apt-repository ppa:nome

 

enjoy 😉

Download ad orario prestabilito

 

A volte capita di voler scaricare un grosso file, ma siccome si sta facendo altro oppure si ha bisogno di tutta la banda disponibe, alla fine succede che ci si dimentica. Per ovviare al problema della dimenticanza servirebbe un comando da digitare subito ma che posticipi il download ad un orario prestabilito . Ecco fatto 🙂

 

$ echo 'wget link_da_scaricare' | at 23:00

 

enjoy ;)

Download ed Upload con Plowshare

 

Plowshare è una fantastica applicazione a riga di comando progettata per alcuni dei più popolari siti di file-sharing come: Megaupload, Rapidshare, 2Shared, 4Shared, ZShare, Badongo, Divshare.com, Depositfiles, Mediafire ecc.ecc. Questa applicazione secondo me può risultare molto utile soprattutto quando si hanno tanti link per il download e magari su hosting diversi. Comunque iniziamo con ordine:

 

Requisiti:

$ sudo apt-get install curl recode imagemagick tesseract-ocr-eng spidermonkey-bin aview perlmagick

al posto di spidermonkey-bin si può installare anche il pacchetto rhino.

 

Download pacchetto deb

oppure:

Download tarball

installarlo con:

$ tar xvzf plowshare-VERSION.tgz

$ cd plowshare-VERSION

$ sudo bash setup.sh install

 

Esempi di utilizzo:

il motivo principale per cui mi piace è proprio questo, e cioè creare un file lista.txt e mettere dentro tutti i link da scaricare, (basta pensare ai grossi programmi che si trovano divisi in tanti rar) quindi basta un semplice:

$ plowdown lista.txt

download di un singolo file:

$ plowdown

download con account premium su megaupload:

$ plowdown -a myuser:mypassword

cancellare download premium su megaupload:

$ plowdel -a myuser:mypassword

limitare velocità di download:

$ plowdown -r 50k

per altri comandi controllare:

$ man plowshare

per i comandi di upload (che a me non servono) controllare:

$ man plowup

 

enjoy 😉

Login e autenticazione da penna Usb in Linux

 

 

 

Qualche tempo fa ho fatto una guida intitolata Login e autenticazione facciale in Linux, dove avevo sperimentato sul mio netbook Aspire One, l'uso della webcam come ulteriore strumento di sicurezza, sia in fase di login che in fase di amministrazione, e devo dire che ha funzionato bene, tanto è vero che lo utilizzo ancora. Oggi invece voglio fare la stessa guida,  con la differenza che al posto della webcam si usa una chiavetta usb, in questo modo anche chi non ha la webcam o non vuole usarla, ha un modo alternativo per sperimentare. Anche questa volta utilizzerò PAM che ci aiuterà nell'impresa, per la felicità di Toshidex che di PAM ha fatto una categoria sul suo blog 🙂

Requisiti:

$ sudo apt-get install pmount pamusb-tools libpam-usb

inserire la chiavetta usb, anche se contiene altri dati non ha importanza, nulla sarà perso, ed aggiungere il device con il nome scelto (nel mio caso usb-security) a /etc/pamusb.conf con il seguente comando:

$ sudo pamusb-conf --add-device usb-security

come si può vedere sotto la chiavetta è stata subito riconosciuta:

root@debian:/home/edmond# pamusb-conf –add-device usb-security
Please select the device you wish to add.
* Using "Sony Storage Media (Sony_Storage_Media_OE07042910585-0:0)" (only option)

Which volume would you like to use for storing data ?
* Using "/dev/sdg1 (UUID: 3FB2-8744)" (only option)

Name        : usb-security
Vendor        : Sony
Model        : Storage Media
Serial        : Sony_Storage_Media_OE07042910585-0:0
UUID        : 3FB2-8744

Save to /etc/pamusb.conf ?
[Y/n]
Done.

aggiungere anche l'utente a /etc/pamusb.conf:

$ sudo pamusb-conf --add-user edmond

quindi come si può vedere sotto, abbiamo collegato l'utente al device:

root@debian:/home/edmond# pamusb-conf –add-user edmond
Which device would you like to use for authentication ?
* Using "usb-security" (only option)

User        : edmond
Device        : usb-security

Save to /etc/pamusb.conf ?
[Y/n]
Done.

adesso non ci rimane altro che modificare il file /etc/pam.d/common-auth, per far sì che possa utilizzare la nostra password di sistema.

Importante:

consiglio di tenere due shell aperte come root, nel caso qualcosa andasse storto, cosicchè si possa tornare alla configurazione normale del file /etc/pam.d/common-auth.

quindi:

$ sudo nano /etc/pam.d/common-auth

la configurazione deve essere la seguente:

#auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth   required      pam_unix.so nullok_secure
auth    sufficient      pam_usb.so
 

per tornare alla situazione normale invece:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
#auth   required      pam_unix.so nullok_secure
#auth    sufficient      pam_usb.so
 

se tutto è andato bene, da questo momento in poi l'autenticazione al login e come amministratore di sistema può avvenire solo con la chiavetta inserita. A questo proposito si possono fare delle prove aprendo il terminale per acquisire i privilegi di root e verificare se tutto funziona:

$ su edmond

 

 

enjoy 🙂