cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Community Member

NARC: Cheat Detection System

A few months ago I posted here about a cheat detection system I was working on for Canvas in Python here, which delved into some of the technicalities and code behind it. Well now you can download it for yourself and try it out! Its release version has a few more features than mentioned in the original post (such as a whole settings menu!) and is a little more cleaned up. 

What you do with this software, is of course, your choice. It can only be so accurate, but the no exception mode I find to be particularly helpful to teacher's who don't want to here excuses and just want to see students who left the page during the test. 

Here's the link(s) to download it: 

If you have the software winrar click here

If you don't know what a winrar is click here

If you can't figure out how to use it based on the included ReadMe (I don't blame you), there's a slightly better video explanation here: NARC - YouTube 

Here's some screenshots to give you idea of the software: 

271594_pastedImage_3.png271703_pastedImage_4.png

271704_pastedImage_5.png

Edit: 

If you have any problems with the software, make sure to let me know here! 

Issues · ByrdOfAFeather/NARC · GitHub 

Labels (1)
3 Replies
Highlighted
Community Advocate
Community Advocate

Matthew,

First, this looks amazing and I am exited to play around with it. I want to look into the source to possibly run it from Linux, and possibly randomly sample batches. I don't have a PC.

Second, can you tell me how you are determining page leaves? I see your API endpoints below, but the data I get back doesn't seem to enlighten me that the user left or did anything else. Can you explain?

https://github.com/ByrdOfAFeather/NARC/search?utf8=%E2%9C%93&q=%2Fv1&type=

$.getJSON('/api/v1/courses/'+course_id+'/quizzes/'+quiz_id+'/statistics?per_page=100', {'all_versions':'true'}, function(e) {
     console.log(e)
})


$.getJSON('/api/v1/courses/'+course_id+'/analytics/users/'+user_id+'/activity', function(e) {
     console.log(e)
     // output
     {page_views: {}, participations: Array(4)}
          page_views:
               2018-01-08T20:00:00-08:00:35
               2018-01-10T10:00:00-08:00:22
               2018-01-11T15:00:00-08:00:13
               2018-01-11T16:00:00-08:00:8
               2018-01-13T01:00:00-08:00:13
               2018-01-16T14:00:00-08:00:16
               2018-01-18T15:00:00-08:00:16
               2018-01-18T16:00:00-08:00:31
               2018-01-23T19:00:00-08:00:14
               2018-01-23T20:00:00-08:00:22
               2018-01-24T11:00:00-08:00:12
               2018-01-28T09:00:00-08:00:16
               2018-01-29T09:00:00-08:00:44
               2018-01-29T10:00:00-08:00:14
               2018-01-29T11:00:00-08:00:2
               2018-01-29T19:00:00-08:00:1
               2018-01-29T20:00:00-08:00:15
               2018-01-29T21:00:00-08:00:4
               2018-01-29T22:00:00-08:00:7
               2018-01-30T06:00:00-08:00:5
          participations:Array(4)
               0:{created_at: "2018-01-24T04:33:51Z", url: "https://xyz.instructure.com/api/v1/courses/12345/discussion_topics/12345/entries"}
               1:{created_at: "2018-01-29T17:49:22Z", url: "https://xyz.instructure.com/courses/12345/quizzes/1833979/take?user_id=12345"}
               2:{created_at: "2018-01-29T17:54:46Z", url: "https://xyz.instructure.com/courses/12345/assignments/12345/submissions"}
               3:{created_at: "2018-01-29T17:57:04Z", url: "https://xyz.instructure.com/api/v1/courses/12345/assignments/12345/submissions"}
   
})‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
Highlighted

1)

The source code can be found here: 

GitHub - ByrdOfAFeather/NARC: Senior Product- A Canvas LMS anomaly detection algorithm 

Notably: Some of the requirements for the project to run aren't included in the requirements.txt file. I think the only one is PIL (Python imaging library) which can be installed with pip install Pillow (I believe). 

2) 

Some of the features NARC uses have to be manually enabled in Canvas since some of it is in beta. 

This link will take you to the ReadMe where it goes over how to do that: 

GitHub - ByrdOfAFeather/NARC: Senior Product- A Canvas LMS anomaly detection algorithm 

Or if you prefer a direct link to the canvas docs:

How do I manage new features for a course? 

If you need anything else let me know, 

Matthew. 

Sorry, just reread what you were seeing and see I missed the point, 

The main api target that I get most of the data from are in the collectors. Specifically, the quiz collector. The page leaves, assuming you already enabled quiz log auditing in the options section of your course, are embedded in the quiz events. This is from this line of code. Essentially everything else in the collectors and constructors is looking at the quiz events and separating everything out. 

The activity api target you mentioned in your post is for the course itself.

I was looking into making the amount of time a student spent in a module relevant to determining if they were a cheater, but know from my own study habits that I spend most of the time studying not within the course. 

def module_times(self😞
"""Gets the amount of time a user spent on module items in a quizzes module
TO BE IMPLEMENTED
"""
for students in self.get_class_users('temp', 'temp'😞
# url = r'{}/api/v1/courses/{}/analytics/users/{}/activity'
api_target = r'{}/api/v1/users/{}/page_views'
response = requests.put(api_target.format(self.url, students), headers=self.header, verify=True)

# print(response.json())

Hope this actually helps, 

Matthew. 

Highlighted
Community Member

280627_pastedImage_1.png

I get the following error after inputting the API key. I'm not sure what it means -- there is not "matth" user on this computer!