Protezione su funzionamento librerie

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Informazioni ambiente di sviluppo LogicLab Protezione su funzionamento librerie

Questo argomento contiene 10 risposte, ha 3 partecipanti, ed √® stato aggiornato da  Sergio Bertana 3 anni, 3 mesi fa.

Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #35415

    Maurizio
    Partecipante

    Stò valutando la possibilità di scrivere una libreria in LogicLab. Mi piacerebbe che questa libreria potesse funzionare esclusivamente sul PLC sul quale è installata. Il codice di attivazione, da me fornito, sarebbe comunicato alla libreria attraverso una comunicazione proveniente dall’esterno, in modbus.

    A questo proposito, ho visto che è possibile utilizzare un DID, che normalmente è utilizzato da voi per la licenza delle vostre librerie. E’ disponibile una funzione che estrae il DID (o qualunque numero interno identificativo del prodotto, come ad esempio il MAC address) e lo rende disponibile per ulteriori elaborazioni ?

    #37782

    Sergio Bertana
    Amministratore del forum

    Per proteggere le nostre librerie esistono due metodi il Manufacturer ID (MID) ed il Device ID (DID) vedi FAQ. Questi metodi sono gestibili solo dalla Elsist, non è possibili estenderne l’utilizzo ai clienti.

    Però facendo seguito alla tua domanda vengo con una soluzione realizzabile direttamente dal cliente, la variabile di sistema SysUniqueID identifica in maniera univoca ogni sistema (Estratto manuale). Nelle tue Functions o FBs di libreria puoi controllare se il valore di una variabile (Impostabile con modbus) coincide con il valore di SysUniqueID, e se diversi ne blocchi il funzionamento.

    Naturalmente il controllo non sarà una semplice eguaglianza ma potrebbe essere frutto di un algoritmo, ti do ad esempio una semplice XOR utilizzando la variabile PCode allocata in DB 100.2048 per averla come variabile tampone.

      IF ((PCode XOR 16#FFFFFFFF) <> SysUniqueID) THEN RETURN; END_IF;

    Ma potrai sbizzarrirti con algoritmi più complessi. La variabile PCode potrà essere impostata da Modbus, in debug, o creando una pagina web apposita (Stampa e Download programma).

    #37783

    Sergio Bertana
    Amministratore del forum

    Aggiungo che in alternativa alla variabile PCode puoi utilizzare la variabile SysCustomerCode Codice customer, questo codice può essere impostato dall’utente che ha accesso come amministratore al sistema. In questo modo accedendo al sistema da Telnet con il comando SysConfig -cc xxxxxxxx potrai impostare il valore della variabile SysCustomerCode, ecco lo screenshot di Toolly.

    #37785

    Maurizio
    Partecipante

    Grazie delle delucidazioni. In effetti, pensavo proprio di usare un algoritmo di codifica, come hai proposto. La possibilità del customer code non mi soddisfa pienamente, perchè desidero una sicurezza maggiore. Tuttavia buono a sapersi, può essere molto utile in altre applicazioni.

    E a proposito di questo, è possibile acquisire tramite una funzione (sono anche disposto a scrivermela, se mi dai le informazioni necessarie) il MAC address dell’interfaccia Ethernet ?

    #37786

    Sergio Bertana
    Amministratore del forum

    Il MAC address è una informazione di sistema, viene gestita esclusivamente dal sistema operativo, non esiste nessun modo per conoscerlo da programma utente.

    #37790

    Maurizio
    Partecipante

    Ok, il SysUniqueID è comunque ottimo per i miei scopi. Grazie per le indicazioni.

    #37933

    Maurizio
    Partecipante

    Ho provato, con successo, a utilzzare il SysUniqueID. Ancora una domanda: in quale range mi devo aspettare questo numero?

    Dovendo scrivere una funzione che cripta il numero, ho bisogno di avere questa informazione per impostare la funzione dei calcolo in modo che non generi errori.

    #37934

    Sergio Bertana
    Amministratore del forum

    Come vedi dal manuale (Estratto), il numero continua a crescere in funzione del tipo prodotto e della matricola. Il massimo valore di tipo prodotto è 9999 che abbinato al massimo valore di matricola (99999), produce un UniqueID massimo di 1310688927 (0x4E1F869F).

    #37995

    Lauro
    Partecipante

    Volevo chiederVi se mi sto perdendo qualcosa io, la variabile di sistema SysUniqueID è presente dal Target MPS046B in poi. Esso mi indica un codice univoco sul prodotto (combinazione di PT Type e di SN) e vale anche per i MPS046A. Ma che senso ha se tale variabile di sistema non è presente con il Target 8 (max target per i PLC MPS046A) ?

    #37996

    Sergio Bertana
    Amministratore del forum

    La possibilità di avere un numero di identificazione univoco per i vari prodotti è una richiesta che ci è pervenuta da svariati clienti, il che ci ha indotti ad inserirla nei nostri sistemi. Ecco quindi che la variabile SysUniqueID è stata introdotta dalla versione SFW184 del sistema operativo che è utilizzabile solo sui prodotti MPS046 serie B.

    Credo tu ti riferisca al fatto che nell’estratto del manuale sono indicati anche i prodotti MPS046A, in effetti in quella pagina si è voluto riepilogare il PType di tutti i nostri prodotti questo indipendentemente dal fatto che poi fosse realmente disponibile la variabile SysUniqueID.

    #39201

    Sergio Bertana
    Amministratore del forum

    Visto che nei posts di questo topic si faceva riferimento alla possibilità di conoscere il MAC address del dispositivo, ritengo utile ricordare che dalla versione SFW184B000 è stata introdotta la funzione SysOSIDValue che permette di accedere a variabili di sistema operativo. Tra le variabili che è possibile leggere vi è anche il MAC address del dispositivo.

Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)

Devi essere loggato per rispondere a questa discussione.