Aldo, sono contento che tu abbia aggirato l'ostacolo (codici scaricati in attesa di esame).
Vorrei comunque continuare sull'argomento in domanda, modificare/salvare i dati in un eseguibile, visto che il problema password è universale.
L'approcio che esporrò soddisfa i seguenti requisiti:
1) password/pin non facilmente identificabili nel sorgente anche se inutile visto che si cambiano poi
2) password/pin non identificabili nell'eseguibile se ispezionato
3) possibilità di cambio password/pin solo se si conosce quella contenuta nell'eseguibile
4) password/pin incasellate in un chiave
5) conoscendo la chiave si possono recuperare le password/pin
6) per l'uso non serve la chiave
Funzionamento:
Si sta creando un programma che abilita delle funzionalità attraverso l'inserimento di password/pin.
Le password/pin vengono incasellate a pettine in una
chiave nota solo al programmatore.
Non c'è bisogno di conoscere la chiave per l'utilizzo della app.
Questo il codice che simula il programma che sarà modificato (allegato anche progetto CODE::BLOCKS
1 Crea programma.cbp):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#define kVar1 "ApBaCsDsEwFoGrHd" // spiegazione in cercaInEseguibile
#define kVar2 "ApBaCsDsEwFAldo, sono contento che tu abbia aggirato l'ostacolo (codici scaricati in attesa di esame).
Vorrei comunque continuare sull'argomento in domanda, modificare/salvare i dati in un eseguibile, visto che il problema password è universale.
L'approcio che esporrò soddisfa i seguenti requisiti:
1) password/pin non facilmente identificabili nel sorgente anche se inutile visto che si cambiano poi
2) password/pin non identificabili nell'eseguibile se ispezionato
3) possibilità di cambio password/pin solo se si conosce quella contenuta nell'eseguibile
4) password/pin incasellate in un chiave
5) conoscendo la chiave si possono recuperare le password/pin
6) per l'uso non serve la chiave
Funzionamento:
Si sta creando un programma che abilita delle funzionalità attraverso l'inserimento di password/pin.
Le password/pin vengono incasellate a pettine in una chiave nota solo al programmatore.
Non c'è bisogno di conoscere la chiave per l'utilizzo della app.
Questo il codice che simula il programma che sarà modificato (allegato anche progetto CODE::BLOCKS 1 Crea programma.cbp):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#define kVar1 "ApBaCsDsEwFoGrHd" // spiegazione in cercaInEseguibile
#define kVar2 "ApBaCsDsEwF{parsed_message}G{parsed_message}H{parsed_message}" // spiegazione in cercaInEseguibile
int main() {
printf ("%s = ", kVar1);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar1[i]);
printf ("\n%s = ", kVar2);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar2[i]);
while( '\n'!=getchar() );
return 0;
}
Il programma dovrà contenere le password di default incasellate nella chiave, vedi sotto.
Il secondo programma (allegato anche progetto CODE::BLOCKS 2 CercaInEseguibile.cbp) serve solo per far inserire agli utenti le password/pin senza che ne restino traccia, perché sovrascritte nell'eseguibile.
Uso:
Dopo averlo compilato si lancia: CercaInEseguibile.exe che chiede la vecchia password e se la si conosce permette di modificare quelle contenute nell'eseguibile programma.exe (che deve esitere nel percorso voluto)
Logica:
Le password/pin sono incasellate nella chiave così:
I caratteri chiave del test sono: A B C D E F G H
la password deve essere incasellata a pettine: p a s s w o r d
risultato incasellato: ApBaCsDsEwFoGrHd
La chiave A B C D E F G H può essere complicata a piacere.
Il programma scansiona l'eseguibile alla ricerca del primo carattere della chiave, nell'esempio 'A', se lo incontra memorizza nella stringa passw1 il byte succesivo che potrebbe essere il primo carattere di una password, avanza ancora di un byte e se corrisponde al secondo carattere della chiave 'B', aggiunge alla stringa passw1 il byte succesivo che potrebbe essere il secondo carattere di una password se invece la 'B' non c'è si riparte con la ricerca di 'A'. la password è trovata solo se tutti i caratteri della chiave sono stati trovati in sequenza a step di due.
Mi scuso per la rozzezza del codice in C allegato, ammetto di conoscerlo in modo approssimato.
Per testare il funzionamento dei codici inclusi nell'allegato, compilare prima 1 Crea programma.c che crea programma.exe
poi compilare 2 CercaInEseguibile.c ed eseguire CercaInEseguibile.exe
Verrano mostrate le password/pin in chiaro ma memorizzate offuscate all'interno di programma.exe (solo per test)
Verrà richiesto l'inserimento di passw1 (ben nota visto che nel test è mostrata)
Se corretta si potranno inserire le nuove password/pin
Verrà richiesto di controllare l'esattezza di quanto inserito e se si conferma programma.exe viene modificato.
Ringrazio AldoBaldo per lo stimolo dato e per alcune righe di codice.
L'approcio può essere estremizzato a piacere, con spaziatura diversa, cifratura delle password o chiavi ecc ecc.GAldo, sono contento che tu abbia aggirato l'ostacolo (codici scaricati in attesa di esame).
Vorrei comunque continuare sull'argomento in domanda, modificare/salvare i dati in un eseguibile, visto che il problema password è universale.
L'approcio che esporrò soddisfa i seguenti requisiti:
1) password/pin non facilmente identificabili nel sorgente anche se inutile visto che si cambiano poi
2) password/pin non identificabili nell'eseguibile se ispezionato
3) possibilità di cambio password/pin solo se si conosce quella contenuta nell'eseguibile
4) password/pin incasellate in un chiave
5) conoscendo la chiave si possono recuperare le password/pin
6) per l'uso non serve la chiave
Funzionamento:
Si sta creando un programma che abilita delle funzionalità attraverso l'inserimento di password/pin.
Le password/pin vengono incasellate a pettine in una chiave nota solo al programmatore.
Non c'è bisogno di conoscere la chiave per l'utilizzo della app.
Questo il codice che simula il programma che sarà modificato (allegato anche progetto CODE::BLOCKS 1 Crea programma.cbp):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#define kVar1 "ApBaCsDsEwFoGrHd" // spiegazione in cercaInEseguibile
#define kVar2 "ApBaCsDsEwF{parsed_message}G{parsed_message}H{parsed_message}" // spiegazione in cercaInEseguibile
int main() {
printf ("%s = ", kVar1);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar1[i]);
printf ("\n%s = ", kVar2);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar2[i]);
while( '\n'!=getchar() );
return 0;
}
Il programma dovrà contenere le password di default incasellate nella chiave, vedi sotto.
Il secondo programma (allegato anche progetto CODE::BLOCKS 2 CercaInEseguibile.cbp) serve solo per far inserire agli utenti le password/pin senza che ne restino traccia, perché sovrascritte nell'eseguibile.
Uso:
Dopo averlo compilato si lancia: CercaInEseguibile.exe che chiede la vecchia password e se la si conosce permette di modificare quelle contenute nell'eseguibile programma.exe (che deve esitere nel percorso voluto)
Logica:
Le password/pin sono incasellate nella chiave così:
I caratteri chiave del test sono: A B C D E F G H
la password deve essere incasellata a pettine: p a s s w o r d
risultato incasellato: ApBaCsDsEwFoGrHd
La chiave A B C D E F G H può essere complicata a piacere.
Il programma scansiona l'eseguibile alla ricerca del primo carattere della chiave, nell'esempio 'A', se lo incontra memorizza nella stringa passw1 il byte succesivo che potrebbe essere il primo carattere di una password, avanza ancora di un byte e se corrisponde al secondo carattere della chiave 'B', aggiunge alla stringa passw1 il byte succesivo che potrebbe essere il secondo carattere di una password se invece la 'B' non c'è si riparte con la ricerca di 'A'. la password è trovata solo se tutti i caratteri della chiave sono stati trovati in sequenza a step di due.
Mi scuso per la rozzezza del codice in C allegato, ammetto di conoscerlo in modo approssimato.
Per testare il funzionamento dei codici inclusi nell'allegato, compilare prima 1 Crea programma.c che crea programma.exe
poi compilare 2 CercaInEseguibile.c ed eseguire CercaInEseguibile.exe
Verrano mostrate le password/pin in chiaro ma memorizzate offuscate all'interno di programma.exe (solo per test)
Verrà richiesto l'inserimento di passw1 (ben nota visto che nel test è mostrata)
Se corretta si potranno inserire le nuove password/pin
Verrà richiesto di controllare l'esattezza di quanto inserito e se si conferma programma.exe viene modificato.
Ringrazio AldoBaldo per lo stimolo dato e per alcune righe di codice.
L'approcio può essere estremizzato a piacere, con spaziatura diversa, cifratura delle password o chiavi ecc ecc.HAldo, sono contento che tu abbia aggirato l'ostacolo (codici scaricati in attesa di esame).
Vorrei comunque continuare sull'argomento in domanda, modificare/salvare i dati in un eseguibile, visto che il problema password è universale.
L'approcio che esporrò soddisfa i seguenti requisiti:
1) password/pin non facilmente identificabili nel sorgente anche se inutile visto che si cambiano poi
2) password/pin non identificabili nell'eseguibile se ispezionato
3) possibilità di cambio password/pin solo se si conosce quella contenuta nell'eseguibile
4) password/pin incasellate in un chiave
5) conoscendo la chiave si possono recuperare le password/pin
6) per l'uso non serve la chiave
Funzionamento:
Si sta creando un programma che abilita delle funzionalità attraverso l'inserimento di password/pin.
Le password/pin vengono incasellate a pettine in una chiave nota solo al programmatore.
Non c'è bisogno di conoscere la chiave per l'utilizzo della app.
Questo il codice che simula il programma che sarà modificato (allegato anche progetto CODE::BLOCKS 1 Crea programma.cbp):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#define kVar1 "ApBaCsDsEwFoGrHd" // spiegazione in cercaInEseguibile
#define kVar2 "ApBaCsDsEwF{parsed_message}G{parsed_message}H{parsed_message}" // spiegazione in cercaInEseguibile
int main() {
printf ("%s = ", kVar1);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar1[i]);
printf ("\n%s = ", kVar2);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar2[i]);
while( '\n'!=getchar() );
return 0;
}
Il programma dovrà contenere le password di default incasellate nella chiave, vedi sotto.
Il secondo programma (allegato anche progetto CODE::BLOCKS 2 CercaInEseguibile.cbp) serve solo per far inserire agli utenti le password/pin senza che ne restino traccia, perché sovrascritte nell'eseguibile.
Uso:
Dopo averlo compilato si lancia: CercaInEseguibile.exe che chiede la vecchia password e se la si conosce permette di modificare quelle contenute nell'eseguibile programma.exe (che deve esitere nel percorso voluto)
Logica:
Le password/pin sono incasellate nella chiave così:
I caratteri chiave del test sono: A B C D E F G H
la password deve essere incasellata a pettine: p a s s w o r d
risultato incasellato: ApBaCsDsEwFoGrHd
La chiave A B C D E F G H può essere complicata a piacere.
Il programma scansiona l'eseguibile alla ricerca del primo carattere della chiave, nell'esempio 'A', se lo incontra memorizza nella stringa passw1 il byte succesivo che potrebbe essere il primo carattere di una password, avanza ancora di un byte e se corrisponde al secondo carattere della chiave 'B', aggiunge alla stringa passw1 il byte succesivo che potrebbe essere il secondo carattere di una password se invece la 'B' non c'è si riparte con la ricerca di 'A'. la password è trovata solo se tutti i caratteri della chiave sono stati trovati in sequenza a step di due.
Mi scuso per la rozzezza del codice in C allegato, ammetto di conoscerlo in modo approssimato.
Per testare il funzionamento dei codici inclusi nell'allegato, compilare prima 1 Crea programma.c che crea programma.exe
poi compilare 2 CercaInEseguibile.c ed eseguire CercaInEseguibile.exe
Verrano mostrate le password/pin in chiaro ma memorizzate offuscate all'interno di programma.exe (solo per test)
Verrà richiesto l'inserimento di passw1 (ben nota visto che nel test è mostrata)
Se corretta si potranno inserire le nuove password/pin
Verrà richiesto di controllare l'esattezza di quanto inserito e se si conferma programma.exe viene modificato.
Ringrazio AldoBaldo per lo stimolo dato e per alcune righe di codice.
L'approcio può essere estremizzato a piacere, con spaziatura diversa, cifratura delle password o chiavi ecc ecc." // spiegazione in cercaInEseguibile
int main() {
printf ("%s = ", kVar1);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar1[i]);
printf ("\n%s = ", kVar2);
for (int i = 1; i < 16; i += 2)
printf ("%c", kVar2[i]);
while( '\n'!=getchar() );
return 0;
}
Il programma dovrà contenere le password di default incasellate nella chiave, vedi sotto.
Il secondo programma (allegato anche progetto CODE::BLOCKS
2 CercaInEseguibile.cbp) serve solo per far inserire agli utenti le password/pin senza che ne restino traccia, perché sovrascritte nell'eseguibile.
Uso:
Dopo averlo compilato si lancia:
CercaInEseguibile.exe che chiede la vecchia password e se la si conosce permette di modificare quelle contenute nell'eseguibile
programma.exe (che deve esitere nel percorso voluto)
Logica:
Le password/pin sono incasellate nella chiave così:
I caratteri chiave del test sono: A B C D E F G H
la password deve essere incasellata a pettine: p a s s w o r d
risultato incasellato: ApBaCsDsEwFoGrHd
La chiave A B C D E F G H può essere complicata a piacere.
Il programma scansiona l'eseguibile alla ricerca del primo carattere della chiave, nell'esempio 'A', se lo incontra memorizza nella stringa passw1 il byte succesivo che potrebbe essere il primo carattere di una password, avanza ancora di un byte e se corrisponde al secondo carattere della chiave 'B', aggiunge alla stringa passw1 il byte succesivo che potrebbe essere il secondo carattere di una password se invece la 'B' non c'è si riparte con la ricerca di 'A'. la password è trovata solo se tutti i caratteri della chiave sono stati trovati in sequenza a step di due.
Mi scuso per la rozzezza del codice in C allegato, ammetto di conoscerlo in modo approssimato.
Per testare il funzionamento dei codici inclusi nell'allegato, compilare prima
1 Crea programma.c che crea
programma.exe
poi compilare
2 CercaInEseguibile.c ed eseguire
CercaInEseguibile.exe
Verrano mostrate le password/pin in chiaro ma memorizzate offuscate all'interno di
programma.exe (solo per test)
Verrà richiesto l'inserimento di passw1 (ben nota visto che nel test è mostrata)
Se corretta si potranno inserire le nuove password/pin
Verrà richiesto di controllare l'esattezza di quanto inserito e se si conferma
programma.exe viene modificato.
Ringrazio AldoBaldo per lo stimolo dato e per alcune righe di codice.
L'approcio può essere estremizzato a piacere, con spaziatura diversa, cifratura delle password o chiavi ecc ecc.