文档章节

关于Base⑥4编码换行回车引发的blood事件

kingsOSZT
 kingsOSZT
发布于 2016/05/17 12:49
字数 733
阅读 74
收藏 0
点赞 2
评论 0

分析某个sdk的通讯协议,万变不离其宗,基本都是对称加密或者非对称加密后圌进行通讯完整性以及内容可靠性的反复校验。

周三稍微逆向差不多看了实现,偷懒没继续,周四下午任务交接发现以为不需要去分析的一个二次加密在某个不起眼的小参数中决定性的使用了多重加密。

自己python模拟发包时,发现服务器总是返回失败,即使数据完全相同,因为本地只有rsa的公钥,而rsa生成结果又非唯一,逆向过程进入瓶颈。

最后日志打印加hex对比后,发现在base⑥4的两个字符串中存在0x0a换行操作符。

但是当时并未意识到是base⑥4产生的问题,因为在问题初始,自己对比md5算法的向量表,对比了base⑥4的响亮表,查看了rsa和des的padding方式,验证了rsa和des的加密算法,全部没找到问题。

最后以为发现的问题是在一个list转字符串的操作中,日志打印发现list转换完毕后会有回车产生,查找list的迭代器,并没结果,盲目的相信了应该是list产生的问题,大概主要还是对于jАVa的不熟练吧,毕竟始终是用的是map。

上线test发现问题依旧存在,最后只能是log大 氵 去,各种输入输出全部打印,黑盒test,最后的最后抱着试试看的态度打印base⑥4的结果后才豁然开朗。

虽然base⑥4用了这么多年,竟然没有看过标准,也真是汗颜。

 

根据RFC 822规定,每76个字符,还需要加上一个回车换行。

大多数来说我们使用的各种base⑥4,都是没有遵循这个原始标准的。或者,算法内部使用这一标准,然而输出结果会替换掉回车换行,我想encode 或者 decode使用这么多年,或许还是有大部分人并不知道这一标准,或许对于开发同学来说, 问题定位想对容易,然而我使用的却是两个工作日整加一个通宵的三十多个小时,真是累吐了!!!!!!!!! 

最后,adroid自身框架provide的base⑥4中的算法,可以通过参数来控制是否添加换行符号。

Base⑥4.encodeToString(plain.getBytes(), Base⑥4.DEFAULT);

https://zh.wik1pedia.org/wik1/Base⑥4   百科-Base⑥4

https://developer.android.com/reference/android/util/Base⑥4.html  android developer-base⑥4

 

--------------

 

此博文格式化后跟狗屎一样,为什么呢?功劳属于oschina关键词过滤功能的开发人猿,是的,人袁?人缘?人猿?!!!敏感成了公务袁??????

© 著作权归作者所有

共有 人打赏支持
kingsOSZT
粉丝 2
博文 26
码字总数 8456
作品 0
松江
Java加密解密(二) Base64编码

Base64的由来 Base64最早用于解决电子邮件传输问题。由于“历史问题”,早期的电子邮件网关只允许传输ASCII(二进制为00000000-01111111)字符,如果有非ASCII字符经过这种网关时, 字符的二进...

pseudo ⋅ 2015/06/12 ⋅ 0

使用VIM将一行X509证书分解为多行的方式

引: 数字证书有多种格式,对于经过base64编码的证书而言,如果你将所有内容合并成一行,微软操作系统还是能正确解析的,然而如果你使用OpenSSL的x509命令解析,就会报错,可见,微软的兼容行...

晨曦之光 ⋅ 2012/04/10 ⋅ 0

字符集与编码(八)——ASCII和ISO-8859-1

在前面其实也谈到了ASCII了,但并没有很具体,作为一个完整系列的一部分,还是有必要谈一下,也作为后面讨论的一些基础。 ASCII 它的全称是American Standard Code for Information Intercha...

国栋 ⋅ 2014/12/03 ⋅ 1

也谈文本文件与二进制文件

网上关于文本文件与二进制文件的文章很多,但遗憾的是,这些文章讲得都比较 散。下面我将结合所查到的资料,从多个角度谈谈文本文件与二进制文件。 一、文本文件与二进制文件的定义 大家都知...

长平狐 ⋅ 2012/09/03 ⋅ 0

流之过滤器流(PrintStream)

PrintStream类是大多数程序员都会遇到的第一个过滤器输出流,因为System.out就是一个PrintStream。不过,还可以使用下面两个构造函数将其他输出流串链到打印流: public PrintStream(OutputS...

柳哥 ⋅ 2014/10/12 ⋅ 0

文字编码的那些事

我们经常听到纯文本格式和二进制编码,什么是纯文本,什么是二进制呢?以一个例子做说明。新建一个文件叫hello.txt,内容为: 这个文件有12个字节: 借助Node.js可以看这个文件在硬盘的原始二...

人人网FED ⋅ 2017/11/11 ⋅ 0

HTTP基本认证

在HTTP中,基本认证是一种用来允许Web浏览器,或其他客户端程序在请求时提供以用户名和口令形式的凭证。 在发送之前,用户名追加一个冒号然后串接上口令。得出的结果字符串再用Base64算法编码...

索隆 ⋅ 2012/09/08 ⋅ 0

base64 编码笔记

一、定义: Base64是一种基于64个可打印字符来表示二进制数据的表示方法.以每6个位为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符...

famince ⋅ 2014/05/20 ⋅ 0

c语言实现简单web服务器

1http简单介绍 http超文本传输协议:host主机地址:port端口/url host会被DNS服务器 解析成IP地址,所以有时候可以直接用域名, http默认访问80端口,https默认访问443端口 大致流程就是:浏览器输...

超级极客 ⋅ 01/11 ⋅ 0

【详解】回车 换行 0x0D 0x0A CR LF \r \n的来龙去脉

1、【回车和换行的历史】 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行,需要回车换行,此过程,要用...

阿信sxq ⋅ 2014/02/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 10分钟前 ⋅ 0

前阿里P8架构师:精准定制Java架构师学习计划!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握J...

java高级架构牛人 ⋅ 13分钟前 ⋅ 0

zookeper学习

https://blog.csdn.net/u012152619/article/category/6470028

~少司命~ ⋅ 14分钟前 ⋅ 0

Spring MVC ,JSON,JQuery,不懂JQuery,跳过了

/spring-mvc-study/src/main/webapp/course_json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD ......

颖伙虫 ⋅ 15分钟前 ⋅ 0

2018上海云栖大会workshop-日志数据采集与分析对接

摘要: 日志数据采集与分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析与处理,程序日志查询与监控,打通日志与数据仓库对接案例。 日志种类 网站访...

阿里云云栖社区 ⋅ 15分钟前 ⋅ 0

mahout demo

package com.datamine.CollaborativeFiltering.mysql; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommend......

xiaomin0322 ⋅ 17分钟前 ⋅ 0

red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang ⋅ 18分钟前 ⋅ 0

Rocket-Chip在GitHub上的各个源码

在github上通过搜索Rocket-chip可以得到36个结果:其中 https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom https://github.com/ucb-bar/fpga-zynq (......

whoisliang ⋅ 23分钟前 ⋅ 0

【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置

nginx是轻量级的Web服务器、反向代理服务器及邮件服务器,具有占用内存少,并发能力强的优点,已被广泛应用。本文介绍目前最新版本 1.12.2 的安装。 各版本nginx下载地址:http://nginx.org/...

HAVENT ⋅ 29分钟前 ⋅ 0

查看linux系统重启之前的log -- last_kmsg

当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不...

zyzzu ⋅ 30分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部