当前位置: 首页 > news >正文

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 的配置对象通常包含以下几部分&#xff1a…...

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商迭代法)是一种用于计算矩阵特征值和特征向量的迭代方法。 以下是一个简单的示例&#xff0…...

车载以太网-基于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...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...