JPlag – Detecting Software Plagiarism
JPlag is a local software plagiarism detection tool supporting various programming languages. It requires Java SE 21, allows customization of detection sensitivity, and can be used via CLI or API.
Read original articleJPlag is a software plagiarism detection tool that operates locally, ensuring that no source code or results are uploaded to the internet. It is capable of identifying similarities in code, including obfuscated versions, and supports a wide range of programming languages such as Java, C, C++, Python, and JavaScript. Users can customize the sensitivity of the plagiarism detection process. To use JPlag, it requires Java SE 21 and can be downloaded from its GitHub releases page. The tool can be utilized through a command line interface or integrated into Java applications via its API. Examples of usage are provided for both CLI and Java API, demonstrating how to set up and run plagiarism checks. Contributions to the project are encouraged, and users can report issues or provide feedback through the designated channels. For further details, users can refer to the JPlag Wiki.
- JPlag detects software plagiarism and collusion locally without internet uploads.
- It supports multiple programming languages, including Java, C, and Python.
- Users can customize detection parameters for tailored results.
- Installation requires Java SE 21, and it can be used via CLI or Java API.
- Contributions and feedback are welcomed through GitHub.
Related
1JPM: A Maven/Gradle alternative in a single Java file
The project "1JPM" is a Java Project Manager offering an alternative to Maven and Gradle. It is a single customizable Java file for project configuration, eliminating XML or Groovy. Users can integrate it by adding the JPM.java file and executing commands in the terminal. 1JPM treats everything as a plugin, allowing the addition of third-party plugins. It covers essential functions like build, clean, assemble, check, dependencies, help, tasks, and jar, but may lack some advanced features. The project is in early stages, providing basic build capabilities. Users can seek further assistance for details or support.
Malware Developers Increasingly Use V8 JavaScript for Evasion
Researchers from Check Point Research (CPR) discovered a surge in malware using compiled V8 JavaScript to avoid detection. CPR's View8 tool helps analyze hidden malicious code, highlighting the challenge for cybersecurity.
Jurigged: Hot Reloading for Python
The GitHub repository hosts "jurigged," a tool for updating code during runtime. It allows live code modifications, integrating new behavior seamlessly. Users can also use the "develoop" feature for interactive development.
JSTinker: An open source clone of JSFiddle
JSTinker is an open-source project on GitHub, providing an offline version of JSFiddle with HTML/CSS/JS editors, preview, syntax checks, and script wrapping in an iFrame sandbox. Contributors can engage through forking, branching, committing, and submitting pull requests. Operating under the MIT License, allowing free utilization, modification, and distribution. Explore the project on GitHub for more details.
A List of companies that use Array Languages (J, K, APL, q)
A GitHub repository has been created to list companies using array languages like J, K, APL, and q, detailing their sectors, locations, and remote work policies, encouraging user contributions.
- Several users discuss the vulnerabilities of JPlag and similar tools, referencing research that demonstrates how they can be evaded.
- Users express interest in developing or improving plagiarism detection tools, with some considering creating proprietary solutions.
- There are inquiries about JPlag's capabilities, including its effectiveness in detecting code duplication and its requirements for a comparison corpus.
- Some users share positive experiences with JPlag, noting its effectiveness in educational settings.
- Concerns about the moral implications of plagiarism detection and the need for more robust solutions are also highlighted.
https://arxiv.org/abs/2010.01700
Mossad: Defeating Software Plagiarism Detection
Breanna Devore-McDonald, Emery D. Berger
Automatic software plagiarism detection tools are widely used in educational settings to ensure that submitted work was not copied. These tools have grown in use together with the rise in enrollments in computer science programs and the widespread availability of code on-line. Educators rely on the robustness of plagiarism detection tools; the working assumption is that the effort required to evade detection is as high as that required to actually do the assigned work.
This paper shows this is not the case. It presents an entirely automatic program transformation approach, Mossad, that defeats popular software plagiarism detection tools. Mossad comprises a framework that couples techniques inspired by genetic programming with domain-specific knowledge to effectively undermine plagiarism detectors. Mossad is effective at defeating four plagiarism detectors, including Moss and JPlag. Mossad is both fast and effective: it can, in minutes, generate modified versions of programs that are likely to escape detection. More insidiously, because of its non-deterministic approach, Mossad can, from a single program, generate dozens of variants, which are classified as no more suspicious than legitimate assignments. A detailed study of Mossad across a corpus of real student assignments demonstrates its efficacy at evading detection. A user study shows that graduate student assistants consistently rate Mossad-generated code as just as readable as authentic student code. This work motivates the need for both research on more robust plagiarism detection tools and greater integration of naturally plagiarism-resistant methodologies like code review into computer science education.
There’s an open source tool which I love the idea of (basically a tool for declarative integration tests), but I really don’t like it’s implementation. I tried to contribute to improve it, but it’s too much work and it will never fit my ideal.
So I basically decided to "redo it but better", and I’m also tempted to make it a paid, proprietary tool because my implementation diverges enough that I consider it a different codebase altogether (and it would bring legitimate value to companies). I wrote my code from scratch but still had some knowledge of the original code base so I’d be interested in running something like JPlag to make sure I didn’t accidentally plagiarize open source code.
I hope I find a way to make it compare 2 codebases :)
Interestingly, whenever I discussed my thesis, the first reaction from others often revolved around moral concerns.
Would that result in inability to write code in a clean room, even; because eventually all possible code strings and mutations thereof would already be patented.
For example, are three notes or chords copyrightable?
It is pretty much impossible to detect software plagiarism, especially on leetcode style questions as only 1 style or pattern is the most efficient answer.
Though if a student changes it sufficiently enough, they might begin to actually see the invariants and ideas and actually learn the material.
Related
1JPM: A Maven/Gradle alternative in a single Java file
The project "1JPM" is a Java Project Manager offering an alternative to Maven and Gradle. It is a single customizable Java file for project configuration, eliminating XML or Groovy. Users can integrate it by adding the JPM.java file and executing commands in the terminal. 1JPM treats everything as a plugin, allowing the addition of third-party plugins. It covers essential functions like build, clean, assemble, check, dependencies, help, tasks, and jar, but may lack some advanced features. The project is in early stages, providing basic build capabilities. Users can seek further assistance for details or support.
Malware Developers Increasingly Use V8 JavaScript for Evasion
Researchers from Check Point Research (CPR) discovered a surge in malware using compiled V8 JavaScript to avoid detection. CPR's View8 tool helps analyze hidden malicious code, highlighting the challenge for cybersecurity.
Jurigged: Hot Reloading for Python
The GitHub repository hosts "jurigged," a tool for updating code during runtime. It allows live code modifications, integrating new behavior seamlessly. Users can also use the "develoop" feature for interactive development.
JSTinker: An open source clone of JSFiddle
JSTinker is an open-source project on GitHub, providing an offline version of JSFiddle with HTML/CSS/JS editors, preview, syntax checks, and script wrapping in an iFrame sandbox. Contributors can engage through forking, branching, committing, and submitting pull requests. Operating under the MIT License, allowing free utilization, modification, and distribution. Explore the project on GitHub for more details.
A List of companies that use Array Languages (J, K, APL, q)
A GitHub repository has been created to list companies using array languages like J, K, APL, and q, detailing their sectors, locations, and remote work policies, encouraging user contributions.