日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

上网行为管理agent(开源产品deskvideosys代理)

發布時間:2024/3/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 上网行为管理agent(开源产品deskvideosys代理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接上一篇終端上網行為管理開源框架己經介紹的服務器端開源代碼,其實同時還開源了agent端的代碼,agent使用的是vc++,能運行在windows7以上操作系統上,目前代碼還不是太多,主要是收集了pc端的程序運行信息,我給大家大致解讀下,具體的源碼地?址為boxiaojishu/windata (github.com)

代碼中先是實現了一個公共讀取windows操作系統的硬件信息

bool getDevcieInfo(char* cmd, list<string>& resultList) {
?? ?char buffer[BUFFER_SIZE];
?? ?bool ret = false;
?? ?FILE* pipe = _popen(cmd, "r"); //打開管道,并執行命令
?? ?if (!pipe)
?? ?return ret;
?? ?const char* name[20] = { "UUID","ProcessorId","SerialNumber" };
?? ?int len0 = strlen(name[0]), len1 = strlen(name[1]), len2 = strlen(name[2]);
?? ?bool isOk = false;
?? ?while (!feof(pipe))
?? ?{
?? ?if (fgets(buffer, BUFFER_SIZE, pipe))
?? ?{
?? ?if (strncmp(name[0], buffer, len0) == 0
?? ?|| strncmp(name[1], buffer, len1) == 0
?? ?|| strncmp(name[2], buffer, len2) == 0) // 能夠正確獲取信息
?? ?{
?? ?isOk = true;
?? ?continue;
?? ?}
?? ?if (isOk == false
?? ?|| strcmp("\r\n", buffer) == 0) //去掉windows無用的空行
?? ?{
?? ?continue;
?? ?}
?? ?ret = true;
?? ?resultList.push_back(string(buffer));
?? ?}
?? ?}
?? ?_pclose(pipe); // 關閉管道
?? ?return ret;
}

接著實現了一個讀取主板UUID信息,如果主板UUID不存在,使用CPUID、BIOS序列號、硬盤序列號生成機器指紋

代碼如下:

string getDeviceFingerPrint() {
?? ?list<string> strList;
?? ?list<string>::iterator it;
?? ?hash<string> str_hash;
?? ?size_t num;
?? ?char tmp[11] = { 0 };
?? ?// 主板UUID存在,就使用主板UUID生成機器指紋

?? ?if (getDevcieInfo((char*)"wmic csproduct get UUID", strList)

?? ?&& (*strList.begin()).compare("FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF\r\n") != 0)
?? ?{

?? ?//cout << *strList.begin() << endl;

?? ?cout << (*strList.begin()).substr(0, (*strList.begin()).length() - 4) << endl;
?? ?num = str_hash(*strList.begin());

?? ?sprintf_s(tmp, "%u", num);

?? ?//cout << string(tmp) << endl;
?? ?return string((*strList.begin()).substr(0, (*strList.begin()).length() - 4));
?? ?}
?? ?// 主板UUID不存在,使用CPUID、BIOS序列號、硬盤序列號生成機器指紋

?? ?string otherStr("");

?? ?strList.clear();

?? ?if (getDevcieInfo((char*)"wmic cpu get processorid", strList)) {

?? ?//otherStr.append((*strList.begin()).pop_back());

?? ?otherStr.append((*strList.begin()).substr(0, (*strList.begin()).length() - 4));

?? ?cout << *strList.begin() << endl;

?? ?}

?? ?cout << otherStr << endl;

?? ?strList.clear();

?? ?if (getDevcieInfo((char*)"wmic bios get serialnumber", strList)) {

?? ?otherStr.append((*strList.begin()).substr(0, (*strList.begin()).length() - 9));

?? ?cout << *strList.begin() << endl;

?? ?cout << otherStr << endl;

?? ?}

?? ?strList.clear();
?? ?if (getDevcieInfo((char*)"wmic diskdrive get serialnumber", strList)) {
?? ?string allDiskNum("");
?? ?// 硬盤可能有多塊
?? ?for (it = strList.begin(); it != strList.end(); it++)
?? ?{
?? ?allDiskNum.append(*it);
?? ?}
?? ?cout << *strList.begin() << endl;
?? ?otherStr.append((*strList.begin()).substr(0, (*strList.begin()).length() - 4));
?? ?}
?? ?cout << otherStr << endl;
?? ?num = str_hash(otherStr);

?? ?sprintf_s(tmp, "%u", num);
?? ?//cout << string(tmp) << endl;
?? ?return string(otherStr);

}

先解讀到這里,后面的代碼大家先自己看,待有空再來解讀

總結

以上是生活随笔為你收集整理的上网行为管理agent(开源产品deskvideosys代理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。