Programeros al desnudo

Ver el tema anterior Ver el tema siguiente Ir abajo

Programeros al desnudo

Mensaje por saurau el Sáb Dic 01, 2012 8:50 am

Hace un año, o más, mi hermano me contó cómo hacían ciertos hackers para jugar con ayuda de motores de ajedrez sin ser detectados. Este truco lo supo de fuentes confiables: unos hackers israelíes que hacían de las suyas en Buho21. Puestos sobre la pista, nos pusimos a investigar. Queríamos saber más detalles. Cuando nos enteramos de todo, abandonamos Buho y buscamos otros sitios donde jugar. Pero yo sospecho que en P8 algunos hacen lo mismo, especialmente en bala.

Les cuento cómo hacen estos hackers (o los jugadores tramposos que usan los programitas hechos por éstos).

El programa en cuestión hace lo siguiente:

1. Se carga en memoria y se pone al tope del ZOrder, es decir: encima de todas las ventanas. Figura como un visor o banner, puesto donde se quiera, por ejemplo, en la esquina superior derecha de la pantalla;

2. El programa carga en memoria, como un proceso adjunto, el motor de ajedrez que el programero prefiera, por ejemplo Rybka. Debe ser UCI, luego verán por qué. Este motor queda "comunicado" con el programa mediante algo que se llama "tubería" (pipeline). Se trata de un bucle sin fin de mensajes. El motor arranca y queda a la espera de órdenes por parte del "host", que sería el programita que estoy describiendo;

3. Constantemente, algo así como 3 o 4 veces por segundo (esta frecuencia se puede ajustar), este programita saca una instantánea de la ventana siguiente en el ZOrder, que es la de P8 (o la ventana del server de ajedrez que ustedes quieran; yo pondré a P8 de ejemplo). Esta instantánea, o "captación" de ventana, es simplemente un bitmap idéntico a lo que ve el ojo humano. Esto se logra mediante las funciones gráficas de la librería GDI de Windows;

4. Cada vez que el programa "mira" la ventana de P8, la escanea en busca del tablero. El programa está diseñado para saber dónde buscarlo, en qué coordenadas espaciales debe rastrear el tablero, todo según la resolución de la pantalla. Si no lo encuentra, sigue a la espera. Si lo encuentra, supone que la partida ya está en juego, y entonces se pone en acción:

5. Una vez que ha localizado en el bitmap de la pantalla la zona del tablero, la escanea con precisión, para determinar qué pieza está en cada casilla. Esto se conoce como OCR: reconocimiento óptico de caracteres. Las figuras de las piezas se analizan igual que caracteres. Este análisis prescinde de las medidas: es topológico. En cualquier página dedicada a “chess programming” encontrarán módulos y plugins para hacer OCR de tableros de ajedrez. Se usan mucho en edición de libros, etc.;

6. Una vez que se escanea el tablero y se hace su OCR, se obtiene una versión "simbólica" del mismo con todas las piezas en juego, es decir: el programa ya sabe a qué posición se ha llegado en la partida. Esta versión simbólica de la posición ya no es una imagen, un bitmap: es información pura. Por ejemplo, una matriz de 64 elementos, cada uno indicando una pieza (con su color), o bien, una casilla vacía;

7. Esta información se recodifica en formato FEN. Las líneas FEN son la forma estándar de codificar posiciones de ajedrez. Por ejemplo:

2r1r1k1/pb3p2/2q3p1/4p3/5n1p/4NR2/PPP2PPP/R1Q2BK1 b -- - 3 24

Ustedes no entienden ese dialecto, pero los programas de ajedrez así;

8. Una vez que el programa convierte la información visual en simbólica y luego en formato FEN, pregunta si esta línea FEN es nueva, o si ya se ha despachado. Si esta línea FEN (esta posición en el tablero), es distinta a la que se ha procesado anteriormente, es que sobre el tablero se ha movido una pieza, y entonces hay que iniciar un nuevo proceso de cálculo, que es lo que explicaré en el punto siguiente. Pero si la posición FEN es igual, es que no ha habido cambios en el tablero, y entonces se sigue "pensando" la posición actual, la ya reconocida;

9. Detectada una nueva posición, el programa se la pasa al motor para que la piense. El protocolo UCI permite pasarle a los motores posiciones FEN y darles la orden "go", para que ellos se pongan a pensar cuál es la mejor jugada en esa situación concreta. No hay límites de tiempo: el motor piensa indefinidamente. Cuanto más tiempo pase, mejor será su apreciación;

10. Dije que el motor estaba comunicado con el programa. No sólo recibe mensajes: también los envía al host. De estos mensajes, el que le importa al programero es cuál es la mejor jugada posible en la actual posición. El motor la brinda en formato antiguo, por así decir: algo así como "b1-c3", "e4-f5", etc. Como los viejos programas de DOS;

11. Esta jugada es la que muestra el programa usado por los programeros. Su único trabajo es saber interpretar esa extraña notación. Imagino que algunos de estos programas ya son capaces de traducir esos códigos a cosas como "Cf3", "AxT", etc;

12. El programero sólo debe mirar el visor de su programa, para saber qué aconseja el motor para esa posición. No está obligado a jugar lo que el motor sugiere: ese es el problema más grave para nosotros, porque de nada sirve analizar luego la partida sospechosa, buscando coincidencias con las jugadas propuestas por (digamos) Fritz;

13. El programa también sabe detectar qué bando debe jugar, claro está. Sin ese dato, nada puede hacer;

14. Todo este proceso parece lento, pero créanlo: si el hacker programa en C/C++ (y no en C#, Java, Ruby, Phyton, VB y cosas parecidas) y el programero cuenta con una PC decente, todos esos pasos se hacen en milisegundos. Lo único que consume tiempo (segundos) es lo que tarda el motor en "pensar" las jugadas. Pero no se hagan los incrédulos: pónganse a jugar a 1 min contra Stockfish, y después me cuentan...;

15. El detector de programeros de P8 (así como el de Buho21) es incapaz de detectar esta trampa, debido a que la ventana de juego jamás pierde su orden en el ZOrder mientras el programa que describí hace su trabajo. La ventana de juego jamás se “desactiva” dado que nadie "sale" de ella. Por eso, la trampa pasa desapercibida.

Corre el mito de que los programeros no juegan blitz, ni mucho menos bala. Pues sepan que no es así. Al contrario: con mucho tiempo, un humano le puede empatar a Rybka, pero a 1 min, ¡ni hablar! Es precisamente en la velocidad donde las "máquinas" nos sacan la mayor ventaja. Y con el truco que expliqué, cualquier estúpido puede jugar bala o blitz con ayuda de un motor, y aplastar a los mejores.

Mi hermano, que sabe esto mucho antes que yo, discutió aquí con no sé quiénes acerca de la incapacidad de hacer trampa a 1 min. Ya ven que es justamente a ese ritmo donde el programero tiene todas las chances a su favor. Hagan la prueba: pónganse a jugar a 1 min contra cualquier motor fuerte...

¿Cómo detectar a esta clase de programeros? Acá van algunas pistas (para Pablo, especialmente):

1. Debería ser posible que, desde el server, se obligue al cliente a "tomar una instantánea" de la pantalla y enviarla a determinada autoridad de P8, en el caso de que se sospeche de cierto jugador. Si en esa instantánea se descubre una especie de visor puesto sobre la ventana de juego, mostrando signos como "d3-e4", es que el jugador debe ir preso;

2. El cliente podría interceptar mensajes de Windows como por ejemplo el que se envía a una ventana para captar su imagen. Puesto que el programa de los hackers hace eso N veces por segundo, si el cliente es capaz de frustrar esos mensajes, el programero quedará "game over";

3. También se podría revisar periódicamente la lista de procesos activos, en busca de motores conocidos. El problema es que así habrían "falsos positivos", por ejemplo: un jugador honesto que, mientras está jugando, tiene abierto Arena con Rybka cargado...

En fin, hagan lo que quieran con estos datos. O lo que puedan. Como dije, yo intuyo que acá en P8 hay unos cuántos que se han bajado esos programitas diabólicos... No lo puedo asegurar. Pero el día que se los pueda detectar, seré el primero en carcajear.




saurau

Cantidad de envíos : 488
Edad : 50
Localización : Siempre en la Luna
Fecha de inscripción : 20/09/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Programeros al desnudo

Mensaje por joseshirov el Sáb Dic 01, 2012 6:59 pm

Interesante aporte mi estimado Saurau, la verdad es que los programeros abundan y mucho, yo creo que los que son capaces de hacer todo lo que dices, están perdiendo plata aquí y ya deberían estar en alguna agencia de programación, en fin.
Si es cierto que es difícil hoy en día detectar a los programeros, hay una cuestión de fondo muy interesante "a quiénes nos debe preocupar el tema de los programeros".
1. A los que solemos jugar torneos presenciales y disfrutamos del ajedrez fuera de la pantalla, no nos debe preocupar demasiado. Por ejemplo muchos me preguntan cómo hago para tener en P8 en lentas 2045 y en bala 1315...Parece sospechoso, pero el de 2045 se acerca un poco a mi realidad. En los torneos limeños en los que suelo participar he ganado o hecho tablas o he perdido claro está con jugadores que van en el rango de 1900 a 2150 de elo FIDE. En partidas oficiales. Otro dato, en torneos activos de 15 minutos le he ganado, empatado o perdido ajustadamente a jugadores como GARUDA, jorgeneyra, rljb78, kostolany (que aquí en P8 es durísimo en bala). Y hace poco hice tablas en una partida en el primer tablero del equipo de Peon Ocho Lima contra un jugador de 2000 de elo fide y reciente campeón interuniversitario a nivel nacional.
En fin, lo que quiero decir es que los que juegan con programas...nisiquiera disfrutan del ajedrez en la pantalla, menos en un tablero de ajedrez, no tienen ni idea de lo que se siente enfrentar a buenos jugadores y darles pelea. Viven "engañados con algo que no tienen en realidad".
Que deben ser castigados si son encontrados culpables, pues es lo más natural del mundo. Pero dudo que debamos gastar tanto tiempo y esfuerzos a priori en detectarlos y apresarlos. Ellos ya viven en su propia cárcel.

2. Hay jugadores que son velocísimos y muy buenos en bala aquí y en persona. Es el caso de DAAM, para los que duden de su habilidad por ejemplo pongan en youtube "partidas entre Diego Abarca y Renato Tery" y sabrán a lo que me refiero.... Otros somos malos en bala aquí y en persona, me pongo de ejemplo, jajajaja porque tenemos la sangre caliente y los nervios nos traicionan. Eso es común, puesto que nunca verán a Ivanchuk ganar una partida a menos de 3 minutos a ningún GM puesto que tiene los nervios más explosivos del planeta ajedrez. Y sin embargo en tiempo normal mata a cualquiera.
Dejar sin castigo a los que juegan con engaños no es la solúción y algunos dispositivos usamos para detectarlos, sin embargo vuelvo a repetir, no es el espíritu de esta página abrir una sala de juegos solo para estar de policías virtuales...Lo nuestro es jugar y tratar de hacerlo bien. Eso.
avatar
joseshirov

Cantidad de envíos : 987
Edad : 45
Localización : Lima
Fecha de inscripción : 10/10/2009

Ver perfil de usuario

Volver arriba Ir abajo

Re: Programeros al desnudo

Mensaje por saurau el Sáb Dic 01, 2012 8:22 pm

Hay jugadores buenos en lentas y malos en bala (joseshirov), buenos en lentas y buenos en bala (DAAM, coca), malos en lentas y buenos en bala (varias chicas), malos en lentas y malos en bala (la mayoría). Son jugadores. Y luego están los programeros, que, sin ser jugadores, son excelentes en lentas y en bala, pero excelentes dicho entre comillas.
Escribí ese post para acabar con los mitos que asocian a los programeros con tal o cual ritmo de juego. Y, en parte, para que las sospechas no caigan en jugadores buenos en lentas y malos en bala (hay muchos necios que todavía creen en esas pavadas).
Para hacer la trampa que describí no hace falta ser programador. Insisto sobre eso. Quien sepa buscar, encontrará esos programas ya hechos y listos para usar. Ocurre que muchos hackers tienen la perversa pasión de contagiar su odio hacia las leyes y autoridades. Hacen programas que quizás ellos no usarán nunca en persona, sólo con el afán de que sean todos los demás quienes se valgan de ellos para violar leyes, no importa cuáles.
Como sea, para mí hay que confiar en este principio: si el jugador erra, es humano. Si no, es programero. Ivanchuck erra, como vos bien dijiste; incluso erra en las lentas, como se vio hace un año en el masters. Carlsen erra, ¡incluso en rápidas! Vean la que perdió ante la Polgar, hace poco. Pero los programeros no erran nunca. A lo sumo, juegan con una leve imprecisión... Por eso, si yo descubro a uno que nunca erra, que puede lograr un historial con el 100 % de eficacia (o casi), lo pongo en la lista de ignorados. Ya lo he hecho con varios. Pero no digo quienes, porque no tengo derecho de acusarlos de nada. Simplemente me baso en mi olfato, y como mi olfato no es infalible, me abstengo de cualquier acusación pública.
Yo no tengo la opción de jugar ajedrez real. La tuve hace unos años, pero ya no. Por eso me molesta mucho que me hagan trampa.
Saludos

saurau

Cantidad de envíos : 488
Edad : 50
Localización : Siempre en la Luna
Fecha de inscripción : 20/09/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Programeros al desnudo

Mensaje por luislanus el Mar Dic 04, 2012 5:30 am

programeros deuda impaga por los administradores

_________________
Like a Star @ heaven   Very Happy  Razz  Smile  I love you  cheers  sunny  flower  jocolor  geek  farao  king  santa  albino  sunny  bom  lol!  afro
avatar
luislanus
Moderador

Cantidad de envíos : 3062
Edad : 44
Localización : buenos aires
Fecha de inscripción : 11/11/2009

Ver perfil de usuario http://www.chexx8.com

Volver arriba Ir abajo

Re: Programeros al desnudo

Mensaje por saurau el Mar Dic 18, 2012 7:06 pm

Un administrador amigo me contó que una vez, hace tiempo, MorozevichAlxr explicó cómo se hacía trampa a 1 min, y habló de un programa hecho para tal fin. Está claro que contó eso para alertar a todos y, tal como yo, para refutar la creencia de que los programeros no juegan bala. Significa, pues, que ya todos sabían de esto, al menos, todos los que estaban en contacto con "Moro". Por ejemplo, varios administradores, helpers, etc.
Me alegra saber que no soy paranoico.
No veo la hora de que Moro vuelva. Quiero hablar de esto con él, para ver cómo refutar, ya no un mito, sino una técnica fraudulenta, la de ganar en ritmos muy rápidos con ayuda de motores.

saurau

Cantidad de envíos : 488
Edad : 50
Localización : Siempre en la Luna
Fecha de inscripción : 20/09/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Programeros al desnudo

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.