Oppure

Loading
05/01 17:19
Carlo
Postato originariamente da AldoBaldo:
Sì, in origine avevo quello in mente. Mi auto-dedico un'icona animata: :pat:


Credo che sia sufficiente inframezzare con dei caratteri monnezza le stringhe:

#define kVar1 "APBrCoDvEeFtGtHa"
#define kVar2 "A@BpCeDrEoFlG
Postato originariamente da AldoBaldo:
Sì, in origine avevo quello in mente. Mi auto-dedico un'icona animata: :pat:


Credo che sia sufficiente inframezzare con dei caratteri monnezza le stringhe:

#define kVar1 "APBrCoDvEeFtGtHa"
#define kVar2 "A@BpCeDrEoFlG{parsed_message}H{parsed_message}"


Quando leggi le stringhe per estrarre le password usi solo i caratteri in posizione pari.
Il programma di ricerca deve conoscere i caratteri monnezza in queso caso: A B C D E F G H e cercare solo quelli in modo che funzioni con tutte le password, altrimenti funzionerebbe solo se le password non sono state cambiate.H
Postato originariamente da AldoBaldo:
Sì, in origine avevo quello in mente. Mi auto-dedico un'icona animata: :pat:


Credo che sia sufficiente inframezzare con dei caratteri monnezza le stringhe:

#define kVar1 "APBrCoDvEeFtGtHa"
#define kVar2 "A@BpCeDrEoFlG{parsed_message}H{parsed_message}"


Quando leggi le stringhe per estrarre le password usi solo i caratteri in posizione pari.
Il programma di ricerca deve conoscere i caratteri monnezza in queso caso: A B C D E F G H e cercare solo quelli in modo che funzioni con tutte le password, altrimenti funzionerebbe solo se le password non sono state cambiate."


Quando leggi le stringhe per estrarre le password usi solo i caratteri in posizione pari.
Il programma di ricerca deve conoscere i caratteri monnezza in queso caso: A B C D E F G H e cercare solo quelli in modo che funzioni con tutte le password, altrimenti funzionerebbe solo se le password non sono state cambiate.
Ultima modifica effettuata da Carlo 05/01 17:27
in programmazione tutto è permesso
07/01 0:17
AldoBaldo
Credo di aver portato a termine "Sghèra gninta". Come promesso, ecco tutto il papocchio.
Ho aggirato il problema che non ero in grado di risolvere seguendo la linea iniziale, evidentemente incongrua rispetto alle mie possibilità di gestione.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
07/01 13:32
Carlo
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.
Ultima modifica effettuata da Carlo 08/01 13:15
in programmazione tutto è permesso
07/01 14:28
AldoBaldo
In effetti ho fatto qualcosa di simile. Anche se non ho innestato nulla "a pettine", ho scombinato i dati scambiando i byte pari con quelli dispari, "rovesciando" la stringa risultante e sostituendo i caratteri alfanumerici originali con quelli presenti in una tabella di raffronto. Per farlo con maggiore immediatezza ho predisposto un programmino dedicato che prepara direttamente il codice C con l'array delle stringhe risultanti.

Tutte le impostazioni che può essere interessante modificare sono ora raccolte nel file impostazioni.c, con commenti che spiegano come e perché possono essere personalizzate.

Certo, col metodo sul quale ho ripiegato i dati non possono essere modificati se non ricompilando il tutto, ma al momento mi accontento.

Per il resto, ho cercato di migliorare un po' l'interfaccia e ho scritto un PDF che illustra il senso del programmino (ammesso che possa avere un senso per altri a parte me).

Se vorrai dirmi cosa ne pensi, leggerò volentieri i tuoi commenti.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
07/01 15:20
Carlo
Postato originariamente da AldoBaldo:
In effetti ho fatto qualcosa di simile. Anche se non ho innestato nulla "a pettine", ho scombinato i dati scambiando i byte pari con quelli dispari, "rovesciando" la stringa risultante e sostituendo i caratteri alfanumerici originali con quelli presenti in una tabella di raffronto.


A mio avviso la questione non è come criptare la password, ma come modificarla nell'eseguibile senza lasciare tracce.
La tua password criptata è ancora incasellabile nella chiave e modificabile con CercaInEseguibile.exe, la password estratta sarà criptata e dovrà essere decodificata secondo le tue modalità. Una volta variata e ricodificata il programma CercaInEseguibile.exe la sovrascrive nell'eseguibile Programma.exe senza ricompilarlo.

Ho letto con attenzione il pdf molto eusastivo e dato un'occhiata ai sorgenti, non ho provato nulla.
Penso che il poter inserire sotto agli occhi di tutti dati sensibili senza che questi possano coglierli sia indispensabile e il tuo programma estende il consueto: [Password? ******]
Anche l'inserimento dei timer/data limita la possibilità di un uso non autorizzato.
Ultima modifica effettuata da Carlo 09/01 14:07
in programmazione tutto è permesso
28/02 21:42
AldoBaldo
Ho poi deciso di lasciar perdere questo progetto, non perché non mi sia riuscito di terminarlo (in effetti, l'ho terminato e da un punto di vista "tecnico" funziona pure piuttosto bene), ma perché si è poi rivelato ben poco vantaggioso in termini di semplificazione dei procedimenti che avrebbe dovuto contribuire ad agevolare. Eh, va be', mica tutte le ciambelle possono uscire col buco, eh!
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.