Disable print screen 1
Vechiul algoritm insolvabil: daca merg la client si ii arat nu imi pierd munca, dar pierd mult timp pentru interminabilele modificari absolut necesar de stupide. Daca nu ma vad cu el preview-ul [IMAGINE] nu poate fi decat unul decent, postat pe un server de preview. Pentru unii decent de vizualizat, pentru altii de furat si lucrat cu studenti platiti infect. Intrucat majoritatea proiectelor pe care le derulez sunt online-oriented, in some cases fiind vorba si de sedinte de arta fotografica si prelucrare digitala problema a devenit cactusiana. Am sa explic si de ce.
A face disable la functia de print screen si/sau a-ti proteja munca e o veche poveste de adormit prin SERP-ul Google. Cum spune o vorba, securizarea online e sperioasa pentru un gentlemen si precum o cafea pentru un developer. Cum insumeaza relativ si Jason Gill este foarte complicata securizarea. Am luat-o si eu pas cu pas si am demontat toate tertirpurile:
- Javascript. Inserarea in body on load a unei functii care sa nu permita comenzile Ctrl+C, Ctrl+V si/sau PrtScreen. Cracking time: 1 minut [disable la javascript]
- CSS. Adaugarea in stylesheet pe body optiunea la media display none. Cracking time: 4-5 secunde [disable la css sau prt screen]
- HTML. Messed coding, respectiv o serie de programe care encodeaza sursa. Cracking time: 2-3 minute [firebug pentru IE sau FF sau cautare targetata in DOM]
- Image Encypt. Encriptare hexazecimala pe baza unei chei de 80 de biti si 2 algoritmi care schimba cifrul la fiecare 16 pixeli de imagine. Cracking time: 3 ore [soft care o data instalat vede registrii sistemului de operare unde sunt instantieri ale encodarii, ii modifica, implicit criptarea realizata devine nula]
- PHP + Flash. O solutie hibrida care presupune apelarea in flash a imaginii si afisarea swf-ului doar daca e pe un anumit domeniu, altfel dand eroare. Cracking time: 1 ora [se recupereaza flash-ul, se decompileaza; din ActionScript se vad parametrii de instantiere, se apeleaza path-ul absolut, se fura flash-ul, se sparge, se ia imaginea ]
- ActionScript + FlashIncrypt. Presupune apelarea unei functii de tip System.setClipboard() care merge pe orice sistem de operare si pe orice browser. Soft-ul encodeaza actionscript-ul impotriva decompilarii, iar bifarea optiunii de protect from import din flash ar insemna securizare totala. Well… Cracking time: 3,5 ore [DOM >se fura swf-ul > soft care deteacteaza encodarea folosita > soft special de re-encoding > decompilare > recuperare imagine]
Si cu toate acestea solutia exista. Cu cearcane mumoase [care asteapta comment-uri pe hai5], un pc cu windows xp si linux praf si un laptop cu vista cu registrii de windows busiti declar: se foloseste DOAR flash [actionscript]. NU se encodeaza. Merge pe TOATE sistemele de operare si in toate browserele. Se poate fura usor sau chiar DARUI link de download pentru fisier :)
Practic trebuie sa se creeze un fisier *.fla care sa contina ActionScriptul 2.0 de mai jos [la 3.o e necesar un event handler]. Flash-ul se redimensioneaza atat cat este imaginea si se inlocuieste doar path-ul. Click pentru demo sau pentru download. Chiar daca ruleaza online sau offline, in browser sau in player, in Windows sau in OsX acest fisier nu poate fi furat prin Print Screen. Mai mult decat atat, chiar daca se debifeaza ca fereastra activa flash-ul si se foloseste chiar si VNC Server de pe alt PC tot nu se poate face nimic. Atat timp cat acest fiser este deschis NIMIC si NICAIERI nu mai functioneaza la nivel de copy-paste.

Se poate decompila ? Evident. E encodat AS-ul ? Normal, ca nu :) Se va gasi doar un path local catre o imagine. ATENTIE ! A nu se compila imaginea cu path absolut de tip URL.In cazul meu am dat un mesaj “frumos” care poate fi schimbat din AS. Acest mesaj apare cand se da copy – PrtScreen in word, notepad, paint, irfan view, gimp si toate editoarele avansate de grafica sau de captura destop :) [In Photoshop are ca output doar un blackscreen, bun si ala]
/*defineste si apeleaza functia de reset clipboard*/
this.onEnterFrame = function() {
System.setClipboard('=========================\n=== Fatal brain error ===\n=========================\n\nDenied Acces System.setClipboard din:\n> windows xp si vista all versions\n> mac osx\n> linux\n\nSurprize surprize swf:\n> encrypted pe 32 si 64 de biti pe import\n> path de compilare localhost\n\nDaca esti din neamul Matrix donez sursa integral.\n\nCopyright Razvan Dumitru. All rights reserved.\nP.S. Stiu si dehack-ul pentru hack :)');
/*
\n semnifica breakline
intre '' se defineste textul custom
*/
};
stop();
/* nu permite instantierea loop-ului */
this.createEmptyMovieClip("img_mc", 0);
/* creeaza un movieclip ca placeholder pentru imagine */
img_mc.loadMovie("mr_localfolder/img.jpg");
/* se apeleaza LOCAL imaginea */







Noapte buna Romania, noapte buna PrtScreen :)
Si cu Flash 10 ce faci? pt ca nu mai poti sa folosesti System.setClipboard daca nu se interactioneaza cu swf-ul ala.
@RaduM >> Am postat si disable printscreen2. Vezi SOLUTIA 2. Practic NU trebuie sa interactionezi cu flash-ul pentru ca el are onEnter frame set.Clipboard + imaginea este compozita din slice-uri orizontale de 10px inaltime. Imaginile sunt de tip *.jpg si sunt luate dinamic din action script cu incrementare. Pe server imaginile vor avea insa extensii inexistente [.etc, .whatever] si vor fi 30-40 in plus dummy. In contextul asta iti trebuie rabdare pentru furare/decompilare flash si abilitati mama omide pentru ghicirea fisierelor :). Oricum acum lucrez la un watermark unbreakable care e mult mai simplu si se poate apela si ca batch process din Photoshop. E mult mai simplu :)
Il citez si tu pe Radu1.
Ce faci cu Flash 10? Solutia ta e deja obsolete.
@all. Atat solutia 1 cat si 2 sunt depasite datorita vulnerabilitatilor multiple prin care flash player-ul interactioneaza fie server side, fie client side prin intermediul browser-ului. Concluzie: orice ar presupune functia din flash/sys reg/javascript poate fi spart atat datorita gaurilor de securitate care fac functiile inaplicabile, fie spargand prin dom daca e nevoie path-urile catre sursa protejata.