This Time Self-Hosted
dark mode light mode Search

La Settimana Enigmistica Digitale e la loro nuova app

This is the first post in Italian on this blog in over ten years, mostly because it only really applies to readers who would be understanding Italian in the first place. Please see the summary on Mastodon, if you’re curious.

Sono praticamente cresciuto con La Settimana Enigmistica. Non riesco ad immaginare nessuno, in Italia, che non conosca almeno di nome questa rivista, che viene pubblicata da quasi un secolo, ininterrottamente. Quand’ero bambino, mia madre compilava le parole crociate ogni settimana, lasciandomi i giochi più semplici, come La Pista Cifrata, Che Cosa Apparirà? e Aguzzate La Vista — e man mano che sono cresciuto, mi ha insegnato a risolvere le parole crociate, semplici, crittografate e senza schema.

Purtroppo, perché la vita va come viene a volte, mentre da bambino sia La Settimana che Topolino erano dei punti di riferimento settimanali, col tempo sono diventati molto meno regolari. Con l’eccezione dei mesi passati in ospedale, dove almeno avevo a disposizione un’edicola e tanto tempo da perdere. Ma è stato solo quando me ne sono andato dall’Italia che mi sono reso conto quanto mi mancasse La Settimana.

Non è un caso che non abbia più scritto praticamente nulla in italiano da quando me ne sono andato — per quanto fossi sempre stato un bravo studente di grammatica, non sono mai stato portato nello scrivere temi in classe, o in generale nella scrittura creative italiana. Ma in aggiunta a tutto questo, scrivere in italiano è difficile da quando passo praticamente tutto il tempo a pensare e scrivere in inglese. Per dare un esempio, solo dopo aver scritto quasi tutto questo paragrafo mi sono reso conto di andare a togliere la maiuscola da italiano e inglese — vanno maiuscoli in inglese.

La Settimana Enigmistica, e in particolare, ma non solamente, le Parole Crociate, sono un’ottima ginnastica mentale per mantenere almeno un minimo di connessione con la lingua, e con il Paese. Per fare un esempio, ho scoperto che 3 Italia e Wind si fossero fuse… in una delle domende dell’Edipeo enciclopedico!

Ma come ho fatto a leggere la Settimana da Dublino (prima) e Londra (poi)? O per i molti mesi che sono stato in viaggio negli Stati Uniti, Cina, o altrove? Beh, nove anni fa, fu lanciata La Settimana Enigmistica Digitale — una versione completa della Settimana Enigmistica disponibile su tablet, sia iOS che Android. Ovviamente mi ci sono fiondato subito — eventualmente comprando un tablet Samsung con S-pen principalmente per questo motivo!

Negli scorsi nove anni, ho comprato (tra abbonamenti e numeri sfusi) 224 numeri della Settimana digitale. Non li ho sfogliati o risolti tutti, principalmente per motivi di tempo. Ma quando ho avuto tempo, modo, ed energie, sono stati un’ancora verso le mie origini, la mia “coperta di Linus” se vogliamo dirla così. L’applicazione non ha sempre funzionato molto bene a vederla bene, e non ha mai sfruttato le capacità moderne di dispositivi con il supporto per penne EMR per disattivare il touchscreen quando si usa la penna, ma almeno dal mio punto di vista non è stata una pessima scelta.

Purtroppo la rivista ha deciso di abbandonare questa applicazione in favore ad una nuova:

Caro lettore,martedì 9 maggio verrà rilasciata una nuova applicazione, in sostituzione di quella attuale. La nuova App sarà scaricabile dagli store e sarà supportata da dispositivi tablet con sistema operativo iOS 14 e Android 7 o versioni successive.

A causa di questo cambio di piattaforma, per facilitare il passaggio alla nuova App, a partire dal 03/05/2023 verrà inibita la possibilità di sottoscrivere abbonamenti nella vecchia versione.

Al rilascio della nuova applicazione, gli abbonamenti attivi già sottoscritti verranno trasferiti in modo da continuare la fruizione del servizio sulla nuova App. Le riviste verranno pubblicate anche sull’applicazione attuale fino al numero del 8/06/2023 e saranno giocabili fino al 10/07/2023, data in cui essa verrà dismessa definitivamente.

La Settimana Enigmistica — 26 Aprile 2023

Con poco più di una settimana di anticipo dal lancio della nuova versione, La Settimana Enigmistica ha deciso di dare una grossa scrollata di spalle ai lettori di lunga data. Giusto per essere chiari, ho chiesto conferma se fosse previsto che la nuova applicazione avesse a disposizione i precedenti numeri:

Buongiorno,

nella nuova applicazione i possessori di un abbonamento attivo avranno accesso anche ai numeri vecchi compresi nel loro abbonamento.
Saranno però presenti solo i numeri pubblicati negli ultimi 12 mesi, per cui i numeri precedenti al maggio 2022 non saranno sicuramente disponibili.

Ci scusiamo per il disagio, purtroppo l’avanzamento tecnologico ci ha imposto un aggiornamento della piattaforma.

La Settimana Enigmistica — 28 Aprile 2023

Ora, l’ultimo numero che ho acquistato nell’applicazione precedente risale a Febbraio 2022 (non ho comprato numeri recentemente perché onestamente ho accumulato tantissimi numeri che non ho completato) in che significa che, dopo luglio, la vecchia applicazione sarà rimossa e non avrò più modo di completare questi numeri. Ho continuato la conversazione con il supporto, chiedendo se avessero l’intenzione di permettere a chi ha comprato i numeri in precedenza di accedere ai PDF usati dall’app, ma ho ricevuto una risposta negativa, e nessuna offerta per risolvere la questione.

Ora, è verissimo che, da sviluppatore di Software Libero incluso VLC, comprendo benissimo il problema che “l’acqusito” di contenuti digitali provvisti di DRM non sia mai al sicuro, ma non ho mai visto nessun fornitore di servizi digitali suggerire ai propri lettori, con poco più di qualche mese a disposizione, di buttar via fino a nove anni di contenuti. Non stiamo parlando di un film o due o di qualche videogioco — chi si è abbonato al lancio e ha continuato a ricevere numeri finora, andrà a perdere oltre €600 in contenuti!

In tutto questo, temo che la Settimana Enigmistica abbia fatto un errore di fondo, però. Il DRM non è mai uno strumento assoluto, e poiché invece di inventare un nuovo formato per distribuire la rivista digitale, la vecchia applicazione sfruttava dei PDF perfettamente standard, l’unica difficoltà nel poterli utilizzare è la necessità di trovare la password che ognuno di questi possiede — e visto che mi hanno infranto il cuore, mi sono impegnato (neanche tanto) e ho trovato il modo di recuperare tali passwords.

Non pubblicherò il codice per ritrovare le password fino a Luglio! Inizialmente avrei voluto pubblicarlo oggi, ma ho un certo timore per il fatto che, sia in UK dove abito che in Italia dove La Settimana ha sede, la circonvenzione dei DRM anche per copia privata è illegale. In Italia, tecnicamente, è possibile farne una copia analogica, ma non credo sia di nessun interesse andare a stampare La Settimana digitale.

La mia speranza è che La Settimana veda quanto disruttiva sia la loro idea, e decida di caricare tutti i numeri precedenti sulla nuova applicazione — nel qual caso non avrò motivo di pubblicare il codice necessario. Tecnicamente, sono andato a violare le condizioni generali d’uso della vecchia applicazione. Allo stesso tempo, nulla nelle condizioni di vendita fornite da La Settimana Enigmistica Digitale suggerisce la loro capacità di distruggere i miei acquisti senza fornire un rimborso.

Nel frattempo se avete comprato numeri sulla vecchia applicazione vi consiglio di scaricarli tutti, e di fare una copia dei dati presenti. In particolare, su Android, vi servirà l’intera cartella Android/data/com.atono.lasedigitale/files/lase_digitale/Issues (tecnicamente escludendo le anteprime, ma vi consiglio di prendere l’intera cartella). Non so se o come sia possibile fare altrettanto su iOS — e non so se i PDF usati su iOS siano gli stessi usati su Android.

Come, tecnicamente, ci sono riuscito

Anche se aspetterò di pubblicare il codice nel momento in cui l’applicazione smetterà di funzionare (sempre che La Settimana Enigmistica non senta ragioni per cambiare idea), posso almeno fornire una breve descrizione.

L’applicazione Android (e immagino pure la versione iOS) scarica dei semplici file PDF per ogni numero acquistato, in aggiunta ad un file chiamato issue.json (che non è, a prima vista, un file JSON) e ad una quantità di anteprime a bassa risoluzione. Purtroppo tali PDF sono protetti da password quindi non sono direttamente apribili da un lettore PDF qualsiasi — al contrario delle restrizioni su duplicazione e stampa, che sono implementate “a parola d’onore”, i file PDF protetti da password sono cifrati.

Prima ancora di avere un modo di recuperare la password, ho scaricato tutti i numeri che ho comprato negli anni e fatto una copia dell’intera cartella Issues dal mio tablet — nel dubbio, in qualche modo le password potrebbero essere spuntate fuori. Come primo tentativo, ho lasciato il mio PC provare a trovare la password di forza bruta per una notte, senza risultati — come farò vedere fra poco, questa missione sarebbe stata completamente impossibile.

Il giorno dopo, in preda a… non disperazione, ma sicuramente noia, mi sono lamentato su Mastodon della situazione, e il mio amico ed ex-collega Pierre mi ha ricordato di fare una copia dell’applicazione stessa, nel caso in cui fosse più semplice riversare l’implementazione.

Presa la copia dell’applicazione, che non pare essere stata aggiornata dal 2011, c’ho dato un’occhiata veloce — pur sapendo che Android non è il mio forte, e non avendo mai provato a fare reverse engineering di Java in vita mia. Ma appena ho estratto il file APK (è solo un file ZIP con una struttura specifica), mi sono accorto di una cosa abbastanza banale: l’applicazione usa MuPDF.

MuPDF è un’applicazione, e una libreria, al momento sviluppata da Artifex (gli stessi di GhostScript) che permette di includere PDF direttamente in un’applicazione. In particolare, la vecchia applicazione della Settimana Digitale, usa un’estensione JNI per chiamare MuPDF dal codice Java dell’applicazione Android. Questo significa che anziché avere un’implementazione oscura (od oscurata) per decifrare i PDF, l’applicazione deve semplicemente chiamare la funzione authenticatePassword. Anche senza il minimo di esperienza in Java, trovare dove il codice chiama questa funzione dovrebbe essere banale.

Tra l’inizio del mio thread su Mastodon e avere il PDF aperto su Microsoft Edge (conoscendone quindi la password) mi ci sono volute circa cinque ore — di queste ne ho buttate un paio per tentare di far funzionare Flatpak su WSL/Ubuntu (non ha funzionato), ed eventualmente per installare Fedora Workstation su una macchina virtuale (dove Flatpak ha funzionato e Jadx mi ha permesso di aprire il codice molto semplicemente), e un’altra ora persa per via di un refuso che continuava a darmi la risposta sbagliata.

Quando pubblicherò il codice sarà abbastanza ovvio, ma per il momento vi basti sapere che non avrei mai potuto recuperare la password per forza bruta: si tratta di una password con lettere (minuscole e maiuscole), numeri, e simboli, per un totale di 28 caratteri! Secondo Hive Systems, servirebbero oltre ventiseimila miliardi di anni per ritrovare la password!

In realtà, già dal codice è possibile restringere lo spazio di ricerca: la parte centrale della password è fomata da 12 caratteri costanti che includono simboli — mentre i restanti 16 sono presi dall’alfabeto base64 (che, con l’eccezione dell’ultimo carattere, comprende 63 simboli.) Questo significa che, anche conoscendo la parte costante, ogni numero è richiederebbe selezionare la password corretta tra 225787570473400320: CR(63, 15)×64.

Un quarto di milioni di bilioni. Volendo generare una lista di queste possibili password, assumendo 29 bytes per password, avremmo bisogno di oltre 5.6EiB (Exibibyte). Come confronto, i primi 100 trilioni di cifre di π occupano “solamente” 82 Terabyte.

Una volta conosciuta la password, qpdf permette di decifrare i file preservando tutti gli attributi e contenuti.

Cosa si fa ora?

Prima di tutto effettuate una copia di backup dei numeri che avete acquistato! Come ho detto, assicuratevi di copiare l’intera cartella Issues (che in questo caso, se non masticate l’inglese, significa numeri, della rivista, non problemi).

Poi vi consiglierei di mandare una mail alla Settimana, per chiedergli spiegazioni, e per fargli comprendere quanto non sia una bella cosa distruggere gli acquisti di nove anni dei propri lettori. Sarebbe molto più semplice se gli sviluppatori e l’editore cambiassero idea e preservassero gli acquisti nella nuova applicazione.

Io nel frattempo ripulirò per bene il codice per il programma che recupera queste password così che non sia utilizzabile solo da me. Se nulla sarà cambiato, nel momento in cui la vecchia applicazione sarà rimossa o smetterà di funzionare, lo pubblicherò, cosi tutti gli altri lettori potranno recuperare gli acquisti perduti.

E ovviamente, tornerò a risolvere le Parole Crociate dei numeri che già possiedo e non ho completato — eccetto lo farò sul mio ReMarkable 2, anziché con la loro app. È anche più realistico!

Foto di un tablet eInk ReMarkable 2 che mostra la copertina del numero 4307 de La Settimana Enigmistica.

Aggiornamento 2023-08-11: dopo aver scritto questo post, mi è giunta voce che La Settimana Enigmistica avesse cambiato idea, e avrebbe ripristinato gli acquisti dagli anni precedenti su richiesta. Se vi trovaste in questa situazione, contattate servizioclienti(at)lasettimanaenigmistica.com — se rifiutassero di ripristinare gli acquisti, fatemelo sapere (con un commento o una mail a me direttamente) e rilascerò il codice come promesso.

Comments 3
  1. Ciao, ho trovato il tuo blog cercando proprio qualcuno che parlasse di questa situazione.
    Ho fatto un backup della mia cartella PDF e ho tentato di risalire alla password leggendo il tuo racconto, ma senza successo… Visto che l’app è stata effettivamente dismessa, puoi condividere con me -e con tutti gli altri- il codice? (o direttamente la password…) Grazie mille!!

    1. Da quello che mi era stato riferito, La Settimana aveva deciso di caricare le annate precedenti, ma di fornirle solo su richiesta.

      Se hai modo di scrivere a servizioclienti(at)lasettimanaenigmistica.com e di chiedere il ripristino degli acqusiti precedenti, fammi sapere il risultato.
      Se ti rispondono che non lo possono fare / non vogliono farlo, allora aprirò il repository con il codice come promesso!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.