好友
阅读权限 25
听众
最后登录 1970-1-1
本帖最后由 sunbeat 于 2020-4-23 17:25 编辑
源码部分,参见这个帖子:
https://www.52pojie.cn/thread-1157224-1-1.html
本帖子是编译后的exe程序。
为了简化,只编译了一个孩子电脑的server端,以及一个家长端的控制端。
当然,也可以把控制端放在孩子电脑上,一并执行
相关程序请在如下链接下载:
4.17 更新:增加rpc_cmd.exe程序,用于命令行做一些交互,比如:发消息给孩子电脑
4.23更新:增加了允许游戏和允许视频等的允许时间段控制
链接: https://pan.baidu.com/s/197aXXd1efOmVkO3BRvbqOQ 提取码: w5qy
1、在孩子电脑上运行:ChildGuard.exe程序,提示申请管理员权限时,赋予;
2、在自己电脑,或者孩子电脑上,运行ChildControl.exe程序后,按Ctrl+C或者Fn+B终止
能看到新生成了一个ChildControl.ini文件,打开它,修改其中的hosts里面的ip地址,指向孩子的电脑
相关参数说明:
{'hosts':['10.10.20.59:8888','10.10.20.59:7777'], #默认要监控的主机列表
'interval':30, #默认轮询间隔秒数
'timeout':30, #设置socket默认超时,从而影响xmlrpc.client的连接超时
'black_list':['360game.exe','qqlive.exe'], #进程黑名单,强制全部小写比对
'browsers':['chrome.exe', #谷歌chrome浏览器
'360se.exe', #360浏览器
'iexplore.exe', #老ie浏览器
'MicrosoftEdge.exe', #微软Edge
'MicrosoftEdgeCP.exe', #微软Edge
'ApplicationFrameHost.exe', #微软Edge
'firefox.exe', #火狐浏览器
'sogouexplorer.exe', #搜狗浏览器
'qqbrowser.exe', #qq浏览器
'wechatweb.exe' #微信内置浏览器
], #哪些浏览器被关注,强制小写比对
'browser_keywords':['游戏','game'], #浏览器敏感词识别
'do_kill':1, #满足black_list、condition_browser相关条件,是否kill
'seconds':10, #默认每次录音多少秒
'allow_periods':[{'p':'12:15-13:30','w':'1-5'}, #周一至周五,12:15-13:30可以玩,不kill
{'p':'12:15-14:30','w':'6'}, #周六,12:15-14:30可以玩,不kill
{'p':'17:45-19:30','w':'6,7'}, #周六日,17:45-19:30可以玩,不kill
{'p':'12:00-13:20','w':'7'}, #周日,12:00-13:20可以玩,不kill
], #哪些时间段可以
'snap_dir':'snap/', #抓取的截图和录音,放置的目录位置
'hide':0, #是否隐藏自己
}
3、rpc_cmd.exe用于命令行交互操控孩子电脑,比如:
pi@raspberrypi:/var/www/html$ ./rpc_cmd.exe
checking host=stanleypc,port=8888
http://stanleypc:8888>help
func=s.help()
['now', 'md5sum', 'wf', 'rf', 'my_exec', 'killProcess', 'getProcess', 'getActiveProcName', 'cpu_usage', 'mem_usage', 'dimm_info', 'msg', 'msgImm', 'get_path', 'tts', 'net_info', 'is_admin', 'GetSystemPowerStatus', 'uptime', 'create_time', 'username', 'disk_c_usage', 'disk_io_counters', 'net_io_counters', 'snapScreen', 'snapCam', 'snapMerge', 'snapAudio', 'll', 'exit', 'help', 'version']
http://stanleypc:8888>version
func=s.version()
v0.8.6.20200410
http://stanleypc:8888>tts(别玩游戏啦,快做作业!)
tts这个用得多,主要是会在它屏幕上显示一个对话框,上面有你发过去的文字,然后会在他电脑上,语音播报一下这段文字
4、ChildGuard的Server端目前支持的功能:
now:取得当前孩子pc的时间
md5sum:给定文件名,返回对应的md5值(用于校验文件比对)
wf: 写data给到指定文件
rf: 读文件内容
my_exec : 执行指定的dos命令,返回标准输出的内容,和错误输出的内容
'killProcess', 给定pid,杀进程
'getProcess', 不加参数,返回所有进程信息;加pid返回pid进程信息;加caption信息,返回caption的进程信息
'getActiveProcName', 返回当前前台的进程信息
'cpu_usage', 返回当前cpu利用率
'mem_usage', 返回当前内存利用率
'dimm_info',返回当前物理内存条情况
'msg', 发指定的文本消息给孩子的电脑屏幕,并等待孩子点“确定”
'msgImm',发指定的文本消息给孩子的电脑屏幕,不等孩子点,直接返回
'get_path',获得当孩子pc上ChildGuard.exe运行所在目录
'tts',发指定的文本消息给孩子的电脑屏幕,并语音播报给消息内容
'net_info',返回孩子pc上的网络信息内容
'is_admin', 判断ChildGuard.exe是否是以管理员模式运行的
'GetSystemPowerStatus',判断电池电量等信息,方便今后的其他应急程序准备
'uptime', 获得电脑的运行时间
'create_time',获得ChildGuard.exe的运行时间
'username', 获得当前ChildGuard.exe是以哪个用户运行的
'disk_c_usage', 获得c盘的利用率
'disk_io_counters', 获得当前磁盘的io情况,建议间隔运行2次,取差值÷间隔时间,获得io流量
'net_io_counters', 获得网络io情况
'snapScreen',抓电脑屏幕
'snapCam', 抓摄像头拍照
'snapMerge', 抓电脑屏幕并抓摄像头拍照,然后把两者拼接到一个图片上
'snapAudio',抓电脑的麦克风录音一段指定时长(默认10s)
'll',类似linux的ls -l的输出信息
5、使用技巧
ChildControl.ini中的轮询间隔
设置为30s,目前来看是折中后,比较合适的。
性能和及时性上,都可以保障
目前ChildControl.exe每次轮询的时候,比对ChildControl.ini的修改日期,
发现变化了,就重新读下最新配置,应用最新控制策略
snap的文件太多了,list会耗时太长,
这个需要定期清理下
ChildControl.exe的部署技巧
目前是用schtasks.exe /create /tn child7777 /tr "c:\users\stanley\childguard.exe port=7777" /sc MINUTE /MO 15 /sd 2020/03/26 /st 16:32 /ru stanley /rp password123
这样通过计划任务,每15分钟执行一次childguard.exe port=7777,来保障程序始终会运行。(所以程序内,要加锁,避免多开)
即使杀掉后,15分钟后又可以运行。
这样的方式,让一个ChildControl.exe以7777端口监听启动,保留一个火种(但这个是后台启动的,API权限受限)
另外一个,就是通过teamviewer远程连进去,手工启动的了。
当然,目前还在研究自己写一个WatchDog的封装,以windows服务启动,想法儿能有前台的权限
其他相关的使用,请参见https://www.52pojie.cn/thread-1157224-1-1.html
免费评分
查看全部评分