易语言HOSTS式反钓鱼拦截源码

HOSTS式钓鱼拦截源码

利用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, )
.子程序 _按钮_重置_被单击
是否为账号 = 假
是否为密码 = 假
列表框_加入提示 (“重置完毕。”)

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言制作英雄联盟辅助的源码

    LOL辅助 此功能需要加载超级模块7.3 .版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 pid, 整数型 .子程序 __启动窗口_创建完毕 pid = 取进程ID ("League of Legends.exe") 监视热键 (&开启无限视距, #F5键) 监视热键 (&关闭无限视距, #F6键) 监视热键 (&开启普攻范围, #F2键) 监视热键 (&关闭普攻范围, #F1键) 监视热键 (&开启炮塔范围, #F4键) 监视热键 (

  • 易语言调用接口查看QQ各项资料的代码

    DLL命令表 .版本 2 .DLL命令 ShellExecuteA, 整数型, "shell32.dll", "ShellExecuteA", , 查找与指定文件关联在一起的程序的文件名,并执行相关操作,成功则返一个大于31的值. .参数 hwnd, 整数型, , 用来指定被执行文件显示的窗口所属的父窗口句柄,可以为NULL .参数 lpOperation, 文本型, , 指向一个表示执行方式的字符串 .参数 lpFile, 文本型, , 用来指定文件名,文件名既可

  • 易语言高精度完美延时的源码

    DLL命令表 .版本 2 .DLL命令 QueryPerformanceCounter, 整数型, "kernel32", "QueryPerformanceCounter", , 获取计数值 .参数 lpPerformanceCount, LARGE_INTEGER .DLL命令 QueryPerformanceFrequency, 整数型, "kernel32", "QueryPerformanceFrequency",

  • 易语言修改软件版权信息的工具

    DLL命令表 .版本 2 .DLL命令 BeginUpdateResource, 整数型, , "BeginUpdateResourceA" .参数 pFileName, 文本型 .参数 bDeleteExistingResources, 逻辑型 .DLL命令 EndUpdateResource, 逻辑型, , "EndUpdateResourceA" .参数 hUpdate, 整数型 .参数 fDiscard, 逻辑型 .DLL命令 UpdateResource,

  • 易语言实现QQ全自动批量点赞功能

    利用模拟操作的方式实现QQ全自动点赞 此功能需要加载精易模块 .版本 2 .支持库 iext .支持库 HtmlView .支持库 spec .程序集 窗口程序集1 .程序集变量 停止变量, 逻辑型 .子程序 __启动窗口_创建完毕 ' 不允许多个QQ登录,不然每次需要手动选择点赞的号 .子程序 _导入按钮_被单击 .局部变量 分割文本, 文本型, , "0" .局部变量 文本, 文本型 .局部变量 i1, 整数型 .局部变量 索引, 整数型 通用对话框1.初始目录 = 取运行目录 (

  • 易语言QQ群发支持图片文字数据一起发送的工具

    DLL命令表 .版本 2 .DLL命令 OpenClipboard, 逻辑型, "user32", "OpenClipboard", , 打开CLIPBOARD .参数 hwnd, 整数型 .DLL命令 GetClipboardData, 整数型, "user32", "GetClipboardData", , 返回剪贴板数据的句柄 .参数 wFormat, 整数型 .DLL命令 RegisterClipboardFormat

  • 易语言调用接口来实现机器人聊天的功能

    常量数据表 .版本 2 .常量 常量1, "<文本长度: 41>", , AI [现行时间]: Hi俺寂寞空虚冷 陪陪俺吧 .常量 常量2, "<文本长度: 25>", , 我 [现行时间]: [内容] .常量 常量3, "<文本长度: 24>", , AI [现行时间]: [内容] .常量 常量4, "<文本长度: 8>", , "text":"

  • 易语言送你999朵玫瑰花源码

    送你999朵玫瑰花 .版本 2 .程序集 窗口程序集1 .子程序 __启动窗口_创建完毕 .局部变量 屏幕快照, 字节集 屏幕快照 = 快照 (, , ) _启动窗口.可视 = 真 _启动窗口.位置 = 3 画板1.移动 (0, 0, 取屏幕宽度 (), 取屏幕高度 ()) 画板1.底图 = 屏幕快照 置随机数种子 () 播放音乐 (#声音1, 真) 等待 (500) 献花 () .子程序 献花 .局部变量 a, 整数型 .局部变量 b, 整数型 .局部变量 c, 整数型 .局部变量 d, 整数

  • 易语言使用动画框做消除游戏的代码

    全局变量表 .版本 2 .全局变量 得分总和, 整数型 .全局变量 最高得分, 整数型 .全局变量 关卡, 整数型 利用动画框做的一个消除游戏 .版本 2 .支持库 iext2 .支持库 iext .程序集 窗口程序集1 .程序集变量 标识1, 整数型, , "100" .程序集变量 角度, 整数型 .程序集变量 是否开始, 逻辑型 .子程序 初始化 .局部变量 a, 整数型 .局部变量 b, 整数型 .局部变量 C, 整数型 .局部变量 d, 整数型 置随机数种子 () d = 1

  • 易语言制作王校长吃热狗游戏的源码

    王校长吃热狗游戏 .版本 2 .支持库 iext2 .支持库 OPenGL .支持库 spec .支持库 EThread .程序集 窗口程序集_启动窗口 .程序集变量 人物标识, 整数型 .程序集变量 热狗标识, 整数型, , "0" .程序集变量 死亡, 逻辑型 .程序集变量 得分, 整数型 .子程序 _开始按钮_被单击 动画物体2.图片 = #人物 人物标识 = 动画框1.创建物体 (动画物体2, 取鼠标水平位置 () - _启动窗口.左边 - 25, 取鼠标垂直位置 () - _

  • 易语言用画板制作围猫游戏的源码

    DLL命令表 .版本 2 .DLL命令 系统关于对话框, , , "ShellAboutA" .参数 窗口句柄, 整数型 .参数 应用程序标题, 文本型 .参数 其他信息, 文本型 .参数 图标句柄, 整数型 图片资源表 .版本 2 .图片 圆点白色 .图片 圆点猫 .图片 圆点墙 .图片 圆点叉 围猫游戏 .版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 圆点状态, 整数型, , "121", 0空白1围墙2陷阱 .程序集变量 猫位置, 整数型 .程序集变

  • 易语言制作欢乐斗牛单机版游戏源码

    DLL命令表 .版本 2 .DLL命令 复制内存_复制位图信息头到字节集, , , "RtlMoveMemory" .参数 Dest, 字节型, 传址 .参数 Src, BITMAPINFOHEADER .参数 len, 整数型 .DLL命令 复制内存_复制位图文件头到字节集, , , "RtlMoveMemory" .参数 Dest, 字节型, 传址 .参数 Src, 文件头信息_ .参数 len, 整数型 .DLL命令 复制内存_字节集到字节集, , , &qu

  • 易语言制作酷狗付费音乐解析下载工具

    常量数据表 .版本 2 .常量 常量2, "<文本长度: 7>", , "url":" .常量 常量1, "<文本长度: 1>", , " 酷狗音乐直链解析 歌曲哈希值在酷狗音乐属性里可以找到. .版本 2 .支持库 internet .程序集 窗口程序集1 .子程序 _解析按钮_被单击 编辑框_直链.内容 = 获取MP3地址 (编辑框_哈希值.内容) .子程序 获取MP3地址, 文本型 .参数 has

  • 易语言破解WPS的VIP模版下载地址

    DLL命令表 .版本 2 .DLL命令 API下载文件, 整数型, "urlmon", "URLDownloadToFileA", , -下载文件 .参数 pcaller, 整数型 .参数 szurl, 文本型 .参数 szfilename, 文本型 .参数 dwreserved, 整数型 .参数 lpfncb, 整数型 常量数据表 .版本 2 .常量 id, "<文本长度: 21>", , "big":[{&qu

  • 易语言关于程序进程和线程的基础知识

    程序是计算机指令的集合,它以文件的形式存储在磁盘上. 进程:通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动. 进程是资源申请.调度和独立运行的单位,因此,它使用系统中的运行资源:而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源. 进程由两个部分组成: 1.操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方. 2.地址空间.它包含所有可执行模块或DLL模块的代码和数据.它还包含动态内存分

随机推荐