易语言hosts式反钓鱼工具 易语言HOSTS式反钓鱼拦截源码
易语言源码贝贝吧 人气:0HOSTS式钓鱼拦截源码
利用HOSTS来拦截SMTP,再次提醒搭建小心钓鱼软件,对于未知的程序尽量在虚拟机里使用
.版本 2 .支持库 shell .程序集 窗口程序集1 .程序集变量 IP, 文本型 .程序集变量 host路径, 文本型 .程序集变量 原hosts是否存在, 逻辑型 .程序集变量 客户, 文本型 .程序集变量 是否为账号, 逻辑型 .程序集变量 是否为密码, 逻辑型 .程序集变量 账号, 文本型 .程序集变量 密码, 文本型 .子程序 列表框_加入提示 .参数 提示, 文本型 列表框_状态.加入项目 (提示, ) 列表框_状态.现行选中项 = 列表框_状态.取项目数 () - 1 处理事件 () .子程序 _按钮_监听_被单击 IP = “” 原hosts是否存在 = 真 账号 = “” 密码 = “” 是否为账号 = 假 是否为密码 = 假 连续赋值 (真, 编辑框_服务器端口.禁止, 编辑框_服务器地址.禁止, 单选框1.禁止, 单选框2.禁止) 列表框_状态.清空 () 处理事件 () 列表框_加入提示 (“正在访问网络获取指定邮箱服务器的IP地址...”) IP = 转换为IP地址 (编辑框_服务器地址.内容) .如果真 (IP = “”) 列表框_加入提示 (“查询IP失败!请检查邮箱服务器地址拼写。”) 返回 () .如果真结束 列表框_加入提示 (“查询结果: 地址[” + 编辑框_服务器地址.内容 + “]对应IP地址[” + IP + “]”) host路径 = 取特定目录 (#Windows系统目录) + “Drivers\etc\hosts” ' 备份原hosts文件 列表框_加入提示 (“正在备份原hosts文件...”) .如果真 (复制文件 (host路径, “.\hosts.bak”) = 假) 原hosts是否存在 = 假 .如果真结束 列表框_加入提示 (“正在修改hosts文件...”) .如果真 (写到文件 (host路径, 到字节集 (“127.0.0.1 ” + 编辑框_服务器地址.内容 + #换行符)) = 假) 列表框_加入提示 (“hosts文件修改失败!请使用管理员身份运行,并且不要拦截。”) 返回 () .如果真结束 服务器1.端口 = 到整数 (编辑框_服务器端口.内容) 列表框_加入提示 (“已开始监控...请务必关闭监控后再退出本工具,以便还原hosts”) 按钮_监听.禁止 = 真 按钮_终止.禁止 = 假 .子程序 __启动窗口_可否被关闭, 逻辑型 .如果真 (按钮_监听.禁止 = 真) 信息框 (“请先关闭监控在退出软件!否则无法还原备份的hosts文件!”, 0, ) 返回 (假) .如果真结束 返回 (真) .子程序 _按钮_终止_被单击 服务器1.端口 = 0 列表框_状态.清空 () 列表框_状态.加入项目 (“正在还原被修改的hosts文件...”, ) .如果 (原hosts是否存在 = 假) .如果真 (删除文件 (host路径) = 假) 列表框_状态.加入项目 (“还原hosts失败!请不要用杀毒软件拦截。”, ) 返回 () .如果真结束 .否则 .如果真 (写到文件 (host路径, 读入文件 (“.\hosts”)) = 假) 列表框_状态.加入项目 (“还原hosts失败!请不要用杀毒软件拦截。”, ) 返回 () .如果真结束 .如果结束 列表框_加入提示 (“监控已关闭!”) 按钮_终止.禁止 = 真 按钮_监听.禁止 = 假 连续赋值 (假, 编辑框_服务器端口.禁止, 编辑框_服务器地址.禁止, 单选框1.禁止, 单选框2.禁止) .子程序 __启动窗口_创建完毕 服务器1.端口 = 0 .子程序 _服务器1_客户进入 客户 = 服务器1.取回客户 () 列表框_加入提示 (“客户进入:” + 客户) .如果真 (单选框2.选中 = 真) 服务器1.发送数据 (客户, “220 smtp.qq.com Esmtp QQ Mail Server” + #换行符, ) 返回 () .如果真结束 客户1.连接 (IP, 到整数 (编辑框_服务器端口.内容)) .子程序 _服务器1_客户离开 客户 = 服务器1.取回客户 () 列表框_加入提示 (“客户离开:” + 客户) 客户1.断开连接 () _按钮_重置_被单击 () .子程序 _服务器1_数据到达 .局部变量 数据, 字节集 .局部变量 不输出列表, 逻辑型 数据 = 服务器1.取回数据 () .如果真 (单选框2.选中 = 真) ' 如果是这样则当本软件为虚拟SMTP服务器,返回数据给钓鱼软件骗取密码 列表框_加入提示 (“发送数据:” + 到文本 (数据)) .如果真 (寻找字节集 (数据, 到字节集 (“HELO”), ) ≠ -1 或 寻找字节集 (数据, 到字节集 (“EHLO”), ) ≠ -1) 服务器1.发送数据 (客户, “250-smtp.qq.com” + #换行符 + “250-PIPELINING” + #换行符 + “250-SIZE 52428800” + #换行符 + “250-AUTH LOGIN PLAIN” + #换行符 + “250-AUTH=LOGIN” + #换行符 + “250-MAILCOMPRESS” + #换行符 + “250 8BITMIME” + #换行符, ) 列表框_加入提示 (“返回数据:250-smtp.qq.com250-PIPELINING250-SIZE 5242880”) 返回 () .如果真结束 .如果真 (数据 = 到字节集 (“AUTH LOGIN” + #换行符)) 服务器1.发送数据 (客户, “334 VXNlcm5hbWU6” + #换行符, ) 列表框_加入提示 (“返回数据:334 VXNlcm5hbWU6”) 是否为账号 = 真 返回 () .如果真结束 .如果真 (是否为账号 = 真) 服务器1.发送数据 (客户, “334 UGFzc3dvcmQ6” + #换行符, ) 列表框_加入提示 (“返回数据:334 UGFzc3dvcmQ6”) 账号 = 到文本 (BASE64解码 (到文本 (数据))) 列表框_加入提示 (“拦截到账号:” + 账号) 是否为账号 = 假 是否为密码 = 真 返回 () .如果真结束 .如果真 (是否为密码 = 真) 服务器1.发送数据 (客户, “235 Authentication successful” + #换行符, ) 列表框_加入提示 (“返回数据:235 Authentication successful”) 密码 = 到文本 (BASE64解码 (到文本 (数据))) 列表框_加入提示 (“拦截到密码:” + 密码) 是否为密码 = 假 返回 () .如果真结束 .如果真 (数据 = 到字节集 (“QUIT” + #换行符)) 服务器1.断开客户 (客户) 返回 () .如果真结束 .如果真结束 .如果真 (是否为密码 = 真) ' 说明这次拦截的数据是邮箱密码 密码 = 到文本 (BASE64解码 (到文本 (数据))) 列表框_加入提示 (“拦截到密码:” + 密码) 是否为密码 = 假 不输出列表 = 真 .如果真结束 .如果真 (是否为账号 = 真) 账号 = 到文本 (BASE64解码 (到文本 (数据))) 列表框_加入提示 (“拦截到账号:” + 账号) 是否为账号 = 假 是否为密码 = 真 不输出列表 = 真 .如果真结束 .如果真 (不输出列表 = 假) 列表框_加入提示 (“发送数据:” + 到文本 (数据)) .如果真结束 .如果真 (数据 = 到字节集 (“AUTH LOGIN” + #换行符)) ' 这意味着拦截到AUTH LOGIN 是否为账号 = 真 .如果真结束 客户1.发送数据 (数据) .子程序 BASE64解码, 字节集 .参数 编码文本, 文本型, 参考 .局部变量 文本长度 .局部变量 整倍数 .局部变量 三字节组, 字节型, , "3" .局部变量 四字节组, 字节型, , "4" .局部变量 编码值 .局部变量 X .局部变量 n .局部变量 二进制数据, 字节集 .局部变量 指针 .局部变量 字节数组, 字节型, , "0" 编码文本 = 删全部空 (编码文本) 编码文本 = 子文本替换 (编码文本, #换行符, , , , 真) 文本长度 = 取文本长度 (编码文本) 整倍数 = 文本长度 \ 4 .如果真 (文本长度 % 4 ≠ 0) 整倍数 = 整倍数 + 1 .如果真结束 重定义数组 (字节数组, 假, 整倍数 × 3) ' 开辟缓冲区大小 指针 = 1 .计次循环首 (整倍数, X) .计次循环首 (4, n) 四字节组 [n] = 取代码 (编码文本, (X - 1) × 4 + n) 编码值 = 寻找文本 (“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”, 字符 (四字节组 [n]), , 假) .如果真 (编码值 = -1) 跳出循环 () .如果真结束 四字节组 [n] = 编码值 - 1 .计次循环尾 () 字节数组 [指针] = 位或 (四字节组 [1] × 4, 四字节组 [2] ÷ 16) 字节数组 [指针 + 1] = 位或 (四字节组 [2] × 16, 四字节组 [3] ÷ 4) 字节数组 [指针 + 2] = 位或 (四字节组 [3] × 64, 四字节组 [4]) 指针 = 指针 + 3 .计次循环尾 () 二进制数据 = 到字节集 (字节数组) .如果真 (n < 5) ' 最后一组4字符是提前退出的,截取字节集 n = 5 - n 二进制数据 = 取字节集左边 (二进制数据, 取字节集长度 (二进制数据) - n) .如果真结束 返回 (二进制数据) .子程序 _客户1_连接断开 服务器1.断开客户 (客户) 列表框_加入提示 (“客户被强制离开。”) .子程序 _客户1_数据到达 .局部变量 数据, 字节集 数据 = 客户1.取回数据 () 服务器1.发送数据 (客户, 数据, ) 列表框_加入提示 (“返回数据:” + 到文本 (数据)) .子程序 _按钮_结果_被单击 .局部变量 输出文本, 文本型 输出文本 = “账号:” .如果 (账号 = “”) 输出文本 = 输出文本 + “未拦截到” .否则 输出文本 = 输出文本 + 账号 .如果结束 输出文本 = 输出文本 + #换行符 + “密码:” .如果 (密码 = “”) 输出文本 = 输出文本 + “未拦截到” .否则 输出文本 = 输出文本 + 密码 .如果结束 信息框 (输出文本, 0, ) .子程序 _按钮_重置_被单击 是否为账号 = 假 是否为密码 = 假 列表框_加入提示 (“重置完毕。”)
运行结果:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
加载全部内容