• c++屏蔽qq或者wechat的好友对局域网环境下的指定关键字


    要使用C++来屏蔽QQ或WeChat的好友对家庭网络或局域网环境下的指定关键字,你需要编写一个网络包过滤程序,该程序需要有能力拦截并分析网络流量,然后根据指定的规则(如关键字)来阻止或允许数据包的传输。然而,需要注意的是,这是一个相当复杂的任务,需要对网络编程和操作系统有深入的理解。
    
    首先,你需要了解微信和QQ的通讯协议。微信使用TCP通讯,端口范围包括80,443,8080。微信会采用HTTP和TLS协议进行通讯,连接的主机(Host)和UserAgent有特定的正则表达式。这些信息可以用来识别微信的网络流量。
    
    然后,你需要使用C++编写一个程序来监听网络流量。你可以使用诸如libpcap(在Unix-like系统中)或WinPcap(在Windows中)这样的库来捕获网络包。这些库提供了在网络层捕获数据包的API。
    
    接下来,你需要分析捕获的数据包。你可以使用诸如Wireshark这样的网络协议分析器来查看数据包的结构和内容。你需要将分析的结果与微信和QQ的通讯协议进行匹配,以识别出来自这些应用的数据包。
    
    最后,你需要根据指定的规则(如关键字)来决定是否阻止数据包的传输。你可以使用正则表达式来匹配关键字,如果数据包的内容匹配了这些关键字,那么你可以选择丢弃这些数据包,以此来“屏蔽”这些内容。
    
    需要注意的是,这个任务需要深入的网络编程知识,而且可能会对网络性能产生影响。此外,由于微信和QQ的通讯可能是加密的,这可能会使得内容过滤变得更加困难,甚至不可能。在进行这样的操作时,你应该确保你的行为符合当地的法律法规,并且尊重用户的隐私。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    #include 
    #include 
    
    // 获取窗口句柄
    // 参数1:窗口类名
    // 参数2:窗口标题
    HWND get_window_handle(const std::string& class_name, const std::string& window_name) {
        // 将std::string转换为LPCSTR
        LPCSTR class_name_cstr = class_name.empty() ? NULL : class_name.c_str();
        LPCSTR window_name_cstr = window_name.empty() ? NULL : window_name.c_str();
    
        // 使用FindWindowEx函数获取窗口句柄
        HWND hwnd = FindWindowEx(NULL, NULL, class_name_cstr, window_name_cstr);
        return hwnd;
    }
    
    // 模拟发送消息
    // 参数:要发送的消息
    void send_message(HWND hwnd, const std::string& message) {
        // 将窗口设置为前台
        SetForegroundWindow(hwnd);
    
        // 模拟输入消息
        for (char c : message) {
            // 创建一个键盘输入事件
            INPUT input;
            input.type = INPUT_KEYBOARD;
            input.ki.wVk = VkKeyScan(c);
            input.ki.dwFlags = 0;
            input.ki.time = 0;
            input.ki.dwExtraInfo = 0;
    
            // 发送输入事件
            SendInput(1, &input, sizeof(INPUT));
        }
    
        // 模拟按下回车键发送消息
        keybd_event(VK_RETURN, 0, 0, 0);
        keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
    }
    
    // 检查消息是否包含特定的关键字
    // 参数1:消息
    // 参数2:关键字
    bool check_message(const std::string& message, const std::string& keyword) {
        return message.find(keyword) != std::string::npos;
    }
    
    int main() {
        // 获取QQ或WeChat窗口的句柄
        HWND hwnd = get_window_handle("你的QQ或WeChat窗口的类名", "你的QQ或WeChat窗口的标题");
    
        if (!hwnd) {
            // 无法找到窗口
            return 1;
        }
    
        std::string message = "接收到的消息";
        std::string keyword = "要过滤的关键字";
    
        // 检查消息是否包含特定的关键字
        if (check_message(message, keyword)) {
            // 如果消息包含特定的关键字,发送一个警告消息
            send_message(hwnd, "你发送的消息包含了被过滤的关键字");
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
  • 相关阅读:
    自从测试部新来了个00后卷王,老油条感叹真干不过,但是...
    内存泄漏了~
    阿里云GPU服务器安装ComfyUI
    Android LinearLayout快速设置每个item间隔
    day9-操作系统初始化函数init-2
    堆排序;大顶堆、小顶堆
    【vue+蓝牙扫码枪】实现扫码录入发票信息,光标自动聚焦,列表中连续录入
    CSS常用属性(二)
    浅谈Android OOM及定位分析
    【Seata】05 - Seata Saga 模式简单整理、Docker 部署 Nacos 单机(基于 Jpom)相关配置
  • 原文地址:https://blog.csdn.net/qq_54549617/article/details/133530384