前言:

  这次得题目从本质上说没有什么难点,是多次利用base64和16进制编码,层层解开就好,通过这题得代码编写能很好得锻炼python代码能力,一起加油,尝试着自己写写看看把。

混合编码:

题目:JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==

分析: 下载题目后发现,结尾出有等号而且两个,不由的想到Base64,这个编码方式我们前面已经提到过了就不多说了

先写个代码,解解码,python代码如下:

import base64

with open(r'F:\桌面\tmp\1.txt','r') as f:
data = f.read() def base64decode(data):
data = bytes(data, encoding="utf8")
data = base64.b64decode(data)
return data print(base64decode(data))

运行结果如下:

1 b'LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw'

很明显发现都是$#开头,网上百度一番 https://www.jianshu.com/p/6dcefb2a59b2 ,这篇文章说了  以「&#」开头的后接十进制数字,所以先变成16进制然后解码,思路有了,开始写代码

 1 import base64
2
3 with open(r'F:\桌面\tmp\1.txt','r') as f:
4 data = f.read()
5
6 def base64decode(data):
7 data = bytes(data, encoding="utf8")
8 data = base64.b64decode(data)
9 return data
10
11 data= base64decode(data)
12 data = bytes.decode(data)
13
14
15
16 def base16decode(data):
17 m = ''
18 pattern = re.compile('[0-9]{2,3}')
19 result = pattern.findall(data)
20
21 for i in result:
22 m += chr(int(i))
23 return m
24
25 data = base16decode(data)
26 print(data)

然后我们来看下结果:

1 LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw

嗯哼,有点像Base64,先测试下,长度能不能被8整除,如果可以那很大概率是Base64啦,给代码

1 str = 'LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw'
2
3 if len(str) % 8 == 0:
4 print(len(str))
5 print('可以被8整除')

结果是可以被8整除,故我们再用base64解码一下试试,代码后面一起给出,先贴出解码后的结果:

b'/119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100'

感觉被套娃了,没办法,再base16解码,给出全部的代码:

 1 import base64
2
3 with open(r'F:\桌面\tmp\1.txt','r') as f:
4 data = f.read()
5
6 print(data)
7 def base64decode(data):
8 data = bytes(data, encoding="utf8")
9 data = base64.b64decode(data)
10 return data
11
12 data= base64decode(data)
13 data = bytes.decode(data)
14 print(data)
15
16
17 def base16decode(data):
18 m = ''
19 pattern = re.compile('[0-9]{2,3}')
20 result = pattern.findall(data)
21
22 for i in result:
23 m += chr(int(i))
24 return m
25
26 data = base16decode(data)
27 print(data)
28
29 data = base64decode(data)
30 print(data)
31
32 def base16decode1(data):
33 m = ''
34 data = bytes.decode(data)
35 pattern = re.compile('[0-9]{3}')
36 result = pattern.findall(data)
37
38 for i in result:
39 m += chr(int(i))
40 return m
41 print(base16decode1(data))

给出结果:

1 welometottknddefeneworld

哈哈,还是被解出来了,根据解出的步骤反推加密步骤为,先转成16进制,然后再base64编码 ,再转成16 进制,再base64编码,套娃!!!!

除了这种常规思路,我们也可以参考之前那个链接后面提到的方法直接用浏览器解析

参考链接:

https://www.jianshu.com/p/6dcefb2a59b2

https://www.cnblogs.com/yuanchu/p/13467058.html

Crypto入门 (五)混合编码的更多相关文章

  1. openresty 前端开发入门五之Mysql篇

    openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...

  2. Thinkphp入门 五 —模型 (49)

    原文:Thinkphp入门 五 -模型 (49) [数据库操作model模型] model  模型  数据库操作 tp框架主要设计模式:MVC C:controller   控制器   shop/Li ...

  3. DevExpress XtraReports 入门五 创建交叉表报表

    原文:DevExpress XtraReports 入门五 创建交叉表报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪 ...

  4. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?

    本文引用了公众号纯洁的微笑作者奎哥的技术文章,感谢原作者的分享. 1.前言   老于网络编程熟手来说,在测试和部署网络通信应用(比如IM聊天.实时音视频等)时,如果发现网络连接超时,第一时间想到的就是 ...

  5. C#基础入门 五

    C#基础入门 五 递归 递归调用:一个方法直接或间接地调用了它本身,就称为方法的递归调用. 递归方法:在方法体内调用该方法本身. 递归示例 public long Fib(int n) { if(n= ...

  6. Python爬虫入门五之URLError异常处理

    大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...

  7. Python爬虫教程——入门五之URLError异常处理

    大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...

  8. 转 Python爬虫入门五之URLError异常处理

    静觅 » Python爬虫入门五之URLError异常处理 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的服务器 服务器不存在 在代码中, ...

  9. Jmeter Web 性能测试入门 (五):Jmeter 参数化 Request

    用来参数化的常用方法: 添加配置元件:用户定义的变量 使用函数助手 添加配置元件:CSV Data Set Config 添加前置处理器:BeanShell PreProcessor 添加配置元件:用 ...

  10. MySql概述及入门(五)

    MySql概述及入门(五) MySQL集群搭建之读写分离 读写分离的理解 为解决单数据库节点在高并发.高压力情况下出现的性能瓶颈问题,读写分离的特性包括会话不开启事务,读语句直接发送到 salve 执 ...

随机推荐

  1. jeecgboot <j-popup

    <a-col :span="24"> <a-form-item label=" 规格" :labelCol="labelCol&qu ...

  2. git diff如何确定差异所在函数context

    问题 在使用git diff 展示c/c++文件修改内容时,除了显示修改上下文外,输出还贴心的展示了修改所在的函数.尽管这个展示并不总是准确,但是能够做到大部分情况下准确也已经相当不错:是不是git内 ...

  3. sql server 与mysql差异(innodb)

    MySQL SQL SERVER CHAR_LENGTH(str) LEN(character_expression) CONCAT(str1,str2,...) str1+str2 INSERT(s ...

  4. HDLbits——Exams/m2014 q4k

    //四级移位寄存器 module top_module ( input clk, input resetn, // synchronous reset input in, output reg out ...

  5. 如何设置 iOS 开发环境

    原文:https://lwebapp.com/zh/post/how-to-set-up-the-ios-development-environment 介绍 移动互联网时代,掌握 iOS 开发和安卓 ...

  6. chfs共享系统搭建

    手机电脑文件共享搭建(http://iscute.cn/chfs) 1.下载wget http://iscute.cn/tar/chfs/2.0/chfs-linux-amd64-2.0.zip 2. ...

  7. Easycode—MybatisPlus模板

    EasyCode使用指南 1.下载EasyCode插件 2.配置EasyCode 2.1.配置作者名称              2.2.配置代码内容生成模板(模板内容见文末)            ...

  8. 【Java】zuul

    报错 com.netflix.zuul.exception.ZuulException: Hystrix Readed time out 解决办法,zuul模块的yml配置文件增加 ribbon: C ...

  9. holiday05

    第五天 cat cat会一次性显示所有的内容,适合查看 内容较少 的文本文件 选项 含义 -b 对非空输出行编号 -n 对输出的所有行编号 more more每次只显示一页内容,适合于查看 内容较多 ...

  10. 华硕推出无风扇迷你电脑 PL64-明显是奔着软路由去的

    看这个配置,做客厅软路由再合适不过了.要是针对客厅的影音需求,CPU性能以及对大容量存储的刚需,这个还是有些欠缺. IT之家 12 月 17 日消息,华硕 PL 系列迷你电脑现已迎来最新一代机型,其中 ...