反作弊分屏器真(考试反作弊显示器学校学生)「反作弊设备」

疫情当前,为了避免人群聚集,不少学校都把考试从线下搬到了线上
不同于线下,线上监考由于增加了更多不可控因素,如何在尽可能少增加成本的前提下,保证考试的公平公正就成了亟待解决的问题
近期,有几所学校的老师,相继联系我,希望可以得到相关技术支持
我计划做一个系列,用尽可能通俗易懂的方式,向大家分享一些作弊与反作弊的知识
古人云:“知己知彼,百战不殆”,我将站在攻守两方的角度,解释并验证双方的操作,但不会涉及非常详细的实现过程,以免被别有用心的人利用
现场重现某校期末考试为学生提供了两个套餐:套餐一:申请缓考,疫情结束后,统一考试
这个套餐的特点是,学生依然可以使用最熟悉的方式参加考试,监考也非常容易,不引入其他不确定性因素
但是,谁也不知道疫情持续多久,下学期还有下学期的课,十几门考试堆在一起,除非你记忆力超群,否则上学期的知识不知道还能记得多少
套餐二:参加线上考试
选择这个套餐的学生,需要保证在考前确认自己的设备符合监考要求
学校会培训各班班长,协助学生配置好考试环境,比如安装软件、放置摄像头等等
设备调试完成后,学生需要保证在完成考试前,考试环境不能改变
如果设备调试无法通过检查,则只能参加线下考试
一旦线上考试开始,任何自身原因造成的缺考,按0分处理
学校会出两套难度基本一致的考卷,并随机分配给套餐一和套餐二,因此不需要担心考题难度和泄露考题的问题
反作弊方的防范为了防止作弊,学校制定了详细的设备安装要求
▼设备安放图示摄像头1安装于电脑屏幕上方,拍摄屏幕正前方,主要是拍摄学生的面部和身后的情况
摄像头2安装于学生身体右侧,主要拍摄屏幕和学生双手的操作情况
两个摄像头都集成有麦克风,需要确保麦克风工作正常
摄像头1和2均由学校统一采购提供
考试系统会录制学生答题时的电脑屏幕,并上传,同时记录键盘鼠标操作
这就基本确保了学生不可能自己通过上网查资料,翻书等方式作弊
要想作弊,只能通过其他人帮助
反作弊方曾经想过阻断他人将答案告知考生的渠道,考生获得答案,要么靠眼睛,要么靠耳朵
耳朵这个途径,尤其难以防御,现在的隐形耳机太多,摄像头无法清晰拍摄出这个细节,而且还有骨传导等骚操作
于是,防范枪手获得考试题目就成了重点
除了采购两个摄像头,学校还采购了一个叫防窥膜的东西,要求学生安装于屏幕上,并通过摄像头2,检查防窥膜的效果
安装了防窥膜后,屏幕从侧面根本看不清,只有正面才能看到
如果有人想帮助考生作弊,由于摄像头的视野覆盖了整个屏幕正前方,从正前方看题会被摄像头发现,从侧面摄像头盲区看题,防窥膜会让他看不到东西
可能有人会问,学校采购这些设备的钱是哪儿来的呢?大部分学生都不知道,你参加线下考试,其实是交过钱的
因为考试是要花钱的,试卷印刷、场地、监考老师的补贴等等,只是这部分钱是摊入学费的,无需再次支付
线上考试中,试卷印刷、场地这两项肯定没有了,省下的钱,正好可以采购设备用
批量采购的成本是很低的,这些加一起都不超过100元/学生
一定有人想说,不就是个期末考试嘛,用得着这么兴师动众?在我的印象中,大学期末考试是通过性考试,过了也就过了,我是不是过了,并不影响其他人过不过,不会因为我过了,而有本来应该过的人不能过
但是学校老师的一席话,让我有了新的认识
大学也是存在竞争的,这个竞争中,学习成绩占了很大比重
比如:保研:挂科不能保研,总成绩高的可以保研
考研:考研录取并不是你过线就会录取,在过线的基础上,很多教授更愿意要本科成绩高的人
留学:GPA有多重要,无需赘述
入党:成绩高者优先
奖学金:成绩高者优先
企业联合培养:大企业都会和学校有合作,由学校推荐优秀学生参加联合培养计划,这对日后的发展很有帮助,我当年就是参与了这类计划
疫情期间涉及在线考试的课程,每个学生少的几门,多的十几门,作弊带来的成绩提升,以及随之而来的种种好处,是极其诱人的
这也是学校为什么非常重视在线考试作弊问题的原因
作弊者的阴谋设备安装要求公布之后,作弊者很快找到了漏洞:双屏
你不让我看屏幕,好办,我再接一个屏幕不就得了?基本上电脑都支持连接多个屏幕,现在枪手可以看到题目了
反作弊方的对策:由于考试系统是一个客户端软件,我们可以从容使用Windows提供的API来检测电脑究竟连接了多少个屏幕
学校用的考试系统是C#开发的,我们可以利用ManagementObjectSearcher来检测显示器的数量
var monitorCount = new ManagementObjectSearcher("SELECT FROM Win32_DesktopMonitor").Get().Count一行搞定,非常清爽,直接做成考试系统的插件,在考试系统启动前做一次检测,并在考试过程中,持续检测上传
作弊者的反制反作弊方检测显示器数量的方法,其实是检测电脑连接了几个显示器,如果可以把某种装置连接到电脑上,用它把信号复制一份的话,是不是就可以绕过了呢?因为电脑上只连接了一根视频线,电脑会以为自己只连接了一个显示器,并把信号送给这个装置,可以在这个装置的内部完成视频信号的复制工作,这真是神不知鬼不觉
事实上,这种装置是真实存在的,叫分屏器,原来是用于会议室和卖场电视设备展示的
▼考生用分屏器,复制屏幕内容给枪手
▼为了证明这种作弊方法确实可行,并寻找检测方法,我专门买来了一个分屏器
▼它的使用效果是这样的,确实能复制屏幕并绕过检测
反作弊方的思考其实反作弊方识别作弊行为的方法,本质上是在找特征
要寻找有区分度的特征,比如作弊必须要用到,正常考试不必用到的行为
为了弄清分屏器的工作机制,我拆开了它
▼这个分屏器掂量着挺重的,拆开一看,原来重量都在铁壳子上,板子很小
▼核心芯片就一个,IT6661FN
芯片型号都知道了,果断去官网查资料,文档里发现了一句话:
An EDID RAM is embedded in IT6661 to save the cost of the external EDID ROMs.翻译一下就是:IT6661集成了EDID RAM,可以节省外部ROM的成本
看起来IT6661FN内部存了些东西,也许就可以用来识别分屏器,灵感来了
EDID是什么东西EDID是Extended Display Identification Data的缩写,中文名称扩展显示器识别数据
说白了,就是一些用于描述显示器的数据,比如显示器的厂商、型号、支持的分辨率等等
大家有没有注意到,当你把显示器连接到电脑的时候,电脑会自动识别显示器支持的分辨率,就是这个EDID在起作用
▼赶紧查查HDMI的引脚图,第15和16两只引脚,就是用来读取EDID的
▼通过这两只引脚,尝试读取了下分屏器的EDID,果然有HDMI Splitte字样
▼按照EDID的格式,解析下,果然,分屏器的显示器名称部分的内容是HDMI Splitte,其实应该是HDMI Splitter,也就是HDMI分屏器的意思
我想会有人问,为什么Splitter少了个r,其实是因为EDID规范中,显示器名称最多只能容纳13字节,最后一个字节必须是0,标记字符串结束,所以有效字符只有12个,“HDMI Splitte”算上中间的空格正好12个字符
▼顺手也读取了下陪伴我多年的显示器的EDID,居然5年前的东西就支持4k啦,很爽啊,哈哈哈
反作弊方的的对策既然已经找到了合适的特征,下一步就是撸代码了
我实在太懒,读取和解析用的都是别人的轮子,用到了WindowsDisplayAPI和EDIDParser两个开源项目
foreach (var display in Display.GetDisplays()){ byte[] edidData; using (var key = display.OpenDevicePnPKey()) { using (var subkey = key.OpenSubKey("Device Parameters")) { edidData = (byte[])subkey.GetValue("EDID", null); } } if (edidData != null) { var edid = new EDID(edidData); foreach (var descriptor in edid.Descriptors) { if (descriptor is StringDescriptor) { Console.WriteLine(((StringDescriptor)descriptor).Value); } } }}代码不复杂,先逐个遍历显示器,读取每个显示器的EDID,解析其中的显示器名称,其实上面检测显示器数量也可以用这段代码
这个模块同样是作为考试系统的插件,不断把显示器的EDID上传到服务器,配合分屏器名称黑名单即可判断是否使用分屏器,并根据EDID中的信息,识别分屏器的厂商、型号、甚至是序列号
后记就在本文写作的几天中,学校陆续组织了几次考试,成功抓获十余位使用分屏器的考生,当老师直接说出他们使用的是什么型号的分屏器时,他们都大惊失色,最终承认了作弊行为
而我嘛,功成身退,上头条,写文章,享受分享知识的乐趣
作弊与反作弊,就像一枚硬币的两面,必将相伴始终
我希望所有学生都可以诚信考试,不要铤而走险
不过嘛,好奇心还是驱使着我,继续探索各种可能的漏洞以及防御方法
如果你对这方面的知识感兴趣,就点个关注吧,这样就不会错过后续的更新咯
反作弊分屏器真(考试反作弊显示器学校学生)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息