管控孩子電腦軟件是一款用于管控上網(wǎng)課的孩子電腦程序,在之前的版本上編譯了exe執(zhí)行程序,為了簡(jiǎn)化,只編譯了一個(gè)孩子電腦的server端,以及一個(gè)家長(zhǎng)端的控制端,當(dāng)然,也可以把控制端放在孩子電腦上,一并執(zhí)行!
軟件介紹
程序的組成
1.1 本程序server端
server的daemon端,也即是ChildGuard.exe,默認(rèn)監(jiān)聽在8888端口。
運(yùn)行時(shí),會(huì)申請(qǐng)管理員身份運(yùn)行,無(wú)管理權(quán)限會(huì)失敗。
由于其申請(qǐng)會(huì)申請(qǐng)windows開機(jī)啟動(dòng)等一系列木馬常用行為,會(huì)被360認(rèn)為是木馬之類。
需要讓360放行,并添加信任。
如果不放心exe程序,請(qǐng)下載對(duì)應(yīng)的源碼,自行編譯
由于其會(huì)嘗試調(diào)用電腦攝像頭抓拍,有時(shí)會(huì)被360攔截,有時(shí)不會(huì)(說(shuō)明360這個(gè)功能不靠譜啊,真攔截時(shí),攔不住)
請(qǐng)?jiān)?60安全衛(wèi)士,“設(shè)置”-->“安全防護(hù)中心”-->設(shè)置“免打擾模式”和去掉“魔法攝像頭”
ChildGuard其會(huì)釋放出WatchDog.exe程序,并將它注冊(cè)成為一個(gè)開機(jī)自啟動(dòng)的WatchDogC的服務(wù)。
WatchDogC的服務(wù),會(huì)根據(jù)WatchDog.ini里面的配置,來(lái)定期輪詢啟動(dòng)的ChildGuard.exe是否活著,沒有活著的話,嘗試啟動(dòng)它。
這樣可以保證ChildGuard.exe即使被殺,WatchDogC服務(wù)會(huì)自動(dòng)再拉起一個(gè)ChildGuard.exe程序
執(zhí)行完后,重啟下電腦,重啟后,netstat -ano|findstr 8888
驗(yàn)證確認(rèn)ChildGuard.exe已經(jīng)可以自動(dòng)啟動(dòng),監(jiān)聽在了8888端口
1.2 本程序的client端
客戶端部分,有幾個(gè):
1.2.1 ChildControl.exe控制部分
這個(gè)程序放在家長(zhǎng)電腦上運(yùn)行,或者放置在孩子電腦上運(yùn)行
放置在家長(zhǎng)的電腦上運(yùn)行,記得修改ChildControl.ini里面的孩子電腦ip地址
它負(fù)責(zé)死循環(huán),每30s檢查一下孩子pc的狀態(tài):
①獲得當(dāng)前運(yùn)行的是什么程序,程序的標(biāo)題是什么
②如果當(dāng)前的前臺(tái)程序在黑名單,那么kill它
③檢查360瀏覽器的標(biāo)題,含有相關(guān)關(guān)鍵字,kill它
④檢查騰訊視頻是否存在,kill它
⑤每30s抓拍一次電腦屏幕,以及攝像頭抓拍一次
⑥每30s抓一端10s的麥克風(fēng)錄音
⑦黑名單的開啟時(shí)間段:比如設(shè)置成晚上或者周末,可以使用黑名單的程序,其他時(shí)間可以
如果設(shè)置了啟動(dòng)時(shí)自動(dòng)隱藏,下次想能夠操作,請(qǐng)先修改ChildControl.ini里面的hide參數(shù),設(shè)置為0
1.2.2 rpc_cmd.exe是命令行cli部分
這個(gè)可以放在我的電腦上運(yùn)行:
>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(別玩游戲啦,快做作業(yè)!)
tts這個(gè)用得多,主要是會(huì)在它屏幕上顯示一個(gè)對(duì)話框,上面有你發(fā)過去的文字,然后會(huì)在他電腦上,語(yǔ)音播報(bào)一下這段文字
功能介紹
程序當(dāng)前支持的功能:
now:取得當(dāng)前孩子pc的時(shí)間
md5sum:給定文件名,返回對(duì)應(yīng)的md5值(用于校驗(yàn)文件比對(duì))
wf: 寫data給到指定文件
rf: 讀文件內(nèi)容
my_exec : 執(zhí)行指定的dos命令,返回標(biāo)準(zhǔn)輸出的內(nèi)容,和錯(cuò)誤輸出的內(nèi)容
'killProcess', 給定pid,殺進(jìn)程
'getProcess', 不加參數(shù),返回所有進(jìn)程信息;加pid返回pid進(jìn)程信息;加caption信息,返回caption的進(jìn)程信息
'getActiveProcName', 返回當(dāng)前前臺(tái)的進(jìn)程信息
'cpu_usage', 返回當(dāng)前cpu利用率
'mem_usage', 返回當(dāng)前內(nèi)存利用率
'dimm_info',返回當(dāng)前物理內(nèi)存條情況
'msg', 發(fā)指定的文本消息給孩子的電腦屏幕,并等待孩子點(diǎn)“確定”
'msgImm',發(fā)指定的文本消息給孩子的電腦屏幕,不等孩子點(diǎn),直接返回
'get_path',獲得當(dāng)孩子pc上ChildGuard.exe運(yùn)行所在目錄
'tts',發(fā)指定的文本消息給孩子的電腦屏幕,并語(yǔ)音播報(bào)給消息內(nèi)容
'net_info',返回孩子pc上的網(wǎng)絡(luò)信息內(nèi)容
'is_admin', 判斷ChildGuard.exe是否是以管理員模式運(yùn)行的
'GetSystemPowerStatus',判斷電池電量等信息,方便今后的其他應(yīng)急程序準(zhǔn)備
'uptime', 獲得電腦的運(yùn)行時(shí)間
'create_time',獲得ChildGuard.exe的運(yùn)行時(shí)間
'username', 獲得當(dāng)前ChildGuard.exe是以哪個(gè)用戶運(yùn)行的
'disk_c_usage', 獲得c盤的利用率
'disk_io_counters', 獲得當(dāng)前磁盤的io情況,建議間隔運(yùn)行2次,取差值÷間隔時(shí)間,獲得io流量
'net_io_counters', 獲得網(wǎng)絡(luò)io情況
'snapScreen',抓電腦屏幕
'snapCam', 抓攝像頭拍照
'snapMerge', 抓電腦屏幕并抓攝像頭拍照,然后把兩者拼接到一個(gè)圖片上
'snapAudio',抓電腦的麥克風(fēng)錄音一段指定時(shí)長(zhǎng)(默認(rèn)10s)
'll',類似linux的ls -l的輸出信息
待完善支持功能
1、熱更新
2、獲得微信訪問指定網(wǎng)址的內(nèi)容。
目前GetForegroundWindow獲得窗口句柄
再GetWindowText用窗口句柄獲得標(biāo)題,
用GetWindowThreadProcessId獲得pid
用WMI接口用pid獲得命令行信息
基本能覆蓋各個(gè)瀏覽器標(biāo)題內(nèi)容,滿足了大部分需求。
但如果用微信打開的網(wǎng)頁(yè)鏈接,或者小程序之類的,這個(gè)標(biāo)題text或者頁(yè)面內(nèi)容獲得不到。
還在嘗試別的思路,捕獲這個(gè)信息
3、防被殺
目前孩子小,還不會(huì)任務(wù)管理器,將來(lái)可能就會(huì)了。
要考慮病毒方式雙進(jìn)程互動(dòng)
4、目前用的是xmlrpc.server.SimpleXMLRPCServer,還沒有身份驗(yàn)證機(jī)制,內(nèi)網(wǎng)使用還好,不建議映射端口掛公網(wǎng)
使用說(shuō)明
補(bǔ)充下使用技巧
1、ChildControl.ini中的輪詢間隔
設(shè)置為30s,目前來(lái)看是折中后,比較合適的。
性能和及時(shí)性上,都可以保障
2、snap的文件太多了,list會(huì)耗時(shí)太長(zhǎng),
這個(gè)需要定期清理下
寫了這個(gè)archive_snap_pic.py程序,可以定期清理
3、snap后的照片分析
analyze_pic.py程序
用孩子電腦攝像頭抓拍了照片,可以用opencv簡(jiǎn)單判斷下幾個(gè)狀態(tài):
a、筆記本電腦合上了;b、孩子離開座位,沒在電腦前;c、孩子坐在電腦前
目前還在研究opencv的玩法,大致只實(shí)現(xiàn)了上述的幾個(gè)內(nèi)容
4、源碼方式執(zhí)行:
需要依賴的幾個(gè)包:
python.exe -m pip install pyinstaller PyQt5 opencv-python pywin32 Pillow baidu-aip psutil pygame pydub
去網(wǎng)站
找到對(duì)應(yīng)自己電腦版本的PyAudio模塊,下載下來(lái),然后安裝它
python.exe -m pip install PyAudioxxxxx.whl