Archivio per il tag commandline

Nascondere un file in un’immagine (easy version)

Questa è una versione semplificata della procedura discussa in questo vecchio post, dove veniva spiegato come nascondere un file all’interno di un’immagine usando una tecnica di molto semplice (a dire il vero a me piace di più la vecchia versione :-P ),

Prima di tutto riepiloghiamo i passi da seguire per nascondere un qualunque file all’interno di un’immagine (esistono modi molto più raffinati di questo, ovviamente):

  1. si comprime il file da nascondere con un software di compressione (io ho scelto 7-Zip);
  2. si unisce l’immagine al file compresso ricavato al passo precedente.

Il file risultante dall’unione sarà un’immagine che se aperta con 7-ZIP mostrerà l’archivio in essa nascosto.

Nella prima versione lo script per nascondere il file funzionava da prompt dei comandi, questa seconda versione invece aggiunge una voce al menu contestuale di Explorer chiamata «Nascondi il file in un’immagine», selezionandola apparirà la classica finestrella per cercare un file da cui sarà possibile scegliere l’immagine da usare come contenitore. L’immagine «truccata» verrà generata nella sottocartella images. Nei dettagli:

Installazione

  1. Scaricare ed installare 7-Zip. Affinché non ci siano problemi installarlo nella cartella predefinita;
  2. estrarre il contenuto del file 7z nella cartella %ProgramFiles% (C:\Programmi\ se la vostra versione di Windows è in italiano);
  3. eseguire il file hfii.reg che aggiungerà la voce al menu contestuale di Windows.

Utilizzo

Per nascondere un file all’interno di un’immagine procedere come segue:

  1. cliccare col tasto destro del mouse sul file (oppure SHIFT-F10);
  2. scegliere “Nascondi questo file in un’immagine”;
  3. nella finestra che appare selezionare l’immagine desiderata;
  4. se tutto va a buon fine un’immagine contenente il file sarà creata in %ProgramFiles%\HFII\images\ ( di solito: “C:\Programmi\HFII\images).

E` possibile che qualche antivirus (o Vista stesso) blocchi lo script, in caso affermativo assicurarsi che abbia tutti i permessi necessari (non c’è nulla di malizioso nello script).

Immagine che nasconde al suo interno un file 7z con lo script diiscusso nell'articolo

PS: Photobuvket se ne accorge e sega l’immagine :-P .

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Cancellare le cartelle orfane con una sola riga di comando

Ecco un bel trucchetto postato su un blog che non seguo di solito, e che permette di cancellare tutte le cartelle vuote che ci sono sull’hard disk :-) .

Più che per lo script in sè questa cosa a me torna utile per migliorare tutti i miei file BATCH di pulizia e riordino. Il comando for lo conoscevo, ma sinceramente leggendo l’help di Microsoft non si capisce un cavolo :-P , soprattutto non si capisce che è possibile usarlo per elencare efiltrare tutti i file presenti sull’HD.

Quello che non sapevo era come iterare il comando in modo che cercasse nelle sottocartelle, ok il /s del comando dir, però mai avrei pensato si potesse filtrare l’output generato col for. Figo :-D .

In pratica per generare una lista da poter passare ad un for è sufficiente dargli l’opzione /b

Il comando da dare per cancellare tutte le cartelle vuote è:

for /f "usebackq delims=" %f in (`"dir /ad/b/s | sort /R"`) do rd "%f"

>

NOTA: faccio notare che di comando dir è racchiuso fra “accenti gravi” e non apostrofi (il codice numerico è 96).

Lo script in realtà non riesce a capire quali cartelle siano vuote o piene ma cerca di cancellarvele tutte, però, il comando rd non cancella una cartella che non sia vuota.

Se invece di cancellarle (si sa mai) volete visualizzare tutte le cartelle che avete sull’HD:

for /f "usebackq delims=" %d in (`"dir /ad/b/s | sort /R"`) do echo  "%d"

Se, come spiegato sul blog di MSDN, volete creare un file BAT (o CMD) dovete raddoppiare i %.

Con piccole modifiche, davvero piccole, è possibile usarlo per farsi una lista delle immagini sparse sull’HD, dei file MP3, oppure per cancellare gli indici di Thunderbird (vabbè con la 2.0 la cosa è meno utile di prima) e forse altro ancora :-) .

Questo, ad esempio, cancella tutti gli indici di TB (ogni tanto fa bene fare pulizia):

for /f "usebackq delims=" %f in (`"dir *.msf /b/s"`) do del  "%f"

NOTA: Faccio notare, che lo script iniziale è sbagliato :-P, in quanto non tiene conto degli spazi nei nomi di file/cartelle, cosa di cui mi ero accorto anch’io tentando di creare lo script per la cancellazione dei file msf e non capendo perchè non funzionasse :-P (tutti i percorsi venivano troncati in un bel “C:\Documents”), per fortuna ci sono i commenti, l’equivalente per il blog dei Service Pack di sistema :-) .

Fonte: MSDN Blog

Technorati Tags: , , ,

Guerre Stellari in Ascii Art

Da Lifehacker, ecco come guardarsi via Telnet il quarto episodio («Una nuova speranza») di Guerre Stellari in Ascii Art :-D . Cosa assolutamente inutile però da fan di Star Wars e amante dell’ascii art non potevo non apprezzare :-) . Ben inteso, di guardarmi tutti i 13935 frame non ci penso nemmeno, però un’occhiata veloce l’ho data ed è davvero ben fatto ! Peccato non si possa mandare avanti :-P

Per chi, come il sottoscritto, non conoscesse ancora questo vecchio trucchetto è sufficiente digitare da prompt dei comandi:

telnet towel.blinkenlights.nl

ovviamente è cross platform :-) . Che la forza sia con voi :-)

Screenshot di un frame dell'episodio quarto di guerre stellari via Telnet

Fonte: Lifehacker

Technorati Tags: ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.
Se ti è piaciuto l'articolo puoi votarlo. Grazie!

Comparativa fra i server DNS di OpenDNS e quello del provider

Prendendo spunto da un articolo di Digital Inspiration, ho voluto mettere a confronto la velocità del server DNS del mio provider internet (Tele2) rispetto a quello di OpenDNS.

Siccome di mettere come prompt l’ora non mi convinceva affatto - troppo tempo perso a incollare la stringa per la query - ho fatto due file BATCH che prendono come input un qualunque dominio e restituiscono come output l’orario prima della query e l’orario dopo la query, la differenza è il tempo impiegato per risolvere l’indirizzo IP da parte dei due server DNS.

opendns.bat

@echo off
echo %time%
nslookup %1 208.67.222.222 > %temp%\tmp.txt
echo %time%
del %temp%\tmp.txt

tele2dns.bat ( dns1-it.swip.net)

@echo off
echo %time%
nslookup %1 193.12.150.2 > %temp%\tmp.txt
echo %time%
del %temp%\tmp.txt

Facendo una ventina di query, a orari diversi, sembra effettivamente che il server DNS di Tele2 sia più veloce di quello di OpenDNS (circa 5/10 centesimi di secondo in meno), ma, ho ottenuto persino risultati in cui questo comportamento “medio” veniva stravolto e il server di OpenDNS era più prestante nella risoluzione dell’indirizzo IP. Il tempo impiegato per la risoluzione degli indirizzi va dai quattro ai sette decimi di secondo, quello di Tele2 mediamente impiega cinque decimi di secondo, quello di OpenDNS ne impiega circa sei.

Secondo me, troppi fattori in gioco per azzardarsi a fare grafici e comparative di vario genere, ecco uno screenshot di un caso limite dove il server di Tele2 sembra addormentato: più di un secondo contro i 47 centesimi di quello di OpenDNS (meno della metà):

Screenshot del prompt dei comandi che mostra un caso limite: 47 centesimi per OpenDNS e oltre 100 per quello di Tele2

In media il server DNS fornito dal provider ( ele2 nel mio caso) sembra essere più prestante.

Quindi, visto che un decimo di secondo è relativamente insignificante come differenza, usate il server che vi pare :-) , se poi volete fare ancora prima, scaricate ShowIP e modificate il file HOSTS. del vostro sistema operativo.

Fonte: Digital Inspiration.

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.
Se ti è piaciuto l'articolo puoi votarlo. Grazie!

Enso diventa OpenSource

Il team di Humanized ha deciso di rilasciare Enso, un software nato per semplificare l’usabilità, con . La decisione è maturata per permettere agli sviluppatori di aggiungere comandi per far interagire Enso con le proprie applicazioni, Enso infatti, è nato per garantire una migliore usabilità dei software e la sua utilità è direttamente proporzionale al numero di quelli con cui riuscirà ad integrarsi, citando dal blog di Humanized:

Why are we doing this?

For Enso to have a chance of becoming the universal tool that we envisioned, it has to be compatible with an ever-expanding number of applications as well as providing an ever-expanding number of commands. For instance, there’s a program called GVim; Enso’s text-selection commands are currently incompatible with GVim because the latter has a unique way of handling text selections. A few users have complained to us about this, and while we’re sympathetic, we’ve had to pull a Spock and say “The needs of the many outweigh the needs of the few” as we focused the limited resources of our 4-person development team on getting the most popular commands to work with the most popular applications. The closed-source development model limits what we can do. It doesn’t scale well to the problem of an ever-expanding number of applications and an ever-expanding number of commands

Ora che è Opensource è anche possibile che presto venga resa disponibile una versione per altri sistemi operativi. Cosa che non mi sarei mai aspettato: il codice sorgente è in Python, il più umano dei linguaggi di programmazione e di sicuro quello che al momento conosco un po’ meglio. Non che abbia aspirazioni di sviluppare il codice, ma se vedo che creare comandi è relativamente semplice un pensierino ce lo posso fare :-) .

Per chi non lo conosce, Enso è un tentativo di superare le limitazioni delle attuali interfacce utente proposte dai sistemi operativi, un modo per integrare alle interfacce grafiche la praticità della vecchia linea di comando, che se si sa cosa si vuol fare permette di farlo in maniera molto più veloce. Per ora le uniche due componenti rilasciate come release sono il launcher ed Enso Word (un correttore ortografico globale), ma molte altre vengono rese disponibili in versione beta. Anche se, come app launcher puro e semplice preferisco Launchy, le potenzialità di Enso, soprattutto ora che è OpenSource, sono maggiori e vanno ben oltre la semplice apertura di applicazioni.

Per fare un esempio una delle componenti permette di controllare il proprio player preferito, un’altra di operare traduzioni al volo e così via, tutto questo senza la necessità di aprire il player o il browser ed usare Google Translate.

Per esempio vediamo come si può tradurre dall’inglese all’italiano del testo senza lasciare il text editor in uso o senza aprire una scheda del browser per usare Google Translate. Bene, selezioniamo il testo da tradurre, premiamo CAPSLOCK digitando il comando:

translate to italian

Screenshot di Enso. nell'immagine si vede cosa accade quando si preme CAPSLOCK e si digita il comndo tranlsate

Si noti che non è necessario digitare il comando per intero, è sufficiente digitare le lettere iniziali del comando e l’autocompletamento farà il resto.. Il risultato verrà sostituito al testo selezionato se ci si trova all’interno di un text editor o in una textarea del browser, altrimenti verrà aperta una finestrella che riporterà il testo tradotto.

Non è però che sia tutto rose e fiori :-P . Il traduttore ha almeno un paio di problemi:

  • il risultato della traduzione non è sempre eccelso (credo usi Google Translate), e comunque questo non è un problema imputabile a Enso :-P ;
  • c’è un grosso problema con l’encoding dei caratteri, le accentate ad esempio vengono sostituite da dei punti di domanda :-P ;

il traduttore è comunque in versione Beta ed è quindi probabile che venga migliorato al più presto.

A chi volesse installarlo consiglio di iniziare con il solo Launcher ed eventualmente di installare tutte le componenti solo dopo aver fatto un po’ di pratica con il funzionamento del software. Al momento - purtroppo - non è possibile disinstallare le componenti singolarmente. A prescindere dalle componenti installate è possibile ottenere l’elenco dei comandi attivi premendo CAPSLOCK digitando il comando: commandlist..

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Recensione di iswitch-tabs, estensione per Firefox che permette di aprire le schede in modo più semplice

Oggi, dopo un bel po’ di tempo che non scrivo su questo blog, vorrei presentare un’estensione che, a mio parere, va nella giusta direzione: cioè quella di rendere più usabile un’applicazione. Niente di che, dirà qualcuno, però secondo me l’idea di questa estensione è geniale, anche se non è fra quelle pubblicizzate su Firefox Addons (pure nome gli hanno cambiato e non a caso credo ::-P ). Fra parentesi, mi piacerebbe sapere chi sceglie i « Componenti aggiuntivi consigliati», no perchè io di quelli consigliati non ne installerei nemmeno uno :-P .

L’estensione si chiama iswitchbtabs e permette di fare una cosa semplicissima: accedere alle schede aperte usando solamente la tastiera. Lo sviluppatore Chris Danis si è ispirato al famoso editor di testo su piattaforma Linux: Emacs (che non ho mai imparato ad usare :-P ) che ha una feature simile. In pratica è sufficiente premere F9 per far apparire una finestrella con elencate tutte le schede aperte in quel momento:

Screenshot della schermata di iswitchb-tabs che mostra le schede aperte in Mozilla Firefox

iniziando a digitare del testo l’elenco delle schede comincerà a ridursi mostrando solamente quelle che soddisferanno il pattern digitato, dando invio si aprirà la prima scheda che appare nella lista. Perchè questo dovrebbe essere utile ? Ecco qualche buon motivo:

  • se le schede aperte sono tante, il loro nome è tagliato, a volte rimangono solo poche lettere visibili (il numero delle schede aperte può variare a seconda della risoluzione dello schermo o del tema utilizzato). Questo ovviamente rende complicato riconoscerle;
  • si può tranquillamente fare a meno della barra delle schede;
  • anche dal punto di vista dell’accessibilità, credo, sia un ottimo metodo per muoversi velocemente fra le schede.

L’unica cosa che, secondo me, potrebbe essere migliorata è quella di proporre le schede aperte in un menu a scomparsa nella barra di stato anzichè in una finestra popup (like Nostalgy for TB). . In realtà, sto anche cercando di fare questa piccola modifica prendendo spunto dalle due estensioni in oggetto, ma sono ben lungi dal venirne a capo (avevo già richiesto nella mailing list di Nostalgy, la scorsa settimana ho messo pure un commento nella pagina di iswitchb-tabs su Firefox Addons ma senza risultati (il commento su A.M.O. è in attesa di moderazione :-P ).

In realtà, inizialmente avevo dei progetti più ambiziosi, però la mia scarsa conoscenza di Javascript e Xul mi ha fatto desistere :-P . Quello che volevo fare era rendere accessibili tutti i menu di Firefox (File, Visualizza, Strumenti…) usando l’autocompletamento, comunque ci ho rinunciato :-P . All’idea di modificare iswitchb-tabs per farla funzionare come Nostalgy invece, non ho ancora desistito :-P .

In realtà, io speravo che fosse possibile richiamare la scheda aperta in Firefox, e più in generale di tutte le applicazioni in uso, con Enso ma, almeno qui da me, non è possibile richiamare le schede, è invece possibile richiamare le finestre di qualunque applicazione in uso e per questo ha una sua ragione di rimanere installato :-) . Visto che, gli sviluppatori di Enso sono stati ingaggiati da Mozilla è comunque possibile che ci siano gradite novità a breve :-) .

Download: iswitchb-tabs.

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Fare una lista dei software installati da prompt dei comandi

In questa vecchia pagina viene spiegato un metodo per ottenere un elenco delle applicazioni installate su un sistema Windows. La cosa può tornare utile per farsene una stampa quando si vuole fare pulizia di software inutili che non ci si ricorda manco di aver installato.

Il metodo proposto è però assai lento: per recuperare il nome delle applicazioni installate infatti, viene analizzato più volte un file temporaneo in cui si sono salvate le informazioni lette dal registro di sistema. Usando Sed si può sveltire l’operazione in modo radicale e ottenere una lista dei software installati, che può essere poi scritta su carta o su un file, dando come parametro la periferica di output.

Installazione ed esempi di utilizzo

Se non avete installato Sed è necessario farlo prima di utilizzare la mia versione modificata dello script, se è già installato, lo script tenta di recuperarlo da “C:\Programmi\Gnuwin32\bin” o “C:\Cygwin\bin”. Se l’eseguibile non è in una di queste cartelle (o in una facente parte del PATH di sistema) sarà necessario mettere l’eseguibile nella stessa cartella in cui si è scompattato l’archivio 7z (o modificare il file BAT).

L’archivio contiene due file: uno è il file BAT vero e proprio (installedapps.bat), il secondo file un elenco di direttive che Sed applicherà per formattare correttamente l’output (cmd.sed).

Per usarlo è sufficiente scrivere da prompt dei comandi (o facendo un collegamento sul desktop):

C:\installedapps> installedapps

Questo è un esempio dell’output generato:

7-Zip 4.57
Adobe Flash Player Plugin
Adobe Shockwave Player
Adobe SVG Viewer 3.0
Agent Ransack Version 1.7.3
Album Art Downloader 0.6-alpha2
Avira AntiVir PersonalEdition Classic
AVG Anti-Spyware 7.5
AviSynth 2.5
CamStudio
CCleaner
CDex extraction audio
ClamWin Free Antivirus 0.90
Codice Fiscale 32-bit v4.21
Intel A/V Codecs V2.0
CommandBurner 3.3
COMODO Firewall Pro
Crimson Editor

Si può anche inviare l’output ad un file o alla stampante (PRN):

C:\installedapps> installedapps > log.txt

Se non volete scaricare l’archivio questo è il contenuto dei due file:

installedapps.bat

@echo off
PATH=%PATH%;C:\Programmi\gnuwin32\bin;c:\cygwin\bin
regedit /a %TEMP%\install.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
sed -f cmd.sed %temp%\install.reg

volendo si può aggiungere una ulteriore riga finale per cancellare il file temporaneo:

del %TEMP%\install.reg

cmd.sed

/"DisplayName"/b matchpattern {
	d
	}
:matchpattern
s/"DisplayName"=\(.*\)/\1/
s/"//g
s/(remove only)//

Download

Archivio 7z con lo script
Gnuwin32 Homepage

Technorati Tags: , , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Junction e link simbolici in Windows

In questo periodo in cui ho lavorato molto con le copie locali dei due blog, il vecchio con SPB ed il nuovo su Wordpress, una delle cose che mi è tornata davvero utile sono i link simbolici o giunzioni (junction) che sono supportati su piattaforme Windows a patto che si stia usando una partizione con file system NTFS (quindi no Windows 98 e compagnia).

La situazione è la seguente: spesso e volentieri ci si trova ad aprire file situati in posizioni assurde, navigando fra le cartelle sono necessari una trentina di click prima di arrivarci e l’operazione la si deve ripetere più e più volte. Beh ci sono molti rimedi a questo problema, uno di questi è impostare una junction assegnando al la carrtella un percorso “umanamente accessibile :-)

Ma vediamo l’esempio pratico. Io mi ero trovato a dover lavorare con dei file che risiedevano in queste due cartelle:

C:\Programmi\Xampp\htdocs\Blog\
C:\Programmi\Xampp\htdocs\wordpress

senza contare che molte volte i file con cui operare erano situati in delle sottocartelle di questi percorsi, ad esempio:

C:\Programmi\Xampp\htdocs\wordpress\wp-content\themes\k2\styles

con la difficoltà di dover accedere di volta in volta a queste cartelle. Lo so che è possibile configurare Apache in modo da usare una qualunque cartella come localhost, e difatti su Windows 98 applicavo questa strategia, ma con una partizione NTFS esiste un metodo più semplice e cioè quello di creare un riferimento virtuale alla cartella utilizzando il comando junction, da riga di comando:

junction C:\localhost C:\Programmi\Xampp\htdocs\
junction C:\k2 C:\Programmi\Xampp\htdocs\wordpress\wp-content\themes\k2

e da questo momento in poi sarà lo stesso scrivere C:\Programmi\Xampp\htdocs oppure C:\localhost. La cosa importante è che questa associazione varrà finchè formattazione non vi separi o la rimuoviate mediante il comando junction stesso (vedere l’help in linea). Si potrebbe usare anche il comando SUBST per associare ad un percorso una lettera di drive, ma oltre ad essere una scelta meno efficace (le lettere sono limitate ed è più difficile memorizzare la loro associazione con le cartelle), richiede che sia eseguito ogni volta che si riavvia il PC (autoexec.bat is deprecated in Windows XP :-P).

La cosa potrebbe tornar utile anche a coloro che non hanno avuto l’accortezza di creare i profili di Firefox e Thunderbird in una seconda partizione (o ancora meglio spostare l’intera %appdata%), il profilo è solitamente allocato in una sottocartella di livello sette quindi associarlo ad un percorso C:\Profiloff non è affatto una cattiva idea quando si lavora con i file di configurazione :-).

Consultando Google, sembra che nonostante Windows XP supporti i link simbolici, non esista all’interno del pacchetto base uno strumento per la loro creazione/gestione e che il pacchetto aggiuntivo minimale che si deve installare per poterli usare sia di svariati MB, con l’aggiunta di componenti che possono anche non servire affatto. Fu così che Mark Russinovich creò un piccolo applicativo di qualche Kb per poter gestire i link simbolici su XP :-)., ora la sua azienda (SysInternal) software è parte integrante della Microsoft che l’ha acquisita circa un anno e mezzo fa. il download è gratuito ed in fase di primo avvio vi verrà richiesto di accettare la licenza, nei futuri usi non verrà più mostrato il fastidioso popup.

Il file junction.exe per poter essere usato a prescindere dalla posizione in cui ci si trova, è meglio sia messo in una cartella facente parte del PATH di sistema, ad esempio C:\Windows andrà bene.

Download: Junction

Technorati Tags: , ,

Usare Sed per recuperare le email "invisibili" in Thunderbird

Vediamo come si può usare una piccola utility da prompt dei comandi per recuperare le email cancellate per sbaglio da Mozilla thunderbird. Prendetelo come un semplice esercizio per imparare le regex o per imparare ad utilizzare sed. Per recuperare le email cancellate meglio usare un piccolo programmino che si chiama: Thunderbird Reset Status. Al momento Thunderbird Reset Status recupera le email ma perde eventuali marcature da parte dell’utente o stati di avvenuta risposta al messaggio, anche se Paolo Kaosmos, sviluppatore di moltissime utili estensioni per Firefox e Thunderbird nonchè moderatore sul forum di MozillaItalia, sta cercando di modificare il codice del programma per fare in modo che queste informazioni non vengano perse. Se siete interessati leggetevi questa discussione.

Prima di tutto bisogna spiegare cosa avviene quando un messaggio viene cancellato. Thunderbird in realtà non cancella il messaggio ma aumenta di otto unità il valore del parametro X-Mozilla-Status. Il messaggio, pur rimanendo nell’archivio, non verrà visualizzato da Thunderbird; per eliminare il messaggio dall’archivio è necessario compattare le cartelle. Dopo questa operazione il messaggio verrà definitivamente cancellato e non sarà più possibile recuperarlo. Se non si ha ancora compattato la cartella è quindi possibile recuperare le email “invisibili” diminuendo di otto unità il valore di X-Mozilla-Status.

In breve:

  • se il messaggio è stato letto l’ultima cifra di X-Mozilla-Status aumenta di uno;
  • se è stato risposto al messaggio,l’ultima cifra di X-Mozilla-Status aumenta di due;
  • se il messaggio viene marcato dall’utente, l’ultima cifra di X-Mozilla-Status viene aumentata di quattro unità;
  • se il messaggio viene cancellato l’ultima cifra di X-Mozilla-Status viene aumentata di otto.

Questo in sintesi, una spiegazione più accurata sui valori assunti da X-Mozilla-Status la trovate sul blog di pseudotecnico (link alla fine).

Ciò premesso, si può facilmente dedurre che tutti i messaggi cancellati hanno l’ultima cifra compresa fra 8 e F (valore esadecimale di 15=0001+0002+0004+0008).

E’ quindi sufficiente usare un editor di testo, modificare manualmente il valore di X-Mozilla-Status per recuperare le email cancellate. Naturalmente la cosa diventa abbastanza tediosa se le mail sono tante, senza togliere che gli editor di testo potrebbero avere problemi con file molto grossi. Bene, esiste un modo molto semplice per eseguire modifiche ad un file di testo senza editarlo, ed è utilizzare un editor di flusso come sed.

Bene, questo è il comando perrecuperare tutte le vostre email:

sed -e "/^X-Mozilla-Status:.*[89abcdef]$/{s/8$/0/;s/9$/1/;s/a$/2/;s/b$/3/;s/c$/4/;s/d$/5/;s/e$/6/;s/f$/7/}” prova. > prova2.

Su Linux probabilmente l’uso dell’apice singolo è preferibile rispetto all’uso dei doppi apici, su Windows l’uso dei doppi apici si rende necessario perché altrimenti viene ignorato il carattere ‘^’ che indica l’inizio della riga (in effetti è molto improbabile ci sia un matching da qualche altra parte ma giusto per essere precisi :-))

Riga che dovete copiare nel prompt dei comandi, dove naturalmente al posto di “prova.”, dovrete inserire il nome dell’archivio di posta che contiene le email da recuperare (ad esempio “inbox.” per la cartella “Posta in arrivo”) e al posto di “prova2.” il nome dell’archivio in cui verranno salvate le email recuperate. Ovviamente il comando va dato dalla cartella in cui si trovano gli archivi di posta (di solito: Profilo/Mail/Local Folders) e facendo attenzione ad aggiungere la cartella di “sed.exe” al PATH di sistema. Se è arabo chiedetelo nei commenti : Alla fine ho inserito il link ad un vecchio post che vi permette di attivare il copia/incolla nel prompt dei comandi, nonchè attivare l’autocompletamento, in modo da non metterci una vita intera :-P.

ATTENZIONE: se non siete esperti, lasciate perdere questo post, ignoratelo tranquillamente e passate oltre che altrimenti poi se perdete le vostre email ve la prendete con me :-P.

Cerchiamo di capire cosa fa. Prima guardiamo il comando nella sua interezza e poi vedremo di spiegare il significato di quello che c’è dentro agli apici:

sed -e "/regex/comandi" prova. > prova2.

viene tradotto così: leggi il flusso proveniente dal file “prova.” e applicagli lo script racchiuso fra i doppi apici (significato dell’opzione -e), quindi scrivi il flusso processato nel file “prova2.”. E ora vediamo il significato di ciò che è racchiuso fra apici.. Ci sono due parti, la prima è una regex (espressione regolare) e la seconda una sequenza di comandi separati dal ‘;’. Traducendo, sed legge il flusso riga per riga, quando incontra una riga che soddisfa la regex la processa applicando i relativi comandi. La regex viene racchiusa (sempre fra ‘/’. Per chi non lo sapesse, ecco il significato di alcuni caratteri usati nella regex:

  • ^ indica l’inizio riga;
  • $ indica la fine della riga;
  • . un qualunque carattere;
  • * una qualunque ripetizione del carattere, .* è qualsiasi cos
  • [xyz] il carattere può essere uno fra quelli indicati fra parentesi quadre, nel nostro caso le cifre (esadecimali): 8,9,a,b,c,d,e,f.

Detto questo:

/^/X-Mozilla-Status:.*[89abcdef]$/

significa: applica i comandi solo alle righe che iniziano con ‘X-Mozilla-Status:’ e che finiscono con uno dei caratteri racchiusi fra parentesi quadre, a queste vengono dunque applicate una serie di sostituzioni mediante il comando ‘[b]s/ / /[/b]‘:

s/8$/0/;s/9$/1/;s/a$/2/;s/b$/3/;s/c$/4/;s/d$/5/;s/e$/6/;s/f$/7/

La sostituzione avviene (si veda l’uso del ‘$’ solo se il carattere si trova a fine riga. Si noti che se non si usasse questa accortezza, X-Mozilla-Status diventerebbe X-Mozillb-Stbtus e tutto andrebbe a farsi benedire.

Bene, un po’ contorto ma spero si capisca :-). Se volete “vedere i messaggi che si vanno a recuperare con questo metodo, provate con:

sed -n -e "/^X-Mozilla-Status:.*[89abcdef]$/,/^From/p” pinbox.  | more

in questo caso non specificando una periferica di output verrà visualizzato tutto a schermo :-). Naturalmente usare [strong]grep[/strong] è molto più sensato :-).

Download:
Sed e Grep per Windows li trovate a questo indirizzo, potete scaricarli singolarmente o via getGnuWin32 che vi scaricherà un sacco di altri utili applicazioni da linea di comando. Chi usa Cygwin non serve faccia nulla perchè vengono installate di default.

Thunderbird Reset Status lo potete scaricare da se siete utenti Windows e da ] se state usando Linux.

Link di approfondimento:
Documentazione Sed (la seconda parte dell’articolo è la più interessante delle tre),
Spiegazione dei valori assunti dall’X-Mozilla-Status,
Grep, cose utili da sapere,
Abilitare il copia/incolla e l’autocompletamento nel prompt dei comandi (Windows).

Technorati Tags: , , ,

Nascondere un file in una immagine

Vediamo come si può “nascondere un file all’interno di un’immagine, la cosa potrebbe tornare utile ad esempio per inviare file non permessi dal server SMTP.

In questo tutorial viene spiegato come eseguire l’operazione con Winrar, che però non è un software gratuito quindi ho deciso di rifare la procedura usando 7-Zip:

Logo di 7-Zip
Una volta scaricato ed installato 7-zip, isogna innanzitutto comprimere il file da nascondere in un archivio e quindi unirlo all’immagine prescelta. La procedura è molto più rapida se eseguita da prompt dei comandi, quindi premere Windows-R e digitare cmd e dare invio.

Dal prompt dei comandi per comprimere il file con 7-zip digitare:
7z a -t7z file.7z file_da_comprimere.exe
(naturalmente bisogna assicurarsi di essere nella cartella in cui si trova il file 7z.exe o eventualmente settare il giusto PATH)
Per unire il file compresso all’immagine, dare il comando:
copy /b immagine.png + file.7z output.png
(è importante che l’immagine venga messa prima del file compresso)

Prompt dei comandi

Ora se aprite normalmente il file output.png esso verrà aperto con un visualizzatore di immagini, se invece decidete di aprirlo con 7-Zip (o altro software per la gestione degli archivi compressi) esso mostrerà il file che abbiamo aggiunto. Ad esempio:
7zFM output.png

Bene, per fare prima potete usare un piccolo file BAT che io ho chiamato mfii (merge file in image) e che va usato nel seguente modo:
mfii file_da unire immagine
tenendo ben presente le seguenti cose:

  • se il percorso del file contiene spazi bisogna quotare con le virgolette;
  • l’immagine va sempre inserita come secondo parametro del comando;
  • se avete installato 7-zip in una cartella diversa da “C:\Programmi\7-zip” dovete modificare il file BAT inserendo il giusto percorso.

Il codice è il seguente:

@echo off
::  Se si è  installato 7-zip in una cartella diversa modificare il percorso con il  giusto PATH
PATH=%PATH%;C:\Programmi\7-zip;;
:: Imposta i tipi di file permessi per il file immagine
SET FILETYPE=.jpg .png .gif
:: Se non sono stati inseriti i parametri necessari lo script restituisce un errore
IF (%1)==() GOTO ERRORE3
IF (%2)==() GOTO ERRORE3
:: Verifica l'esistenza dei due file in input, se non esistono ritorna un ERRORE
IF NOT EXIST %1 GOTO  ERRORE1
IF NOT EXIST %2 GOTO ERRORE2
:: Estrae il nome del file di output che deriverà il suo nome dal file da aggiungere all'immagine
for %%F in (%1) do   SET IMGNAME=%%~nF
:: deriva l'estensione del file di output che coincide con l'estensione dell'immagine utilizzata
for %%F in (%2) do   SET IMGEXT=%%~xF
:: Verifica che il secondo file sia un'immagine altrimenti interrompe lo script
SET ISIMAGE=0
for %%F in (%FILETYPE%) do  IF (%%F)==(%IMGEXT%) SET ISIMAGE=1
IF (%ISIMAGE%)==(0) GOTO ERRORE4
:: Crea il file  archivio da aggiungere poi all'immagine, se il percorso di 7z.exe non è corretto verrà restituito un errore
7z  a -t7z temp.7z %1
:: unisce il file compresso all'immagine e dà il file di output
copy /b  %2 + temp.7z %IMGNAME%%IMGEXT%
:: Cancello il file temporaneo temp.7z
del temp.7z
:: Termina lo script non avendo incontrato nessun errore
echo Il file %IMGNAME%%IMGEXT%   è stato creato con successo
GOTO END
:ERRORE1
:: Se il primo file non esiste viene restituito un errore
echo il file %1  non esiste, accertarsi di aver digitato  correttamente il nome del file
GOTO END

:ERRORE2
:: Se il secondo file non esiste viene restituito un errore
echo il file %2 non esiste
GOTO END
:ERRORE3
echo  devi  inserire almeno due parametri
GOTO END

:ERRORE4
echo il secondo file in input deve essere un'immagine
GOTO END

:END

]]>

UPDATE: seguendo i suggerimenti di chi ha commentato ho creato uno script VBS che permette di “nascondere” un file in un’immagine dal menu contestuale di Explorer, questo è il link al nuovo post.