C1认证任务1

Posted 方特64

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C1认证任务1相关的知识,希望对你有一定的参考价值。

任务一:用 [0] 和 [1] 绘图

在code.org上注册账号,完成与计算机像素相关的系列任务 (https://studio.code.org/s/pixelation)

先通过二进制的0和1 [画] 出一个图形进行分析:在这里插入图片描述
通过图片可以看出,图片显示出的黑白区域似乎与二进制0和1的排布有关,下面进行相关操作来推测我们的想法。

下面是我进行两次相关测试:
在这里插入图片描述
在这里插入图片描述
根据上面两次操作,可以明显的看出二进制0和1在图片所处的位置,0处于黑色方块位置,1处于白色方块位置。

展示:[画]出自己的名字或昵称
在这里插入图片描述

code上彩色像素例子
1.
在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
图1与图2二进制0和1的位数由三位增加到六位,图片的像素颜色也越发相近。
图三涉及的二进制与十六进制的转换,如下图:
在这里插入图片描述
在这里插入图片描述
什么是2进制:逢2进1的计数规则.

10进制 与 2进制:
在这里插入图片描述
16进制
16进制用于简写(缩写)2进制!

1.2进制直接书写冗长,繁琐,易错很不方便
2.16进制的基数是2进制基数的4次幂
3.简写规则: 2进制数字从低位到高位,每4个2进制数可以缩写为一个16进制数.
原理:
在这里插入图片描述
计算机二进制存储图片文件的底层原理
图像文件存储的都是每一个像素对应的颜色值。
1、位图文件有两种存储像素数据的格式。16777216色(真彩色)的图像,一个像素的颜色可以用24位数据表示。256色的图像可以用调色板对颜色的信息进行编码,一个像素的值对应的是调色板的索引,而不是直接对应一个像素的颜色,调色板的索引映射为像素的颜色。
2、以一百万个像素,256种颜色的BMP文件在电脑上的存储为例。这个文件包括一个十四字节的文件首部,一个四十字节的信息首部,一个1024字节的颜色表,一兆字节的位图数据。文件首部的前两个字节由字符BM组成,还包括了文件长度和位图数据在文件中的起始位置。
3、文件的信息首部包含了图像的高、宽、颜色数等非图形数据。这个图像共有一百万个像素,一个像素需要八位的颜色信息,文件的这一部分的长度是一百万个字节,字节排放的顺序是自左到右从图像的最下面那行开始,这个文件的总大小是1001078字节。

作者:Alone
链接:https://www.zhihu.com/question/65771363/answer/391740385
来源:知乎

任务二:掌握进制编辑器

1.修改文本内容
创建记事本输入文本内容,我这里简单的选择(csdn)
在这里插入图片描述用进制编辑器打开:
在这里插入图片描述
编辑二进制数据:
在这里插入图片描述
输入十六进制数据,内容发生变化。

用进制编辑器结合字符编码,输入一段十六进制数据,验证输入内容符合预期。
在这里插入图片描述
2.修改图片内容
截一幅8×8大小全白或全黑的bmp/png图片
在这里插入图片描述
用进制编辑器打开,修改数据
在这里插入图片描述
对照下图ASCII可以看出文本中的字母全部是由其他进制的编码进行转换对应展现的:
在这里插入图片描述
上面做了一个8×8白色png图片,下面制作一个同样大小的黑色png图片进行对比创建一幅png图片。
在这里插入图片描述
在这里插入图片描述
引入:
ASCII、UrlEncode和Unicode

ASCII码:在二进制文件的时候有说明,其实就是美国定义的一种编码方式来显示字母数字符合等内容
Unicode:统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求(双字节编码)。
在这里插入图片描述

扩展:修改游戏存档

任务
1.用二进制编辑器修改《植物大战僵尸》的存档文件,能跳到指定关卡。
2.用二进制编辑器修改《植物大战僵尸》的存档文件,让游戏账户有指定数量的金币。
3.通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[迷你游戏]选项。
4.通过二进制编辑器修改存档文件,能解锁《植物大战僵尸》的[生存模式]选项。

运行环境
①windows10系统
②《植物大战僵尸2010》中文版
③Hex Editor Neo 64位

实现详解
1.新建账户
在这里插入图片描述
2.找到存档文件
注:用户文件在C盘隐藏文件夹内
在这里插入图片描述
3.修改存档文件数据
注意:存档文件名称与游戏id无关,只与创建用户先后顺序有关。
找不同
1.
在这里插入图片描述
2.
在这里插入图片描述
图一通过第二关,图二是刚创建没进行游戏的。通过对比发现,通过一个关卡之后,只有第一行第四列的数据发生了变化,由01->02因此可以确定,第一行第四列是控制游戏进度的。如果要将进度调整至5-2关(通过试玩和百度都可以知道,植物大战僵尸每个大关卡有10个小关卡,因此要将数值调整为42),由于本文件是16进制,因此要将42转化为16进制数。
解释:10进制转化为16进制,可采用除数取余法。把十进制数除以16,每次计算商和余数,直至商为零时,将余数从后往前拼接。
如本题: 42/16 = 2······102 /16 = 0 ······210在16进制中用A表示,因此,42的16进制为2A。

修改user2存档文件中的数值,查看效果:
在这里插入图片描述
在这里插入图片描述
修改存档文件之后,user2账号的关卡变为5-2。
直接破解!!!

2.修改金币
打把刚才修改的5-2,收集到一定的金币,然后与进度没调整的关卡做对比,查看两个账号的商店,同时对比二者的存档文件:
在这里插入图片描述
在这里插入图片描述
对比之后发现,第一行第八列的数据变为1A:
16进制转为10进制数:将每个位的数值转换为10进制相加
1A=>(1×16^1) + (10×16^0)=26因此,可以看出,金币的数值是参数*10.

因此,第一行第八列控制金币的值。要更改金币值为10000,需要更改数值为1000. 1000的16进制为3E8(此处有三位,而表中只有两位).所以通过相同的方法测试之后,发现第一行第九列也能够控制金币数值。且列数大的左位是高位,右位是次高位,以此类推。因此,3E8按照下图填入表中:
在这里插入图片描述
行了,金币变变变:
在这里插入图片描述

至此,完成关卡和金钱的更改。

3.解锁迷你游戏
在安装文件夹的userdata文件夹里,会有一个除了新建账户存档文件的另一个存档文件。一开始我以为是我自己存档,后来没找到。然后我试着将该文件内容复制之后替换掉user1存档文件的内容。你会发现:解谜模式和生存模式打开了!我懒得通关。如果采用控制变量法,估计今晚都要通宵了。
在这里插入图片描述
在这里插入图片描述
至此,搞定👌。终于可以睡觉了

以上是关于C1认证任务1的主要内容,如果未能解决你的问题,请参考以下文章

C1认证任务1

C1认证学习四(多媒体基础参数)

C1认证学习四(多媒体基础参数)

C1认证任务2

C1认证任务2

C1认证任务2