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

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

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

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
trace("LUSER"+random(1337));
Es por divertimento, verdad?
Muy bueno el codigo, y muy útil para clientes listillos, jeje
Deu!!
Por toxic el 16 de Junio de 2005
pd: Recuerda que random esta depreciado a favor de Math.random();
Por kada el 16 de Junio de 2005
.exe
seria demo de un programa.
PD: no tienes algo para licencias?
Por Darkintosh el 16 de Junio de 2005
Por el imperio!!!!!
Así se hace!
Sería un bonito proyecto ver cómo alguien lo "endurece" y lo regresa a la comunidad.
Deu!!
elecash :
Caravi
Muy bueno F.
pedro :
elecash :
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.
Pero como dice elecash, eso un cliente "normal" no lo sabe.
Saludos!
javierdaniel :
Y no lo digas en voz alta!!
Por dQ el 16 de Junio de 2005
saludos
dQ
Por Johnny el 17 de Junio de 2005
Además en caso de web, utilizar un archivo externo para ese código y así complicar más la cosa...
Buen trabajo.
javierdaniel :
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 daly el 24 de Junio de 2005
daly_blog :
A mi tambien
Por nez el 31 de Julio de 2005
buenisimo....
Freddie® :
daly_blog :
A mi tambien
PD: Ni siquiera la industria disquera lo ha logrado zzz:
Por Carter el 17 de Agosto de 2005
//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!!!
Deu!!
Por Carter el 18 de Agosto de 2005
fin.data.fecha.getMonth(), fin.data.fecha.getDate()+30, 0, 0, 0, 0);
Very thanks!!!
Ahora que pensandolo bien, podrías ponerle -1, igual te dá el resultado más rapido, no?
Por Carter el 19 de Agosto de 2005
Muchas gracias por vuestra ayuda.
Sois el liquido que producen las vacas por las ubres!!!
LA LEEECHEE!!!
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
La suma hace que el mismo objeto Date internamente maneje todo el tema de los calculos de fecha, librandonos de problemas.
: )
Por ASCII_J2A el 30 de Diciembre de 2005
Por Neoflash el 14 de Febrero de 2006
Neoflash_blog :
Por ASCII_J2A_blog el 14 de Febrero de 2006
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!!!!!
Saludos
Por Santana el 17 de Febrero de 2006
Por Zarzamora el 17 de Febrero de 2006
Freddie® :
Por milano el 05 de Marzo de 2006
Por ramiro_o el 06 de Marzo de 2006
milano_blog :
Claro que se puede mil ano, puede ponerle un rootkit como los de sony
MWHAHAHAHHAHAH
PD, Sony 4p35t4
Por milano el 09 de Marzo de 2006
Por cheche_mex el 09 de Mayo de 2006
Por 666satan el 13 de Julio de 2006
Por chico_depeche el 20 de Julio de 2006
Yo tambien sou un cliente normal.. como hago para tener otros 30 dias sin el fla?
Elecash :
Deu!!
Por JLSM el 25 de Julio de 2006
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 :
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 el 27 de Julio de 2006
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 :
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 Damiancito el 01 de Agosto de 2006
Por seyacat el 19 de Agosto de 2006
_root.url sea unico, asi no lo podran ver de otro lugar que no sea tu sitio.
Por HACKDEAR el 24 de Agosto de 2006
Por pbl el 05 de Octubre de 2006
pbl :
Por ZOrba el 20 de Octubre de 2006
saludos
ZOrba_blog :
Por BlackFlamer el 26 de Diciembre de 2006
BlackFlamer_blog :
Por DarkSouL el 29 de Diciembre de 2006
limite = new Date(fin.data.fecha.getFullYear(), fin.data.fecha.getMonth(), fin.data.fecha.getDate() 30, 0, 0, 0, 0);
Por Edward el 03 de Enero de 2007
Por esutoraiki el 09 de Enero de 2007
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 rowinda el 05 de Febrero de 2007
//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 DavilaCS el 06 de Febrero de 2007
DavilaCS :
Por DavilaCS el 07 de Febrero de 2007
DavilaCS :
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 Zagahlo el 21 de Marzo de 2007
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 Carlos el 16 de Mayo de 2007
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 alexsauret el 19 de Mayo de 2007
saludos a todos,
Y arriba la comunidad
Por Te la hago mas facil el 09 de Junio de 2007
instalas el programa y fijate cuantos dias tenes
Chausss
Atte PaTo <--
Por tomili el 02 de Noviembre de 2007