Preventing Obfuscation Attacks on Software Plagiarism Detectors

Aus SDQ-Wiki
Ausschreibung (Liste aller Ausschreibungen)
Jplag-logo.png Typ Bachelorarbeit oder Masterarbeit
Aushang JPlag_BA-MA_Topic_02-2022.pdf
Betreuer Wenden Sie sich bei Interesse oder Fragen bitte an:

Timur Sağlam (E-Mail: saglam@kit.edu, Telefon: +49-721/608-47380)

Motivation

JPlag ist ein Werkzeug, welches Ähnlichkeiten zwischen Quelltextdateien findet, um Plagiate in einer Menge von Software-Programmen zu finden. JPlag vergleicht dabei nicht nur den Quelltext an sich, sondern ist sich der Syntax der Programmiersprache und damit der Programmstruktur bewusst. Daher ist JPlag robust gegen viele Plagiatsarten und deren Verschleierung. Unterstützt werden derzeit die Programmiersprachen Java, C\#, C, C++, Python und Scheme. JPlag wird international in Universitäten und Schulen eingesetzt. Darüber hinaus kann JPlag verwendet werden, um gestohlenen Quelltexte zu erkennen.

Aufgabenstellung

JPlag analysiert den Quelltext auf der Ebene des abstrakten Syntaxbaums (AST). Dabei werden syntaktische und semantische Elemente des Quellcodes in AST-Tokens umgewandelt. Während diese Methode robust gegen die meisten Plagiatsarten ist, gibt es dennoch Möglichkeiten durch das Einfügen von totem, unerreichbarem oder nutzlosen Quelltext die Token-Struktur so zu verändern, dass Plagiate schlechter automatisch erkannt werden. Ihre Aufgabe ist es, einen Ansatz zu entwickeln, mit dem diese Art der Verschleierung von Plagiaten weitestgehend erkannt wird. Dieser Ansatz soll auf der Ebene der AST-Token entwickelt werden und ist im Idealfall sprachunabhängig. Mehr Informationen zu JPlag finden sich im Wiki, welches Teil des Open-Source-Repositorys ist.

Kenntnisse

  • Benötigte Kenntnisse: Java, Git.
  • Hilfreiche Kenntnisse: C/C++, Compilerbau-Grundlagen.

Wir bieten

  • Beitrag zu einem etablierten Open-Source-Projekt
  • Enger Bezug zum Entwicklungsprozess von JPlag
  • Intensive Betreuung durch das Entwicklerteam
  • Freiraum für individuelle Lösungsansätze
  • Möglichkeit zur Publikation der Ergebnisse

Motivation

JPlag is a tool that finds similarities between source code files to find plagiarism in a set of software programs. JPlag not only compares the source code itself but is also aware of the syntax of the programming language and thus the program structure. Therefore, JPlag is robust against many types of plagiarism and their obfuscation. The programming languages Java, C\#, C, C++, Python, and Scheme are currently supported. JPlag is used internationally in universities and schools. However, it can also be used to detect stolen source code.

Task

JPlag works by analysing the source code at the abstract syntax tree (AST) level. This involves converting syntactic and semantic elements of the source code into AST tokens. While this method is robust against most types of plagiarism, there are still possibilities to change the token structure by inserting dead, unreachable, or useless source code in a way that makes plagiarism harder to detect automatically. Your task is to develop an approach that detects this kind of plagiarism obfuscation as far as possible. This approach is to be developed at the level of AST tokens and is ideally language-independent. More information on JPlag can be found in the wiki, which is part of the open-source repository.

Skills

  • Required skills: Java, Git.
  • Helpful skills: C/C++, compiler building basics.

We offer

  • Contribution to an established open source project.
  • Close relation to the JPlag development process
  • Intensive supervision from the development team
  • Freedom for individual approaches to solutions
  • Possibility to publish the results