convertto-securestring结果 使用python解密
根据微软帮助文档,convertto-securestring有两种加密模式。如果在指定密码的情况下,则使用aes加密,否则使用windows dpapi加密。而且aes加密也没有指明iv值与加密模式。
该命令在Microsoft.PowerShell.Security包中,去github中查找相关代码
可以看出,在 SecureStringHelper.Encrypt(SecureString, Key);中对待加密的字符串执行加密操作。跟进
https://github.com/PowerShell/PowerShell/blob/master/src/System.Management.Automation/security/SecureStringHelper.cs
如果iv不存在的话,则使用aes对象默认的iv,文档在这里
https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aes?view=netframework-4.8
iv默认为随机数生成
加密完成后,iv通过base64存储,而加密后的数据,通过 ByteArrayToString函数编码。
internal static string ByteArrayToString(byte[] data)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("x2", System.Globalization.CultureInfo.InvariantCulture));
}
return sb.ToString();
}
其实就是转换hex,直接存储,类似于webshell上传文件的编码
securityHelpers.encrypt 函数返回上图中的EncryptionResult对象,回到最开始的processrecord函数中
将结果拼接为,c#本地化处理,2, iv,加密后的值,中间用| 分割。再经过一次base64编码。最终输出给用户
python解密注意事项,
1.
c# 中字符串等等,都是双字节,例如ascii的话,会通过假如0x00来格式化为双字节,所以再windows中如果编码函数用错了,极易导致null截断问题。(windows核心编程第一章)
python 解密程序如下
import base64
import binascii
from Crypto.Cipher import AES
sc = base64.b64decode(
"76492d1116743f0423413b16050a5345MgB8ADcAdwBsAHgAUwBRAFAAUwBNADEAUABIAHkAKwBUAHUAWABkAEQAYgBHAEEAPQA9AHwAMAA2ADgAZQAxADkANwBiADQAZAAxADgAOAA1ADkAZgA0ADEAZQAyADcAYQA5AGQANgBiADYANABhAGEAYgBjAGYAMwA3AGEANgA5ADUANQBkADIAMQA4AGUANwBhAGMANgAwADMAZAA2ADgANAA3ADIAMQBkADAAYgA5ADEAYQAzADAANQBkAGUANAA2ADcANwBhADAAMQA0ADQAMwA2ADIAYwBlAGEAMgBjADIANwAyAGMAMQA2AGIAMABkADgA")
iv = sc.split(b'|')[1]
iv = base64.b64decode(iv)
enc = sc.split(b'|')[2]
enc = enc.replace(b'\x00', b"")
dataLen = len(enc) // 2
byte_enc = bytearray(dataLen)
i = 0
while i < dataLen:
byte_enc[i] = int(enc[2 * i:2 * i + 2], 16)
i += 1
key = base64.b64decode("dGhpc19pc190aGVfa2V5MXRoaXNfaXNfdGhlX2tleTE=")
cipher = AES.new(key, AES.MODE_CBC, iv)
plan_text = cipher.decrypt(byte_enc)
print(plan_text.replace(b'\x00', b""))
注意:该dem没有做padding处理
convertto-securestring结果 使用python解密的更多相关文章
- Python解密网易云音乐缓存文件获取MP3
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:GeneralMonkey Python解密网易云音乐缓存文件获取MP3 ...
- 使用Python解密仿射密码
新学期有一门密码学课,课上老师布置了一道密码学题,题目如下: 解密由仿射密码加密的密文“DBUHU SPANO SMPUS STMIU SBAKN OSMPU SS” 想解密这个密文,首先必须要知道仿 ...
- Python 解密JWT验证苹果登录
验证苹果登录,官方提供两种验证方法,一种是token,另一个种是code.这里使用的是token 登录流程: 苹果客户端调用苹果API,获取到用户的信息,包括: user_id 昵称 identity ...
- des解密不完整,前面几位是乱码的解决办法
在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码.废了半天劲,终于找到了问题所在. 下面先介绍一下des,了解des的同学可以直接看下面的解决办法. ...
- 优志愿前端数据加密破解-python
# coding=utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "etiaky.sett ...
- JavaScript base64 加密解密
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用openssl库实现RSA、AES数据加密
openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加密:公钥加密,私钥解密.openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所 ...
- [转]使用openssl库实现RSA、AES数据加密
openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加密:公钥加密,私钥解密.openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所以一般的做 ...
- 【Python3爬虫】常见反爬虫措施及解决办法(三)
上一篇博客的末尾说到全网代理IP的端口号是经过加密混淆的,而这一篇博客就将告诉你如何破解!如果觉得有用的话,不妨点个推荐哦~ 一.全网代理IP的JS混淆 首先进入全网代理IP,打开开发者工具,点击查看 ...
随机推荐
- ReentrantLock 源码分析从入门到入土
回答一个问题 在开始本篇文章的内容讲述前,先来回答我一个问题,为什么 JDK 提供一个 synchronized 关键字之后还要提供一个 Lock 锁,这不是多此一举吗?难道 JDK 设计人员都是沙雕 ...
- 洛谷P1002 过河卒 题解 动态规划
题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...
- 4.eclipse中导入别人用的源代码问题
最近在导入别人用的源代码问题时,出现两个问题: 问题一:提示无法解析导入,如下图: 解决方法:删除项目下的module-info.java文件即可,或者在创建项目时将创建module-info.jav ...
- 基于Jenkins的持续交付全流程设计与实践
1 从理论开始 什么是DevOps? 近年来,随着DevOps理念的逐渐深入人心,企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理,对于提高企业劳动生产力已经非常重要,尤其是面向互联网的开发者, ...
- Django之Session与Cookie
目录 一.cookie Cookie的由来 什么是Cookie Cookie的原理 查看Cookie cookie与session的作用 二.Django中操作Cookie 获取Cookie 设置Co ...
- 从零开发一款txt小说下载器
在日常开发中,列表是一个非常常用的一个东西,可以用listview和recyclerview实现.当然,由于recyclerview更为实用且强大,它也是更好的方案. 而我以前为了方便,习惯直接拿网上 ...
- 图解kubernetes scheduler基于map/reduce模式实现优选阶段
优选阶段通过分map/reduce模式来实现多个node和多种算法的并行计算,并且通过基于二级索引来设计最终的存储结果,从而达到整个计算过程中的无锁设计,同时为了保证分配的随机性,针对同等优先级的采用 ...
- flink编译支持CDH6.2.0(hadoop3.0.0)
准备工作 因为在编译时需要下载许多依赖包,在执行编译前最好先配置下代理仓库 <mirrors> <mirror> <id>nexus-aliyun</id&g ...
- ORM跨表查询总结
一.基于对象的查询-->子查询 1.一对多 正向查询:基于 字段 反向查询:基于 表名__set.all() 注意:表名全部小写 2.多对多 正向查询:基于 字段.all() 反向查询:基于 表 ...
- 发现 一个业务管理系统 解决了 orm 和 前端框架 剩下的 是 业务逻辑 了 。 哈
解决了 orm 和 前端框架 剩下的 是 业务逻辑 了 . 哈 还有 各种 aop 组件 呢 . 大家 high 来 准备 用 fluent data 和 mysql 写一个 wcf 的 接口呢. ...