In breve
Questo testo sembra la seconda parte della lezione 8: ripete la stessa nota iniziale sulle lezioni Windows e riprende temi che la parte precedente rimandava a dopo. Tratta le protezioni «algebriche» dei programmi Windows, cioè i codici di registrazione che devono rispettare un formato o derivare dal nome dell'utente, e include un esempio su un programma di catalogazione.
La seconda metà esce dal tema tecnico con consigli sulle fonti di informazione. Non riporto le sequenze per trovare o ricostruire codici di registrazione, i numeri di esempio che il testo fornisce per un programma, né le righe di configurazione che il testo suggerisce per registrare un altro programma senza acquisto. La pagina spiega i meccanismi e le debolezze di progetto.
1. Le premesse e le promesse
L'autore apre con un giudizio sprezzante su Windows 3.1 e Windows 95, che definisce un sistema «né a 16 né a 32 bit», quasi «a 24 bit». Annuncia anche un futuro «Addendum» dedicato a ogni programma Microsoft esistente. Sono opinioni e promesse del testo: non ho elementi per dire se l'Addendum sia mai stato scritto.
Consiglia poi un debugger per Windows e dice di usare una copia diffusa senza autorizzazione, aggiungendo di non chiedere copie pirata. Il fatto che un programma circoli in rete non lo rende lecito. Sul piano tecnico, il testo suggerisce di configurare il debugger per mostrare i numeri in esadecimale, tenere due finestre di osservazione su coppie di registri e allungare il buffer di traccia: sono impostazioni di comodo, utili per leggere memoria e puntatori a stringhe.
2. Le protezioni «algebriche»
Il testo chiama così i codici di registrazione che seguono una regola matematica o di formato. Ne distingue due livelli:
- Formato fisso. Il codice deve avere una lunghezza, un trattino o un segno in una certa posizione, oppure un prefisso noto. L'esempio citato è un programma di compressione il cui codice contiene una sequenza fissa nei primi otto caratteri.
- Legame con il nome. Ogni nome produce un codice diverso, calcolato con una trasformazione dei caratteri. Il testo lo definisce lo schema più diffuso.
Per un autore di software è una soluzione economica: non richiede un server né un database. È anche una soluzione fragile, perché le regole stanno nel programma distribuito. Chi può osservare il programma mentre confronta il codice digitato con quello atteso ha già tutti gli elementi per capire la regola.
Il metodo descritto
L'autore elenca una procedura in più passi che parte dalla finestra di inserimento, individua dove arrivano il nome e il codice digitato in memoria e osserva il codice che li elabora. Non la riporto in forma di istruzioni. Il principio è quello già visto nelle lezioni precedenti: il programma deve leggere ciò che l'utente scrive, quindi la lettura del testo e le copie in memoria rivelano dove avviene il controllo.
3. Il controllo del trattino e il «punto d'ingresso»
Il testo mostra un frammento di un programma per catturare lo schermo: il codice verifica se un carattere è un trattino o un più. L'autore osserva che confronti con questi due valori compaiono nelle routine che controllano il formato di un codice. Ne deduce che cercare tali confronti dentro l'eseguibile porta spesso nel mezzo dello schema di protezione, e dice che funziona «quattro volte su cinque».
Il ragionamento è semplice e istruttivo per chi sviluppa: le costanti usate da un controllo, come un carattere atteso, sono segni visibili del suo scopo. Una protezione non diventa più forte perché il suo codice si trova nel mezzo di un modulo grande. La percentuale citata, però, è una stima dell'autore senza campione dichiarato.
Il testo riconosce che trovare il controllo non basta a superarlo, perché ogni programma applica una trasformazione diversa. Per questo rinvia a un esempio concreto più avanti.
4. Dove tengono lo stato i programmi Windows
Un'altra osservazione riguarda dove si conservano registrazione e conteggio dei giorni: spesso in file di configurazione nella cartella di Windows, a volte nel file di configurazione generale del sistema. Il testo cita un programma di compressione molto diffuso, per il quale i dati di registrazione sarebbero righe in una sezione di quel file. Non riporto il formato né i campi.
Il commento più interessante riguarda le versioni dimostrative. Secondo l'autore, quasi tutte sono programmi completi «azzoppati», non versioni davvero ridotte, perché preparare una vera versione ridotta è costoso. Se così fosse, chi riceve una copia di prova avrebbe già tutto il codice. L'affermazione è plausibile come tendenza, ma non è un fatto generale: dipende dal prodotto e non l'ho verificata. Per chi vende software è un buon motivo per consegnare funzioni davvero diverse, o servizi lato server, nella versione di prova.
Il testo trae da qui un invito a non credere ai file di istruzioni e alle spiegazioni dei venditori sul fatto che occorra una copia nuova dopo il pagamento. Una copia di prova può essere tecnicamente completa, ma questo non dà il diritto di usarla senza registrarla quando la licenza lo richiede.
5. Una lunga digressione su come informarsi
Il blocco centrale non riguarda i programmi. L'autore consiglia di non credere a televisione e giornali, di usare motori di ricerca e programmi che raccolgono pagine in rete, di leggere alcuni quotidiani e mensili europei e di studiare semiotica e retorica. Propone anche una regola: se tutti i media dicono che un gruppo è malvagio, bisognerebbe credere il contrario.
Si può separare ciò che è utile da ciò che è fragile:
| Idea del testo | Valutazione |
|---|---|
| Imparare a cercare bene e scartare molto materiale inutile | Utile. La valutazione delle fonti è una competenza reale. |
| Confrontare più testate, anche con orientamenti diversi | Ragionevole, purché si controllino date, autori e fatti. |
| Studiare retorica per riconoscere figure e tecniche persuasive | Utile, come strumento di lettura critica. |
| «Credere il contrario» di ciò che dicono tutti i media | Debole. Se tutti dicono una cosa, non ne segue che sia falsa; il metodo sostituisce un pregiudizio con il suo opposto. L'autore stesso ammette che la regola è «puerile». |
| «Non c'è mai informazione vera, solo propaganda» | Un'affermazione assoluta, non dimostrata. |
Le valutazioni sui singoli giornali e su conflitti internazionali sono giudizi dell'autore. Non le verifico e non le adotto. Per una lettura critica più solida servono confronti tra fonti indipendenti, documenti primari e controllo delle date; una ricerca su questo tema ha mostrato che la «lettura laterale» è una competenza didattica riconosciuta.
6. L'esempio del programma di catalogazione
Il caso finale è un programma per catalogare file di CD-ROM, versione 3.4, del 1994. La registrazione richiede nome utente e numero. Il numero dipende dal nome: è lo schema che l'autore considera il più diffuso.
Che cosa fa il programma
- Calcola la lunghezza del nome.
- Lo trasforma in maiuscole, con un ciclo che riconosce le lettere minuscole e sottrae la differenza fissa tra i due insiemi.
- Elimina gli spazi.
- Copia nome e numero in altre aree di memoria e ne controlla le lunghezze.
- Rifiuta nomi più corti di sei caratteri.
- Esegue poi una serie di operazioni sui dati prima del controllo finale.
La normalizzazione in maiuscole è definita dall'autore «lucidatura» o «luce verde»: non è il controllo vero, ma una preparazione che concede piccole irregolarità all'utente legittimo, come spazi in più, differenze tra maiuscole e minuscole o accenti. Il testo osserva che le routine di maiuscolizzazione indicano spesso un confronto di password vicino.
Gli indizi usati dal testo
L'autore invita a osservare i puntatori allo stack e le istruzioni che copiano stringhe. In molti programmi scritti in C, parametri e variabili locali si trovano nello stack; se un registro base punta lì durante una verifica, è un segnale che il programma sta manipolando dati rilevanti. Sostiene inoltre che nel 90% dei casi esiste da qualche parte una copia del codice corretto, un «eco», perché il programma deve avere qualcosa con cui confrontare. È un'affermazione empirica non verificata.
Il testo dice che per questo programma si possono registrare più nomi di seguito. È una caratteristica comoda per chi studia lo schema, perché permette di osservare più coppie nome/numero. Fornisce poi due coppie ottenute con propri nomi e le presenta come aiuto per capire la trasformazione. Non le riporto: sono codici di registrazione utilizzabili.
La posizione etica dell'autore
Dopo aver fornito quegli esempi, l'autore avverte: chi usa un nome diverso dal proprio è un «miserabile lamer», e chi usa elenchi di numeri seriali «ruba» invece di «crackare». Distingue così due comportamenti, ma entrambi riguardano un uso non autorizzato di software soggetto a licenza. La differenza che propone è di stile, non di legittimità. La pagina riporta la distinzione come posizione del testo e non la considera una giustificazione.
7. Che cosa distinguere
- Utile per progettare meglio: le regole fisse di formato e le trasformazioni del nome sono osservabili da chi esegue il programma; i confronti rivelano il punto del controllo; una versione di prova completa non protegge nulla.
- Opinioni: giudizi su Windows 95, giornali, politica e stampa.
- Dati non verificati: le percentuali di successo, la presenza di un «eco» nel 90% dei casi, l'esistenza dell'Addendum.
- Parti non riportate: la procedura passo passo, i dati di registrazione per due programmi e i codici d'esempio.
Il testo si chiude con l'ormai solito invito a scrivere via un indirizzo anonimo per ottenere le lezioni mancanti. Non posso verificare se fosse ancora attivo o sicuro.
8. Come progettare un controllo meno fragile
- Non affidare l'esito a un solo confronto locale.
- Usare chiavi firmate con crittografia a chiave pubblica, in modo che il programma possa verificare la firma senza contenere il segreto per crearla.
- Collegare funzioni importanti a un servizio esterno, quando il modello commerciale lo consente.
- Distinguere con chiarezza le funzioni della versione di prova e dichiararle all'utente.
Glossario
- Protezione algebrica
- Controllo di un codice di registrazione basato su regole di formato o su calcoli.
- Normalizzazione
- Preparazione di un testo a una forma standard, per esempio maiuscole e senza spazi.
- Stack
- Area di memoria per parametri, variabili locali e indirizzi di ritorno.
- Versione azzoppata
- Programma completo con alcune funzioni disattivate o limitate.
- Lettura laterale
- Controllare una fonte consultando altre fonti indipendenti.
Fonti e verifiche
Il testo è stato incollato dall'utente e non risulta allegato. Per la parte sull'informazione ho consultato un modulo didattico sulla lettura laterale. Non ho eseguito programmi, né provato registrazioni o modifiche. Anche in questo caso manca la parte 3 della lezione 8.