Cristalab

Su animación trial SWF se vencerá en 30 días

Por: Freddie + 16.06.2005

En mi lista de códigos definitivos del infierno, esos scripts tan bonitos que usas en casos "extremos" (eh, que he dicho extremos), me encontré uno que si bien es muy débil y puede ser mejorado, ayuda con esos clientes que usan las "demos" como el producto terminado o lo usan un tanto abusivamente

Les presento el SWF que expira en 30 días

Abrimos la película que queremos "proteger"; y en el primer keyframe colocamos el siguiente código (Nada más):

Código :

var fin:SharedObject = SharedObject.getLocal("l0ser", "/");
//Quitale el comentario a la siguiente linea, para resetear la fecha;
//pero no olvides volverlo a poner despues
//fin.clear();
var limite:Date;
if (fin.data.fecha == undefined) {
   fin.data.fecha = new Date();
} else {
   limite = new Date(fin.data.fecha.getFullYear(), fin.data.fecha.getMonth(), fin.data.fecha.getDate()+30, 0, 0, 0, 0);
   if (new Date()>limite) {
      setInterval(bastardAttack, 1);
   }
}
function bastardAttack () {
   trace("LUSER"+random(1337));
   Stage.showMenu=false;
   fscommand("quit");
   stop();
   _root.createEmptyMovieClip("f00ker",1337);
   with(_root.f00ker){
      beginFill(random(16777215), 100);
      moveTo(0,0);
      lineTo(0,Stage.height);
      lineTo(Stage.width,Stage.height);
      lineTo(Stage.width,0);
      lineTo(0,0);
      endFill();
   }
}

A partir de que se ejecute por primera vez, el SWF verificara si no han pasado 30 días ... y si ya pasaron; no lo deja abrir (Mucho ojo a la función bastardAttack. Si aun así el usuario es hábil y lo abre por otros medios (Browser); no lo deja ver Riendo

Es un código muy simple que podría haber alojado en una clase, pero para que nos vamos a engañar, no se me antojo Riendo ; además si lo hiciera dejaría de ser "Script From the Hell"

Si tienes "sk1llz"de programador; podrás ver que es muy fácil, teniendo el FLA, resetear la "fecha limite" en caso de problemas al probar el SWF, así como también puede cambiarse, moviendo un numero, el limite de días antes de dejar de abrir.

Claro, no es seguro, el usuario cambia la fecha de su PC y ya funciona, pero por lo menos TIENE que cambiar la fecha y el "luser promedio" de los que queremos proteger este tema NO tiende a cambiar cosas en su configuración.

Pues nada, entrego y libero el código con la famosa licencia libre "Haz lo que quieras, pero no me vengas a pedir ayuda" y ya me contaran si lo han mejorado o reforzado, hay muchas cosas que pueden "endurecer" la seguridad del script.

Esto es parte de la campaña, "Un cliente menos en tu pool de lusers", en la que animamos a los developers y designers a tomar el control... porque son ustedes y no el los que saben de que va la cosa

El Bate(TM) Por el imperio! (Y como me llenen de mensajes el blog con solo "por el imperio" sin añadir nada mas, sentirán la suave caricia de "El Bate(TM)")

Etiquetas actionscript

Comentarios | Enviar un comentario
100% Recomendado.... ya lo use y me dió excelentes resultados.... Riendo
Por: DJ Konflëis
Se puede saber para que esta esta linea?

trace("LUSER"+random(1337));

Es por divertimento, verdad? Riendo Riendo Riendo

Muy bueno el codigo, y muy útil para clientes listillos, jeje Guiño

Deu!!
Por: Elecash
MWAHAHAHAHA! Riendo Riendo Riendo
Por: NEO_JP
en verdad muy interesante, y creo que ya tengo al primer malandrin con quien usarlo
Por: toxic
Excelente F, muy buen codigo
Por: RSC
Muy bueno ! miau

pd: Recuerda que random esta depreciado a favor de Math.random();
Por: Dano
pero si borro el sharedObject, van de nuevo mis 30 dias, cierto? =D
Por: kada_blog
Muy buen codigo para hacer aplicaciones en Flash y compilarlas como
.exe Guiño
seria demo de un programa.

PD: no tienes algo para licencias?
Por: jhony192
[cite] (Y como me llenen de mensajes el blog con solo "por el imperio" sin añadir nada mas, sentirán la suave caricia de "El Bate(TM)")[/cite]
Por el imperio!!!!! Riendo
Por: Darkintosh_blog
Muy bien Freddie®!
Así se hace!

Sería un bonito proyecto ver cómo alguien lo "endurece" y lo regresa a la comunidad.
Por: Pedro
Pues sí Kada(zuro?), efectivamente si borra el sharedobject tendrá 30 días más, pero un cliente medio no sabrá como hacerlo jeje.

Deu!! miau
Por: Elecash

elecash :

...pero un cliente medio no sabrá como hacerlo...
Además, no le dejarás el fla ¿o sí? mmmm
Por: Pedro
Yo usé uno parecido ena aplicación que hice, y en el shared object guardaba la fecha de la primera vez y la fecha del ultimo acceso. Si la fecha actual era menor que la del ultimo acceso tampoco lo dejaba ejecutar, pues eso significaba que había cambiado la fecha del computador.

Caravi
Por: caravi
Por el Imperio!!!!!!!! xDDDDD

Muy bueno F.
Por: Cep

pedro :

elecash :

...pero un cliente medio no sabrá como hacerlo...
Además, no le dejarás el fla ¿o sí? mmmm


pedro, no necesitas el fla para romperlo. Lo que se pretende es protejer el swf. Para romper el sistema de seguridad que implemento F, bastaría con borrar un archivo de extensión *.sol. Guiño

Pero como dice elecash, eso un cliente "normal" no lo sabe.

Saludos!
Por: Dano

javierdaniel :

Pero como dice elecash, eso un cliente "normal" no lo sabe.

Y no lo digas en voz alta!! Riendo
Por: Freddie
Freddie muy bueno ! una pregunta para reforzar el tema de la fecha y controlarla mas , se me ocurre que se podria hacer que tome la fecha del servidor mediante php, o bien se puede colgar un web services publico que nos devuelva la hora .. y usarlo de esa forma par aque el cilente no pueda cambiar la fecha bueno se me ocurre algo por el estilo de todas formas esta exlente el codigo !

saludos


dQ
Por: dQ_blog
dQ, entonces el luser_victima tendria que estar conectado a Internet; eso seria un problema y una situación NO comun, por lo que se hace inefectivo
Por: Freddie
si le damos las dos opciones podria servir, al menos intentarlo con los dos metodos.
Por: jhony192
la propuesta de Caravi parece interesante tambien, podría hacerse una combinación de ambas, es decir, que pruebe a conectar al webservice y sincronizarla cn la local de forma interna. si no tiene conexion que utilice la hora local unicamente.
Además en caso de web, utilizar un archivo externo para ese código y así complicar más la cosa...
Buen trabajo.
Por: Johnny

javierdaniel :

...eso un cliente "normal" no lo sabe...
Yo soy uno de esos Riendo
Por: Pedro
Riendo
Por: Dano
Muy bien, no soy la experta en la materia pero tomarè nota y seguirè aprendiendo de cada uno de los participantes de CLAB
Por: manoella
Buen script F.

Pero tenemos que ver la forma de que el código no sea tan facil de hayar en caso de que nuestro cliente se las tire de muy zorro y le diga al sobrino que está estudiando sistemas que use el SWF Decompiler y borre el primer KeyFrame y deja toda nuestra ardua labor de seguridad hecha una m!34d@.

For the Empire

y el endurezimiento de los scripts
Por: jdgomezb
a mi me gustaria saber como generar un codigo sea fla u otro programa para evitar la quemada del cd,
Por: daly_blog

daly_blog :

a mi me gustaria saber como generar un codigo sea fla u otro programa para evitar la quemada del cd,

A mi tambien Riendo
Por: Freddie
Riendo Riendo Riendo de lujo 8) 8) 8) 8)
Por: rosvel
despues de un ataque epileptico entendi la función "bastardAttack"...

buenisimo....
Por: nez_blog

Freddie® :

daly_blog :

a mi me gustaria saber como generar un codigo sea fla u otro programa para evitar la quemada del cd,

A mi tambien Riendo
Riendo

PD: Ni siquiera la industria disquera lo ha logrado Sleep
Por: Maikel
Hola. Tengo una duda. ¿Cuándo en el código aparece:
//Quitale el comentario a la siguiente linea, para resetear la fecha;
//pero no olvides volverlo a poner despues
//fin.clear();
, esto que significa?

Muchas gracias!!!
Por: Carter_blog
Pues que para probarlo quites la linea, pero a la hora de darselo al cliente la pongas comentada.

Deu!! miau
Por: Elecash
OK! y una última question. ¿Para probarlo debo esperar 30 días o puedo cambiar simplente el "+30" del código por otro número?

fin.data.fecha.getMonth(), fin.data.fecha.getDate()+30, 0, 0, 0, 0);

Very thanks!!!
Por: Carter_blog
Claro, ponle 1 para que lo pruebes y veas su funcionamiento.

Ahora que pensandolo bien, podrías ponerle -1, igual te dá el resultado más rapido, no? miau
Por: La100rra
Okeys!!!
Muchas gracias por vuestra ayuda. Sonrisa

Sois el liquido que producen las vacas por las ubres!!!
LA LEEECHEE!!!
Por: Carter_blog
alguien me podria explicar esta linea,

limite = new Date(fin.data.fecha.getFullYear(), fin.data.fecha.getMonth(), fin.data.fecha.getDate()+30, 0, 0, 0, 0);

se que es para la fecha de vencimiento pero no se como funciona totalmente aprte de los metodos de getFullYear y los otros dos no se como se agregan los 30 dias, se que son sumandole 30 como esta en la linea pero no se porque se ponen donde estan ni la razon de los demas ceros
Por: Marmota-foo
Los demas ceros son hora, minuto, segundo y milisegundo, que no importan porque lo que nos interesa es el dia

La suma hace que el mismo objeto Date internamente maneje todo el tema de los calculos de fecha, librandonos de problemas.
Por: Freddie
gracias, ahora todo claro
: )
Por: Marmota-foo
fenomenal este codigo, no cabe duda que los mejores programadores de flash tambien son LATINOS
Por: ASCII_J2A_blog
Un saludo de un ignorante y neófito en Flash. ESTE ES EL LUGAR PRECISO que yo necesito: Un foro de expertos derramando información que si no entiendo, la explican y la entiendo, y si no la entiendo, la uso y funciona como si la hubiera entendido..
Por: Neoflash_blog

Neoflash_blog :

Un saludo de un ignorante y neófito en Flash. ESTE ES EL LUGAR PRECISO que yo necesito: Un foro de expertos derramando información que si no entiendo, la explican y la entiendo, y si no la entiendo, la uso y funciona como si la hubiera entendido..
¿Patito, patito, color de cafe? WTF!?
Por: Freddie
HOla amigos:

les escribe el mas lento de sus aprendizes para decirles que ami no me seirve el codigo, ya le probe le quite y le puse y nada.... tengo la leve sospecha pero no creo... sera por que uso win98???? por favor ayudenme, selecciono, copio y pego tal cual esta el codigo en el primer fotograma, tal cual, y lo que hago es adelantar el relog de la maquina dos meses con eso vasta para la fecha, por favor ayudenme y disculpen mis trivialidades MAESTROS!!!!!
Por: ASCII_J2A_blog_blog
Por favor, dirige tus preguntas mejor al foro, ASCII_cosa_cosa

Saludos
Por: Freddie
Si quisieramos obtener la fecha desde el servidor, como seria? para darle un limite por decir de un año ...
Por: Santana
mmmm Por favor, lee bien lo que se escribe

Freddie® :

Por favor, dirige tus preguntas mejor al foro, ASCII_cosa_cosa

Por: Zarzamora
En realidad si se pueden hacer cds a prueba de copia, es solo que no es nada presentable..
Por: milano_blog

milano_blog :

En realidad si se pueden hacer cds a prueba de copia, es solo que no es nada presentable..

Claro que se puede mil ano, puede ponerle un rootkit como los de sony
MWHAHAHAHHAHAH
PD, Sony 4p35t4
Por: ramiro_olver@
en realidad es un efect mecanico del disco... aquien no le ha fallado un disco alguna vez?. Es simple solo le provocas un daño menor el cual permita la lectura de datos mas no la copia de los mismos...

Riendo
Por: milano_blog
Me gustaria saber como generarian el vencimiento a partir de la fecha del servidor...
Por: cheche_mex_blog
Se puede hacer que el swf DESDE UN CD (con autorun por example) pueda reconocer la hora del sistema? cosa que si abre en junio y el swf tenga fecha (x example: 10 de junio) y yo tengo 30 dias de usarlo, entonces cae el 11 de julio y el usuario ya estaria sin permiso, con el codigo señalado arriba el CD estaria "VENCIDO", por ende el swf reconoce eso y aplica el codigo de arriba. asi copie el swf este reconociendo la hora IGUAL ESATRIA VENCIDO? no? esto es aplicable incluso con un php o con txt encriptados, para evitar modificaciones, cierto?? funcionaria??
Por: 666satan
Riendo

Yo tambien sou un cliente normal.. como hago para tener otros 30 dias sin el fla? Riendo
Por: chico_depeche

Elecash :

Pues que para probarlo quites la linea, pero a la hora de darselo al cliente la pongas comentada. --- { Llegué aquí a través de Google Shock }

Deu!! miau

Por: EdilbertoO
Pues a mi no me funciona.
La fecha que tiene mi PC es: Martes, 25 de julio de 2006.

Y en el flash los valores de fecha que me da, según el panel de salida, son:

Código :

Nivel #0:
Variable _level0.$version = "WIN 8,0,22,0"
Variable _level0.bastardAttack = [función 'bastardAttack']
Variable _level0.fin = [objeto #2, clase 'SharedObject'] {
    data:[objeto #3, clase 'Object'] {
      fecha:[objeto #4, clase 'Date'] {Wed Jul 25 18:20:07 GMT-0400 2007}
    }
  }
Variable _level0.limite = [objeto #5, clase 'Date'] {Fri Aug 24 00:00:00 GMT-0400 2007}
Clip de película: Destino="_level0.instance1"


Nótese las dos líneas:
fecha:[objeto #4, clase 'Date'] {Wed Jul 25 18:20:07 GMT-0400 2007}

Variable _level0.limite = [objeto #5, clase 'Date'] {Fri Aug 24 00:00:00 GMT-0400 2007}

En conclusión lo hago igual como dice el tip, le cambio la fecha a mi PC y no funciona. Si alguien sabe, le agradezco me oriente.

Gracias!!!
Por: JLSM
Tal como lo veo, ahi funciona, exactamente en un mes dejará de funcionar.
Por: Freddie
Ok.
Pero por qué al cambiarle la fecha al PC, el swf sigue ejecutándose de manera normal???

Y lo extraño es que al quitarle el comentario a la línea 4 del código "//fin.clear();", el panel de salida me muestra lo siguiente:

Código :


Nivel #0:
Variable _level0.$version = "WIN 8,0,22,0"
Variable _level0.bastardAttack = [función 'bastardAttack']
Variable _level0.fin = [objeto #2, clase 'SharedObject'] {
    data:[objeto #3, clase 'Object'] {
      fecha:[objeto #4, clase 'Date'] {Thu Jul 27 17:37:23 GMT-0400 2006}
    }
  }
Variable _level0.limite = indefinido
Clip de película: Destino="_level0.instance1"


Nótese la línea fecha:[objeto #4, clase 'Date'] {Thu Jul 27 17:37:23 GMT-0400 2006}.

Entonces, en ambos casos no debería aparecer el "2006" en vez del 2007???

No entiendo???
Por: JLSM
Oh miren que buena idea se me ocurrio, XDXDXDXD, se podría hacer que te salga un cartelito del centro de control de la taskbar del winXP, diciendote de que tu SWF ya esta caduco Riendo XP Riendo
Por: Damiancito_blog
Y que tal si mejor solo validas que el
_root.url sea unico, asi no lo podran ver de otro lugar que no sea tu sitio.
Por: seyacat_blog
Mi tonto....what a code?
Por: HACKDEAR_blog
es mas por que tanto evitar que se abra y se ejecuta el swf? por que no poner alguna linea que directamente haga que se auto elimine de PC? PBL
Por: pbl

pbl :

es mas por que tanto evitar que se abra y se ejecuta el swf? por que no poner alguna linea que directamente haga que se auto elimine de PC?
Porque es "linea" no existe en Actionscript y directamente no tendría sentido en un exe ejecutandose y tratandose de eliminar a si mismo (aunque hay tecnicas)
Por: Freddie
Estimados como prodria hacer para dar una fecha especifica de termino por ejemplo decirle que el 25 de diciembre es el tope.

saludos
Por: ZOrba_blog

ZOrba_blog :

Estimados como prodria hacer para dar una fecha especifica de termino por ejemplo decirle que el 25 de diciembre es el tope.
Leyendo el artículo en serio.
Por: Freddie
Disculpa F como hago para reducir los dias, yo quiero que caduque solo en un dia Riendo.
Por: BlackFlamer_blog

BlackFlamer_blog :

Disculpa F como hago para reducir los dias, yo quiero que caduque solo en un dia Riendo.
Leyendo el artículo lo puedes lograr.
Por: Freddie
simplemente cambias el 30 que aparece en el siguiente pedacito de código:

limite = new Date(fin.data.fecha.getFullYear(), fin.data.fecha.getMonth(), fin.data.fecha.getDate() 30, 0, 0, 0, 0);
Por: DarkSouL_blog
Exelente
Por: Edward_blog
Esta puede ser una buena sugerencia para los usuarios que cambiarían la fecha.

También se podría hacer, adicional que funcione si la fecha esta en determinada fecha del calendario, es decir que si el usuario modifica la fecha un mes antes, entonces el no se active. o algo así
Por: esutoraiki_blog
una preguntilla.. para probarlo solo saco el comentario de la linea:
//Quitale el comentario a la siguiente linea, para resetear la fecha;
//pero no olvides volverlo a poner despues
fin.clear();
y cambio el valor de 30, verdad??? solo eso??
el dia que se lo entrgue al cliete pongo la fecha que quiero y agrego las lineas..... verdad??????
Por: rowinda_blog
WEno la veda el code es bureno pero estoy interresado en algo mas hm... comom digo util Riendo algo k no deje decompilar el swf o si lo ase k no lo aga tal cual ahy tal cosa? Muy Feliz
Por: DavilaCS

DavilaCS :

WEno la veda el code es bureno pero estoy interresado en algo mas hm... comom digo util Riendo algo k no deje decompilar el swf o si lo ase k no lo aga tal cual ahy tal cosa? Muy Feliz
¿Tu hablas español? (Pista: No)
Por: Ed
Riendo la verdad si lo hablo pero no lo escribo Lengua bueno es todo caso hay lo tradusco queria saber si hay una manera de proteger mi aminacion para que cuando lo desencripten no salga tal cual (e deseccritado aveces y cuando lo reproducia no funcionada bien ose movia o botaba falllos en los scripts) entienden mmmm
Por: DavilaCS

DavilaCS :

entienden mmmm
No Aw Crap

En serio, no es por joderte ni nada, pero ¿Cómo haces para comunicarte con la gente en la vida diaria? ¿En serio existen otras personas que entienden las ideas que quieres hacerles entender?

Recuerda que un foro no es messenger.
Por: Freddie
Los demas ceros son hora, minuto, segundo y milisegundo, que no importan porque lo que nos interesa es el dia

La suma hace que el mismo objeto Date internamente maneje todo el tema de los calculos de fecha, librandonos de problemas.


¿Por qué solo nos interesa el día? No sería igual si sumaramos por ejemplo ' 5' en el argumento de los minutos, para que así caducara a los 5 minutos?
Por: Zagahlo_blog
como puedo hacer para que mediante el codigo se reconozca la fecha de la primera ejecucion del swf?
Esto para que esa fecha sea la de inicio del contador de 30 dias y asi el esfuerzo del usuario en cambiar la fecha de la pc sea en vano
Por: Carlos_blog
HOla a todos, que buen script, ultimamente me he dedica a realizar presentaciones y aplicaciones leves para universitarios, y jajajajaja, ya encontre una forma de asegurar que paguen, jajajajaja, muy buen codigo,. Espero que alguno de mis clientes no lean este tema, para que no quiten la seguridad jejeje.


saludos a todos,

Y arriba la comunidad
Por: alexsauret
Prendes la compu vas al bios configuarcion de año fecha etc... cambias le pones 2099
instalas el programa y fijate cuantos dias tenes


Chausss

Atte PaTo <--
Por: Te la hago mas facil_blog
Lo utilizare con los que tarden en pagar Riendo
Por: Marotorod
porque no usar la fecha de un servidor online que no podran modificar claro esto solo sirve si tienen acceso a internet
Por: tomili_blog
Deja un comentario
IMPORTANTE

Este mensaje ha sido cerrado; si deseas participar en la discusión o hablar de otro tema relacionado, hazlo en los foros de Cristalab