java作弊_java利用剪切板的作弊工具

本文介绍了一个用于上机考试的小工具,该工具通过读取预先准备的题库,在考试时自动匹配并提供答案。程序通过监听剪切板内容,与题库进行比对,一旦找到匹配题目,即把答案放入剪切板。虽然作者强调这只是技术交流,但此技术可能引发关于学术诚信的讨论。
摘要由CSDN通过智能技术生成

[TOC]

背景及效果

考试又考试,考试何其多 天天为考试,万事成蹉跎 学子皆被分数累,春去秋来没快乐 朝闻老师吼,暮闻家长火 一生考试苦几何,请君听我考试歌

暑假前有个同学要上机考日语,然而对于他这种连书的目录都没看过的人,考试,呵呵。

feada3a796c51a7801263ebea0af2a3d.png

于是我就搞出了这个小工具。一般上机考试都是会提前发题库的,他只需要在考试的时候把题库复制到考试电脑上一份,把程序打成包,双击后台运行就好了。效果就是复制题目,然后粘贴直接出答案。

d3c1938dc41dc71c7df6691c444dd9ce.gif

8327985acc87f254d3f8dbf4d576711a.png

代码思路

复制的内容会存放到电脑剪切板,通过代码从剪切板拿到复制的内容,然后读题库,一行一行去比对,看是否包含拿到的词条,如果匹配成功那么就把对应的题目放入剪切板,这样再粘贴就是粘贴出的答案。以下为具体细节:

先得到剪切板,随便放点内容进去,防止程序第一次运行时,匹配的时候出现空指针异常

运行程序后,操作者会复制题目,复制的题目会保存进剪切板

开始死循环,让程序一直运行着

死循环内部,从剪切板拿到复制的题目

读取题库,一行一行的对比

当发现读到的当前行题目和得到的剪切板里的题目一致时,把对应的答案放入剪切板

这时再粘贴就会出现答案

源码

public static void main(String[] args) throws Exception {

/*

* 得到系统剪切板,并定义一个字符串放入剪切板,该字符串的目的是为了让剪切板里有点东西,防止在刚运行程序时包空指针异常

*/

//得到剪切板

Clipboard clipoard = Toolkit.getDefaultToolkit().getSystemClipboard();

//随便定义个字符串,StringSelection是剪切板可识别的字符串格式

StringSelection temp = new StringSelection("aaa");

//通过剪切板的set方法将上述字段添加进剪切板

clipoard.setContents(temp, null);

/*

* 死循环,保证程序一直运行着

* 从剪切板中拿到复制的内容

* 读取题库文件,一行一行比对

* 如果发现该行内容包含复制的词条,那么匹配成功,把该行内容中的答案部分添加进剪切板

*/

while(true) {

//得到剪切板中的内容模块

Transferable transferable = clipoard.getContents(null);

//从中匹配字符串格式,得到剪切板中的文字

String search = (String)transferable.getTransferData(DataFlavor.stringFlavor);

//读入题库文件

Scanner scanner = new Scanner(new File("d:/task.txt"));

//按行读取文件

while (scanner.hasNext()) {

String context = scanner.nextLine();

//判断改行是否包含搜索的词条

if(context.contains(search)) {

//如果包含,将改行冒号后的部分也就是答案部分放入剪切板

StringSelection selection = new StringSelection(context.split(":")[1]);

clipoard.setContents(selection, null);

}

}

//休眠一秒,防止频繁调用剪切板系统报错

Thread.sleep(1000);

}

}

难点讲解

因为这里用scanner按行读取的文件,所以在编辑题库的时候最好一道题一行,然后题目和答案之间用某个符号来做关联,方便截取答案。我是用英文冒号做的关联,所以取答案的时候用context.split(":")[1]来截取

fe8664270992b203b44c9d7873e243ef.png

Transferable是剪切板的内容类,获取的东西是剪切板里的所有内容,包含字符串、图片、文件的各种格式。利用 (String)transferable.getTransferData(DataFlavor.stringFlavor)这个方法,是从内容对象中去得到字符串部分。因为复制的时候我们可以复制任何东西,所以代码这里在获取内容的时候可以通过格式匹配来获取指定格式的内容。

装逼时刻

视频不好放,演示效果参考上面的动图。不过有了这个小东西后,那个同学上机日语考试十五分钟就交卷了。考完试他对我的崇拜就像这样。哈哈哈哈哈哈哈啊哈

8fe72ce5790fca9342c6a3de58d8351f.png

咳咳,这里要声明一下啊,我们只是在交流技术而已,你们不要学坏哦!

2172ab113e70cca7e82bcd1a1fb9d7b5.png

e558f3f60762f1c6b5c50b2de6e60109.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值