谁以后要是给我这样的情书我特么打死谁,虽说不太可能收到。。。
题目描述:6岁的小明给6岁的姐姐写了一封情书
打开压缩包得到一个文本
经统计有9409个字符,开方得到97,可以看出97×97的规律,将1视为黑块,0视为白块转为图片可以得到二维码
至于转二维码我看网上基本都是python代码,这里给一个用js实现的(PS:因为算法的原因有一列色块位置生成错误,我也就懒得改了,可以通过打开浏览器开发者工具把那一列挤过去),代码:
<html>
<head>
<style>
*{
padding: 0;
margin: 0;
}
.a{
width: 1px;
height: 1px;
background: #000;
float: left;
}
.a{
width: 1px;
height: 1px;
background: #000;
float: left;
}
.b{
width: 1px;
height: 1px;
background: #fff;
float: left;
}
.c{
width: 1px;
height: 1px;
background: #000;
}
.d{
width: 1px;
height: 1px;
background: #fff;
}
</style>
</head>
<body>
<center>
<script type="text/javascript">
var a = "二进制代码";
document.write(a.length + "</br>");
for (var o = 0; o < a.length; o++) {
if (a[o] == 0) {
if ((o + 1) % 97 == 0) {
document.write("<div class='d'></div>");
} else {
document.write("<div class='b'></div>");
}
} else {
if ((o + 1) % 97 == 0) {
document.write("<div class='c'></div>");
} else {
document.write("<div class='a'></div>");
}
}
}
</script>
</center>
</body>
</html>
生成的二维码解码得到
OTctMyAxLTMgMS0zIDMtMiAzLTIgMy0yIDEtMiAxLTUgMS0yIDEtMyAzLTIgOTctMyAzLTIgOTQtMSAxLTUgNC0yIDQtMiA0LTIgNC0yIDk3LTMgMS0zIDMtMiA0LTIgMS01IDMtMiA0LTIgMy0yIDMtMiAzLTIgNC0yIDk3LTMgMy0yIDEtNSAxLTUgMy0yIDEtMyA0LTIgNC0yIDEtMiAzLTIgMS0zIDQtMiA0LTIgNC0yIDMtMiA5NC0xIDEtMyAxLTMgMS0zIDMtMiA\zLTIgMS0zIDk0LTEgMS0zIDk0LTEgNC0yIDMtMiAxLTIgOTctMyA5Ny0zIDEtMw=
经观察为Base64,注意中间的反斜杠是误导,删除后Base64解码得到:
97-3 1-3 1-3 3-2 3-2 3-2 1-2 1-5 1-2 1-3 3-2 97-3 3-2 94-1 1-5 4-2 4-2 4-2 4-2 97-3 1-3 3-2 4-2 1-5 3-2 4-2 3-2 3-2 3-2 4-2 97-3 3-2 1-5 1-5 3-2 1-3 4-2 4-2 1-2 3-2 1-3 4-2 4-2 4-2 3-2 94-1 1-3 1-3 1-3 3-2 3-2 1-3 94-1 1-3 94-1 4-2 3-2 1-2 97-3 97-3 1-3
通过上面的坐标提取二维码上的色块值为:
1110001111010110000110010000001011010010100001111001111001111
按照题目的暗示6×6将二进制转为三十六进制
得到最终flag:
flag{j5w2a0o0}