Is there a way to code a GUI so that screenshots of it cannot be taken?

So I want to be able to write an exam for my class to administer to them through a GUI. Doing this will enable us to make unique tests for each student and cut down on cheating, however, if they can take screenshots and save these in their notes (the exam is open book/notes) it would undermine our efforts to block cheating. Is it possible to create code in matlab that will make it impossible to take a screenshot of a GUI?
*Update: If it's possible for MatLab récord when a screenshot is taken, that could be a solution here too.
Thanks, Ian

5 Commenti

Matt J
Matt J il 22 Feb 2018
Modificato: Matt J il 22 Feb 2018
Is the exam proctored? If not, what's to stop them from just taking a screenshot with a cell phone camera?
Yes, the exam will be proctored, and cellphones will not be permitted.
Can't you just deprive the workstations that the students will work on of internet access? What good will it do them to take a screenshot if they have no way of transferring it off the workstation and out of the exam room?
Hypothesis:
  • perhaps not all the students are going to be taking the test at the same time
  • perhaps although the tests are individualized, that there are significant structural similarities, perhaps just differences in constants
  • in such a situation, if a more skilled student were to go through the test and take snapshots of their completed code, and leave the snapshots sitting on the computer after they left, and a less skilled student were to then get the same computer and were to retrieve the snapshots, they would be able to see the completed code and copy it by hand, making only the changes required by the individualization.
If that is the scenario being addressed in this situation then:
  1. do not decide where each student will sit until after the previous wave has gone through and left, so as to reduce the likelihood that the cheating student will happen to get the same computer as the cooperating better student
  2. use some tool to erase user-writable directories between waves
For point 2.: Using a virtual machine, which removes all changes at a reboot, is a cheap solution.

Accedi per commentare.

Risposte (4)

Jan
Jan il 22 Feb 2018
Modificato: Jan il 23 Feb 2018
You can let the java.awt.Robot to take a screenshot, the operating system using the Print key, some programs for displaying images can do this and cell phones also. You can start the screen recorder of Windows 10 using [Windows]-G and with the psr command under Windows 7.
It will be impossible to block all possible ways. Better change the design of the tests, such that a captured screen does not allow to cheat. You mentioned, that you create unique tests for each student, how would a screen shot help then?
[EDITED] Of course you can run a key-logger to record all typed keys and mouse clicks. This total surveillance allows you to detect everything including screenshots. Nevertheless, what you want to do still sounds more like a trojan than like an exam.
You ask for a method to prevent or register screenshots. I recommend to change the design such, that screenshots are not important. So this is a meta-answer.
Just a thought, which does not concern the actual problem:
I think this kind of teaching is a dangerous development in the last years. Of course I can test 200 students each day automatically by Cody Courseworks, while this took me 3 weeks for revising, if I did this manually and carefully. But what will the students learn by automated teaching methods? If the teachers apply methods to "cheat" that they work with the students individually, the students will "cheat" that they have worked to produce the solution. Then "cheating" is the core of the system, not the behavior of lazy students.
I am aware that some universities employ a professor to teach 200 students, but do not offer money for assistants to revise their homework. You cannot blame the teachers for applying automatic assignments. But it is still a junky production line teaching. Screenshots are not the problem.
I had the lucky and luxury situation to teach 20 students, such that I could read all homework and exams and suggest improvements to their Matlab codes. Maybe some students have cheated. But this would not have been useful for them: The institute did not invite the students with the highest points to apply for a diploma or PhD thesis, but the ones, who were engaged in the course and asked the best questions. There is no way to cheat for this criterion.
" Is it possible to create code in matlab that will make it impossible to take a screenshot of a GUI?"
No. You can system() outside programs or make Java calls -- but others can make Java calls too.
"Is it possible to have MatLab take note of when a screenshot is executed?"
No.
I can make a few suggestions:
  1. If using Windows, use a utility to re-map the printscreen key to something else
  2. Figure out which directory the built-in screen-capture utility uses, and make sure that directory is read-only.
  3. Install Linux, to make it less likely that people will know how to trigger a screen capture
  4. Install a custom version of Linux that has the screen capture utility turned off, since Linux comes with source code.
The online discussions I find say that on Windows, there is no way to completely disable screen snapshots, if the user has access to appropriate utilities or a compiler.
They also indicate that programming the display through Windows Media Presentation can make doing screen snapshots notably more difficult -- but MATLAB does not use WMP for its graphics.
One technique suggested is to never actually output a full correct screen of information: instead take advantage of the persistence of vision and interlacing so that at any one time fair portions of the screen are nonsense but the user still perceives the information by persistence. A particular commercial offering of a program to do that in custom web browser windows was mentioned. But again, MATLAB does not display through browser windows (not for most things.)
This does does, however, lead to a hypothetical possibility: if you were able to build your test functionality in MATLAB SDK then you could use a .NET or Java interface to it, and that could be displaying into a custom web browser that was using a graphics distorting technique. This would, however, not do you any good if the tests require that the users program in MATLAB.
Formatting the test in a GUI isn't at all a short cut here, it's actually much more work, but we are doing this so that students actually have to learn to get a good grade. The question at hand isn't about teaching style, though, so we don't need to discuss that here. Is it possible to have MatLab take note of when a screenshot is executed?

3 Commenti

Jan
Jan il 23 Feb 2018
Modificato: Jan il 23 Feb 2018
What you need is a keylogger. You could inform the students, that you have installed one and let them sign in written form, that they know, that screenshots are forbidden. This might work - but e.g. I would cancel the course. I liked professors to be focused on teaching and trusting me, that I am eager to learn.
My answers are slightly off-topic, because I'd have ethical problems to support the surveillance of students, although I do see that cheating is a problem. In the place where I work, keyloggers are illegal in general, so what ever you do, let your data protection officer check, if it is allowed.
Some of your students might have a photographic memory.
Oh, a key logger is a good idea, thanks. Actually we used to be entirely trusting. Our efforts to create new measures to prevent cheating only are happening now because a couple of days ago we found out that because we permit open notes, students took advantage of our trust in their integrity and cheating was rampant. This course originally was entirely optional and so the students were much more invested in actually learning. Now it's a requirement and there is a sad proportion that only care about getting the easiest grade possible. Honest students will be unaffected by the changes that we make. It will only impact those who were counting on being able to cheat.
Honest students will be unaffected by the changes that we make.
This is a dangerous argument. I did not (have to) cheat in my exams also, but I'd be affected, if all of my activities are controlled. Since I know, that the secret services can detect keywords in emails and phone calls, I am more restrained with terms concerning explosive material and political statements about the middle east - although I'm a pacifist. Sorry, now I got really off-topic. I think I have made my point clear. Unfortunately I do not know a fair and reliable solution for your problem.

Accedi per commentare.

Of course, even with all the software tricks to try to prevent screenshots, the person could always just take a snapshot with their smartphone camera. It will not have all the exact RGB values at each pixel, but it will probably be good enough for whatever the intended purpose is, like showing to other people or whatever.

1 Commento

No, the OP has said that the exam is proctored and cell phones are not permitted.

Accedi per commentare.

Categorie

Richiesto:

il 22 Feb 2018

Commentato:

Jan
il 24 Feb 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by