You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1058 lines
110 KiB
1058 lines
110 KiB
3 years ago
|
+++
|
||
|
author = "Maik de Kruif"
|
||
|
title = "Shenzhen - Office"
|
||
|
subtitle = "Beginners Quest 6 - Google CTF"
|
||
|
date = 2021-09-28T11:25:00+01:00
|
||
|
description = "A writeup for challenge 6 of the beginners quests of the Google CTF."
|
||
|
cover = "img/writeups/google-ctf/2021/beginners-quest/6/cover.png"
|
||
|
tags = [
|
||
|
"Google CTF",
|
||
|
"Beginners Quest",
|
||
|
"ctf",
|
||
|
"hacking",
|
||
|
"writeup",
|
||
|
]
|
||
|
categories = [
|
||
|
"ctf",
|
||
|
"writeups",
|
||
|
"hacking",
|
||
|
]
|
||
|
+++
|
||
|
|
||
|
## Story line
|
||
|
|
||
|
"Great job! Let’s look into the device itself then. Well, I can’t say that I recognise this piece of hardware-" Before the manager completes the sentence, you spot a reflection of a dagger in his shades. You turn around and see a mysterious assassin that is almost piercing you with the dagger, but you manage to move away at the last moment and disarm the assassin with one strike. The mysterious assassin takes off. Do you?
|
||
|
|
||
|
### Run after
|
||
|
|
||
|
The manager shouts after you to come back, but you don’t listen. You are uncompromisingly determined to hunt down the assassin. The assassin turns over trash bins and chairs through the corridor, and you manage to dodge them. The assassin climbs up using a ladder, you follow. You come to a rooftop, and the assassin has nowhere to flee. You shout: "Reveal yourself, tell me who you’re working for, and I will do you no harm."The assassin comes out from behind a ventilation exhaust. They hand you a note with coordinates to a spot in the mediterranean. When you look again, the assassin is gone.
|
||
|
|
||
|
### Climb out through the window, and try to ambush the assassin
|
||
|
|
||
|
After having climbed through the window, you wait for a while on the ground. The guards from earlier approach you, and tell you that the mysterious assassin disappeared in the other direction, you will never see the assassin again… The manager screams on you to come back, and says that he thinks that he can help you a bit. He tells you that he has managed to trace some components of the device to a specific shipment from South Africa. He tells you that there is a secret lair in Johannesburg that might help you to find out more information about the organisation that the assassin works for.
|
||
|
|
||
|
### Attachment
|
||
|
|
||
|
[attachment.zip](/files/writeups/google-ctf/2021/beginners-quest/6/attachment.zip)
|
||
|
|
||
|
{{< code language="txt" title="encodings" isCollapsed="true" >}}
|
||
|
|
||
|
```text
|
||
|
I made a super secret encoder. I remember using:
|
||
|
- a weird base, much higher than base64
|
||
|
- a language named after a painter
|
||
|
- a language that is the opposite of good
|
||
|
- a language that looks like a rainbow cat
|
||
|
- a language that is too vulgar to write here
|
||
|
- a language that ended in 'ary' but I don't remember the full name
|
||
|
|
||
|
I also use gzip and zlib (to compress the stuff) and I like hiding things in files...
|
||
|
```
|
||
|
|
||
|
{{< /code >}}
|
||
|
|
||
|
{{< code language="txt" title="chall.txt" isCollapsed="true" >}}
|
||
|
|
||
|
```txt
|
||
|
File is too large to display here.
|
||
|
```
|
||
|
|
||
|
{{< /code >}}
|
||
|
|
||
|
## Recon
|
||
|
|
||
|
The attachment contains two files: `chall.txt` and `encodings`.
|
||
|
|
||
|
When opening `chall.txt`, we see a bunch of what looks like chinese characters.
|
||
|
|
||
|
The `encodings` file contains some information about what encodings are used.
|
||
|
|
||
|
## Solving
|
||
|
|
||
|
I found this challenge to be pretty darn difficult.
|
||
|
|
||
|
### Extract image
|
||
|
|
||
|
I started by looking at `chall.txt` and trying to make sense of the characters. I even tried translating them but didn't find anything.
|
||
|
|
||
|
Then I wrote a script to get some information about the character usage:
|
||
|
|
||
|
```py
|
||
|
amount_of_chars = 0
|
||
|
chars = []
|
||
|
|
||
|
with open("chall.txt", "r") as file:
|
||
|
for line in file:
|
||
|
for char in line:
|
||
|
amount_of_chars += 1
|
||
|
if char not in chars:
|
||
|
chars.append(char)
|
||
|
|
||
|
print(chars)
|
||
|
|
||
|
chars = [ord(char) for char in chars]
|
||
|
|
||
|
print(sorted(chars))
|
||
|
print(len(chars))
|
||
|
print(amount_of_chars)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
87282
|
||
|
['魦', '浤', '敥', '攰', '攱', '阴', '欴', '渴', '昰', '晥', '昸', '阶', '樴', '洷', '渶', '欶', '餴', '防', '洰', '樰', '阱', '霱', '朵', '洲', '栰', '霳', '朰', '阵', '栱', '阷', '昶', '樶', '樷', '氷', '靤', '栴', '欰', '氰', '渰', '阰', '頰', '椱', '餰', '霰', '渱', '朱', '鬰', '餱', '鬱', '騱', '頱', '攲', '椲', '騲', '氲', '朲', '頲', '栲', '氳', '渲', '攳', '昳', '椳', '渳', '餳', '洳', '朳', '頳', '栳', '洱', '昲', '散', '昱', '档', '椰', '霶', '楣', '橢', '餷', '昴', '昵', '昷', '昹', '晡', '朴', '晢', '晣', '樱', '晤', '敦', '朶', '朷', '朸', '欱', '氱', '樲', '欲', '樳', '欳', '阳', '椴', '水', '洴', '栵', '椵', '樵', '欵', '氵', '洵', '渵', '栶', '椶', '氶', '洶', '样', '椷', '欷', '渷', '核', '椸', '樸', '欸', '永', '洸', '游', '阸', '朹', '根', '椹', '樹', '欹', '氹', '洹', '渹', '阹', '条', '桡', '楡', '橡', '歡', '污', '浡', '湡', '陡', '杢', '桢', '楢', '止', '汢', '浢', '湢', '院', '杣', '橣', '正', '汣', '浣', '湣', '陣', '杤', '桤', '楤', '橤', '此', '汤', '湤', '除', '来', '桥', '楥', '橥', '步', '汥', '浥', '湥', '陥', '晦', '杦', '桦', '楦', '橦', '武', '汦', '浦', '湦', '陦', '鬳', '攸', '餶', '騸', '頴', '敡', '饣', '鬲', '攴', '靦', '魢', '魤', '靡', '鬷', '鬸', '饦', '驥', '魥', '靣', '饡', '面', '餲', '驦', '敤', '騳', '顦', '攵', '敢', '饢', '騹', '魡', '頵', '騷', '霵', '饤', '鬶', '露', '顥', '騵', '魣', '驢', '鬹', '霹', '鬴', '霷', '頷', '顤', '攷', '頸', '顣', '餹', '餵', '收', '驤', '頹', '鬵', '顢', '靥', '騰', '改', '頶', '餸', '霴', '騴', '饥', '驣', '霸', '顡', '驡', '騶']
|
||
|
[25904, 25905, 25906, 25907, 25908, 25909, 25910, 25911, 25912, 25913, 25953, 25954, 25955, 25956, 25957, 25958, 26160, 26161, 26162, 26163, 26164, 26165, 26166, 26167, 26168, 26169, 26209, 26210, 26211, 26212, 26213, 26214, 26416, 26417, 26418, 26419, 26420, 26421, 26422, 26423, 26424, 26425, 26465, 26466, 26467, 26468, 26469, 26470, 26672, 26673, 26674, 26675, 26676, 26677, 26678, 26679, 26680, 26681, 26721, 26722, 26723, 26724, 26725, 26726, 26928, 26929, 26930, 26931, 26932, 26933, 26934, 26935, 26936, 26937, 26977, 26978, 26979, 26980, 26981, 26982, 27184, 27185, 27186, 27187, 27188, 27189, 27190, 27191, 27192, 27193, 27233, 27234, 27235, 27236, 27237, 27238, 27440, 27441, 27442, 27443, 27444, 27445, 27446, 27447, 27448, 27449, 27489, 27490, 27491, 27492, 27493, 27494, 27696, 27697, 27698, 27699, 27700, 27701, 27702, 27703, 27704, 27705, 27745, 27746, 27747, 27748, 27749, 27750, 27952, 27953, 27954, 27955, 27956, 27957, 27958, 27959, 27960, 27961, 28001, 28002, 28003, 28004, 28005, 28006, 28208, 28209, 28210, 28211, 28212, 28213, 28214, 28215, 28216, 28217, 28257, 28258, 28259, 28260, 28261, 28262, 38448, 38449, 38450, 38451, 38452, 38453, 38454, 38455, 38456, 38457, 38497, 38498, 38499, 38500, 38501, 38502, 38704, 38705, 38706, 38707, 38708, 38709, 38710, 38711, 38712, 38713, 38753, 38754, 38755, 38756, 38757, 38758, 38960, 38961, 38962, 38963, 38964, 38965, 38966, 38967, 38968, 38969, 39009, 39010, 39011, 39012, 39013, 39014, 39216, 39217, 39218, 39219, 39220, 39221, 39222, 39223, 39224, 39225, 39265, 39266, 39267, 39268, 39269, 39270, 39472, 39473, 39474, 39475, 39476, 39477, 39478, 39479, 39480, 39481, 39521, 39522, 39523, 39524, 39525, 39526, 39728, 39729, 39730, 39731, 39732, 39733, 39734, 39735, 39736, 39737, 39777, 39778, 39779, 39780, 39781, 39782]
|
||
|
256
|
||
|
87282
|
||
|
```
|
||
|
|
||
|
Here we can see there are exactly 256 characters used, which I found peculiar. However, I didn't know what to do with this.
|
||
|
|
||
|
Eventually, after a lot of trial and error, I tried the following:
|
||
|
|
||
|
```py
|
||
|
chars = []
|
||
|
|
||
|
with open("chall.txt", "r") as file:
|
||
|
for line in file:
|
||
|
for char in line:
|
||
|
chars.append(char)
|
||
|
|
||
|
sorted_set_chars = sorted(list(set(chars)))
|
||
|
indexes = [sorted_set_chars.index(c) for c in chars]
|
||
|
|
||
|
print(indexes[:20])
|
||
|
print([hex(n) for n in indexes[:20]])
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
[255, 141, 255, 14, 0, 1, 164, 100, 148, 100, 0, 16, 16, 0, 0, 16, 0, 16, 0, 0]
|
||
|
['0xff', '0x8d', '0xff', '0xe', '0x0', '0x1', '0xa4', '0x64', '0x94', '0x64', '0x0', '0x10', '0x10', '0x0', '0x0', '0x10', '0x0', '0x10', '0x0', '0x0']
|
||
|
```
|
||
|
|
||
|
This output looks like some kind of pattern, so I looked up a [list of magic bytes](https://en.wikipedia.org/wiki/List_of_file_signatures) (magic bytes are the first bytes of a file, they specify the file type).
|
||
|
|
||
|
In this list I found JPEG with `FF D8 FF E0 00 10 4A 46 49 46 00 01`. This looks a lot like our output, but the hex is reversed.
|
||
|
|
||
|
Half a byte is called a nibble, so I looked up how to reverse the two nibbles in a byte, and wrote the output to a file:
|
||
|
|
||
|
```py
|
||
|
image_data = bytes(((n & 0x0F) << 4 | (n & 0xF0) >> 4) for n in indexes)
|
||
|
|
||
|
with open("test.jpg", "wb") as file:
|
||
|
file.write(image_data)
|
||
|
```
|
||
|
|
||
|
{{< figure src="/img/writeups/google-ctf/2021/beginners-quest/6/painting.jpg" title="test.jpg" >}}
|
||
|
|
||
|
Yay! We got the first step.
|
||
|
|
||
|
### Evil language
|
||
|
|
||
|
I started out by running strings on the image:
|
||
|
|
||
|
```sh
|
||
|
strings test.jpg
|
||
|
```
|
||
|
|
||
|
In the output, one line stood out because of it's length:
|
||
|
|
||
|
```txt
|
||
|
zaeeaeeuewawaweeeuuwaawuwueeuwaawuwaaawuuuuwuwuuuwaawaawaaaawueueeweeeweaeawuuwawaaaweeeuuweeuwawaaaeeeweeeeewueueewaaaawwuuuuwaaaaawuuuuuweeuewueueuuwaaaaawuuuuuwaaaaawuuuuwwwaaaawuuuuuwawwwawawuuuwaeeeweeuuwaawaawueaeeuwueeaaaweeueawaeeaaweeaewwaaawuwaaaaaawaeeewuueaewaaawaawuuuuwuwaawuuwawuuuuwaeeeweewaaaaaaweeaewaaaaawuuuuuweuueewwueeuwuuuuwaaaaaaaawuuuuuwaaaawuuwuuuuuwaaaaaaaweeaewaaaaaaaaweueewuweuueewuuuwweeuwaaaaaweeeeeeawuuwueewaaaaaawwuuuuwaaaaweueeawaweaeeuwueuewaaaaweeeeeewweueuwawaeaeewuueueuwaaawuuuweeeaawuwueeuwaaawuuuuwaeeeawueeuweeeweewueeeawueewaaaaaawuuuuwueaeeuwueeaaweaaeeweewueeeweeuuwaaaaaaweeeeeewuwueeuwaaawwuuwueeeweaeaaweaaeeweewueeeaaweuewueeuewueueuuwaaaaaaaawwwuuuuwuuuweeeweewuuwaaaawuuuuwaaaaaaaaweueeawuweeuewuuwaeeaaawuuuuuwueaeeawuuwueewaeaaaaawaeeaawaeeewawuuueeaawuuwuuuweueeaawaawuuwwaaawuuuweeaaawuwuuuuuwaaaaaawuwuwaaeeeaweueuwaaaaawaaaeeuuweeeawaawueeawuuuuweaeeuwawuueeawaawuuwuuwuueaeewawuuueeawaaeeeuwwaaweuewwaawaawwuuueeaweaaaaaawaawuuuwueeaweaeewuueaeawuuwaeaeeweeeeewweeueweaeawaawueueewaaawueueeweeuuwaeeaeawaaaeeuwueeuewwueueuuwaeeeawaaawwuwueueuuwaaaaaaaaawuuuuuuwaaaaaaweeueawwwaeeaaawuwawuuwuwaaaeeeaweueuwweaeuweaaaaaawuweaeawuuwaawaaeeeawuuuweuewuwaaaaaawuuwawwaeaaaaawueeaawuuwuweeewaaawaweeeeeweeeuwwuuwaeeawaaweeueawueeawaaawaeaaaawaaawueueuweeeawaawueueuweeaeaweuewaaawuueuewueeuewueueuuwaeeaeawueeeeewueeaewaaaaaaaawuuwuuwwuuuweeaewuueueuuwaaaaaaaaawuuuuuwueueeaaweeaaawuuuuwaawawuuuwaaaawuuuuwuueaeeuwuuuweeaawuuuuwaeeeaaweaeawaaawuuuwaawaaawueueewawwueeewaaaaaweueuweaeaaaweeewuueeuweaaaaaweaeaweaaaaawaeeuwuuuuuwaeeewweaeaaawuuuuwuuuuuwaeeaeawuuwwueewuwuuuwueeeweaeaawuuweeeeeeawuweuewuuwaaaaaaawwaaweeuewweaewaeaaaaweeaawueueewaaawueeaaaweeueweaeawaaeeeuwueeuweaaaaaawawuwueeuuwaeeaewuuuwawaaawuuueewuuwuuuuwaaaaawuueaeeuwueeuwawaaaweeueweaewwuwuwuuwueeewaaawwueuewaaaaaaawuuuuuuwaawuuuwawaaaaaawuuuuuuweaeeuwueeaaawueeaewaeeeweaeaaawwuuuuwawawaaweeuewaaaawuuuwueewaeaeewuueaeawueaeewaweuewaaawuwwueueuuwaaaaaaaaawuuuwawaaeeeawaaaeeuuweeeweeuwaaawueueeaaweuewaaawawaawaweeewuueeaaweaaeeawaaawuuuuweaeawawaeeeuuweeaawuuuuuweueeweeaweueeweeaawaawaeaaaaweaeaaaweeueweewaawuuuwaaawueueeawaeeuwuueaeeawuuueeuwaeeeeeeweeawuuuwueueeawaeeawaaeeewuueaeweueeawuweeaawuuuwaaaaaaaaweeeuuwaaawaaaeeawueueeaawaaawuuwueueuuwaaaaaaaaawuuweaaaaaawaaawaaaeeuuuweuueewueueuweeaewuuweeaaawuuuwuwuueaeeawaaaeeweueeaaweewuuwawawaaweeaeweuueewueaeweueeaaweeawaawuwuuuwuuuuweeaeawuuueeawuuwweaaaaaawueewueeuewuuwueeaweueewaaawueaewaaaaaaweeeuwaawaaaeewaaawawaawueueewaawaaaaaawueueeweeeawaweuewaaaaaaawuuuuwaaaaweeewuueeuwawaeaaaaawwueeawaaaweeeeeewweueuwawaaaaaaawueueeweeeweaeawuuuuwaaaaaawueueeweeeawuweaeaawaeeeawwuuuweeuwuuuwueeeaaweeuweaaaaaweaeuwawaaaeeewuueueuuwaeeewaaweeaaawuuuuwawaeaaaaawaeewawaaeeeawaaaeewaaaawaaeeeuwueaeawuuwaaaaaaawuwuuuuuwaaaaaaweeeuwueaeawaaaaawwuuwuwwaaaeeeawwuuueewaeaaaaweeaawueueeaaweeaaaweeueawaaaawuuuwawueaewuuuwaaaaaaawaaweeeawaaaeeuuwaaaaawuuuweueeawueeuuwaaaawueaeeawuuwueaeweaeeawuwuueeaaweaaeeawueeuuwaeeeaawaawwuuuwueeawaawuuweaeeawaaaeeuuuwaeeewaaaaawuuueewaaaeeewwuuweeuwuuwuuuwaeeeaawaaawwuuwueaeweueeweaeaaawweeueawawawuuuweeuuwaaaaaaaaweaaeeawaeeawuuuuuwaweaeewuueueuuwaaaaaaweeeeeeawuuwueeaawuuwueeeawueeaawaaaaaweeueawaaawuueeuwuuweueeweeuuwaaawaaaawawawuuuwaaweueewaaaaaawuwuuuuwaweaeewuueueuweeaeawwuuwueeuwaawuuuuwaaaaaawuweueeawaaawuueaeeawuuueeawaawuuuuuuwuuuwaeeeaawaaawweuewaeeweeeeeeawuwaaawwuwuueeaawuuuwuuuuuwaaaweaeeawaaaeeuuuwaweeeaaweewaaaweeewuueaeweaeeuwueeuwaaaawuuuuwuueaeeuwueueuuwaeeeawuwwaaaaaweuewaeeuwuuuwaaaweaaaaaawaawuuuweewueeeaawaawwwuueeuwaeeeeeewuuweewueeuewueewuuuuwaaaaaweaaaaawueewaaaawuwaawuuuuuwaaaaaaawuuuwaeaaaaawaaaaweuewueeaawueaeeawuuueeaawawuuuuwwuwuuuweeaewuuuwueeuweeuewawuuuuweaeawawuwwuwwuwaweeeeeeweaeawueueeweaeaawaeeeuuweaewaaaaaweueeawwueeeweeaweueeweaewaeaaaaawaeeaweaaaaawaeeaaawuuuuuwaawwaeaaaawaaawueaeawuuuweeaeaweueuweaeaawuuuuuweueeweaewuwuwaaaaaweeueweeaawwueueeawueeuwaaawueueeawueeuwaaaawuuuwaaaaawuuuuuwueeeweaeawuwaweaaaaawaeewaaawuuuwuuuuuuwaeeaeweeeeeweeeuwueeaaawueueeawuuwaaaaaaawaaeeeawuuueeuweaaaaaawaeeawuuuwueaeewuueeawaawueuee
|
||
|
```
|
||
|
|
||
|
I didn't know that this meant. So I went to the `encodings` file and started looking up some of the answers.
|
||
|
|
||
|
One of the hints was:
|
||
|
|
||
|
> a language that is the opposite of good
|
||
|
|
||
|
So I tried search for some bad or evil languages and came around [`evil`](https://esolangs.org/wiki/Evil).
|
||
|
|
||
|
From the examples I found it looked the same, so I went on to write an `evil` interpreter.
|
||
|
|
||
|
Before we can do that though, we need the `evil` code in our python file. You could just make a variable and past the strings output in there, but I wanted to eventually make [a script that would automatically solve it]({{< ref "#automatic-solver" >}}).
|
||
|
|
||
|
To get the `evil` code, I used the following:
|
||
|
|
||
|
```py
|
||
|
evil_code = ""
|
||
|
|
||
|
for c in (chr(n) for n in image_data):
|
||
|
if "a" <= c <= "z":
|
||
|
evil_code += c
|
||
|
continue
|
||
|
if len(evil_code) >= 20:
|
||
|
break
|
||
|
evil_code = ""
|
||
|
```
|
||
|
|
||
|
After which, I wrote a very basic `evil` interpreter [as described here](https://esolangs.org/wiki/Evil#Commands).
|
||
|
|
||
|
I only implemented the commands that are actually used.
|
||
|
|
||
|
```py
|
||
|
evil_output = ""
|
||
|
accumulator = 0
|
||
|
|
||
|
for s in evil_code:
|
||
|
if s == "a":
|
||
|
accumulator += 1
|
||
|
elif s == "e": # Apply weaver function
|
||
|
accumulator = (
|
||
|
(accumulator >> 0 & 1) << 2 |
|
||
|
(accumulator >> 1 & 1) << 0 |
|
||
|
(accumulator >> 2 & 1) << 4 |
|
||
|
(accumulator >> 3 & 1) << 1 |
|
||
|
(accumulator >> 4 & 1) << 6 |
|
||
|
(accumulator >> 5 & 1) << 3 |
|
||
|
(accumulator >> 6 & 1) << 7 |
|
||
|
(accumulator >> 7 & 1) << 5
|
||
|
)
|
||
|
elif s == "u":
|
||
|
accumulator -= 1
|
||
|
elif s == "w":
|
||
|
evil_output += chr(accumulator)
|
||
|
elif s == "z":
|
||
|
accumulator = 0
|
||
|
|
||
|
print(evil_output)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
789ced57695413591a7569c56e9155161d050511150111230a024d9b800328e368435340a28050dd519486180810daa16db2884823d26cc12e141cb140b1a2b284d8a2a06cb1442a8a2c2d088841a2040821db94fd6b8ef863ceccfc983987faf1bd73de7975ef7ddfbbdff7ceb3e42e99a7914a0f2dd0beed0939bbb98976faa5ba757fc217566b421ade9ddb79b36ad1bd1fbe2d0f9086441e094c9578595da40c47469122afa9e5a7b50aa950fdd652a86dc20779aa6a4ad9a7d5bcb0ebcf6405d569a66542add29352393d90a995679aeb2e4efbedd0967f1a14c25689e8bea78c83a3a46a9a2414b5f5c74b7e3ba419cf4cfd097cf0d1ec965f3c645680d3c79851f755b2db3ad39df36791391bc2959e56bb36cc1291a7391ba8ffc52c5a56e0ac956b67f37d429839d499766ff6a4c9bfcd3079f163b04fd3fe8b0ceeb353f0af6eec530cffd3a99bcda08b723e06db42b49be53a037896817623e1ffd5739825f7930cffb6dcffe8503f01c69e3d595d0baafb525bda2ceee5ca2d627b2657296bfb4f895541eb1dea78776656c4a8c3822a3a6b7b9466ad41fa83a6549a44b14b15272a767b6960e9d9207f5b74e791f3aee97d4b24efb2ddfe5c4816bdbf4bd046fc546219eb0e0b8ca5ee42bd51b96d6159b9f402ebf6354548729cf890baeeadb37bb722358532c9bf4110363d5959401651b44fa7b3a20783038c2cbb8e9d2433b2ce5db8a158f09cb13f8844953564c89764bf76d2ce848d9b26325d5046b5bf5d6f128d122aabe2f88da90b94ae1ead8d430c6639280879cebc6be6d63b91ec7da46a7adf6b5e353d31fa82dff7ccd4079a7cedf88aa81a6c50545d9b1b114759658e9da5c8c69e2f2f1856da473e244933cc79d514d3fe8487cf9fe60b2dac814c41b1b352a20711b4ed672ecb45aaba67e346b6f5f3375bafbb9df4341e73db000c6c87260b86e3e828e3b6b38b565734b11bca018fd5b3f09f878b47eefdf0aebcbf46fdc4cd06c85c7a9975727ec59e7b07fa321447f4b8d838b7664764d84620402f3ef6b53a3b575f6a0c3bd5f13aa08116ab6de617b72e557b5036b714c71e37854b2a264fa02b85dd94909eca1dd78ace35b4bd64509ff519c137524bbbfb6b3f1bd0e162a8ca847df3a24c978d0d502ee671312cae22752c8fe08d344eab5c4f50627d8fc6b0b147a1d59255e193eab80c5ce3301b93418497fbea55a9ddb2793564a4ddecc99525293f826dbad62f20c2815b650b867dd11a815ef13ac08e3aea00d11c44c2f36b9dea8792b33c1c00aed2bd8ac4f01b8a6ebfb308cdef35a330c93abee34524eaa0ff484bf9062e067a36d8723085abaaca6f973fd2684d948cb9a93a48d4a364d9bdcc73a957c12226395bef5c62ba312c666157d725a7831953bdd59960cf8cd5480f518245c72e4567320276d800b56390b364b032ba859af203e8be757a9501dc39ffb0b2dc966e089b7c8e99c14ea6b022b75540a2966e99c883abdc8d60a7e088033be3a868d7cfef320de112c70903b81c2234523553109f591aba16b0767b61bfab21d192fb0810842227451dedb5152ff49d57bb5d583c6c87abac0f3aee0838473ba03369446a94fe2d6278544c8d3782899f7de75927003378a07a48f07e3dda356e4fa406dccb2c6ccd810894c812d95851b261f4cba357b9d89bc72e6670c8037ca51744a84abf57c6c2da1b936a407b6108873a9acec1cee8b22fcb5f7e97659193fddbdd90e03f659ac079930796c33d5529bec85065d9464096267b4ba24625b4b230625985f669a34bf1c8300b4be08045f482c0f46b9ed1107f8aaefe0c75cdba126000e7d18f3f6d970f408495ca142f246aa8d91e9d91d00f92e7f59291409537e5dcd070b31d493295f7c21056285dad0137c7523a17eb9ff97baed696853d5b95ccfc016cb37c2032823b97d586ad6763f1239cf784e36cecccc115ba377d34a737eb10252e8b1cd5853ee18783106fb8f00c51724537fe7e5410529ace6a8068e45b929fb7382c878b2af83640f9b8ec114490e5f14ce0fd9a38d7a5139f437c6bb229b3088d205135adab6968bffff9446da1213cf2eb1d1b2042b56fc7fba28cac94a5dd5fe3eae501783e98d3ebd17c43dfa59e837417d435df8e8d81d2df9af38505a03da3e0b96b5d39d8b68a95977b82f1eedb65ed78b1e47da50945f313f70b7184e6270770b54a4930c4bfa3eab301ec1a068c49d4c8be7478d2d90cee3c457700240d7b7c90b3cd4fb0c957a2a2f0bcba4cfc586fdec9048fd1e0240ed61c3d832b4e386a04b7ddfcfb0cd5616b0a8d3934c6c13885ec2e824828ab9b1e3e43a40e15255aa35db9c3221338678570daf177078f688826117821636a87413054b407d1c354af1f9c7f9dd7b9e2924aeaf50c481fc6f77fe46b8b6da644eafecdcbfdcc5060e7c3ad410a9c8db1a67e2f12459e763185613923e5177b3d9f80e570894e507799f5f33b9b0067fddb760077e15008de16c3c4b832398e1f7561ea2ab87a49612d076bc7442d79f628607649cd7f1f85d65ce7b951eb37edce17d834bb744b217d3338c745114292ec693ffaa83c3cdaae9d72db001e49548c40fc9d66c401937153148877cb0a2bb74601f7eb1d49ef5a43ab37013a563754e5612cec755d483e44507b1cdd762b48b13614ef033a3efc0d46b0cc32479006c27ae1411cacd5b99085f9274a38b5740ef686c133bb9a06d14e5ce7e19d4cc765c3292255a15a9973b9dfeee43aa06cec550cc41f4fe66d00dca869609b304919111f77921d87b755d1b6381ed91ab8ad7978ba7874078d4ba4def4e133055fa6687ca58350e1f3fc5c33c674a6319c573d4ee8a6649f0db3fcbe5ec8c2a
|
||
|
```
|
||
|
|
||
|
### Decompressing output
|
||
|
|
||
|
At this point I was stuck for another while, until I tried to read the `evil` output as hex:
|
||
|
|
||
|
```py
|
||
|
data = binascii.unhexlify(evil_output)
|
||
|
|
||
|
print([hex(c) for c in data[:20]])
|
||
|
```
|
||
|
|
||
|
```py
|
||
|
['0x78', '0x9c', '0xed', '0x57', '0x69', '0x54', '0x13', '0x59', '0x1a', '0x75', '0x69', '0xc5', '0x6e', '0x91', '0x55', '0x16', '0x1d', '0x5', '0x5', '0x11']
|
||
|
```
|
||
|
|
||
|
When looking up these bytes again in the [list of file signatures](https://en.wikipedia.org/wiki/List_of_file_signatures), we find that it is `zlib` data.
|
||
|
|
||
|
If we then decompress it an read its output, we get `gzip` data:
|
||
|
|
||
|
```py
|
||
|
zlib_data = binascii.unhexlify(evil_output)
|
||
|
data = zlib.decompress(zlib_data)
|
||
|
|
||
|
print([hex(c) for c in data[:20]])
|
||
|
```
|
||
|
|
||
|
```py
|
||
|
['0x1f', '0x8b', '0x8', '0x0', '0xfe', '0xef', '0xef', '0x60', '0x2', '0xff', '0xed', '0xdd', '0x5b', '0x8e', '0x2c', '0xc7', '0x75', '0x85', '0xe1', '0xfd']
|
||
|
```
|
||
|
|
||
|
If we then read the output one last time, we find that it is likely a PPM file.
|
||
|
|
||
|
```py
|
||
|
zlib_data = binascii.unhexlify(evil_output)
|
||
|
gzip_data = zlib.decompress(zlib_data)
|
||
|
data = gzip.decompress(data)
|
||
|
|
||
|
print([hex(c) for c in data[:20]])
|
||
|
```
|
||
|
|
||
|
Let's save this output to a file and open it:
|
||
|
|
||
|
```py
|
||
|
with open("test.ppm", "wb") as file:
|
||
|
file.write(data)
|
||
|
```
|
||
|
|
||
|
{{< figure src="/img/writeups/google-ctf/2021/beginners-quest/6/piet.png" title="test.ppm" >}}
|
||
|
|
||
|
### Piet language
|
||
|
|
||
|
This looks like a weird image, it likely contains data in the colors.
|
||
|
|
||
|
The `encodings` file gives the following hint:
|
||
|
|
||
|
> a language named after a painter
|
||
|
|
||
|
When googling this, we find the Piet language. This is not a written language, but is saved in an image. This is exactly what we need.
|
||
|
|
||
|
Let's try to use a piet interpreter to read the image.
|
||
|
|
||
|
For this you can use the `npiet` command, or [use this handy online piet interpreter](https://www.bertnase.de/npiet/npiet-execute.php).
|
||
|
|
||
|
In python, you will first have to install `npiet`, and then you can use the following code:
|
||
|
|
||
|
```py
|
||
|
piet_output = subprocess.run(
|
||
|
["npiet", "-e", "10000", "test.ppm"],
|
||
|
stdout=subprocess.PIPE,
|
||
|
stderr=subprocess.PIPE,
|
||
|
)
|
||
|
|
||
|
piet_output = piet_output.stdout.replace(b"\x01", b"").decode()
|
||
|
```
|
||
|
|
||
|
### Decompressing again
|
||
|
|
||
|
This time, we get some very annoying output again. Luckily, it turns out to be the same as the previous compression but without `gzip`.
|
||
|
|
||
|
```py
|
||
|
zlib_data = binascii.unhexlify(piet_output)
|
||
|
data = zlib.decompress(zlib_data)
|
||
|
|
||
|
print(data)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
b'nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~\nnyy
|
||
|
```
|
||
|
|
||
|
This is ugly, to let's format it:
|
||
|
|
||
|
```py
|
||
|
data = data.decode()
|
||
|
data = data.split("\n")
|
||
|
|
||
|
for line in data:
|
||
|
print(line)
|
||
|
```
|
||
|
|
||
|
{{< code language="text" title="output" >}}
|
||
|
|
||
|
```text
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyya~
|
||
|
```
|
||
|
|
||
|
{{< /code >}}
|
||
|
|
||
|
### nya~
|
||
|
|
||
|
This data looks like some weird language again...
|
||
|
|
||
|
Another hint from the `encodings` file was:
|
||
|
|
||
|
> a language that looks like a rainbow cat
|
||
|
|
||
|
From looking around in [the language list on esolangs.org](https://esolangs.org/wiki/Language_list), I found [`nya~`](https://esolangs.org/wiki/Nya~), which looks like an abbreviation of [Nyan Cat](https://www.youtube.com/watch?v=QH2-TGUlwu4). The examples also look the same as our output.
|
||
|
|
||
|
So, from [the commands table on its wiki](https://esolangs.org/wiki/Nya~), I wrote the following interpreter:
|
||
|
|
||
|
```py
|
||
|
nya_result = ""
|
||
|
counter = 0
|
||
|
for line in data:
|
||
|
|
||
|
for char in line:
|
||
|
if char == "n":
|
||
|
counter -= 1
|
||
|
elif char == "y":
|
||
|
counter += 1
|
||
|
elif char == "a":
|
||
|
nya_result += chr(counter)
|
||
|
elif char == "~":
|
||
|
counter = 0
|
||
|
|
||
|
print(nya_result)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
440697918422363183397548356115174111979967632241756381461523275762611555565044345243686920364972358787309560456318193690287799624872508559490789890532367282472832564379215298488385593860832849627398865422864710999039787979733217240717198641619578634620231344233376325369569117210379679868602299244468387044128773681334105139544596909148571184763654886495124023818825988036876333149722377075577809087358356951704469327595398462722928801
|
||
|
```
|
||
|
|
||
|
This looks like a large number of sorts.
|
||
|
|
||
|
### Unary
|
||
|
|
||
|
So with this hint in mind:
|
||
|
|
||
|
> a language that looks like a rainbow cat
|
||
|
|
||
|
T looked further on [esolangs.org](https://esolangs.org/wiki/Language_list). Then I found [Unary](https://esolangs.org/wiki/Unary), which, as a nice bonus, outputs a language called [brainfuck](https://esolangs.org/wiki/Brainfuck). This language is likely the answer to this hint:
|
||
|
|
||
|
> a language that is too vulgar to write here
|
||
|
|
||
|
Unary expects binary as an input, so lets convert our output from `nya~` to binary:
|
||
|
|
||
|
```py
|
||
|
# Convert to binary and remove leading 0b
|
||
|
unary_code = bin(int(nya_result))[2:]
|
||
|
|
||
|
print(unary_code)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
1110011111000110011111001010010010010010010110000010010010010010010010010010010001011111000010010010010010010010100001010110000010010010010010010010010010010001011111000010010010010010010010100001010110000011011011011011011011011011011001011111000011011011011100001010010010010010110000010010010010010010010010010010001011111000010010010100001010110000011011011011011011011011011011001011111000011100001110000011011011011011011011011011011001011111000011011011011100001010010010010010110000011011011011011011011011011011001011111000011011011011011011011100001110000010010010010010010010010010010001011111000010100001010010010010010010110000010010010010010010010010010010001011111000010010010100001010010010010010010110000011011011011011011011011011011001011111000011011011011100001010010010010110000010010010010010010010010010010001011111000010010010010100001010110000010010010010010010010010010010001011111000010010010010010100001010010010010010010110000011011011011011011011011011011001011111000011011100001010010010010110000010010010010010010010010010010001011111000010010010010010010010100001010110000010010010010010010010010010010001011111000010010010010100001010010010010010010110000011011011011011011011011011011001011111000011100001110000010010010010010010010010010010001011111000010010010010100001010010010010010010110000010010010010010010010010010010001011111000010010100001010110000010010010010010010010010010010001011111000010100001
|
||
|
```
|
||
|
|
||
|
Then, let's follow the steps to convert brainfuck to Unary in reverse.
|
||
|
|
||
|
1. Remove the leading `1`
|
||
|
|
||
|
```py
|
||
|
unary_code = unary_code[1:]
|
||
|
```
|
||
|
|
||
|
2. Replace unary with brainfuck
|
||
|
|
||
|
```py
|
||
|
for i in range(0, len(unary_code), 3):
|
||
|
operation = unary_code[i:i+3]
|
||
|
|
||
|
if operation == "000":
|
||
|
brainfuck_code += ">"
|
||
|
elif operation == "001":
|
||
|
brainfuck_code += "<"
|
||
|
elif operation == "010":
|
||
|
brainfuck_code += "+"
|
||
|
elif operation == "011":
|
||
|
brainfuck_code += "-"
|
||
|
elif operation == "100":
|
||
|
brainfuck_code += "."
|
||
|
elif operation == "101":
|
||
|
brainfuck_code += ","
|
||
|
elif operation == "110":
|
||
|
brainfuck_code += "["
|
||
|
elif operation == "111":
|
||
|
brainfuck_code += "]"
|
||
|
```
|
||
|
|
||
|
3. Print the result:
|
||
|
|
||
|
```py
|
||
|
print(brainfuck_code)
|
||
|
```
|
||
|
|
||
|
```bf
|
||
|
[-]>[-]<++++++[>++++++++++<-]>+++++++.<+[>++++++++++<-]>+++++++.<+[>----------<-]>----.<+++++[>++++++++++<-]>+++.<+[>----------<-]>-.<[>----------<-]>----.<+++++[>----------<-]>-------.<[>++++++++++<-]>+.<++++++[>++++++++++<-]>+++.<++++++[>----------<-]>----.<++++[>++++++++++<-]>++++.<+[>++++++++++<-]>+++++.<++++++[>----------<-]>--.<++++[>++++++++++<-]>+++++++.<+[>++++++++++<-]>++++.<++++++[>----------<-]>-.<[>++++++++++<-]>++++.<++++++[>++++++++++<-]>++.<+[>++++++++++<-]>+.<
|
||
|
```
|
||
|
|
||
|
### Brainfuck
|
||
|
|
||
|
The last step is to evaluate the brainfuck code.
|
||
|
|
||
|
To do this, we can use the brainfuck library `brainfuck-interpreter`.
|
||
|
|
||
|
```sh
|
||
|
pip install brainfuck-interpreter
|
||
|
```
|
||
|
|
||
|
```py
|
||
|
flag = brainfuck.evaluate(brainfuck_code)
|
||
|
|
||
|
print(flag)
|
||
|
```
|
||
|
|
||
|
```txt
|
||
|
CTF{pl34s3_n0_m04r}
|
||
|
```
|
||
|
|
||
|
### Automatic solver
|
||
|
|
||
|
As for most ctf problems, I've written a script that executes all the step automatically and returns the flag.
|
||
|
|
||
|
{{< code language="py" title="solve.py" isCollapsed="true" >}}
|
||
|
|
||
|
```py
|
||
|
# pip install brainfuck-interpreter
|
||
|
import subprocess
|
||
|
import binascii
|
||
|
import zlib
|
||
|
import gzip
|
||
|
import brainfuck
|
||
|
|
||
|
#
|
||
|
# Extract image
|
||
|
#
|
||
|
|
||
|
chars = []
|
||
|
|
||
|
with open("chall.txt", "r") as file:
|
||
|
for line in file:
|
||
|
for char in line:
|
||
|
chars.append(char)
|
||
|
|
||
|
sorted_set_chars = sorted(list(set(chars)))
|
||
|
indexes = [sorted_set_chars.index(c) for c in chars]
|
||
|
|
||
|
piet_image_data = bytes(((n & 0x0F) << 4 | (n & 0xF0) >> 4) for n in indexes)
|
||
|
|
||
|
#
|
||
|
# Read evil code
|
||
|
#
|
||
|
|
||
|
evil_code = ""
|
||
|
|
||
|
for c in (chr(n) for n in piet_image_data):
|
||
|
if "a" <= c <= "z":
|
||
|
evil_code += c
|
||
|
continue
|
||
|
if len(evil_code) >= 20:
|
||
|
break
|
||
|
evil_code = ""
|
||
|
|
||
|
|
||
|
#
|
||
|
# Run evil code
|
||
|
#
|
||
|
|
||
|
evil_output = ""
|
||
|
accumulator = 0
|
||
|
|
||
|
for s in evil_code:
|
||
|
if s == "a":
|
||
|
accumulator += 1
|
||
|
elif s == "e": # Apply weaver function
|
||
|
accumulator = (
|
||
|
(accumulator >> 0 & 1) << 2 |
|
||
|
(accumulator >> 1 & 1) << 0 |
|
||
|
(accumulator >> 2 & 1) << 4 |
|
||
|
(accumulator >> 3 & 1) << 1 |
|
||
|
(accumulator >> 4 & 1) << 6 |
|
||
|
(accumulator >> 5 & 1) << 3 |
|
||
|
(accumulator >> 6 & 1) << 7 |
|
||
|
(accumulator >> 7 & 1) << 5
|
||
|
)
|
||
|
elif s == "u":
|
||
|
accumulator -= 1
|
||
|
elif s == "w":
|
||
|
evil_output += chr(accumulator)
|
||
|
elif s == "z":
|
||
|
accumulator = 0
|
||
|
|
||
|
#
|
||
|
# Decompress evil output
|
||
|
#
|
||
|
|
||
|
zlib_data = binascii.unhexlify(evil_output)
|
||
|
gzip_data = zlib.decompress(zlib_data)
|
||
|
actual_piet_image = gzip.decompress(gzip_data)
|
||
|
|
||
|
#
|
||
|
# Read piet image
|
||
|
#
|
||
|
|
||
|
piet_output = subprocess.run(
|
||
|
["npiet", "-e", "10000", "piet.ppm"],
|
||
|
stdout=subprocess.PIPE,
|
||
|
stderr=subprocess.PIPE,
|
||
|
)
|
||
|
|
||
|
piet_output = piet_output.stdout.replace(b"\x01", b"").decode()
|
||
|
|
||
|
#
|
||
|
# Decompress piet output
|
||
|
#
|
||
|
|
||
|
zlib_data = binascii.unhexlify(piet_output)
|
||
|
nya_code = zlib.decompress(zlib_data)
|
||
|
|
||
|
nya_code = nya_code.decode()
|
||
|
nya_code = nya_code.split("\n")
|
||
|
|
||
|
#
|
||
|
# Execute nya~ code
|
||
|
#
|
||
|
|
||
|
nya_result = ""
|
||
|
counter = 0
|
||
|
for line in nya_code:
|
||
|
|
||
|
for char in line:
|
||
|
if char == "n":
|
||
|
counter -= 1
|
||
|
elif char == "y":
|
||
|
counter += 1
|
||
|
elif char == "a":
|
||
|
nya_result += chr(counter)
|
||
|
elif char == "~":
|
||
|
counter = 0
|
||
|
|
||
|
#
|
||
|
# Convert to Unary
|
||
|
#
|
||
|
|
||
|
# Convert to binary and remove leading 0b
|
||
|
unary_code = bin(int(nya_result))[2:]
|
||
|
|
||
|
#
|
||
|
# Convert Unary to brainfuck
|
||
|
#
|
||
|
brainfuck_code = ""
|
||
|
|
||
|
# Remove leading 1
|
||
|
unary_code = unary_code[1:]
|
||
|
|
||
|
for i in range(0, len(unary_code), 3):
|
||
|
operation = unary_code[i:i+3]
|
||
|
|
||
|
if operation == "000":
|
||
|
brainfuck_code += ">"
|
||
|
elif operation == "001":
|
||
|
brainfuck_code += "<"
|
||
|
elif operation == "010":
|
||
|
brainfuck_code += "+"
|
||
|
elif operation == "011":
|
||
|
brainfuck_code += "-"
|
||
|
elif operation == "100":
|
||
|
brainfuck_code += "."
|
||
|
elif operation == "101":
|
||
|
brainfuck_code += ","
|
||
|
elif operation == "110":
|
||
|
brainfuck_code += "["
|
||
|
elif operation == "111":
|
||
|
brainfuck_code += "]"
|
||
|
|
||
|
#
|
||
|
# Run brainfuck
|
||
|
#
|
||
|
|
||
|
flag = brainfuck.evaluate(brainfuck_code)
|
||
|
|
||
|
|
||
|
print(flag)
|
||
|
```
|
||
|
|
||
|
{{< /code >}}
|
||
|
|
||
|
## Solution
|
||
|
|
||
|
After executing this code, we finally get the flag! It's `CTF{pl34s3_n0_m04r}`, and very well describes how I feel about this challenge...
|