<br><br><div class="gmail_quote">Il giorno 13 novembre 2010 20:01, Manlio Perillo <span dir="ltr">&lt;<a href="mailto:manlio.perillo@gmail.com">manlio.perillo@gmail.com</a>&gt;</span> ha scritto:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Si. Un semplice hash (SHA1, SHA&lt;bits&gt; e simili) oppure una firma tramite<br>
cifratura a chiave pubblica.  </blockquote><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Tieni conto che è comunque suscettibile di attacchi, dato che devi<br>
memorizzare le firme da qualche parte.<br>
Se il core è in C, la manomissione è difficile ma non impossibile<br>
(credo, non ho esperienze a riguardo).<br></blockquote><div><br>Si magari si trova qualcosa di alternativo, comunque è veramente una cosa difficile, ma penso che usando opportune tecniche di obfuscation del codice si riesca a mettere in difficoltà qualsiasi strumento di disassembling, persino del calibro di Ida (ovviamente parliamo di opcode), se ti potrebbe interessare (in caso contrario puoi tranquillamente ignorare):  opaque predicates, junky bytes, e altri piccoli trucchetti come punti di ritorno falsi, e altri giochini in assembly puro che permettono davvero di complicare il lavoro a chiunque (anche se in termini assolutistici non saprei dire in quale percentual, sebbene approssimativa al nullo, possa essere fattibile il reverse engineering anche con tali condizioni. Ovviamente l&#39;intera lista comunque va a complicare il codice sorgente e non poco :s quindi direi non proprio nello stile di python :))<br>
<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
La parte tecnicamente più complessa è verificare l&#39;hash.<br>
Una idea è farlo al momento in cui avviene l&#39;import di un modulo; per<br>
questo prova a dare una occhiata al modulo ihooks (non documentato, devi<br>
leggere il codice).<br></blockquote><div><br>Si ci avevo pensato, ma non ero a conoscenza di questi strumenti. Io avevo pensato di modificare eventualmente l&#39;interprete di CPython, aggiungendo in caso di import le relative funzioni per operare sul modulo da importare e poi ritornare al flusso standard del programma.<br>
La cosa è fattibile e per altro segna una svolta decisiva contro gli strumenti già pronti per la decompilazione dei file sorgenti criptati.<br>Purtroppo (o non) si va a sacrificare l&#39;interprete CPython standard perchè il programma deve essere eseguito dalla versione modificata dell&#39;interprete.<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Oppure dai una occhiata a<br>
<div class="im"><a href="http://www.python.org/dev/peps/pep-0302/" target="_blank">http://www.python.org/dev/peps/pep-0302/</a><br>
<br>
<br></div></blockquote><div> Banale non lo è di certo, diciamo che la trovo comunque molto 
interessante, sinceramente pensavo ci fossero già buoni progetti in 
corso di realizzazione in questo senso, ma mi sembra che siano più i 
decompilatori pyc pyo che i compilatori per proteggere il programma.<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">

</div>La cosa non è comunque banale; magari se trovi una soluzione condividila!<br></blockquote><div> </div><div>Ovviamente, sono in debito con la comunità per quanto state condividendo con me, e comunque anche per piacere personale, se troverò qualche soluzione sarete i primi ad essere informati :)<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">
<br>
Ciao  Manlio</div></blockquote></div>Ciao e buona serata!<br>