No podrias dar algunos detalles mas? Como, que de que proyecto se te acusa haber plagiado? Por que se te acusa de plagio (que funciones tiene tu programa que tenga el supuesto plagiado), etc ..
por
pobrecito hablador
el Martes, 07 Junio de 2005, 09:55h
(#521638)
cómo se sabe si licencias del tipo GPL son violadas, qué herramientas (si es que hubiera) se usan para comparar los binarios o incluso el código fuente.
el comando "strings" es un buen punto de partida, chapucero quizás, pero te haces una idea
por
pobrecito hablador
el Martes, 07 Junio de 2005, 10:09h
(#521652)
En los binarios se buscan cadenas o se fuerzan entradas que no están especificadas y se comparan las respuestas. Dos implementaciones de tcp/ip que fallen de la misma manera al enviar paquetes malformados, por ejemplo.
Para el código fuente, en mi facultad lo que hacen es comparar el código objeto. Tienen una herramienta que automatiza todo el proceso y funciona bastante bien para comparar prácticas clónicas (aunque maquilladas) siempre que no sean absolutamente triviales.
Re:Métodos
de nidhogg
(Puntos:1)
Martes, 07 Junio de 2005, 21:40h
Cuando sucedió la controversia de CherryOS [barrapunto.com], un tipo [drunkenblog.com] se curró una investigación [drunkenblog.com] (lo siento, enlace en inglés) sobre las presuntas (y confirmadas) violaciones de la (L)GPL por parte de Maui X-Stream [vx30.com].
Me pareció muy interesante. Busqueda de cadenas en los binarios, contraste de informaciones... Muy currado.
Para empezar, te diré que no he usado nunca ningún programa específico para detectar copias de código fuente. En todo caso, según me comentó un profesor del departamento donde trabajaba, el método que usan los programas es el de:
1. suprimir comentarios
2. convertir los nombres de funciones y variables a uno genérico.
3. reordenar las funciones de diferente forma y comparar con las otras prácticas que se quieren comparar.
4. evidentemente la misma práctica codificada por diferentes personas dará código muy parecido. Un índice de superior a un umbral indicaría una copia.
En resumen, hacen casi lo mismo que un compilador, pero comparan los resultados de los pasos intermedios de la compilación.
Saludos
Re:Como funciona
de pobrecito hablador
(Puntos:1)
Martes, 07 Junio de 2005, 12:22h
Re:Como funciona
de frewd
(Puntos:1)
Martes, 07 Junio de 2005, 17:21h
por
pobrecito hablador
el Martes, 07 Junio de 2005, 11:44h
(#521762)
Bueno, en vista de que muchas de las respuestas han sido preguntas voy a detallar ciertas cosas.
No he querida dar demasiados detalles en principio para evitar que se sepa quien es el profesor, aunque bien pensado me importa poco ahora.
La práctica en concreto es un cliente FTP, la típica práctica para programar en sockets. Tengo que decir antes de nada que tengo algo de experiencia programando y tengo algún código de sockets publicado hace tiempo ( http://www.stratos-ad.com/forums/index.php?act=ST& f=28&t=1158 ). Desarrollé la práctica usando un diseño que yo he creado (la verdad es que la diseñé al vuelo, escribiendo código directamente en vi) usando, como no, la ayuda de las man (soket, connect, etc).
Terminada la práctica llega el día de la revisión y después de unas pruebas (en algunas falló) el profesor me hacía preguntas extrañas, hasta que al final me dijo que si la función de conectar al servidor de FTP estaba copiada... atónito me quedé cuando me preguntó eso, estoy seguro que habrá 10 mil funciones para conectar a un servidor igual que la mia, son de lo más común.
Tampoco me importó demasiado, lo que si me importó es que me acusó de haber plagiado la estructura y funciones de la aplicación. Yo argumenté que eso era imposible y que lo demostrara, él seguía discutiendo, dando unos argumentos de niño de 10 años, incluso me llegó a decir que los comentarios que había dejado eran para suspenderme (unos printf comentados, 2 en todo el código)
La conclusión: después de haberle corregido algún error en el libro que había escrito y demostrarle que no tenía ni idea de RPC, XDR y serialización, el profesor estaba picado.
Ahora estoy en quinto y no me faltan 4 asignatuas incluyendo esa que es de tercero ( y la tengo de libre configuración), me da igual si la suspendo, pero me molesta profundamente que me acusen de plagio infundadamente. Sin embargo voy a buscar qué métodos tengo en la facultad para defenderme de este tipo de cosas.
Por último si que tengo que reconocer un error mio, no puse la bibliografía en la memoria (cosas del último momento), nisiquiera las man y las páginas que había visitado, pero no considero eso importante (cara al plagio) ya que no he copiado absolutamente nada.
Yo he participado en varios casos de violaciones de GPL, o supuestas violaciones hablando correctamente. En concreto hablo de productos comerciales que se saltan algunos puntos de la licencia GPL o similar (o sino todos los puntos directamente) y hacen lo que les da la gana. Para ello hay gente en la Free Software Foundation que se dedica a investigar y si da el caso, promover acciones para que los que no se atienen a razones. Existen casos de acciones legales y por supuesto, en muchos casos que sin llegar a esos extremos, hacen rectificar a las empresas / personas que hacen caso omiso de las licencias codigo abierto.
Creo que es muy buena labor la de la FSF y personalmente pienso que deberiamos estar mas concienciados todos en denunciar todo caso que pase por nuestras manos o PCs. En el caso de una práctica o un proyecto tuyo, en el que quieras proteger tus derechos, desde luego yo siempre digo que además de la licencia, debes procurar registrar intelectualmente tu obra en la Oficina Provincial del Registro Intelectural (unos 20€ o asi) y si puedes publicarla en sitios "respetables" como Sourceforge o similar, pues queda más prueba de que eso estaba ANTES de que otro clame como suya. Sobre todo si la acompañas de un hash un timestamp :-)
La maquina mas poderosa que tiene el ser humano es el cerebro humano. Y la forma probablemente mas poderosa de presentarle el problema es mediante un grafico. Hay programas por ahi que estudian un programa en java y crean las familias de objetos. Tambien hay programas que se pueden descargar o escribir para dibujar graficas de todas las llamadas de un programa.
Una vez tienes esos graficos, vas imprimiendo todos los "sospechosos". Dos programas que sean distintos, no se pareceran ni un huevo a una castaña. Dos programas que sean muy parecidos, seran detectados enseguida.
Y una vez que sospechas que dos programas son en realidad el mismo. Te lees el codigo y te formas tu propia opinion. He incluso a un ser humano se le pueden colar falsos positivos, asi que yo tendria mucho cuidado de a quien llamo plagiador.
Le puedes echar un ojo a MOSS [berkeley.edu] (Measure Of Software Similarity), que es un software desarrollado en Berkeley para detectar la similaridad entre dos programas. Funciona calculando un porcentaje de similaridad, e idealmente se debe ejecutar teniendo como entrada todas las practicas de todos los alumnos, de este anio y anteriores. Devuelve un numero entre 0 y 100 para cada trabajo, que indica en cuanto un trabajo se parece a los demas. Si la mayoria de los trabajos tienen, por ejemplo, un 40 y hay 3 que tienen un 70, es muy probable que se hayan copiado, y una inspeccion rapida podra confirmar o desmentir las sospechas. Aqui en UCI se utiliza automaticamente para todas las practicas entregadas, y tienen un sistema parecido para prosa (no codigo). Funciona bastante bien, la verdad, pero requiere de voluntad por parte del profesorado. [uci.edu]
Desgraciadamente sacarse una carrera se convierte en una carrera de obstaculos en el que el principal objetivo no es aprender sino aprobar examenes y en muchos casos aguantar las gilipolleces del profesor de turno.
Tengo compañeros que han acabado hace tiempo y que no tienen ni puta idea de nada ( o al menos no tenian recien termnidada la carrera), pero que han sido realmente astutos a la hora de copiar, engañar, trapichear, escaquear y vacilar en examenes y prácticas...y la verdad es que no les censuro por ello, al contrario, en ciero modo les admiro por que la meta no estaba puesta en atesorar conocimientos sino en obtener un título y han sabido hacerlo. Y no les critico, por que la culpa es del sistema de estudios que no premia al que sabe (ya habeis leido los comentarios de aquellos que sabian más que el profe) sino al que sabe pasar por el aro
Así que al final, en lugar de tener que saber como se hacen las cosas (y como se hacen bien) tienes que fijarte en que es lo que quiere oir (o ver en el examen) el profesor
Yo todavía estoy a falta de una asigantura, un laboratorio, en el que las prácticas no han cambiado desde hace 10 años, una asignatura en la que todo el mundo presenta las "copias oficiales" que circulan de manao en mano o a través de internet y en la que la condición para presentarse al examen es hacer una pantomima de defensa de estas practicas copiadas....en definitiva ninguna oportunidad para los que trabajamos y no tenemos el tiempo necesario de hacer el teatro delante del profesor.
Estoy quemado, hasta los huevos de este juego de ratón en el laberinto en busca de un trozo de queso (AKA titulo de ingeniero de mierda)
Quitando lo de los profesores que no saben, que a todos nos ha tocado alguno, la universidad (entiendase facultd, FP...) esta para tener una base, y sobretodo, para aprender a pensar....
Si trabajando todos los días en el lenguaje x de programación, y no sabes desarrollar tal o cual problema, puede que no hayas aprendido A PENSARLO (Al menos en la mía, tuve que memorizar 0 en todas las asignaturas de programación, exceptuando el lenguaje).
Y si no tienes base para conocer la tecnología, luego en el trabajo te perderás ante los libros de miles de páginas a usar (Me temo que en mi mesa tengo 4 libros de manera cuasi permanente, el más ligertito de 400 páginas, más todo internet)... ¿No es obio que tienes que saber de Programación orientada a objetos antes de buscar ayuda sobre las STL?
Estoy casi de acuerdo contigo:
NO DA TIEMPO A HACER LAS PRACTICAS; Me acuerdo en mi último año que me llovieron 7 prácticas (Una por asignatura) en una semana, y con un mes escaso para realizarlas; como medio antiplagio: Se pide en el examen modificar el programa.
Quitando ese detalle (ya podían habernos dado dos meses, no me habrían quitado horas de sueño, y no habría tenido que faltar una semana entera a clase): Tienes toda la razon, el plagiar hace un daño inmenso, pero sobretodo, a aquellos que plagian, pues luego pasan un año o dos sin lograr trabajar con relativamente pocos errores, porque no entienden lo que hacen.
Puntualiza
(Puntos:1)( Última bitácora: Lunes, 18 Febrero de 2008, 19:40h )
¿Matarte? No, no sería capaz. Pero no me cabe duda, disfrutaría muchísimo contigo.
Detalles?
(Puntos:1)( http://barrapunto.com/ )
herramientas
(Puntos:1, Informativo)el comando "strings" es un buen punto de partida, chapucero quizás, pero te haces una idea
Métodos
(Puntos:2, Informativo)Para el código fuente, en mi facultad lo que hacen es comparar el código objeto. Tienen una herramienta que automatiza todo el proceso y funciona bastante bien para comparar prácticas clónicas (aunque maquilladas) siempre que no sean absolutamente triviales.
Hace poco en barrapunto
(Puntos:2, Interesante)( http://dbahire.com/ | Última bitácora: Sábado, 12 Mayo de 2018, 09:37h )
Cuando sucedió la controversia de CherryOS [barrapunto.com], un tipo [drunkenblog.com] se curró una investigación [drunkenblog.com] (lo siento, enlace en inglés) sobre las presuntas (y confirmadas) violaciones de la (L)GPL por parte de Maui X-Stream [vx30.com].
Me pareció muy interesante. Busqueda de cadenas en los binarios, contraste de informaciones... Muy currado.
Como funciona
(Puntos:2, Informativo)1. suprimir comentarios
2. convertir los nombres de funciones y variables a uno genérico.
3. reordenar las funciones de diferente forma y comparar con las otras prácticas que se quieren comparar.
4. evidentemente la misma práctica codificada por diferentes personas dará código muy parecido. Un índice de superior a un umbral indicaría una copia.
En resumen, hacen casi lo mismo que un compilador, pero comparan los resultados de los pasos intermedios de la compilación.
Saludos
¿Plagio?
(Puntos:3, Divertido)( http://www.alvaroremesal.net/ | Última bitácora: Viernes, 24 Abril de 2015, 19:48h )
-- Txeke
respuestas (soy el autor del thread)
(Puntos:2, Interesante)No he querida dar demasiados detalles en principio para evitar que se sepa quien es el profesor, aunque bien pensado me importa poco ahora.
La práctica en concreto es un cliente FTP, la típica práctica para programar en sockets. Tengo que decir antes de nada que tengo algo de experiencia programando y tengo algún código de sockets publicado hace tiempo ( http://www.stratos-ad.com/forums/index.php?act=ST& f=28&t=1158 ). Desarrollé la práctica usando un diseño que yo he creado (la verdad es que la diseñé al vuelo, escribiendo código directamente en vi) usando, como no, la ayuda de las man (soket, connect, etc).
Terminada la práctica llega el día de la revisión y después de unas pruebas (en algunas falló) el profesor me hacía preguntas extrañas, hasta que al final me dijo que si la función de conectar al servidor de FTP estaba copiada... atónito me quedé cuando me preguntó eso, estoy seguro que habrá 10 mil funciones para conectar a un servidor igual que la mia, son de lo más común.
Tampoco me importó demasiado, lo que si me importó es que me acusó de haber plagiado la estructura y funciones de la aplicación. Yo argumenté que eso era imposible y que lo demostrara, él seguía discutiendo, dando unos argumentos de niño de 10 años, incluso me llegó a decir que los comentarios que había dejado eran para suspenderme (unos printf comentados, 2 en todo el código)
La conclusión: después de haberle corregido algún error en el libro que había escrito y demostrarle que no tenía ni idea de RPC, XDR y serialización, el profesor estaba picado.
Ahora estoy en quinto y no me faltan 4 asignatuas incluyendo esa que es de tercero ( y la tengo de libre configuración), me da igual si la suspendo, pero me molesta profundamente que me acusen de plagio infundadamente. Sin embargo voy a buscar qué métodos tengo en la facultad para defenderme de este tipo de cosas.
Por último si que tengo que reconocer un error mio, no puse la bibliografía en la memoria (cosas del último momento), nisiquiera las man y las páginas que había visitado, pero no considero eso importante (cara al plagio) ya que no he copiado absolutamente nada.
Violacion de licencias
(Puntos:2, Interesante)( http://www.openfriki.com/ | Última bitácora: Viernes, 25 Octubre de 2013, 09:30h )
Creo que es muy buena labor la de la FSF y personalmente pienso que deberiamos estar mas concienciados todos en denunciar todo caso que pase por nuestras manos o PCs.
En el caso de una práctica o un proyecto tuyo, en el que quieras proteger tus derechos, desde luego yo siempre digo que además de la licencia, debes procurar registrar intelectualmente tu obra en la Oficina Provincial del Registro Intelectural (unos 20€ o asi) y si puedes publicarla en sitios "respetables" como Sourceforge o similar, pues queda más prueba de que eso estaba ANTES de que otro clame como suya. Sobre todo si la acompañas de un hash un timestamp :-)
.. rasca y gana
el cerebro humano
(Puntos:1)( Última bitácora: Viernes, 03 Febrero de 2012, 15:18h )
Una vez tienes esos graficos, vas imprimiendo todos los "sospechosos". Dos programas que sean distintos, no se pareceran ni un huevo a una castaña. Dos programas que sean muy parecidos, seran detectados enseguida.
Y una vez que sospechas que dos programas son en realidad el mismo. Te lees el codigo y te formas tu propia opinion. He incluso a un ser humano se le pueden colar falsos positivos, asi que yo tendria mucho cuidado de a quien llamo plagiador.
MOSS
(Puntos:2)( http://appfluence.com/priority_matrix_windows_detailed | Última bitácora: Domingo, 31 Julio de 2011, 16:58h )
Varios programitas para detectar plagios
(Puntos:2)( http://www.tupoliza.com/ )
http://www.canexus.com/eve/index.shtml
http://www.cs.berkeley.edu/~aiken/moss.html (mencionado ya)
http://wwwipd.ira.uka.de:2222/
Otros relacionados:
http://www.turnitin.com/static/home.html
http://www.plagiarism.com/
http://www.plagiarism.org/
Esto de la humanidad ...
(Puntos:1, Divertido)Copia a muchos, y lo llamarán investigación
Re:Plagio/copia
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Viernes, 14 Julio de 2006, 00:21h )
Desgraciadamente sacarse una carrera se convierte en una carrera de obstaculos en el que el principal objetivo no es aprender sino aprobar examenes y en muchos casos aguantar las gilipolleces del profesor de turno.
Tengo compañeros que han acabado hace tiempo y que no tienen ni puta idea de nada ( o al menos no tenian recien termnidada la carrera), pero que han sido realmente astutos a la hora de copiar, engañar, trapichear, escaquear y vacilar en examenes y prácticas...y la verdad es que no les censuro por ello, al contrario, en ciero modo les admiro por que la meta no estaba puesta en atesorar conocimientos sino en obtener un título y han sabido hacerlo. Y no les critico, por que la culpa es del sistema de estudios que no premia al que sabe (ya habeis leido los comentarios de aquellos que sabian más que el profe) sino al que sabe pasar por el aro
Así que al final, en lugar de tener que saber como se hacen las cosas (y como se hacen bien) tienes que fijarte en que es lo que quiere oir (o ver en el examen) el profesor
Yo todavía estoy a falta de una asigantura, un laboratorio, en el que las prácticas no han cambiado desde hace 10 años, una asignatura en la que todo el mundo presenta las "copias oficiales" que circulan de manao en mano o a través de internet y en la que la condición para presentarse al examen es hacer una pantomima de defensa de estas practicas copiadas....en definitiva ninguna oportunidad para los que trabajamos y no tenemos el tiempo necesario de hacer el teatro delante del profesor.
Estoy quemado, hasta los huevos de este juego de ratón en el laberinto en busca de un trozo de queso (AKA titulo de ingeniero de mierda)
adelante-adelante-abajo-abajo-puñetazo alto [barrapunto.com]
Re:consejo
(Puntos:1)Mmm, firme candidato a la lista de Usos inútiles del comando cat [sial.org]. ¿Qué tal grep otracosa loquesea?
Saludos
Re:El que sabe trabaja y el que no da clases
(Puntos:1)( http://www.septeto.com/ | Última bitácora: Sábado, 01 Octubre de 2005, 13:34h )
Si trabajando todos los días en el lenguaje x de programación, y no sabes desarrollar tal o cual problema, puede que no hayas aprendido A PENSARLO (Al menos en la mía, tuve que memorizar 0 en todas las asignaturas de programación, exceptuando el lenguaje).
Y si no tienes base para conocer la tecnología, luego en el trabajo te perderás ante los libros de miles de páginas a usar (Me temo que en mi mesa tengo 4 libros de manera cuasi permanente, el más ligertito de 400 páginas, más todo internet)... ¿No es obio que tienes que saber de Programación orientada a objetos antes de buscar ayuda sobre las STL?
Re:El plagio es muy dañino
(Puntos:1)( http://www.septeto.com/ | Última bitácora: Sábado, 01 Octubre de 2005, 13:34h )
NO DA TIEMPO A HACER LAS PRACTICAS; Me acuerdo en mi último año que me llovieron 7 prácticas (Una por asignatura) en una semana, y con un mes escaso para realizarlas; como medio antiplagio: Se pide en el examen modificar el programa.
Quitando ese detalle (ya podían habernos dado dos meses, no me habrían quitado horas de sueño, y no habría tenido que faltar una semana entera a clase): Tienes toda la razon, el plagiar hace un daño inmenso, pero sobretodo, a aquellos que plagian, pues luego pasan un año o dos sin lograr trabajar con relativamente pocos errores, porque no entienden lo que hacen.