談一談netkeeper的運行原理及如何不用路由器開啟wifi。(針對重慶地區,其它地區沒研究過。日期:2017.11.29)
舊版:
netkeeper將用戶名加密為真正的用戶名進行登錄,登錄以后netkeeper檢測是否有wifi軟件開啟,有則斷網。
舊版在聯網以后殺死netkeeper進程即可開啟wifi
新版:
netkeeper將會創建兩個進程,且進程名是程序生成的隨機字符串。打開進程管理器可以看到會有兩個隨機字符串的進程,兩個進程同名但內存占用差了一個數量級。
網上查資料大都說netkeeper會發心跳包,但我抓包分析卻沒發現有,服務器倒是一直有向client發送LCP echo request報文,每隔20s發一次,然后netkeeper會進行應答,發送LCP echo reply原理大致與ping發icmp差不多,於是我殺死一個內存占用大的netkeeper的進程,發現netkeeper發送了LCP termination request和PADT報文,可知新版netkeeper是檢測進程數察覺進程是否被殺死,從而斷網。於是我重新聯網,殺死內存占用小的進程,發現要過一段時間大內存的進程才發現並斷網。
從上可以推測netkeeper的運行大致情況。netkeeper運行創建兩個進程,大的負責wifi軟件檢測和小進程的存在與否,小的負責檢測大進程的存在與否,二者若檢測到另一進程被殺死則開始斷網。
開啟wifi方法:打開進程管理,先殺死小的進程,然后在大進程沒反應過來的時候迅速殺死大進程,這樣netkeeper就被殺死,無法檢測wifi程序,可以放心開wifi了
給個bat命令殺netkeeper進程,防止手速過慢導致斷網。
wmic process get processid,executablepath | findstr NetKeeper > task.txt
for /f "skip=1 tokens=1,2 delims= " %%i in (./task.txt) do taskkill /f /pid %%j
for /f "tokens=1,2 delims= " %%i in (./task.txt) do taskkill /f /pid %%j
復制之后寫入任意文件,把后綴名改為.bat就行了.