lunes, 10 de diciembre de 2007

Spam

Alien [blackhat4all@gmail.com]

Complemento Directo

No pienso que resulte una palabra ajena a la mayoría de los que están leyendo esto, ya que todos, de alguna manera, nos hemos visto victimas de un Spam. Aún así, para los no conocedores del tema, les puedo decir que un Spam es, según Wikipedia, mensajes no solicitados, habitualmente de tipo publicitario, enviados en cantidades masivas que perjudican de una u otra manera al receptor.

Y como bien dice esa invaluable enciclopedia, siempre que se recibe un correo anunciando, promocionando o simplemente compartiendo una información que no se ha solicitado, estamos siendo víctimas de un Spam. Y para los que aún no han entendido bien, quiero aclarar que la diferencia entre este término y el recibir por correo una edición digital como pudiera ser BlackHat, radica en que para recibir BlackHat (por citar un ejemplo), usted debe haber escrito con anterioridad a determinado correo solicitando ser parte de algo, o aceptando recibir algo cada un tiempo determinado, y en el caso del Spam, simplemente “alguien” roba su dirección de correo de la red, y lo hace partícipe de algo sin contar con su previo consentimiento.

Según los párrafos anteriores, Spam es información que nos llega por correo, pero por suerte o desgracia esto no se limita solo al correo.

No es menos cierto que últimamente el correo electrónico se ha convertido en el medio por excelencia para el envío de Spam, dado su fácil acceso para los países principalmente del primer mundo, dado el gran público que puede abarcar, dado a la facilidad con que se puede extraer de la red en menos de un día miles de direcciones de correo, es casi imposible vivir sin el miedo que nos llegue un Spam.

El correo Spam como tal es penado en países como España, no solo por estar dándole publicidad a cierto producto sin las autorizaciones requeridas por dicho país, sino porque se viola en cierto sentido la privacidad de los usuarios de computadoras al extraer sin su consentimiento las direcciones que estos hayan puesto en determinado lugar.

Pero aquí en nuestro país, dado a todas las dificultades que se nos presentan para adquirir una cuenta de correo, y por lo general el poco ancho de banda con el que contamos sumado con el casi siempre restringido tiempo de acceso al mes a la red, un Spam es algo similar a un ladrón que nos roba bit a bit nuestro tiempo en la red.

Y es en estos casos donde el Spam molesta más. Pero no es el único caso.
Según Wikipedia existe el Spam por correo, por mensajería instantánea (jabber), grupos de noticias, foros, blog, teléfonos, fax, en fin, por todo medio a través del cual se pueda difundir información. A mi entender
Deberían haber incluido la radio y la televisión, en los que ya existe desde hace tiempo aunque con otro nombre: Spot, Comercial, propaganda, …

Complemento Indirecto

Un mensaje de correo de tipo Spam es enviado generalmente por alguien que necesita, desea, quiere darse publicidad (justificada o no).

No se haría justicia si catalogaramos a los Spammer con cierta edad, género o raza, ya que este molesto email puede ser enviado tanto por un grupo de novatos que descubrío el agua tíbia, como por una empresa de prestigio que necesita aumentar la cantidad de visitas a su página o hacer público un servicio o producto. En este caso, casi nunca el Spam sale del servidor bajo el que está hospedado el sitio, sino que se contrata a un Spammer que es quien realiza la “operación”.

Un Spam puede ser enviado a n=1, n=2, n=3 … n=n+1(personas) y continuaría siendo Spam, ya que como habíamos dicho anteriormente, un Spam no se mide solo por la cantidad de personas que abarca, sino por la trivialidad de la información que contiene, dando pie esto a que sea interpretado individualmente por cada miembro que lo recibe.

Un correo anunciando la venta de antiestreptinomicida (pastilla solo para los enfermos de estreptinomicodo) puede ser útil para los que sufren de esta inventada enfermedad, mientras que un paciente que sufre de un cuadro de gripe puede ser los más absurdo que haya recibido, sin embargo, si ninguno solicitó con anterioridad recibir dicha información, el mensaje continúa siendo un Spam.

Complemento circunstancial

Básicamente, un Spammer que se especialice en realizar su “trabajo” basándose en el correo electrónico, extrae toda, o al menos la mayor cantidad de direcciones de correo de la red. Para esto utiliza libros de visita, foros de discusión o cualquier otra web en la que sepa que se alojan varias direcciones de correo, sin tener en cuenta que estas puedan ser válidas o no.

Cuando se tiene cierta práctica, encontrar estos sitios es solo cuestión de segundos, ya que por desgracia aún muchas personas exponen sus direcciones de correo en páginas no seguras que, aunque no divulgan de forma directa esta información, si dan acceso a que cualquiera pueda entrar y apropiarse de las direcciones de correo, haciendo luego con ellas lo que mejor le parezca.

Un Spam no tiene hora, fecha o lugar. Es solo un correo más que nos llega desde una dirección (en la mayoría de las ocaciones falsa) y que nos trata de inducir a efectuar una operación, en la que haya que navegar luego por la red o no, en ninguno de los casos será para ofrecernos algo (como se dice en buen cubano) “de corazón”.

Ventajas.

El Spam ofrece ventajas en primera instancia a quien lo envía, ya que le da la oportunidad de promocionar su producto, o hacerse visible en la red, incluso, un Spam correctamente enviado puede ayudar a subir el pagerank de una página en la red.

En segunda instancia, el mismo receptor puede salir beneficiado del Spam si se da el caso que le interesa aquella cosa que se trata de promocionar, e incluso, puede ser que no interesándole, exista alguien que desee recibir Spam continuamente, considerando que así estará informado de más cosas. (Para gustos…)

For i=0 to Spam

Por suerte Wikipedia en español tiene información de lujo para este tema, haciéndose allí un recorrido desde el primer Spam hasta buenos métodos que nos ayudan a hacer nuestro correo menos vulnerable al envío de Spam, pero hablar de eso en este artículo sería algo muy fácil (Ctrl+C & Ctrl+V). En lugar de eso, trataré de explicar paso a paso como enviar un Spam a un grupo de usuarios, demostrando así la poca seguridad que se tiene y lo vulnerable que nos volvemos al publicar en la red nuestras direcciones reales.

Lo primero es seleccionar en la red una página en la que sepamos existen al menos más de 100 direcciones de correo, para no citar ejemplos imaginémonos que BlackHat cuenta con un servidor en el cual hemos puesto una página para ilustrar este ejemplo y la dirección de este servidor es: http://BlackHat.cu/Spam.

Al entrar en esta página, lo primero y único que veremos será algo similar a un libro de visitas que tiene un formato similar a este:

Nombre: xxx xxx xxx
Email: xxx@xxxxxx.xx
Comentario: bla, bla, bla.

Nota: Estas mismas líneas se repetirán unas 100 veces.

Una opción sería ir haciendo clic sobre cada una de las direcciones de correo y luego de copiarlas, pegarlas en un bloc de notas. Pero esto es funcional solo para recopilar cuando más 10-20 direcciones, luego de esto ya quizás estemos más que cansados y decidamos la opción más inteligente.

Guardando la página en nuestro disco duro en formato de texto, un programa que creemos nos permitirá recorrer dicho archivo y tomar de el solo las líneas cuyos primeros 6 caracteres sean: “Email:”. Luego de haber salvado esta selección, un editor de textos sencillos nos permitirá reemplazar la frase “Email:” por “” (vacio). De esta forma ya tenemos una lista de 100 correos.

Vale decir que este mismo método es el que utilizan muchos Spammer, y aunque esto no siempre es 100% efectivo dado a que muchos usuarios pudieron haber escrito mal sus direcciones de correo, o simplemente no tener ninguna colocada en este campo, si garantiza que al menos el 90% de las direcciones recopiladas van a ser válidas.

Ojo

Aunque el envío de Spam en nuestro país no es fuertemente penado por la ley, si es algo por lo que no pienso que a persona racional le gustaría ser llamado. El hecho de que alguien pueda ser un Spammer no lo hace estar más cerca de ser un Hacker o siquiera pertenecer a una comunidad “underground”. Un Spammer, alguien cuya única misión es infestar los correos de las personas con contenido BASURA, no es para nada un ídolo a seguir, ni lleva consigo por eso una medalla al valor o la dignidad, todo lo contrario. Más que ser penado por la ley, el Spammer es penado por sus colegas, ya que el envío de Spam no es ni hacking, ni Carding, ni Preacking, es simplemente MOLESTO.

Continuar leyendo

Malas estructuras de datos

Lester Pastrana [lester@uh.cu]

Introducción:

El objetivo de este material no es enseñar cómo programar una estructura de dato ya que existen muchas bibliotecas que nos brindan interfaces de estas, probablemente mucho más eficientes y con menos errores de las que lograríamos nosotros. Lo que persigue este material es ayudar a entenderlas y decidir cuales usar en cada momento.

Problema:

Uno de los estados más importantes en la solución de un problema consiste en determinar dónde se van a guardar los datos. Es común que en los inicios se tomen decisiones incorrectas. Un problema clásico y sencillo orientado por los profesores, es realizar un programa para la gestión de libros en una biblioteca. Por lo general, este se restringe a que durante la ejecución del programa los datos se deben almacenar en un Vector o un LinkedList.

Las principales acciones a realizar en el software consisten en agregar un nuevo libro, eliminarlo y buscarlo para prestarlo. Otros requerimientos son implementar la estructura de dato y desarrollar el software en C++.

La experiencia ha demostrado que la gran mayoría decide utilizar LinkedList para la resolución de su problema, pero… ¿Por qué no un simple Vector? Muchos piensan que un LinkedList utiliza menos memoria, además la inserción y la eliminación parecen ser más eficientes. En esto existe un error.

Resolución:

Definamos algunas notaciones para facilitar la explicación.
O (1): Indica que la operación se realiza en un tiempo constante. Es decir el número de datos no influye en el tiempo que consume la operación.
O (n): Indica que la operación se realiza en un tiempo lineal. Es decir el número de datos influye linealmente en el tiempo que consume la operación.
O (log n): Indica que la operación se realiza en un tiempo logarítmico. Es decir el tiempo de la operación es aproximadamente igual al logaritmo del número de datos.

Ordenes del Vector y LinkedList
Inserción: O (1)
Eliminación: O (n)
Búsqueda: O (n)
Memoria: O (n)

Como se aprecia ambas estructuras se comportan igual según indican los órdenes. Por desgracia esto nos da una descripción bastante pobre del real comportamiento de cada estructura. Veamos cada uno de los puntos en detalles.

Definición:

Vector: Consiste en un array dinámico que crece (por lo general se duplica su tamaño) cuando el número de elementos supera su capacidad.

LinkedList: Lista de nodos unidas por referencias (apuntadores).

La memoria

Sin perder generalidad supongamos que el tamaño de cada elemento almacenado es de 4 bytes, que es el tamaño de un puntero, si el elemento tiene un tamaño inferior se deja al lector que demuestre la superioridad inmediata del Vector sobre el LinkedList en este aspecto.

Denotemos por M (v) como el tamaño de memoria del Vector y M (l) como el tamaño de memoria del LinkedList.

M (v) = 4 * length, donde length indica el número máximo de elementos que se pueden almacenar en el Vector y M (l) = 8 * count, cada casilla esta compuesta por el elemento y una referencia al próximo y count es el número de casillas existentes.

Cuando el Vector se llena entonces length = count y en el instante en que este crece length = 2 * count, luego sustituyendo se tiene que M (v) = 8 * count en este momento el Vector estaría a la mitad de su capacidad y la memoria ocupada por este es idéntica a la utilizada por el LinkedList, a medida que se llena el Vector –a diferencia del LinkedList– la memoria ocupada por este no aumenta.

Este análisis sumado a que el LinkedList requiere constantemente creación dinámica de memoria y con esto llamadas al kernel de Windows, fragmentación de la memoria, espacio extra para la actualización de la estructura del Memory Manager del Sistema Operativo y grandes dolores de cabezas con posibles punteros perdidos, nos hace pensar que no es muy factible.

Por otra parte el Vector al poseer todos los datos de forma consecutiva no presenta los problemas anteriores. Aclaremos que el Vector sólo aumenta su tamaño cuando el número de datos excede el doble de la cantidad que había la última vez que creció. Esto cada vez es menos frecuente, además la copia de los datos al nuevo espacio reservado es extremadamente rápida.

La inserción

Ambas estructuras tienen un comportamiento similar, el Vector lo inserta al final y el LinkedList por lo regular al inicio. A excepción por la llamada de reservación de memoria por el LinkedList no hay mayores problemas. Como se vio anteriormente la duplicación del Vector no es un problema que nos quite el sueño.

La eliminación

En este caso, en ambas estructuras se necesita iterar por todos los elementos hasta encontrar el deseado y luego eliminarlo. En el caso del Vector es necesario cubrir el hueco copiando el último elemento o corriendo todos los elementos a partir de la posición k + 1 para la posición k donde k en el índice del elemento eliminado.

En el LinkedList se elimina el nodo y el apuntador del nodo anterior se iguala al nodo siguiente del eliminado o NULL si este no existe.

En dependencia de la técnica escogida en el vector será uno igual o más eficiente que el otro. Pero no es algo que determine.

Antes de tocar el último punto analicemos el problema en cuestión. Una biblioteca recibe muchos libros los primeros días, pero posteriormente no es un evento frecuente. La eliminación de libros sucede cuando uno está prestado, es robado, se perdió. A excepción de los préstamos los demás eventos tampoco resultan frecuentes. Sin embargo la búsqueda se realiza de forma constante, por lo que esta acción debe ser la más eficiente.

La búsqueda

En el Vector se iteran por todos los elementos hasta hallar el deseado y en el LinkedList nos desplazamos por cada nodo con la misma intensión. Lo gracioso es que debido a las operaciones de bajo nivel que implican estas acciones, el Vector presenta un mejor comportamiento a pesar de tener órdenes iguales.

Se aclarar que aún así estas búsquedas presentan tiempos muy pobres y pudieran ocurrírsenos algunos cambios los cuales definitivamente dejarían a una de estas estructuras completamente rezagadas. Piénselo un momento ante de ver la respuesta.

La magia de la ordenación y el INVENTO:

Ordenar un LinkedList es una tarea ardua y no nos beneficia en nuestro objetivo. Sin embargo ordenar el Vector resulta relativamente fácil y con un orden eficiente O (n log n), valiéndonos de un algoritmo de búsqueda binaria reduciríamos el tiempo de búsqueda que antes era O (n) hasta O (log n). El problema es que los órdenes de la inserción y eliminación manteniendo el Vector ordenado subirían a O (n) y aunque estas acciones no son frecuentes si lo son los préstamos que conllevan a una eliminación tras una inserción. Esto tiene solución, nuevamente los invito a pensarla antes de leer la respuesta.

La solución es no eliminar del Vector un libro al ser prestado sino poner una marca booleana indicando que no está disponible. De esta forma siempre que se busque se encontrará como que la biblioteca tiene este libro, pero no está disponible en estos momentos. En caso de existir varios libros iguales con una mínima modificación a la marca se soluciona el problema y se puede dejar como ejercitación.

Conclusiones

El LinkedList por lo general es una estructura que se utiliza como sustento de otras como grafos, árboles, hash enlazado, estructuras de mapas, etc.
Los Vectores por lo general se utilizan para almacenar elementos que requieren una iteración frecuente, almacenaje temporal, etc.

Cuando se utiliza una estructura de datos no basta con conocer sus órdenes es necesario tener un conocimiento profundo de su comportamiento en cada situación y del problema en cuestión que esta va a resolver.

Existen otras estructuras para resolver este problema que nos brindan tiempos mucho más factibles. Estas pueden ser árboles binarios, B-Tree y Tablas de Hash.

Continuar leyendo

Instalación de servidor

Chacal [mariav.hedez@infomed.sld.cu]

Hola de nuevo después de un rato fuera de línea por problemas que todos presentamos en la conexión. Me presento ahora con un nuevo tema.

Hablando con Alien me comentaba que el tema de los CMS es decir (Componet Manager System) le habían interesado mucho a los lectores, entonces me propuse dar como un tipo guía hecho por mi.

Primeramente para llevar a cabo la instalación de cualquier paquete de php (en este caso trabajaremos con los CMS) es necesario tener en nuestra PC instalado un servidor Apache y SQL.

¿Cuáles podemos usar?

Muy simple, podemos usar desde el xampp, wamp, appserver (los mas usados), una ves instalado este servidor Web tenemos que abrir nuestro explorador Web y tecleamos esto http://localhost y nos aparecerá la pagina principal donde se le da la configuración en cuanto a seguridad.

Para demostrar esto he escogido el Xampp como servidor Web y nos aparece esta ventana donde le decimos el idioma y después nos aparece otra ventana así:

Ahora debemos dar clic donde dice Chequeo de seguridad para en esta nueva ventana que nos sale, para aquí configurar las contraseñas que tendrá primeramente nuestra Base de Datos MySQL, y nuestro usuario de DIRECTORY PROTECTION (.htaccess) todo esto debemos hacerlo por pasos primero salvar nuestra contraseña del MySQL y después lo anterior.

Siempre debemos recordar que la mayoría de los ataques a las Bases de Datos se hacen mediante tanteo, que quiere decir, los atacantes tantean diferentes contraseñas para entrar a su base de datos y así tener control pleno de todas sus tablas, Les recomiendo que la contraseña NO SEA: su Nick, fecha de nacimiento, compañías como Microsoft, ni Windows y cosas así, traten de poner por ejemplo una buena combinación de contraseña: etecsa_123*flash, Kodak_*987. Recuerde que una contraseña es segura cuando no tenga nada que ver con usted.

Ahora tenemos que buscarnos un paquete CMS, como les dije en el otro articulo pueden ser mybb, phpbb, IPB, Vbulletin, MKPortal, SMF, PHP Nuke, PHpMyChat, punbb, Joomla, entre otros.

Una ves que tenemos alguno de estos paquetes lo copiamos para esta dirección en nuestra PC:
C:\Archivos de programa\xampp\htdocs

Una ves que lo tenemos en esta dirección descompactado y todo, entonces vamos a nuestro navegador Web y damos esta dirección http://localhost/ nombre de la carpeta que copiamos/ y el nombre que tiene el archivo de instalación que casi siempre es install.php
Recuerde que, aunque le den la ip a un user en la red y tiene bien configurado su servidor web nunca le accederá remotamente a su PC ni podrá revisar sus archivos ni mucho menos sus bases de datos.

Quisiera también Darle las Gracias a Esta Revista la cual hace que sea posible de realizar algo tan maravilloso que es impartir el conocimiento y compartirlos a todos los usuarios que lean esta revista

Continuar leyendo

Velocidad y Tiempo en Cine, TV y Video

Ariel-NM [blackhat4all@gmail.com]

Sabido es que el cine y la televisión se basan en las peculiaridades de la visión humana, específicamente, en la persistencia de las imágenes en la retina. La rápida sucesión de imágenes crea la sensación de un movimiento continuo. En este artículo se discutirán los diferentes formatos que comúnmente se emplean para medir la velocidad con que se suceden las imágenes a fin de crear la ilusión de movimiento así como la duración de de una obra (o fragmento de una obra) de cine o video. Muchos de estos formatos se podrán encontrar en los programas de animación, edición de video, efectos especiales e incluso en aquellos destinados al procesamiento de audio.

FRECUENCIA DE CUADROS

La rapidez con que se reemplazan las imágenes se denomina velocidad de cuadros o frecuencia de cuadros (frame rate, en inglés) y se expresa en cuadros o fotogramas por segundo (fps). Se puede demostrar que la persistencia de la imagen en la retina tiene una duración promedio de 1/15,5 segundo, aproximadamente. Invirtiendo la fracción, eso significa que puede crearse una sensación de continuidad si las imágenes se suceden a una velocidad de 15,5 cuadros por segundo. O redondeando: 16 cuadros por segundo.

EL CINE

Como es de suponer, el cine fue el primer medio en adoptar diferentes estándares para esta velocidad. En los tiempos del cine mudo se estableció al estándar mínimo de 16 fotogramas por segundo. Esto, por supuesto, permitía un máximo ahorro de película. Posteriormente, con el arribo del cine sonoro, se fijó la velocidad a un nuevo estándar de 24 fps, el cual ha permanecido hasta nuestros días. Esta aceleración en la frecuencia de cuadros nada tiene que ver con la visión pero sí, como es de suponer, con el audio.

El asunto estriba en que la solución para lograr un buen sincronismo entre la imagen y el sonido, la mejor solución fue insertar este último en la película. Para ello se aprovecha el pequeño espacio libre que queda entre los fotogramas (las imágenes) y las perforaciones de arrastre a cada lado de la cinta de celuloide. En esa estrecha banda se graba el audio pero no como suele hacerse en una cinta magnética sino como información luminosa. El sonido aparece ahí como una banda transparente que se ensancha y se estrecha continuamente a lo largo de la película. De ahí proviene su nombre: banda sonora.

Al pasar un haz de luz a través de la banda sonora, la intensidad luminosa que se obtiene del otro lado dependerá de la apertura que tenga la zona transparente en cada instante. En otras palabras: al ensancharse y estrecharse, la banda sonora sirve como una cortinilla que se abre o se cierra rápidamente a medida que pasa la película. Del otro lado de la lámpara se coloca una celda fotoeléctrica que convierte las variaciones de la intensidad de la luz en variaciones de voltaje, obteniéndose así una imagen eléctrica del sonido muy similar a la que proviene de un micrófono. Esta señal eléctrica se amplifica y se entrega a los altavoces.

Cuanto más lenta sea la velocidad de la película, mayor cantidad de sonido ha de quedar atrapado en un tramo de la misma, lo cual significa que el ancho de la banda sonora ha de variar muy rápidamente. En los albores del cine sonoro no se disponía de una tecnología capaz de generar una banda sonora nítida y fiel al sonido con una velocidad tan lenta como 16 cuadros por segundo. Entonces se decidió incrementar la rapidez de la película para que estas variaciones quedaran más espaciadas y por tanto, más “legibles” por la celda fotoeléctrica. Luego de algunos experimentos (y teniendo en cuenta que debía ahorrarse la mayor cantidad posible de película) se determinó la velocidad óptima de 24 cuadros por segundo.

LA TELEVISIÓN Y EL VIDEO

Por su parte, la televisión creó nuevos estándares.
Por razones tecnológicas e históricas, actualmente existen en el mundo tres sistemas generales de video y televisión: NTSC, PAL y SECAM. No es objeto de este artículo discutir las peculiaridades de estos sistemas y solo diremos que entre sus diferencias están el número de líneas horizontales en que se subdivide la imagen y la velocidad con que se suceden los fotogramas.

El sistema de televisión NTSC (National Television System Comitee) es el que se emplea en toda Norteamérica, y una buena parte de América Latina y el Caribe, incluyendo nuestro país. El sistema PAL se ha extendido por casi toda Europa y es mayoritario en África y Asia. Por su parte, el SECAM impera aún en ciertas regiones de Francia, algunos países africanos y el antiguo campo socialista, incluyendo las repúblicas que aglutinaba la Unión Soviética.

Adaptado de Wikipedia

Retornando al tema que nos ocupa: el sistema NTSC se caracteriza por una frecuencia de cuadros de 30 fps. Por su parte, los sistemas PAL y SECAM trabajan a 25 fps. La siguiente figura ilustra comparativamente las tres bases de tiempo fundamentales que se emplean en la actualidad:


UNIDADES DE TIEMPO

Por supuesto, además de la frecuencia con que se suceden los fotogramas, otro parámetro a medir cuando se trabaja con imágenes en movimiento es la duración de la obra o de las unidades en esta se subdivide (tomas, planos, secuencias, escenas…).

La duración de cualquier fenómeno, obviamente, se mide en unidades de tiempo. La unidad para las mediciones temporales adoptada por el Sistema Internacional es el segundo (s). En algunos trabajos que exigen gran exactitud, puede que se necesite medir el tiempo con una precisión de hasta la milésima de segundo, esto es, en milisegundos (ms), como sucede en los equipos de fotofinish que se emplean en las competiciones deportivas. Por supuesto, semejante precisión no tiene mucha aplicación en asuntos de arte, donde suelen emplease, además del segundo, el minuto (m) y la hora (h).

[Un detalle: la “duración” de una película aún sigue midiéndose en pies…]

En la mayoría de las aplicaciones de diseño / animación el tiempo se mide en fotogramas. Esta es una vieja práctica que proviene de los albores de los animados, donde lo que contaba era la cantidad de dibujos necesarios para mostrar una determinada acción en cierto intervalo de tiempo. Por ejemplo, en un animado con miras a su exhibición en el cine, 24 dibujos se corresponden con un segundo de duración aunque a menudo, a fin de ahorrar trabajo a los dibujantes, se realizan solo 12 dibujos y cada uno se repite dos cuadros. La mayoría de las veces, a los animadores les resulta más visible pensar en fotogramas que en segundos.

Sin embargo, en ocasiones se requiere medir la duración de una toma en fotogramas y, a la vez, en unidades convencionales de tiempo. Para unificar ambos requisitos se ideó el sistema SMPTE.

FORMATO SMPTE

SMPTE son las siglas de Society of Motion Picture and Television Engineers, organización internacional radicada en los Estados Unidos que se ha dedicado a poner un poco de orden y concierto en los estándares de los medios que manipulan imágenes y audio. Y aunque la traducción es Sociedad de Ingenieros del Cine y la Televisión, sus estándares abarcan también el procesamiento de imágenes en el campo de la medicina.

A esta organización le debemos el formato de medida del tiempo SMPTE. Este formato está disponible en prácticamente todos los programas de animación, edición de video y procesamiento de audio. Genéricamente puede representarse como:

hh:mm:ss:ff

donde h son las horas; m, los minutos; s, los segundos y f representa los fotogramas.

En principio, el conteo de cada par de dígitos arranca en cero. El conteo opera de acuerdo a la frecuencia de cuadros del medio en cuestión.

Por ejemplo, supongamos que el cursor del tiempo de una aplicación como 3D Studio, Premiere o Audition se encuentra justo a inicio de la escala. En tal caso, la cifra del contador (en formato SMPTE) será:

00:00:00:00

Esto significa que nos encontramos en el fotograma cero, y que han transcurrido cero segundos, cero minutos y cero horas; en fin que estamos al inicio de todo. Supongamos además que nuestra animación, video o banda sonora se prevé para una velocidad de cuadros de 30 fps. En ese caso, a medida que el cursor del tiempo avanza, se incrementará el número de fotogramas pero no se indicará el primer segundo hasta que hayan transcurrido 30 cuadros.

Pero el conteo de los fotogramas comienza en cero, no en 1, de modo que cada segundo contiene una treintena de fotogramas que van desde el cero hasta el 29.

Esta sería la lectura en el fotograma 29:

00:00:00:29

Y esta sería la lectura en el fotograma 30:

00:00:01:00

Nótese que, con el arribo al cuadro 30 (que sería el primero de la siguiente treintena), se incrementa el contador de los segundos y regresa a cero el contador de fotogramas.

ALGUNAS PRECISIONES

Hablando con exactitud, al introducirse la señal de color en la televisión hubo que corregir la velocidad de cuadros de la norma NTSC a 29,97 fps (el equivalente a multiplicar 30 x 0,999). No obstante, la aproximación a 30 fps funcionará perfectamente en la mayoría de los casos. También suele emplearse un estándar de video de 23.976 fps en aquellas obras que pretenden ser presentadas también en soporte de celuloide. Nótese cuán cercana es esa frecuencia de cuadros al estándar de cine de 24 fps.

Finalmente también se emplea un estándar antiguo de 15 fps para juegos de video pero este asunto no es de nuestro interés.

EL CENTELLEO

Una secuencia de imágenes a una velocidad igual o mayor a 16 fps garantiza perfectamente la continuidad aparente del movimiento pero no evita el molesto centelleo que se observa fundamentalmente en las regiones periféricas de la visión, puesto que es en esa zona de la retina donde más abundan los bastoncillos, células encargadas de sensibilizarse ante la información de luminancia (escala de grises, intensidad de la luz) de todo cuanto vemos.

Para evitar el centelleo (parpadeo; flickering, en inglés), se inventó un sencillo y eficaz dispositivo que recuerda las aspas de un ventilador: durante el tiempo en que la imagen permanece detenida en pantalla, las aspas interrumpen tres veces el paso de la luz. En un cine actual, la frecuencia de cuadros sigue siendo de 24 fps pero a los efectos de las pulsaciones de la luz, esta opera a 3 x 24 = 72 destellos por segundo. A esa velocidad de pulsaciones, la mayoría de las personas dejan de sentir el molesto centelleo. Esas aspas que se emplean en los proyectores convencionales de cine son el equivalente de la frecuencia de refrescamiento en los monitores. (A mí, en particular, me resulta molesto el centelleo de la pantalla del monitor a la frecuencia estándar de 60 Hz (60 ciclos por segundo) y generalmente la subo a 75Hz.)

Debe quedar claro que la frecuencia de las pulsaciones nada tiene que ver con la frecuencia de cuadros necesaria para la continuidad del movimiento. La película sigue pasando a 24 fps independientemente de cuántas aspas tenga el “ventilador”, es decir, de cuantas veces se interrumpa el paso de la luz entre un fotograma y el siguiente.

Ahora bien, ¿qué ocurre en la televisión?

CAMPOS Y ENTRELAZADO

Por razones fisiológicas (para minimizar el centelleo) y por razones tecnológicas (incapacidad de la primitiva electrónica de válvulas para alcanzar altas velocidades de conmutación), en los albores de la televisión se determinó subdividir en dos partes cada fotograma.

Se conoce que la imagen televisiva está compuesta por cierto número de líneas horizontales, cifra que varía de un sistema de televisión a otro. Las líneas se clasifican en pares e impares. En una imagen de televisión, durante el tiempo que corresponde a un fotograma se muestran primeramente las líneas impares y luego las pares.

En otras palabras, en lugar de mostrarse un fotograma completo durante 1/30 de segundo (en NTSC) se muestra sucesivamente dos semi-fotogramas denominados campos (fields, en inglés). Si congeláramos uno de esos campos, veríamos una imagen un tanto borrosa debido a que solo aparecerían allí la mitad de las líneas separadas al doble de la distancia normal.

De este modo, durante el tiempo asignado a un fotograma la pantalla del televisor centellea dos veces, es decir 2 x 30 = 60 veces en un segundo. La persistencia de las imágenes en la retina es quien se encarga de entrelazar las líneas de ambos campos y ofrecernos una imagen completa.

Al exportar un video desde un programa de edición, este generalmente brinda las opciones de generar cada uno de los campos por separado, ambos campos ya entrelazados (interlaced, en inglés) o como imagen continua (no subdividida en líneas) para mostrar todo el fotograma a la vez como suele mostrarse en el cine o en las computadoras. A esta opción (un fotograma completo por vez) se le denomina progresiva.

aclaración y compromiso

Por motivo de una pequeña descoordinación, en el número anterior de BlackHat se ofreció en la carpeta Tools un cronómetro para animadores programado en Flash (el Itty-Bitty Animation Timer v3.0, de Timothy Albee) y descargado a través del WoS desde el sitio: http://ta-animation.com/TA_FineArt/Tools/index.htm.

El funcionamiento del cronómetro es bien simple: basta con un clic (izquierdo) sobre la imagen de la cabeza del zorro y mantener el botón pulsado durante el intervalo de tiempo que se quiera medir. El cronómetro permite elegir el formato de la medición e incluso establecer por teclado los valores iniciales.

Continuar leyendo

¿Por qué Linux no desplaza a Windows?

Alix A. [aacg@sum.upr.edu.cu]

Soy un usuario habitual de Windows como muchos otros en el país, que ha utilizado las versiones mas populares (98, 2000, NT, Me y XP) de este sistema en el trabajo cotidiano, en la oficina y en la casa, ya sea realizando informes, utilizando bases de datos, etc., por tanto no soy un “súper-especialista” pero si me interesa compartir con ustedes mi punto de vista sobre la reticencia generalizada a utilizar Linux en las PC en nuestro país y quizás en el Mundo.

¿WINDOWS EL MÁS DIFUNDIDO?

Windows desde hace años es el sistema mas difundido en nuestras PCs, lo es debido a que anteriormente su “abuelo” el MS-DOS se expande en el mercado al comenzarse su distribución en ordenadores de IBM (recuerden el convenio de los 70 entre IBM y Microsoft). Esto fomentó que estas compañías tuvieran un boom mercantil importante en esta etapa (estamos hablando del inicio de la distribución de los ordenadores para oficina y para el publico en general). Otros SO no corrieron con igual suerte al ser muy “pesados” para los nuevos equipos (como Unix) que comenzaron a inundar las oficinas y las viviendas ó eran demasiado caros para la mayoría de los nuevos usuarios (caso de Mac).

Esta es la razón por lo cual ya es tradicional que al comprar un PC generalmente este trae instalado Windows ya que antes de la salida al mercado esto se convenía.

Segundo: Con su ambiente grafico que hace que los usuarios menos aventajados puedan trabajar sin muchos contratiempos de forma básica en el sistema, se ha ganado adeptos que lo defienden a capa y espada a pesar de los maltratos que en ocasiones les inflige Microsoft.

Tercero: A implementado una política de paquete completo (junto al SO se incluyen, navegador para Internet y aplicaciones para el trabajo en la oficina) que han desplazado a otros, lo cual le ha costado a Microsoft grandes batallas legales por considerárseles un monopolio.

Y cuarto, las compañías, incluidas las de OpenSource que realizan aplicaciones para que corran en Windows, haciendo que los usuarios no sientan realmente la necesidad de cambiar de sistema.

¿QUE NOS OFRECE LINUX?

En un inicio no tenia idea de que cosa era, simplemente pregunté a los que creía que me podían dar luz en el asunto; que chasco, todo el mundo respondía lo mismo;
– es un SO nuevo que con el tiempo ocupara el lugar de Windows.
- es un sistema bueno mas estable pero requiere mucha memoria y es por comandos complicados.
Esta y otras muchas explicaciones que le quitarían a cualquiera el deseo de interaccionar con Linux ya que lo que se contaba o se cuenta de el es producto del desconocimiento y de la desinformación producida quien sabe si hasta por el propio Bill Gates.

Entonces, para los que quieran saber de forma sencilla y rápida que es y como trabaja Linux le diré que en ambiente es parecido a Windows, sus aplicaciones soportan los documentos hechos con Windows y los que realices en el, puedes salvarlos con extensión .doc, xls, etc. Admite trabajar en redes de Windows y los programas malignos que atacan system32 se quedan “congelados” en Linux.

Las aplicaciones del paquete Open Office (el equivalente a Microsoft Office) son casi similares en el ambiente de trabajo a las de Windows. El navegador por excelencia de Linux ya ha traspasado la frontera de este y se usa de forma habitual en Windows (Mozilla Firefox). Además el usuario puede mejorar las aplicaciones y el sistema desde su PC y compartir sus experiencias con otros ya que al final Linux es OpenSource.

El inconveniente principal que le encuentro en la actualidad es que para instalar alguna versión de Linux (CentOS, Debian, Ubuntu y otros) hacen faltas varios CDs o trasladar el disco duro hasta donde se puedan copiar los archivos de instalación. Esto ya de por si lo pone en desventaja con Windows para el cual con un CD se puede instalar cualquiera de sus versiones. Claro hay que aclarar que las versiones de Linux ya prácticamente trae la instalación completa de las aplicaciones para la ofimática la conectividad, reproducción de multimedia y programación; todo esto como es lógico basado en el principio del OpenSource. También otro problemilla para Linux es que todavía es algo complicada su instalación, pero por lo demás no tiene nada que envidiarle a Windows.

VENTAJAS LINUX:

• Precio - El coste total de propiedad de sistemas basados en GNU/Linux es menos de la mitad que el de sistemas propietarios como Microsoft Windows. A menudo, es incluso una cuarta parte o menos.

• Seguridad - Los sistemas GNU/Linux son mucho menos vulnerables a ataques de crackers que los sistemas propietarios.

• Versatilidad - Con GNU/Linux, tienes la libertad para instalar y combinar los programas que más te gusten, y de modificarlos para que se adapten perfectamente a tus necesidades.

• Transparencia - Al disponer del código fuente, puedes tener la seguridad de que los programas no están haciendo sin tu consentimiento algo que no desearías (lo que no siempre es cierto con sistemas propietarios como Windows; por ejemplo Windows guarda registros secretos de todo lo que haces en tu computadora).

• Independencia - Con GNU/Linux, ninguna empresa puede ir gradualmente minando tus derechos y privacidad.

GNU/Linux ha avanzado hasta el punto en el que cualquier usuario con unos conocimientos moderados de informática puede pasar su sistema a GNU/Linux, sin perder ninguno de sus viejos datos de Windows.
Ya espero que tengas la respuesta, Linux actualmente no es tu SO porque tu no lo deseas.

Continuar leyendo

Regedit a fondo (Parte II)

Alien [blackhat4all@gmail.com]

HKEY_CLASSES_ROOT

Para Windows, todo es un objeto, carpetas, ventanas, archivos, incluyendo la hermosa foto de Beyonce que tenemos en el escritorio. Todo, absolutamente todo es un objeto. Los que saben un tilín, entenderán que esto significa, pero para los que no, les diré que en computación, decir objeto, significa que tiene propiedades, métodos, eventos, y demás (ayudaría leerse algunas cositas sobre programación).

En esta clave, es donde Windows encontrará las propiedades que tiene cada objeto al que tratemos de acceder.

Ejemplo:
Por lo general la extensión .midi está asociada a archivos de sonido. Si buscamos dentro de esta clave superior la subclave que defina a está extensión podremos ver algo como:

Nombre:                  Datos:
(predeterminado)      "midfile"
Content Type           "audio/mid"

Pues tenemos un objeto "midfile" con propiedades "audio/mid", es decir, midfile está asociado a audio/mid, un cambio de este "Value" nos dejaría sin poder escuchar los magníficos códigos que nos proporciona h0aX, así que mejor ni anden ahí. Es preferible probar con las que dicen .exe (aclaro para los novatos que esta última línea no va en serio).

Podemos ver claves que almacenan información más compleja o más reducida, pero todo está en dependencia de la cantidad de Software que instalemos. Por ejemplo, al instalar Photoshop se crea una clave de nombre .psd y que nos dice que los archivos que terminen con esta extensión están asociados a este programa, pero si luego de esto tratamos de instalar ACDSee, al culminar la instalación podremos ver un cartel donde se trata de modificar la asociación de archivos, y entre uno de ellos estará .psd (para más información leer la ley de la relatividad)

Si hurgamos un poco más veremos que existen otras subclaves con nombre muy diversos, pero entre ellos casi siempre coincide haber uno de estos:

Shell: Determina acciones tales como abrir, imprimir, copiar, etc. Por ejemplo una "Subkey" de este tipo determina que reproductor multimedia abre nuestros archivos *.mid.

Shellex: Contienen "Subkeys" que determinan las funciones OLE y DDE para cada tipo de objeto, no son más que cadenas numéricas que apuntan por ejemplo a la dll que ejecuta una determinada operación y definen las propiedades de sus menús contextuales.

Shellnew: Contienen el valor de la cadena numérica del comando u orden que determina la apertura de un nuevo objeto. Un ejemplo muy sencillito es la clave *.BMP cuya shellnew nos indica el programa con que editaremos una nueva imagen de este tipo.

Default Icon: Contienen el valor de la cadena numérica que nos indica el icono por defecto de cada tipo de objeto, normalmente apuntarán al shell32.dll, pifmgrd.dll ( en \windows\system) o moricons.dll ( en \windows) tal que al primer icono de la lista le asigna el 0 al siguiente el uno y así sucesivamente de la siguiente manera:
C:\Windows\moricons.dll,0

En sentido general las principales funciones de esta clave superior son:
1. Asociar la extensión de un archivo a un tipo de objeto.
2. Asociar un ícono a un tipo de objeto.
3. Asociar una serie de acciones de la línea de comandos a un tipo de objeto.
4. Asociar las opciones de los menús contextuales a un tipo de objeto.
5. Definir lo que aparecerá en la ventana de propiedades para cada tipo de objeto.

HKEY_CURRENT_USER

Como dije en la edición anterior, en esta clave de nivel superior se guardan todas las configuraciones que requiera el usuario que en este momento está operando en la computadora. En caso que solo exista un solo usuario registrado, entonces esta clave de nivel superior será idéntica al .DEFAULT de HKEY_USERS.

Aunque no deja de tener cierto riesgo, el temor de entrar aquí debe ser menor que al intentar hacerlo en otras secciones del registro, y el caso es que todo, absolutamente todo lo que aquí aparecerá, se puede modificar además usando algún comando, programa o utilidad que tenga implementado Windows, es decir, desde aquí no se hará nada del otro mundo, sino más bien configurar el comportamiento de nuestro sistema.

Para los más “registrones”, les aseguro encontrarán bajo esta clave todo lo que necesitan para el cracking; números de serie, datos que nos imposibilitan registrar nuestras aplicaciones, y demás cosas “interesantes”.

Esta clave de nivel superior nos da acceso a varias subclaves, y aunque no pienso listarlas todas, si hay algunas que merecen la pena explicar.

En AppEvents se guardan todas las “pajarerías” (disculpen la palabra pero no encontré un mejor sinónimo) que hace Windows, desde la musiquita que nos avisa que un programa se ha cerrado, hasta el efecto que realiza para dicha acción.

Control Panel es una copia exacta del Panel de Control, la única diferencia es que en el segundo vemos las cosas, en el primero tenemos que leerlas.

Printers… (Sin comentarios)

La clave software puede sernos de gran utilidad o “trabajar” por completo en nuestra contra. La utilidad radica en que hay es a donde van a parar todos los números de serie, direcciones de programas, fechas de instalación de los software, nombres de usuarios con que se ha registrado, compañías, etc. Y esto desde luego puede resultar necesario en ocasiones si queremos saber detalles más íntimos de una PC, pero la cosa se complica si alguien logra obtener esa misma información de nuestro ordenador. Si algo bueno (o malo según el caso), tiene esta clave, es que no solo alberga la información de los programas que tenemos instalados en el momento, sino que es capaz de darnos información sobre todo lo que hemos instalado desde que se formateo el HDD por última vez.

HKEY_LOCAL_MACHINE

Esta clave de nivel superior funciona de forma idéntica a la anterior, solo que no se enfoca en el usuario, sino en el Hardware. Tipos de dispositivos, información de los mismos, saber si está registrado o no, etc. Todo esto y más se obtiene con registrar esta clave a fondo.

De esta clave sugeriría entrar a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. Al navegar por las subkey de esta clave, obtendremos información también importante y por lo general de fácil acceso, aparecerán claves con nombre como: “ComputerName” que evidentemente darán información sobre el nombre de la computadora. En realidad saber el significado de las demás claves es algo que con un poco de práctica y dominio del ingles se puede lograr.

Por mencionar nos faltaría HKEY_USERS, que no es más que una clave en la que se guarda la con figuración de todos los demás usuarios que coexisten junto con nosotros en la computadora y HKEY_CURRENT_CONFIG, que no es más que una clave de nivel superior que se ejecuta solo al inicio del sistema, y contiene únicamente las instrucciones básicas que debe conocer la computadora para ejecutarse, esto sin tener en cuenta la configuración que le haya dado un usuario específico a su sesión.

Hasta aquí he explicado, primeramente en la edición pasada un Preview del registro exponiendo las cosas que considero básicas, en este artículo voy un poco más a fondo, pero he dejado lo mejor para el tercero y final, donde ya con los conocimientos que espero hayan extraído de los anteriores textos, puedan lograr hacer algo más que ocultar del menú inicio la opción buscar.

Para la semana que viene estaremos hablando ya de cosas más serias: modificaciones por software y manual, acceso a datos por software y manual, algún que otro truquito que sea beneficioso en cuanto a optimización de nuestro ordenador y hasta un poco de ingeniería inversa (Cracking).

Continuar leyendo