Go红队开发—编解码工具
文章目录
- 开启一个项目
- 编解码工具开发
- Dongle包
- Base64编解码
- 摩斯密码
- URL加解密
- AES加解密
- MD5碰撞工具开发
开启一个项目
这作为补充内容,可忽略直接看下面的编解码:
一开始用就按照下面的步骤即可
- 1.创建一个文件夹,你自己定义名字(
建议只用英文名字),你的项目文件夹 - 2.在这个文件夹里创建一个main.go
- 然后在该文件夹目录执行终端命令
go mod init 输入你的文件夹名字(说白了就是你的项目名字)
go mod download //检查一下是否有没有下载的模块,这个我比较少用
go get -u 你的模块 //这里是下载你需要的对应模块
go mod tidy //可以将下载好的但是在你这项目中还没导入的模块进行导入使用,否则会报错到这里基本就可以写代码了,如果有的模块还错误一般就是没有执行go mod tidy
编解码工具开发
编解码在安全开发中肯定是必要的一个功能,通过编解码尝到开发甜头的同时也能够为后续开发打下基础。
Dongle包
这个包就是比较经典的一个编解码包,下面做一个简单的介绍如何使用
encode / decode
要使用这个包就需要下载一下,下面提供两个途径,一个国外一个国内
只需要下载一个,不建议下载两个,不知道会不会发生冲突
//github下载
go get -u github.com/golang-module/dongle//国内gitee下载
go get -u gitee.com/golang-module/dongle
Base64编解码

格式:
dongle.Encode.From来源.By编码类型.ToString转字符
dongle.Decode.From来源.By编码类型.ToString转字符
package mainimport ("fmt""github.com/dromara/dongle")func baseTest() {fmt.Println("==========Base64==========")baseStr := dongle.Encode.FromString("666").ByBase64().ToString()fmt.Println(baseStr)rawStr := dongle.Decode.FromString(baseStr).ByBase64().ToString()fmt.Println(rawStr)}func main() {baseTest()}

其他的可以自行操作,也就是说现在具备了写一个base全家桶编解码工具的能力了

接下来就是非常基本的代码了,下面附上以便以后方便使用
摩斯密码
以后我们写好的功能都可以用函数封装起来,以后写工具功能的时候直接拿来就用了,当然下面的我只是作为一个test测试函数。
func moreTest() {fmt.Println("==========More==========")morseStr := dongle.Encode.FromString("666").ByMorse().ToString()fmt.Println(morseStr)rawStr := dongle.Decode.FromString(morseStr).ByMorse().ToString()fmt.Println(rawStr)}
URL加解密
参考代码
func urlTest() {fmt.Println("==========URL==========")urlStr := dongle.Encode.FromString("hack=123").BySafeURL().ToString()fmt.Println("加密后的url数据:", urlStr)rawStr := dongle.Decode.FromString(urlStr).BySafeURL().ToString()fmt.Println("解密后的url数据:", rawStr)}

AES加解密
AES 加密有模式,所以要设置一个模式与填充方式
完整代码
func aesTest() {fmt.Println("==========AES==========")aesCipher := dongle.NewCipher()aesCipher.SetMode(dongle.CBC) //CBC、CFB、OFB、CTR、ECBaesCipher.SetPadding(dongle.Zero) //No、Empty、Zero、PKCS5、PKCS7、AnsiX923、 ISO97971aesCipher.SetKey("1234567890123456") // key⻓度可以是16、24或32字节aesCipher.SetIV("1234567890123456") // iv长度固定为16字节,ECB模式下不需要设置iv,这里看情况用就行了,只是做一个演示aesStr := dongle.Encrypt.FromString("hack").ByAes(aesCipher).ToRawString()fmt.Println("加密后的数据:", aesStr)rawStr := dongle.Decrypt.FromRawString(aesStr).ByAes(aesCipher).ToString()fmt.Println("解密后的数据:", rawStr)}

当然如果你觉得乱码看着不舒服,还能换不同的输出,这里简单过一遍,知道即可
func aesTest() {fmt.Println("==========AES==========")aesCipher := dongle.NewCipher()aesCipher.SetMode(dongle.CBC) //CBC、CFB、OFB、CTR、ECBaesCipher.SetPadding(dongle.Zero) //No、Empty、Zero、PKCS5、PKCS7、AnsiX923、 ISO97971aesCipher.SetKey("1234567890123456") // key⻓度可以是16、24或32字节aesCipher.SetIV("1234567890123456") // iv长度固定为16字节,ECB模式下不需要设置iv,这里看情况用就行了,只是做一个演示aesStr := dongle.Encrypt.FromString("hack").ByAes(aesCipher).ToRawString()fmt.Println("加密后的raw数据:", aesStr)rawStr := dongle.Decrypt.FromRawString(aesStr).ByAes(aesCipher).ToString()fmt.Println("解密后的raw数据:", rawStr)aesStr = dongle.Encrypt.FromString("hack").ByAes(aesCipher).ToBase64String()fmt.Println("加密后的base64数据:", aesStr)rawStr = dongle.Decrypt.FromBase64String(aesStr).ByAes(aesCipher).ToString()fmt.Println("解密后的base64数据:", rawStr)aesStr = dongle.Encrypt.FromString("hack").ByAes(aesCipher).ToHexString()fmt.Println("加密后的hex数据:", aesStr)rawStr = dongle.Decrypt.FromHexString(aesStr).ByAes(aesCipher).ToString()fmt.Println("解密后的hex数据:", rawStr)}

MD5碰撞工具开发
需求:能够根据一个密码本对某个md5值进行碰撞解密
思路:就是打开文件读取每一行,加密然后碰撞比较md5值是否正确
比如我们输入top2k字典中最后一个密码作为md5值


参考代码:(注意我加了一个时间计算,那个是可以不要的,我只是想看下计算时间有多长罢辽)
func fuzzMd5(md5str string) {open, err := os.Open("top2k.txt")if err != nil {fmt.Println(err)return}defer open.Close()scanner := bufio.NewScanner(open)// 逐个读取分割后的内容start := time.Now() // 获取当前时间for scanner.Scan() {passwd := scanner.Text()passwdMD5 := dongle.Encrypt.FromString(passwd).ByMd5().ToHexString()if string(passwdMD5) == md5str {fmt.Printf("%v:%v\n", passwdMD5, passwd)end := time.Now() // 获取当前时间fmt.Println("耗时:", end.Sub(start).Seconds())return}}end := time.Now() // 获取当前时间fmt.Println("耗时:", end.Sub(start).Seconds())if err := scanner.Err(); err != nil {fmt.Println("Error:", err)}}
main函数调用如下

运行结果如下:

这就是一个简单的md5碰撞工具了,目前所学知识还只能做到这样比较简陋,后面两期打算讲一个脚手架开发工具,加速开发的同时,可以让你自己写的命令行工具看起来就是一个完整的hacker工具了。
相关文章:
Go红队开发—编解码工具
文章目录 开启一个项目编解码工具开发Dongle包Base64编解码摩斯密码URL加解密AES加解密 MD5碰撞工具开发 开启一个项目 这作为补充内容,可忽略直接看下面的编解码: 一开始用就按照下面的步骤即可 1.创建一个文件夹,你自己定义名字(建议只用…...
计算机毕业设计SpringBoot+Vue.js常规应急物资管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
thinkphp5对接阿里云ocr试卷切题
thinkphp5对接阿里云ocr试卷切题 提示:切题使用的是api:RecognizeEduPaperCut 以下是基于 ThinkPHP5.14 框架调用阿里云 RecognizeEduPaperCut 接口的详细实现步骤和代码示例。 文章目录 thinkphp5对接阿里云ocr试卷切题前言1、前置准备2、 配置文件3、控制器直接引…...
AI数据分析:用DeepSeek做数据清洗
在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行数据清洗。 数据清洗是数据分析的基础,其目的是…...
免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全
软件技术 今天要给大家分享一款超实用的 PDF 处理工具,它免费又轻巧,如同随时待命的得力小帮手,功能之强大超乎想象,真的值得大家收藏。 这款工具是绿色版软件,解压后开启,满满的 PDF 处理功能便映入眼帘…...
基于JavaWeb开发的Java+SpringBoot+vue+element实现物流管理系统
基于JavaWeb开发的JavaSpringBootvueelement实现物流管理系统 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定…...
计算机毕业设计SpringBoot+Vue.js华强北商城二手手机管理系统 (源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
实验:k8s+keepalived+nginx+iptables
1、创建两个nginx的pod,app都是nginx nginx1 nginx2 2、创建两个的pod的service 3、配置两台keepalived的调度器和nginx七层反向代理,VIP设置192.168.254.110 keepalived调度器master keepalived调度器backup 两台调度器都配置nginx七层反向代理&#…...
DeepSeek入门学习
参考文档:DeepSeek(人工智能企业)_百度百科 DeepSeek-R1 凭借创新的强化学习技术实现重大突破。在极少量标注数据的基础上,通过深度优化的后训练阶段,显著提升了模型的推理能力。在数学运算、代码生成、自然语言推理等…...
几道考研数学题求解
函数性质问题 【题目】 已知函数 f ( x , y ) x 3 y 3 − ( x y ) 2 3 f(x, y) x^3 y^3 - (xy)^2 3 f(x,y)x3y3−(xy)23。设 T T T 为曲面 z f ( x , y ) z f(x, y) zf(x,y) 在点 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) 处的切平面, D D D 为 T T T 与坐标…...
Highcharts 配置语法详解
Highcharts 配置语法详解 引言 Highcharts 是一个功能强大的图表库,广泛应用于数据可视化领域。本文将详细介绍 Highcharts 的配置语法,帮助您快速上手并制作出精美、实用的图表。 高级配置结构 Highcharts 的配置对象通常包含以下几部分:…...
OpenEuler学习笔记(三十五):搭建代码托管服务器
以下是主流的代码托管软件分类及推荐,涵盖自托管和云端方案,您可根据团队规模、功能需求及资源情况选择: 一、自托管代码托管平台(可私有部署) 1. GitLab 简介: 功能全面的 DevOps 平台,支持代码托管、C…...
Python的pdf2image库将PDF文件转换为PNG图片
您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例,包含安装步骤、代码示例和注意事项。 安装依赖库 首先,您需要安装pdf2image库: pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…...
算法-二叉树篇26-将有序数组转换为二叉搜索树
将有序数组转换为二叉搜索树 力扣题目链接 题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 解题思路 很简单的遇到递归题目,对数组取半,然后构建中间节点作为该数组对应的…...
使用Python SciPy库来计算矩阵的RCS特征值并生成极坐标图
在Python中,计算矩阵的RCS(Rayleigh商迭代法)特征值通常涉及使用数值线性代数库,如NumPy或SciPy。RCS(Rayleigh商迭代法)是一种用于计算矩阵特征值和特征向量的迭代方法。 以下是一个简单的示例࿰…...
车载以太网-基于linux的ICMP协议
对于车载以太网-ICMP的技术要求: /** ICMP报文格式解析* -----------------* ICMP协议用于网络诊断和错误报告,常见应用包括Ping测试。* ICMP报文结构包括:IP头部、ICMP头部和ICMP数据部分。* 下面详细介绍每个部分的结构、字段的作用以及如何解析它们。* * ICMP头部结构:*…...
WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示
wordpress插件介绍 “WP高级摘要插件”功能丰富,它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度,灵活调整展示字数;设定摘要最后的显示字符, 如常用的省略号等以提示内容未完整展示;指定允许在摘要中显示…...
【嵌入式】MCU开发基础知识速通
一、MCU开发常用编程语言及语法要求 MCU(微控制器单元)开发常用的编程语言包括C语言、C、汇编语言和Python,每种语言都有其适用场景和优势。 C语言:C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函…...
Yocto + 树莓派摄像头驱动完整指南
—— 从驱动配置、Yocto 构建,到 OpenCV 实战 在树莓派上运行摄像头,在官方的 Raspberry Pi OS 可能很简单,但在 Yocto 项目中,需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…...
swift 开发效率提升工具
安装github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安装swiftformat for xcode brew install swiftformatXcode Swift File代码格式化-SwiftFormat...
卡梅德生物技术快报|噬菌体随机肽库筛选实战:花生过敏原 Ara h 5 模拟表位鉴定全流程
摘要本文面向生物研发、体外诊断、蛋白质工程开发者,系统讲解噬菌体随机肽库筛选过敏原模拟表位完整工程化流程:从问题分析、实验设计、关键参数到结果验证,提供可复现技术方案,基于真实研究数据,聚焦高可靠性表位筛选…...
双十一话务峰值8倍冲击_智能语音机器人扛峰技术方案
双十一话务峰值8倍冲击:国内主流的智能语音机器人推荐这样扛本文从技术架构视角,解析智能语音机器人在电商大促场景下应对话务峰值冲击的核心方案。一、电商大促场景下的客服联络核心挑战 每年双十一、618 等大促节点,电商零售行业的话务量都…...
【习题05】求n的阶乘
题目: 分别利用递归和非递归的方法求n的阶乘 1、题目分析 规定:0的阶乘为1。 非递归: 我们先列举几个求阶乘的案例,从中找寻规律。 0! 11! 12! 1 * 23! 1 * 2 * 3 从上述几个例子可…...
PostHog完整指南:5分钟搭建开源产品分析平台,免费监控用户行为
PostHog完整指南:5分钟搭建开源产品分析平台,免费监控用户行为 【免费下载链接】posthog.com Official docs, website, and handbook for PostHog. 项目地址: https://gitcode.com/GitHub_Trending/po/posthog.com PostHog是一款功能强大的开源产…...
数字图像质量提升技术【附代码】
✨ 长期致力于图像质量提升、计算机图形处理器、并行加速、非均匀校正、图像超分辨、反射光消除、深度学习、生成对抗网络研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 &#…...
2026有赞春季发布会:有效果的AI驱动增长,智能体和数字员工交出成绩单
5月21日,有赞2026年春季发布会在杭州举办,主题是“有效果的AI”。过去一年,有赞智能体和数字员工已经迈入交付结果的新阶段。数据显示,2025年有赞AI智能体活跃使用商家18220个,整体调用量超3600万次,引导成…...
大模型可解释性技术突破:破解AI黑盒,筑牢人工智能落地根基
生成式大模型快速普及的同时,AI黑盒问题成为制约行业深度落地的核心瓶颈。传统大模型的推理过程隐蔽、决策逻辑不可追溯、输出结果不可控,模型出错无溯源、偏见无修正、风险无预判,在金融、医疗、政务、工业控制等高精、高安全、高合规场景&a…...
Continental CICP1800RB继电器扩展板
Continental CICP1800RB 是一款继电器扩展板,专为工业控制系统中的信号隔离与负载驱动而设计,可有效扩展主控单元的输出能力。产品特点(15条):CICP1800RB 提供 8 个继电器输出通道,满足多路负载控制需求每个…...
AI智能体驱动的海上风电制氢模型:技术解析与经济性评估
## 引言:当AI遇上海上风电制氢 在全球碳中和目标的推动下,海上风电制氢技术正从概念走向工程实践。然而,风电的间歇性与电解槽的响应特性之间的矛盾,一直是制约系统效率的瓶颈。近年来,AI智能体的引入为这一难题提供了…...
经手100万+终端后,聊聊校园门锁Sub-1G和Cat.1怎么选
做校园联网门锁项目的人大概都遇到过这个纠结:组网方案到底选Sub-1G还是4G Cat.1?我们团队(KEENZY中科易安)经手了100万在线终端的运行数据,可以明确地说——两种方案没有绝对的优劣,只有场景是否匹配。选错…...
