Mini manual para entender las calidades de las películas descargadas y no morir en el intento

Rollo de película

Rollo de película

Cuando tenemos la intención de descargar una película de Internet por medio de cualquier software de intercambio entre pares o P2P (eMule, eDonkey, Azureus, Ares, uTorrent, Pando…), al realizar una búsqueda es posible que obtengamos numerosos archivos de la película que deseamos descargar. El tamaño de estos archivos puede variar, así como su calidad de audio y vídeo, desde 600 Mb hasta más de 4 Gb, aproximadamente. Ello es debido a la forma en que ha sido copiada la película, y es que no es lo mismo una copia exacta de un DVD que una grabación clandestina con una cámara de vídeo en una sala de cine.

Por norma general existe una regla no escrita entre las personas que se dedican a ripear películas a la hora de nombrar los archivos que comparten. Seguro que, tras una búsqueda en eMule, más de una vez nos hemos tropezado con nombres de archivos de película como el siguiente:

Juegos de Guerra 2 (Spanish) 2007 DVDRIP Xvid-Mp3 (Centraldivx.com).avi

Es posible que nunca nos hayamos parado a observar todo lo que va más allá del título, pero lo cierto es que nos ofrece toda la información necesaria para saber la calidad que obtendremos tras la descarga.

Después del título aparece el idioma de la película entre paréntesis y el año de la producción. Con respecto a estos términos no comentaré nada más, porque son lo suficientemente claros como para arrojar más luz sobre el tema. Simplemente apuntar que el idioma puede aparecer escrito en inglés (lo más común) como en este ejemplo (Spanish), puede aparecer en español (Español), o incluso abreviado (ES, SP, ESP, SPA, etcétera). A la hora de realizar una búsqueda es conveniente introducir alguno de estos términos para cribar los resultados al máximo.

Lo que sigue al año de producción (DVDRIP Xvid-Mp3) es precisamente lo que nos informa sobre la calidad en la que está ripeada la película. En este caso vemos que es una copia directa de DVD (DVDRIP), que el códec de vídeo es Xvid y el de audio es MP3.

Vamos a ver a continuación las distintas calidades que puede tener un archivo de película y cómo se especifica, generalmente, en su nombre. Comenzaremos por la calidad peor y terminaremos por la mejor.

1. Cam

  • En el nombre de archivo aparece como: CAM
  • Origen del vídeo: Cámara (sin trípode, generalmente)
  • Origen del audio: Cámara
  • Calidad de vídeo: Muy baja
  • Calidad de audio: Muy baja

Este tipo apenas se usa en España por su baja calidad. Se corresponde con la grabación directa del vídeo y el audio en una sala de cine por un espectador, sin trípode ni ningún tipo de interés porque la calidad sea mínima.

Suelen ser estrenos muy recientes.

2. TeleSync

  • En el nombre de archivo aparece como: TS, TS-Screener, Telesync o Screener
  • Origen del vídeo: Cámara (con trípode)
  • Origen del audio: Origen externo limpio
  • Calidad de vídeo: Baja-Media
  • Calidad de audio: Media

Esta calidad es la más usual para los screeners en España. El vídeo es una grabación en la sala de cine con una cámara montada sobre trípode, y la calidad puede ser muy buena o nefasta, dependiendo de quién realice la grabación, con qué tipo de cámara y en qué condiciones (cine cerrado o con gente, iluminación, etcétera). El audio se obtiene de un medio externo limpio de ruido y, posteriormente, se sincroniza con la imagen mediante software. Este medio externo suelen ser los conectores de audífonos especiales para sordos de algunos cines o el sistema principal de sonido de la sala.

A este tipo se le suele llamar screener a secas. Suelen ser estrenos recientes.

3. VHS-Screener / VHS-Rip

  • En el nombre de archivo aparece como: VHS-Screener, VHS-Rip
  • Origen del vídeo: Cinta VHS
  • Origen del audio: Cinta VHS
  • Calidad de vídeo: Media
  • Calidad de audio: Media

Son películas ripeadas directamente desde una cinta VHS. La calidad es la de la cinta en cuestión.

Suelen ser antiguas películas descatalogadas o que no han aparecido en DVD.

4. TeleCine

  • En el nombre de archivo aparece como: TC, TC-Screener o Telecine
  • Origen del vídeo: Proyector de cine
  • Origen del audio: Proyector de cine
  • Calidad de vídeo: Media-Alta
  • Calidad de audio: Media-Alta

Este tipo de películas se traspasa directamente desde las salidas de los proyectores de cine a DVD o VHS. No era muy común verlas en España, pero ahora empiezan a irrumpir con fuerza.

Los países de Europa del Este y Rusia son los mayores productores de este tipo de calidades y, lo que se suele hacer, es extraer el vídeo de un TeleCine extranjero y sincronizar el audio captado en español en una sala de cine (algo parecido al DVD-Screener que se ve posteriormente).

Suelen ser estrenos recientes.

5. DVD-Screener

  • En el nombre de archivo aparece como: DVD-Screener o DVD-SCR
  • Origen del vídeo: DVD
  • Origen del audio: Origen externo limpio
  • Calidad de vídeo: Alta
  • Calidad de audio: Media

En este tipo de calidad el vídeo se extrae de un DVD promocional o de un DVD que ya ha salido en otros países antes que en España. El audio se obtiene de un origen limpio como los mencionados en la sección de TeleSync. Posteriormente se sincronizan.

Suelen ser películas no muy recientes, al menos en España.

6. DVD-Rip

  • En el nombre de archivo aparece como: DVD-Rip
  • Origen del vídeo: DVD
  • Origen del audio: DVD
  • Calidad de vídeo: Alta
  • Calidad de audio: Alta

Este tipo se corresponde con el ripeo tal cual de un DVD. Tanto el vídeo como el audio se extraen del DVD original, por lo que la calidad es muy buena, siempre y cuando se realice por una persona experta en tales lides. Muchas veces aparece antes de que se publique la película original, vía copias previas enviadas a los críticos de cine. Esto hace que los rips de mala calidad desaparezcan o no lleguen ni a aparecer.

Son películas que ya han salido en DVD.

7. DVD-R

  • En el nombre de archivo aparece com: DVD-R
  • Origen del vídeo: DVD
  • Origen del audio: DVD
  • Calidad de vídeo: Muy alta
  • Calidad de audio: Muy alta

Este formato de calidad se corresponde con la copia exacta de todos o algunos de los contenidos de un DVD sin ripear, es decir, sin compresión alguna, por lo que no existe pérdida de calidad. Suelen contener la película en dos o tres idiomas e, incluso, los subtítulos.

El problema es que el tamaño de un DVD original es demasiado grande para copiarlo en un DVD grabable normal de 4,7 Gb (DVD-5). Podría caber en un DVD de doble capa (DVD-9) que permite hasta 8,5 Gb o en uno mayor (existe hasta DVD-18), pero estos soportes no suelen ser admitidos por la mayoría de los reproductores de DVD de salón ni por muchos reproductores informáticos de DVD. Por todo ello, a excepción de algunas películas antiguas de dibujos animados que no tienen mucha duración, los extras del DVD original no suelen ser incluidos en este
formato.

Son películas que ya han salido en DVD. Tienen grandes tamaños, cercanos a los 4 Gb o más. Se suelen distribuir en la red BitTorrent. Lo que descargamos son archivos .VOB, .IFO y .BUP que han de ser quemados como DVD de vídeo.

8. Imagen de DVD

  • En el nombre de archivo aparece como: ISO, NRG, BIN, CUE, MDF, MDS
  • Origen del vídeo: DVD
  • Origen del audio: DVD
  • Calidad de vídeo: Muy alta
  • Calidad de audio: Muy alta

Las imágenes de DVD son copias exactas de DVD completos. En este caso se copia completamente un disco con la película, los idiomas, los subtítulos y todos los extras.

Son películas que ya han salido en DVD y que o bien no tienen muchos contenidos o bien duran menos que una película normal. Sobre todo películas de dibujos animados, actuaciones, vídeos musicales, documentales, series, etcétera.

9. BR-Rip

  • En el nombre de archivo aparece como: BR-Rip o BD-Rip
  • Origen del vídeo: BluRay Disc
  • Origen del audio: BluRay Disc
  • Calidad de vídeo: Excelente
  • Calidad de audio: Excelente

Son rips de discos BluRay con calidades 720p y 1080p. Al igual que con el resto de formatos, depende de la habilidad de la persona que lo genere para que la calidad sea mejor o peor. Aún así, a igual tamaño e igual proceso que un DVD-Rip, un BR-Rip tendrá mejor calidad simplemente porque la fuente es mejor.

Son películas ya aparecidas en BluRay Disc.

10. Otras denominaciones

Al calor de las anteriores denominaciones “oficiales” de calidades han ido apareciendo otras menos conocidas (la mayoría referidas a televisión para ripeos de series y películas) pero que cada vez van tomando más importancia. A continuación vamos a detallar algunas de ellas.

  1. TV-Rip: Es un rip directo de un programa o película de televisión.
  2. DVB-Rip: Rip a partir de una señal de TDT (Televisión Digital Terrestre).
  3. HDTV-Rip: Rip de televisión digital de alta definición.
  4. PDTV-Rip: Es un rip de televisión digital pura. Se obtiene con tarjetas sintonizadoras de televisión capaces de recibir TDT.
  5. DSR-Rip: Rip de satélite de señal digital.
  6. LD-Rip: Rip de LaserDisc.
  7. R5-Rip: DVD para la región 5 de Europa del Este, India, África, etc. Son copias hechas con un TeleCine analógico. Muy raras en España.
  8. Workprint (WP): Es un montaje no finalizado de una película que se envía a críticos y productores bastante antes de la versión final. Suelen ser películas con escenas que luego no aparecen en la versión definitiva, con marcas de agua, rótulos o contadores de segundos.

Además de la calidad de grabación de una película, es importante tener en cuenta el formato de vídeo y el formato de audio con los que está ripeada. El formato y el códec (del que hablaba al principio de este mini manual) están íntimamente relacionados, porque deberemos tener los codecs adecuados para reproducir tanto la imagen como el sonido de los distintos formatos. Además, los reproductores de salón sólo aceptan algunos de los formatos más conocidos y utilizados.

A continuación enumeraremos los más usuales con los que nos vamos a encontrar ripeada una película.

Formatos de vídeo

  • DivX y Xvid (AVI): Son formatos de codificación con los que obtendremos calidades similares a los de un DVD. Permite comprimir casi 2 horas de película en, aproximadamente, 700 Mb. Es el más común de los formatos de vídeo.
  • VídeoCD (VCD): Es el formato más veterano. Utiliza la compresión MPEG-1 a un bitrate fijo. Ofrece calidad de VHS y una película de 2 horas necesitará de 2 CD de 700 Mb para entrar correctamente. Es el formato más compatible.
  • Súper VídeoCD (SVCD): Formato basado en compresión MPEG-2. Distribuye los bits de una forma más eficiente que el anterior. Es menos
    compatible que el VCD. Una película necesitará de 2 ó 3 CD de 700 Mb, pudiendo llegar a alcanzar calidad de LaserDisc.
  • CVCD: Formato igual al VCD pero con mayor compresión.
  • KVCD: Al igual que el anterior deriva del VCD pero con una tasa de compresión todavía mayor.
  • RAT-DVD: Este formato permite comprimir una película respetando todo su contenido (menús, extras, subtítulos…) para ser visualizada exclusivamente en un ordenador con Windows XP, DirectX 9 y Windows Media Player 10 o WinDVD casi exclusivamente.

Formatos de audio

  • MP3: Este códec (MPEG Layer 3) es el más extendido y compatible. Tiene como peculiaridad un ratio de compresión 11:1 sin pérdida de calidad de sonido audible.
  • WAV: Formato propietario de Microsoft sin compresión.
  • WMA (Windows Media Audio): De compresión parecida al MP3 y de calidad también similar.
  • AAC: Codificación estándar para audio reconocida por ISO en el patrón MPEG-2. En teoría almacena más que un MP3 y en menos espacio. Formato utilizado por Apple.
  • AC3: Códec para reproducir audio en el sistema Dolby Digital AC3.
  • RA (Real Audio): Soporte multimedia creado por la empresa Real Network, con una alta tasa de comprensión y algoritmos especiales que reducen considerablemente el tamaño de los archivos de sonido.
  • OGG: Lo que diferencia a Ogg Vorbis del resto es que es gratuito, abierto y no está patentado. Su principal atractivo es la importante reducción que hace de un archivo de audio sin restarle calidad. Así mismo, se distingue por su versatilidad para reproducirse en prácticamente cualquier dispositivo.

Para terminar decir que además del formato de audio y vídeo y la calidad de ripeo, en el nombre de un archivo de película descargado podemos encontrar multitud de detalles más. Vimos al principio que suele aparecer el año de producción, el idioma (imprescindible) o el ripeador o sitio web que alberga el enlace. Pero también alguno de los siguientes textos que voy a detallar.

  1. SUBBED XXX: La película tiene subtítulos incrustados en lenguaje XXX.
  2. DUBBED XXX: La película no está en versión original, está doblada al lenguaje XXX.
  3. WS: WideScreen. Dimensiones originales, con bandas negras.
  4. FS: FullScreen. A pantalla completa, sin bandas negras.
  5. REPACK: Cuando alguna película ha salido ripeada con algún fallo, puede aparecer otra con esta leyenda indicando que está solventado.
  6. NUKED: No aprobada. Versión que no cumple las reglas de ripeo acordadas. Puede haber varias razones (BAD A/R, BAD ASPECT RATIO, BAD IVTC…).
  7. PROPER: Según las normas no escritas, el primero que saca una película (normalmente TS-Screener o TC-Screener) gana la «carrera» y nadie más puede publicar esa misma película. Pero si la calidad de la primera publicación es muy mala, otro grupo tendrá «el permiso» de publicarla como una versión «apropiada».
  8. LIMITED: Significa que se ha visto en menos de 250 cines (en EEUU).
  9. INTERNAL: De distribución interna. Algunas películas se distribuyen de esta forma por varios motivos. Normalmente es para recuperar viejos ripeos en DVD (es decir, duplicar una película ya publicada hace tiempo) o cuando la fuente es una grabación de mala calidad.

Como resumen podríamos decir que es muy importante leer el nombre del archivo de película que nos vamos a descargar, ya que no es lo mismo, como hemos podido comprobar, que sea TS-Screener o DVD-Rip, que el códec de vídeo sea Xvid o VCD o que sea WS o FS.

Teniendo estos pocos detalles en cuenta, seguro que lo que bajemos de Internet será más adaptado a lo que deseamos obtener en una primera vez y únicamente descargando un único archivo por película.

Eso sí, los fakes que resultan en películas porno en lugar de esa última superproducción que queríamos haber bajado, van a seguir colándosenos por siempre jamás. Aunque una buena actitud es desconfiar de los DVD-Rip de películas todavía en las salas de cine. Por lógica.

Frases con historia (II)

No hay ninguna razón para que un individuo tenga un ordenador en su casa.

Ken Olson, Presidente de Digital Equipment Corporation. 1977.

14 errores lingüísticos demasiado comunes

Error

Error

Con este post estreno la categoría Off topic, es decir, esta es una entrada que no tiene nada que ver con el tema (o tópico) principal del blog, que se supone que es la tecnología o la informática o Internet o yo que sé. ¿Y por qué ahora? Pues porque me sale de los audiobaudios, qué pasa.

NOTA MENTAL: explicar alguna vez lo que son eran los audiobaudios, que seguro que nadie lo sabe, porque no aparece ni en el Google.

El caso es que siempre he querido escribir un post como el que están ustedes a punto de leer, y como mi intención no es dedicarme a hablar de la lengua española muy a menudo, pues lo encajo con calzador en la categoría Off topic y listo.

¡Pero calla de una vez y cuenta lo que tengas que contar, pesado! Ya voy, ya voy.

Hablaremos, pues, de errores lingüísticos demasiado comunes. No piensen que van a encontrar aquí errores del tipo «me se ha caído», «la agüela» o «el sartén», no. Lo que voy a pasar a comentar es una serie de incorrecciones que, de tan comunes y aceptadas, las cometen prácticamente la totalidad de los hablantes en esta lengua. ¿Ah sí? Pues sí, usted también seguramente. Al menos algunas de ellas.

Y es que a lo largo de los años he ido recopilando una serie de patadas al diccionario que, incluso, yo mismo he propinado en tiempos pretéritos y que, cuando descubrí la luz, a veces hasta me asusté de lo borregos que llegamos a ser los seres humanos. Todos por la misma senda.

Son palabras, expresiones y demás que, no sé por qué oscura razón (de razones hablaré someramente), se han tomado como buenas cuando, en realidad, son erróneas. Pero no piense que usted y yo, de pueblo de toda la vida, somos los únicos que las decimos mal, no. Son errores cometidos por redactores de medios de comunicación, políticos (mal ejemplo, pero bueno) e incluso escritores de renombre. Sí, sí. ¿A que le pica la curiosidad, eh? Pues vamos allá.

Para una identificación más clara, escribiré lo erróneo en color rojo y lo correcto en azul.

ERROR DEMASIADO COMÚN Nº 1: Se dice radiactividad, no radioactividad.

No es un buen modo de comenzar, porque la Real Academia Española de la Lengua acaba de admitir hace cuatro días la palabra errónea, dándola por válida. Y precisamente ha sido así porque su profusa utilización (mala utilización) ha conllevado a aprobar algo que está mal dicho.

No es la primera vez que ocurre, y es que cuando la conciencia de inexactitud sobre algo desaparece, los poderes lingüísticos responden autorizando lo incorrecto, siempre y cuando sea una cosa lógica, claro está. No vayamos a pensar que admitan en un futuro la palabra «fistro» porque mucha gente la utilice (o sí, ¿quién sabe?).

Sospecho que la «o» esa que se coló en la palabra radiactividad fue por similitud con el elemento químico radiactivo denominado radio, aún así, la RAE sigue aconsejando que de forma mayoritaria y preferible se siga escribiendo (y diciendo) radiactividad.

Algo parecido pasa con la voz «paralímpico», a la que mucha gente (no mucha, mucha, y cada vez menos) le mete una «o» por ahí en medio.

ERROR DEMASIADO COMÚN Nº 2: Se dice eructo, no erupto.

Afortunadamente es un error demasiado común que va desapareciendo con el tiempo. Es curioso que muchos hablantes sean prácticamente incapaces de pronunciar una «p» al final de una sílaba; la verdad es que es algo raro en castellano. Pero existe un gran número de personas que pronuncian «captus» o «cóptel» en lugar de «cactus» y «cóctel». Esa misma impericia ha hecho que la palabra «eructo» se haya ido deformando con el pasar del tiempo y convirtiéndose en un error demasiado común, sobre todo entre los niños y los más jóvenes.

Por supuesto, las variantes palurdas como «eruto» o «iruto» son totalmente reprobables.

ERROR DEMASIADO COMÚN Nº 3: Se dice Ku Klux Klan, no Ku Kux Klan.

Al clan de organizaciones racistas, antisemitas, xenófobas y anticomunistas de EEUU parece que se le ha perdido la letra «l» de su segunda palabra. Poca gente he oído que pronuncie y escriba bien este nombre, informativos de Tele 5 incluidos.

Después de la Guerra de Secesión americana se formó el KKK. El nombre del clan se compuso a partir del vocablo griego kuklos (círculo). El capitán Kennedy añadió Klan en recuerdo de los grupos familiares ancestrales, ya que todos tenían ascendencia escocesa. Los fundadores decidieron escribir clan con «k», para darle más notoriedad a la organización. Les gustó el sonido rítmico de las palabras y decidieron separar «Kuklos» en dos palabras, cambiando la «o» por la «u» y la «s» final por una más impactante «x».

ERROR DEMASIADO COMÚN Nº 4: Se dice estalagmita, no estalacmita.

Es curioso que la que cuelga de arriba se llame estalactita (con esa «c» en medio) pero la que se forma por debajo se llame estalagmita (con una «g» en medio). Es muy curioso, pero es así.

El término estalactita proviene del griego culto stalaktos (que gotea), y la palabra estalagmita viene también del griego culto stalagma (filtración). Muy parecidas pero con una sutil diferencia, ¿verdad?.

El hecho de que estalactita se escriba con «c» ha propiciado que a la pobre estalagmita se la crucifique con una «c» también, en lugar de su correcta «g».

ERROR DEMASIADO COMÚN Nº 5: Se dice grosso modo, no a grosso modo.

Entre los errores demasiado comunes, éste es uno de los más demasiados y de los más comunes de todos los errores. Cometido con total impunidad por maestros, profesores, periodistas, presentadores y locutores.

La preposición «a» que se cuela delante de este latinismo parece ser influencia de otras expresiones castellanas con parecido significado que sí es correcto que la lleven, como ‘a vuelapluma’, ‘a ojo de buen cubero’ o ‘a bulto’. Sin embargo, «grosso modo» es una locución latina que prescinde totalmente de dicha preposición para completar su significado.

Así pues, una oración correcta sería, por ejemplo, ‘les voy a explicar a ustedes, grosso modo, cómo funciona la economía sumergida’.

ERROR DEMASIADO COMÚN Nº 6: Se dice motu proprio, no motu propio.

Entiendo que es una puñetada pronunciar «proprio» sin atragantarse; demasiadas erres para dos sílabas de nada. Pero, lo siento, este es otro giro de la lengua latina que prácticamente el 100% de los hablantes dice de manera errónea.

Utilizado como expresión para indicar que se hace algo espontáneamente, sin responder a petición previa, se utiliza mucho en la lengua española, por lo que ha ido derivando en el sentido del adjetivo «propio» castellano, que nada tiene que ver con el «proprio» latino. «Propio» es el caso ablativo de proprius (con movimiento propio) y, como tal ablativo que es, ya lleva implícita la preposición que, y este es otro error, muchas veces se le coloca por delante.

Por lo tanto, y aparte de la «r» de marras, como hemos comentado ya con «grosso modo», tampoco deben utilizarse las preposiciones «de» o «por» (‘de motu proprio’, ‘por motu proprio’) antes de este latinismo. Una frase correcta sería, por ejemplo, ‘el acusado admitió su falta motu proprio en la segunda jornada del juicio’.

ERROR DEMASIADO COMÚN Nº 7: Se dice areola, no aureola.

Aunque esta afirmación no es del todo correcta, porque ambas palabras existen, me estoy refiriendo, por supuesto, a ese círculo rojizo algo moreno que rodea el pezón de los pechos. Eso que todos tenemos, y que a las mujeres se les nota algo más, se denomina areola, o aréola también. Aureola (con «u») es el resplandor, disco o círculo luminoso que suele figurarse detrás de la cabeza de las imágenes sagradas.

Este es otro ejemplo de error demasiado común aceptado por la RAE, ya que hoy día es correcto utilizar «aureola» por «areola», aunque, de nuevo, la Academia recomiendo el uso del segundo término.

ERROR DEMASIADO COMÚN Nº 8: Se dice impreso, pero también imprimido.

Es curioso que en los últimos tiempos cada vez oigo más la palabra «impreso» y menos la palabra «imprimido». Parece que a los nuevos repipis de la lengua les suena a cateto eso de»imprimido» y te sueltan en cualquier momento ‘¿has impreso lo que te mandé?’.

Pues bien, en castellano existen alguno verbos que tienen dos participios, uno regular («imprimido») y otro irregular («impreso»). Estos verbos utilizan su participio regular sólo como adjetivo y nunca como verbo, a excepción de «freír», «imprimir» y «proveer». (Sí, freír tiene forma regular de particio, es correcto decir ‘he freído’, aunque se considera arcaico).

Los dos participios pueden utilizarse indistintamente en la formación de los tiempos compuestos y de la pasiva perifrástica, aunque la preferencia por una u otra forma varíe en cada caso. Según la RAE lo lógico es utilizar el participio regular «imprimido» en oraciones activas con el verbo conjugado como participio, por ejemplo: ‘he imprimido el documento’, ‘¿has imprimido lo que te envié?’ o ‘hemos imprimido el libro completo’, y el participio irregular «impreso» cuando actúe como adjetivo: ‘coja usted un folleto impreso del mostrador’ y en oraciones pasivas ‘el manual de usuario ha sido impreso en Alemania’.

Por lo tanto, tan bien dicho está ‘he imprimido’ como ‘he impreso’, pero la primera forma es (o debería ser) la más aceptada. Lo que nunca utilizaremos es la forma regular en los casos en los que sea un participio como sustantivo, es decir, cuando se utiliza la forma verbal como un nombre. Nunca diremos ‘tiene usted que rellenar el imprimido’, sino ‘tiene usted que rellenar el impreso’.

ERROR DEMASIADO COMÚN Nº 9: Se dice incluido, no inclusive.

Tampoco es una afirmación correcta del todo, ya que ambos términos existen. Me refiero aquí a la proliferación de carteles y cartelitos que veo, y cada vez más, en comercios de todo tipo. Esos cartelitos que rezan ‘Este establecimiento permanecerá cerrado desde el día 1 hasta el día 14, ambos inclusive’.

Vamos a ver, «inclusive» es un término que proviene del latín escolástico y que significa incluyendo el último objeto nombrado. Lo correcto sería escribir ‘Este establecimiento permanecerá cerrado desde el día 1 hasta el día 14, ambos incluidos’ o ‘Este establecimiento permanecerá cerrado desde el día 1 hasta el día 14 inclusive’. Pero nunca lo anterior.

ERROR DEMASIADO COMÚN Nº 10: El problema con súper y super-.

En castellano existen tres palabras muy parecidas, a saber, el adjetivo «súper» (‘mi coche utiliza gasolina súper’, ‘tenemos un plan súper para esta noche’), el sustantivo «súper», que es un acortamiento coloquial de la voz «supermercado» (‘vamos al súper a comprar leche) y, por último, el elemento compositivo prefijo «super-«, que denota lugar situado por encima, superioridad o excelencia (‘superpotencia’, ‘superpoblación’ o ‘superproducción’). El problema recae en este último, y es que la RAE sólo acepta el prefijo «super-» cuando precede a sustantivos y nunca a adjetivos o adverbios.

Así pues, palabras como ‘superhombre’, ‘supercasa’ o ‘supercamión’ serían correctas, pero nunca lo serían otras como ‘superbien’, ‘superútil’ o ‘superreservado’, que tan de moda están.

En su caso, la Real Academia acepta que en el español coloquial actual se usa «super-» con mucha frecuencia para añadir valor superlativo a los adjetivos o adverbios a los que se une, pero nunca admite abiertamente su utilización como correcta. De todas maneras, advierte también que si se utiliza de esta forma, debe escribirse junto a la palabra, sin guiones y sin tilde, y no confundirlo con el otro «súper».

Es el típico ejemplo de algo que, no tardando mucho, será aceptado por la RAE, y Paris Hilton, cuando venga a España, podrá decir sin complejos y sin miedo a equivocarse que esto o aquello es superguay.

ERROR DEMASIADO COMÚN Nº 11: Se dice no, no para nada.

Vaya lío que me ha quedado; lo explico.

Les ha dado también últimamente a los recursis por contestar con un «para nada» a la hora de negar algo categóricamente. Pues bien, en castellano sólo se acepta un adverbio de negación, y ese es nuestro querido «no». Ahora bien, nadie dice que este «no» no pueda ir acompañado, pero nunca sustituido. Así, si alguien nos pregunta a ver si nos hemos hecho del Opus, nunca contestaremos ‘¡Para nada!’, es erróneo, sino ‘¡No, para nada!’; o con un simple y sencillo ‘¡No!’.

ERROR DEMASIADO COMÚN Nº 12: Yo no doy más de mí.

Una expresión que a veces plantea dudas de concordancia es aquella de «dar de sí» (‘María no da más de sí’ o ‘Esta camiseta se ha dado de sí’). El problema es que siempre se tiene que mantener la concordancia entre el sujeto y el pronombre que sigue a la preposición «de». O sea, diremos: ‘yo no doy más de mí’ y ‘tú no das más de ti’. Todos los demás con «sí». Se considera incorrecto decir ‘yo no doy más de sí’, aunque está bastante arraigado en el habla popular como para eliminarlo de un plumazo.

ERROR DEMASIADO COMÚN Nº 13: Se dice encima de mí, no encima mío.

Este error es otro de esos que lo comete prácticamente el 100% de los hablantes. El origen de este error está en equiparar el complemento preposicional introducido por la preposición «de» (‘detrás de María’) con los complementos de posesión, de estructura formalmente idéntica (‘la casa de María’). Sin embargo, se trata de construcciones diferentes: en la primera (‘detrás de María’), el núcleo del que depende el complemento preposicional es un adverbio («detrás»), mientras que en la segunda (‘la casa de María’) es un sustantivo («casa»). Puesto que los adjetivos posesivos son modificadores del sustantivo, sólo si el complemento encabezado por «de» depende de un sustantivo puede sustituirse sin problemas por un posesivo: ‘la casa de María’ = ‘su casa’ o ‘la casa suya’.

Sin embargo, los adverbios no son susceptibles de ser modificados por un posesivo, de forma que no admiten la transformación descrita: ‘detrás de María’ no equivale a ‘su detrás’, por lo que no es admisible decir ‘detrás suyo’. En consecuencia, no se dice ‘delante mío’, ‘detrás tuyo’ ni ‘encima mío’, sino ‘delante de mí’, ‘detrás de tí’ y ‘encima de mí’.

Evidentemente, los derivados utilizados en el sur de España, del tipo «encima mía», tampoco son correctos. Particularmente soy un defensor a ultranza del idioma andaluz (porque yo lo considero un idioma, no un dialecto o un deje) y me encanta escuchar algo como ‘¡quillo, no te sienteh ensima mía, que mira que canijaso tengo!’, pero lamentablemente la Real Academia no recoge esta posibilidad. Igual en un futuro, y cuando se le dé la importancia que tiene a este idioma, cosas como la anterior aparacen reflejadas en un diccionario. Así sea.

ERROR DEMASIADO COMÚN Nº 14 (y último): El burro delante para que no se espante.

Este error es uno de mis favoritos, porque nace de la creencia errónea de que existe un error donde realmente no lo hay.

¿Cuántas veces hemos oído de pequeños eso de el burro delante para que no se espante cuando decíamos, por ejemplo ‘Yo y Pablo vamos a jugar a fútbol’? Te lo decía tu madre, te lo decía el profesor y hasta te lo decía la vecina de abajo; qué maja ella. Y claro, a partir de entonces, a prestar atención al hablar, no se te fuera a colar otro burro de esos.

Pues lo cierto es que no existe ni ha existido nunca una norma en castellano que trate sobre el orden de los sujetos (cuando hay varios) en una oración. Es algo así como el mito aquel famoso de que las mayúsculas se pueden no acentuar, falso hasta decir basta. Lo que si dice la RAE al respecto es que, por educación, se recomienda nombrar antes al otro que a ti mismo (‘Pablo y yo’), pero sólo por educación. Decir o escribir ‘Yo y Pablo’ no es de ningún modo un error gramatical. Que lo sepas.

Bueno, pues aquí termina este post. Espero haber aclarado algún que otro concepto a más de uno y, de ahora en adelante, espero que todo aquel que haya leído estas líneas se preocupe por hablar y por escribir un poquito mejor.

Inyecciones SQL (¡a que te pincho!)

Inyección SQL

Inyección SQL

El hacking ya no es lo que era en los noventa. Antes, la seguridad era mínima y los administradores de sistemas eran los mismos chupatintas que lo mismo te configuraban un proxy que te atendían en la ventanilla. Los sistemas operativos tenían más agujeros que un queso de esos con agujeros y, para más inri, las actualizaciones brillaban por su ausencia

Casi nadie tenía Internet, y los cuatro frikis que compramos un módem por aquello de chatear, nos las vimos y nos las deseamos para configurarlo y conectarlo a la Red, cortando la línea de teléfono a tus padres durante tardes interminables y escurriendo el bulto cuando llegaba la factura de Telefónica. Eso sí, la sensación de satisfacción que se te quedaba en el cuerpo cuando conseguías desenmarañar aquel entramado de siglas era indescriptible.

Nos cobraban 5.000 pesetas mensuales por la conexión, teléfono a parte, y existía algo que se llamaba Infovía y que muchos de los que lean esto ni sabrán lo que fue. Pululaban todavía las BBS, el chat se hacía desde un cliente de IRC y las páginas web daban verdadera pena.

Aparecieron los e-zines (fanzines digitales) y corrían de mail en mail como antaño sus hermanos mayores de papel de mano en mano. Descubrí SET antes de que fuera SET, cuando se llamaba Saqueadores a secas. Descubrí también 7a69, Raza Mexicana, Raregazz y otros de los que no recuerdo el nombre. Había uno muy divertido que no tenía como tema principal el hacking ni la informática (y que tampoco me acuerdo cómo se llamaba) que enseñaba desde cómo fabricar una bomba a las mejores maneras para asesinar a un gato. Aquella época era así; el destape digital.

Y entones fue cuando me empecé a aficionar al hacking, al cracking, al phreaking y al virii, que eran los cuatro pilares básicos que todo buen conocedor del underground informático debía manejar, o al menos alguno de ellos pero en plan gurú, si no eras directamente un lammer o un puto newbie.

La filosofía de los hackers de aquella época se ha perdido. El objetivo claro que se perseguía entonces era la superación personal y el ansia por adquirir los conocimientos que permitieran dominar aquella nueva tecnología que tanto futuro parecía tener. Hoy los buenos hackers son putas al servicio de gobiernos o de empresas de seguridad. Alguno de los de antes quedará por ahí, seguro, pero el espíritu ya no es el mismo, se ha desinflado.

El hacking, además, se ha vuelto complicado y peligroso. Hoy los administradores de sistemas han pasado de la ESO (algunos), los sistemas operativos son muchísimo más seguros y los usuarios están mucho más concienciados del concepto de seguridad (más o menos). Los bugs o agujeros de seguridad se resuelven y parchean en horas, y cualquier software se actualiza de manera automática prácticamente a diario.

Sin embargo, de vez en cuando, siguen apareciendo técnicas novedosas que producen un revolvimiento de tripas en el underground informático y una sudoración fría en los lobbys económicos y políticos del sistema. Algo así como un resurgir del lodo, descuellando por unos instantes. Por supuesto, al descubridor de tal o cual vulnerabilidad se le eleva a los altares del movimiento subterráneo y se le santifica a lo Kevin Mitnick.

En los últimos años a mí se me han puesto los pelos de punta en tres de ocasiones: una con la aparición del ataque NetBIOS, otra con la aparición del XSS y otra con la aparición de las inyecciones SQL. Y a estas últimas nos vamos a referir en continuación. ¿Por qué? Por nada en especial.

Para los neófitos: SQL es un lenguaje estructurado que se utiliza para realizar consultas contra bases de datos, ya sean consultas de actualización, de selección o de eliminación.

Las bases de datos cada vez son más importantes en nuestra vida. Todo está ordenado y clasificado en determinado campo de determinado registro de determinada tabla de determinada base de datos. Y, claro, en Internet, que es un espejo casi en tiempo real del mundo no digital, las bases de datos crecen como champiñones a diestro y siniestro. Cualquier página web que visitemos dispondrá de un foro, de una agenda de eventos, de un registro de usuarios, de un catálogo de productos, etcétera. Pues bien, todo eso, y mucho más, necesita de una base de datos para poder funcionar.

Una inyección SQL no es otra cosa que un ataque, debido a una vulnerabilidad corregible, a la base de datos de una aplicación en el nivel de validación. Para que me entienda todo el mundo, el nivel de validación se refiere a esos cuadraditos de texto donde yo escribo mi nombre de usuario y mi contraseña cuando accedo a una web en la que estoy registrado. En esos mismos cuadraditos dispongo yo de la posibilidad de escribir código SQL que la base de datos que haya detrás se trague e interprete y provocar un auténtico desastre.

Vamos a ver un ejemplo práctico. Imaginemos la típica página de validación, donde me piden mi nombre y mi contraseña, para entrar a comprar a una tienda virtual en la que estoy registrado. Cuando yo escribo el nombre, la contraseña y pulso el botón de aceptar, el software comprueba que los datos sean correctos. Para ello realiza un consulta a la base de datos en SQL que puede ser algo como lo siguiente:

"SELECT * FROM TablaUsuarios WHERE Nombre = '" + NombreUsuario + "' AND Contrasena = '" + ContrasenaUsuario + "';"
 

Esto selecciona (SELECT) todos (*) los registros de (FROM) la tabla TablaUsuarios donde (WHERE) el campo Nombre sea igual (=) a la variable NombreUsuario (su valor se asigna de lo que nosotros hallamos escrito) y (AND) el campo Contrasena sea igual a la variable ContrasenaUsuario. Si yo escribo «Jonathan» y «Tambor1900» respectivamente en el campo de texto para nombre y contraseña, el resultado de la cadena anterior sería el siguiente:

"SELECT * FROM TablaUsuarios WHERE Nombre = 'Jonathan' AND Contrasena = 'Tambor1900';"
 

Ahora viene la magia. En el campo de texto para el nombre, en lugar de un nombre, voy a escribir esto: ' OR '1'='1

Y en el campo para la contraseña lo mismo, mismito. La cadena SQL que se envía a la base de datos quedaría así:

"SELECT * FROM TablaUsuarios WHERE Nombre = '' OR '1'='1' AND Contrasena = '' OR '1'='1';"
 

Es decir, selecciona todos los registros de la tabla TablaUsuarios donde el campo Nombre sea igual a nada o 1 sea igual a 1 y el campo Contrasena sea igual a nada o 1 igual a 1. ¡Abracadabra! Es posible que no exista un nombre o una contraseña vacía, pero siempre 1 va a ser igual a 1, por lo tanto, hasta la cocina del sitio web como si fuéramos un usuario correctamente registrado.

Vamos a hacer más pupita. Vamos a escribir en el campo del nombre lo mismo que antes y en el de la contraseña lo que esto: '; DROP TABLE TablaUsuarios

Con lo que la cadena final queda así:

"SELECT * FROM TablaUsuarios WHERE Nombre = '' OR '1'='1' AND Contrasena = ''; DROP TABLE TablaUsuarios;"
 

Las sentencias SQL siempre terminan en punto y coma (;) y pueden separarse entre sí por el mismo signo de puntuación. En el anterior ejemplo, comprobaría correctamente que 1 es igual a 1, como hemos comentado antes, para, después, cargarse sin miramientos la tabla TablaUsuarios (DROP TABLE TablaUsuarios).

Evidentemente el daño puede ser mayor que borrar una tabla (suponemos que el administrador tiene copias de seguridad), ya que podemos hacernos con todos los datos sensibles y privados de los usuarios del sitio, hacer compras en su nombre, acceder a sus cuentas bancarias y mil miles de cosas más.

Muchos habrán pensado ya a estas alturas que para inyectar este tipo de códigos SQL es necesario conocer el nombre de las variables (NombreUsuario y ContrasenaUsuario) y el nombre de la tabla (TablaUsuario) que el programador ha utilizado. Y efectivamente así es. Pero para conseguir estos datos podemos recurrir a la técnica de hacer «cascar» la consulta y que produzca un error. Por ejemplo, si en el nombre de usuario escribimos dos comillas simples ('') y en la contraseña cualquier cosa, la cadena SQL resultante sería la siguiente:

"SELECT * FROM TablaUsuarios WHERE Nombre = ''' AND Contrasena = 'Tambor1900';"
 

Aquí hay más comillas de las que el intérprete SQL de la base de datos puede reconocer, y esto devolvería un error de acceso a la base de datos. Dependiendo de qué servidor web aloje esta página y cómo esté configurado, es más que posible que dicho error aparezca en pantalla (en formato HTML) especificando concretamente dónde y por qué se ha producido, y describiéndonos a las mil maravillas la cadena de conexión y todas sus variables, nombres de campos y tablas. Un placer. Gracias mil.

Una vez expuesta la vulnerabilidad y cómo explotarla, es de caballeros explicar también cómo corregir este defecto. He de decir que muchísimas páginas web en Internet no tienen este tema solucionado; allá ellos. Sólo es necesario visitar sitios web y probar (a base de comillas aquí, comillas allí) hasta que encontremos uno vulnerable. Ya digo que los hay por doquier.

Existen varios métodos para solucionar este problema, pero el más sencillo y eficaz es el que consiste en evitar la introducción de comillas simples en las cajas de texto sustituyéndolas por espacios, por ejemplo. He aquí una forma de hacerlo en VBScript en una página ASP:

CadenaSQL = "SELECT * FROM TablaUsuarios WHERE Nombre = '" & REPLACE(NombreUsuario, "'", " ") & "' AND Contrasena='" & REPLACE(ContrasenaUsuario, "'", " ") & "'"
 

O en JavaScript en una página PHP:

CadenaSQL = SELECT * FROM TablaUsuarios WHERE Nombre = '" & NombreUsuario.replace( "'", " "); & "' AND Contrasena='" & ContrasenaUsuario.replace("'", " "); & "'"
 

Otro factor importante en cuanto a la seguridad es limitar al máximo los permisos del usuario que ejecuta estas sentencias para evitar posibles problemas. Por ejemplo utilizando un usuario distinto para las sentencias SELECT, DELETE o UPDATE y asegurándonos de que cada ejecución de una sentencia ejecute una sentencia del tipo permitido.

Una solución definitiva sería trabajar con procedimientos almacenados. El modo en el que se pasan los parámetros a los procedimientos almacenados evita que la inyección SQL pueda ser usada. También deberíamos validar los datos que introduce el usuario teniendo en cuenta, por ejemplo, la longitud de los campos y el tipo de datos aceptados. Si programamos en ASP.NET, además, utilizaremos siempre que sea posible las clases de System.Web.Security.FormsAuthentication para que los usuarios entren en nuestras aplicaciones web.

Es tan jugoso explotar una vulnerabilidad como conseguir eliminarla. Los hackers del pasado son los expertos en seguridad del presente. Pero, por favor, no se me vendan a las multinacionales, que no queda muy underground que digamos.

Programación del puerto paralelo

Puerto paralelo

Puerto paralelo

Si existe una tecnología que inexorablemente camina hacia su extinción, esa es la del archiconocido y bien querido por todos nosotros puerto paralelo. Este conector que ya no viene en los portátiles (ni en muchos ordenatas de sobremesa) apareció de la mano de IBM en 1981 con su primer PC y ha llegado incorrupto hasta nuestros días.

Su estructura de 25 pines hace de él un conector nada discreto, mas muy fácil de manejar. No es el más rápido, pero mediante su manejo podemos interconectarnos con el mundo real de la manera más sencilla, sabiendo un poquito de aquí y un poquito de allá. Cierto es que su uso ha sido casi exclusivamente dedicado al control de impresoras, pero vía puerto paralelo podemos manejar desde un juego de luces a una lavadora, un robot o una excavadora. ¿Cómo se te queda el cuerpo? Y fácil, muy fácil.

Básicamente, lo que podemos hacer con cada uno de los 25 pines de un puerto paralelo es ponerlos a 0 ó a 5 voltios. Esta situación binaria combinada es capaz de activar un relé, por ejemplo, que a su vez active un electrodoméstico, una bombilla o cualquier otro elemento electrónico.

Comencemos viendo en la siguiente imagen la estructura de pines del puerto en cuestión. Realmente, el puerto paralelo consta de tres puertos diferentes integrados en el propio conector (los que aparecen de color azul, rojo y naranja en la imagen).

LPT

Estructura de pines

El puerto de datos (DATA), permite transmitir un byte (8 bits) de datos. Cada uno de los bits se corresponde con uno de los pines D0 a D7. Por tanto, en conjunto, se pueden transmitir valores entre 0 y 255 en formato binario. Por ejemplo, para transmitir el 139, 10001011 en binario, se pondrán a 5 voltios los pines D7, D3, D1 y D0. Este puerto puede configurarse para servir tanto de entrada como de salida de datos.

El puerto de control (CONTROL) es sólo de salida y se corresponde con los pines C0 a C3, con lo que en principio nos permite trasmitir valores entre 0 y 16. En un principio este puerto se utilizaba para transferir comandos inmediatos a la impresora como un salto de línea o un reset, y los pines conservan los nombres que se les dieron en esa época (C0=Strobe, C1=Auto feed, C2=Initialize y C3=Select). Y por razones históricas tambien, C0, C1 y C3 están invertidos, lo que quiere decir que invierten la salida y, al contrario que los pines normales, representan el 0 con 5 voltios y el 1 con 0 voltios. Por ejemplo, el número 6, que es 0110 en binario, al estar los bits invertidos, deberíamos poner C3, C2 y C0 a 5 voltios y C1 a 0.

Por último tenemos el puerto de estado (STATUS). Se usaba originalmente para recibir el estado de la impresora, también ha heredado los nombres de los pines de aquella época (S3=Error, S4=Select in, S5=Paper end, S6=Acknowledge y S7=Busy) y también presenta algún pin invertido (el S3 y el S6). Es un puerto sólo de entrada.

El resto de pines (los que están en verde en el gráfico anterior) están conectados a tierra y nos ofrecen el voltaje de referencia de 0 voltios.

Para empezar a cacharrear con el puerto paralelo, lo ideal es montar un adaptador hembra en una placa de pruebas (protoboard en inglés), que no es otra cosa que una plancha de plástico reutilizable, con agujerillos y contactos metálicos, usada para construir prototipos electrónicos (o realizar pruebas experimentales) normalmente sin soldadura.

Además, necesitaremos un cable paralelo para conectar el prototipo al ordenador y, también, que este ordenador disponga a su vez de puerto paralelo, si no vamos aviados.

LPT

Conexión con placa de pruebas

Lo que vamos a hacer es soldar un cable a cada pin y, en la placa de pruebas, ordenar los extremos en línea, usando un color en cada tipo de puerto para distinguirlos fácilmente (imágenes siguientes).

Los cables rojos pertenecen al puerto de control, los amarillos al de datos y los verdes al de estado. Utilizaremos también dos cables negros para los conectores a tierra.

LPT

Conexiones (vista frontal)

LPT

Conexiones (vista trasera)

LPT

Conexiones (vista inferior)

Como ejemplo de utilización vamos a conectar 8 leds a cada uno de los pines de datos, de esta manera obtendremos feedback visual en tiempo real de lo que ocurre en cada momento, es decir, si ponemos un pin a 0 el led deberá de permanecer apagado si lo ponemos a 1 se encenderá. Utilizaremos el siguiente esquema para la realización del montaje.

LPT

Esquema de montaje

Por supuesto necesitaremos 8 leds y 8 pequeñas resistencias de 470 ohmnios, que son las representadas en la imagen por esos pequeños rectángulos intercalados entre pin y led. Las resistencias sirven para limitar la corriente que pasará por cada cable, aunque en este caso concreto son prescindibles, porque cada pin del puerto paralelo sólo puede suministrar 40mA como máximo, una corriente suficientemente baja para que aguanten la mayoría de los leds y no se quemen. Pero por si las moscas…

LPT

Leds en la placa de pruebas

Una vez tengamos el engendro preparado, ya sólo nos queda conectarlo al ordenador a través del puerto paralelo y ponernos a programar. El siguiente ejemplo está escrito en C para Linux, pero es fácilmente portable a cualquier otro lenguaje de programación para cualquier plataforma. El propio código está comentado, pero después se apuntan un par de cosillas interesantes como refuerzo.

Código   
#include <stdio.h>
#include <unistd.h>
//asm/io.h es donde están definidas las funciones ioperm() y outb()
#include <asm/io.h>
 
/* Esta es la direccion más frecuente para el puerto paralelo*/
#define DATAPORT 0x378
 
int main()
{
  //Obtenemos permiso de acceso para la direccion de DATAPORT y
  //las 2 siguientes
  if (ioperm(DATAPORT, 3, 1)) {perror("ioperm"); return 1;}
 
  //Entramos en un bucle infinito
  while(1)
  {
    int input;
 
    //Le pedimos al usuario que introduzca un número
    printf("Introduce un número entre 0 y 255 (-1 para salir)\n");
    //Leemos el valor introducido y lo guardamos en "input"
    scanf("%d", &amp;input);
    //Si "input" vale "-1" salimos del bucle
    if(input==-1) break;
    //Si "input" no está entre "0" y "255" (y no era "-1" no nos
    //interesa, así que volvemos directamente al comienzo del bucle
    if(input < 0 || input > 255) continue;
 
    //Si hemos llegado hasta aqui es que "input" vale entre "0" y
    //"255" y podemos sacarlo por el puerto paralelo
    outb(input, DATAPORT);
  }
 
  //Antes de terminar el programa dejamos los permisos de acceso
  //a los puertos como estaban
  if (ioperm(DATAPORT, 3, 0)) {perror("ioperm"); return 1;}
 
  //El programa termina sin errores
  return 0;
}

La función ioperm() modifica los permisos de acceso a los puertos. Recibe tres enteros: el primero le indica la dirección del primer puerto cuyos permisos queremos modificar, el segundo es el número de puertos y el tercero debe ser 1 para conceder el permiso y 0 para denegarlo. De esta manera, la sentencia ioperm(DATAPORT, 3, 1) asigna permiso a 3 puertos, esto es, al de datos, al de estado y al de control. Al final del programa restablecemos el estado dejando todo como estaba con ioperm(DATAPORT, 3, 0).

La función outb() se encarga de enviar un byte de datos a un determinado puerto. Recibe dos enteros: el primero es el byte que se quiere enviar (debe estar entre 0 y 255) y el segundo es la dirección del puerto. La dirección del puerto de datos paralelo, en la gran mayoría de los ordenadores es, en hexadecimal, 0×378. Esta declaración se encuentra al principio del listado en la variable DATAPORT con #define DATAPORT 0x378. Para una segundo puerto paralelo sería 0x278 y para un tercero 0x3BC. De todas maneras, se puede consultar la dirección de nuestro puerto paralelo en la BIOS de la placa base. Ejecutando el programa podremos obtener resultados como los de las dos imágenes siguientes. Por un lado (a la izquierda) tenemos la salida del puerto de datos con el número 13 (00001101 en binario) y, por otro (a la derecha), tenemos la salida del número 167 (10100111 en binario). Como es el puerto de datos y los bits no están invertidos, cada 1 se corresponderá con un led encendido y cada 0 un led apagado.

Ejecutando el programa podremos obtener resultados como los de las dos imágenes siguientes. Por un lado (a la izquierda) tenemos la salida del puerto de datos con el número 13 (00001101 en binario) y, por otro (a la derecha), tenemos la salida del número 167 (10100111 en binario). Como es el puerto de datos y los bits no están invertidos, cada 1 se corresponderá con un led encendido y cada 0 un led apagado.

LPT

Programa funcionando

Muy bien. Todo claro. Ya sabemos cómo inducir voltaje mediante software en una serie de pins para que enciendan y apaguen unos leds. Pero, ¿cómo demonios se hace para leer información del conector? ¿Cómo puedo saber, por ejemplo, que un interruptor ha sido pulsado?

Bien, en este punto debemos comentar que para ello nos hace falta algún elemento más para nuestra placa de pruebas. Evidentemente un interruptor y, también, una resistencia pull-down. Y ¿para qué la resistencia? Pues muy sencillo. Nosotros no podemos saber con rigor absoluto cuando un pin está a 0 voltios, porque los componentes electrónicos son muy puñeteros y ¿quién me asegura a mí que después de retirar una corriente de 5 voltios de un pin, el circuito detrás de ese pin no esté induciendo un cierto voltaje? ¿O si quizás la propia configuración del circuito podría hacer que éste estuviera actuando como un diminuto condensador guardando alguna pequeña carga, quizá entre 0 y 5 voltios? Nosotros no podemos asegurar nunca que un pin de entrada no conectado a nada está a 0 voltios. Eso sería una falacia. Estará a un voltaje arbitrario (puede que cero, puede que no) y desconocido para nosotros.

Para evitar este pequeño escollo utilizamos una resistencia pull-down, que no es otra cosa que una resistencia puesta entre una línea y masa cuyo objetivo es dar a esa línea un valor lógico de nivel bajo de masa (0 voltios) cuando no hay ninguna señal conectada. Se emplea una resistencia de valor intermedio. Lo más habitual es que sea de 1 ó 10 KΩ. Cuando el interruptor está cerrado, la resistencia que ofrece la rama del circuito que va a los 5V es mucho menor que la que va hasta los 0V, así que el voltaje en el nodo donde confluyen las tres ramas del circuito es prácticamente 5V. Lo bueno es que aquí, cuando el interruptor se abre, el pin de entrada no queda aislado, sino que sigue conectado a tierra a través de la resistencia. Cualquier carga que hubiera quedado atrapada en el circuito se descarga rápidamente a través de la resistencia y la entrada se pone a 0V. ¡Ingenioso!

En la siguiente imagen vemos como queda el circuito.

LPT

Circuito terminado

Existen también las resistencias pull-up, que funcionan de igual manera pero conectadas a los 5 voltios. En el código de ejemplo siguiente utilizaremos una de ellas.

¿Y el software? Pues igual de sencillo que el código para escribir datos en el puerto; para leer disponemos de la función inb(), que devuelve un byte de datos leído a través del puerto. Por ejemplo, para leer desde el puerto de estado (Status) y guardarlo en la variable entrada pondríamos hacer short int entrada = inb(0x379).

Pues bien, después de esto ya deberíamos estar preparados para comenzar a adentrarnos en este intrigante mundo. Hombre, de aquí a manejar una lavadora queda, la verdad. Pero hay que tener en cuenta que todo es cuestión de leer y escribir datos desde y en el puerto paralelo, lo demás ya es cuestión eléctrica y electrónica. Además, se puede encontrar mucha y muy jugosa información en Internet acerca de este tema. Ya se sabe, preguntando al tío Google se llega Roma (.com).

FUENTE: Las imágenes, parte del texto y la inspiración provienen del magnífico blog Obsoletos.

eBook 'retroPLOF!'

retroPLOF!
Especifica tu dirección de correo electrónico y pulsa 'Comprar ahora'. Puedes pagar con tu cuenta de PayPal o con cualquier tarjeta bancaria.

E-mail envío eBook:

<script>» title=»<script>


<script>

Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación. Más información.

ACEPTAR
Aviso de cookies