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.py運行所在目錄

'tts',發指定的文本消息給孩子的電腦屏幕,并語音播報給消息內容

'net_info',返回孩子pc上的網絡信息內容

'is_admin', 判斷ChildGuard.py是否是以管理員模式運行的

'GetSystemPowerStatus',判斷電池電量等信息,方便今后的其他應急程序準備

'uptime', 獲得電腦的運行時間

'create_time',獲得ChildGuard.py的運行時間

'username', 獲得當前ChildGuard.py是以哪個用戶運行的

'disk_c_usage', 獲得c盤的利用率

'disk_io_counters', 獲得當前磁盤的io情況,建議間隔運行2次,取差值÷間隔時間,獲得io流量

'net_io_counters', 獲得網絡io情況

'snapScreen',抓電腦屏幕

'snapCam', 抓攝像頭拍照

'snapMerge', 抓電腦屏幕并抓攝像頭拍照,然后把兩者拼接到一個圖片上

'snapAudio',抓電腦的麥克風錄音一段指定時長(默認10s)

'll',類似linux的ls -l的輸出信息

程序介紹

本程序server端

server的daemon端,也即是ChildGuard.py,默認監聽在8888端口。

運行時,會申請管理員身份運行,如果沒有管理員權限,也可以運行。

其用到了MyTTS.py模塊,該模塊主要負責調用百度的api接口,文字轉語音,然后播放它,以及語音轉文字(暫未用)。

百度的API還不錯,比訊飛的免費調用次數給的多些,請自行申請對應的相關APP_ID、API_KEY、SECRET_KEY信息

由于wav的pcm格式轉mp3用的是pydub的AudioSegment,這個是調用的ffmpeg來實現,要先下載ffmpeg,并把它放在PATH能夠得著的地方。

下載地址:http://ffmpeg.org/download.html

監聽pc麥克風用的是pyaudio模塊,默認在windows上,直接pip裝不上,建議直接下載對應的windows版本下載到本地。

再pip install PyAudio*.whl來進行安裝

Server端目前有個問題,就是必須在前臺運行,不能后臺(比如計劃任務調用,比如windows服務調用)。

如果后臺運行的話,相關的msg接口,相關的獲得前臺進程接口,都有問題(這個是windows安全性的限制),

目前還在研究偷explorer.exe的token,然后用它token運行ChildGuard.py,但各種坑,還在趟

(OpenProcess,OpenProcessToken,DuplicateTokenEx,CreateProcessWithTokenW)

1.2 本程序的client端

客戶端部分,有幾個:

1.2.1 ChildControl.py控制部分

這個我是放在家里的樹莓派3B上運行,它負責死循環,每30s檢查一下孩子pc的狀態:

①獲得當前運行的是什么程序,程序的標題是什么

②如果當前的前臺程序在黑名單,那么kill它

③檢查360瀏覽器的標題,含有相關關鍵字,kill它

④檢查騰訊視頻是否存在,kill它

⑤每30s抓拍一次電腦屏幕,以及攝像頭抓拍一次

⑥每30s抓一端10s的麥克風錄音

1.2.2 rpc_cmd.py的命令行cli部分

這個可以放在我的電腦上運行,或者放在樹莓派上運行類似這樣:

pi@raspberrypi:/var/www/html$ ./rpc_cmd.py

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這個用得多,主要是會在它屏幕上顯示一個對話框,上面有你發過去的文字,然后會在他電腦上,語音播報一下這段文字

1.2.3 update_childguard.py更新程序

這個會把我電腦里面最新的ChildGuard.py程序,去覆蓋當前孩子pc上的。

但如何熱更新,目前還摸索中。

現在只能是update_childguard.py完了后,

用ssh進孩子的電腦,netstat -ano|findstr 8888查看是哪個pid占8888端口,

然后taskkill /f /pid <PID>把ChildGuard.py進程殺掉

然后teamviewer連進孩子的電腦,再圖像界面下,啟動ChildGuard.py(前面ssh里面起的話,算后臺起,API資源受限)

1.2.4 rpc_trans_file.py批量文件傳送

這個會把我電腦to_trans/目錄下的所有文件,都發到孩子pc上去

ChildGuard下載-ChildGuard(孩子上網課監督提醒工具)v1.0 綠色版下載地址

遠程下載