# Babystretchy (Web) - IrisCTF2023 ![](https://i.imgur.com/FQCoRgs.png) ``` More byte mean more secure ``` #### SOURCE CODE : ```php= <?php $password = exec("openssl rand -hex 64"); $stretched_password = ""; for($a = 0; $a < strlen($password); $a++) { for($b = 0; $b < 64; $b++) $stretched_password .= $password[$a]; } echo "Fear my 4096 byte password!\n> "; $h = password_hash($stretched_password, PASSWORD_DEFAULT); while (FALSE !== ($line = fgets(STDIN))) { if(password_verify(trim($line), $h)) die(file_get_contents("flag")); echo "> "; } die("No!"); ?> ``` - First $password will be randomly generated 64 characters of hex. - Next go through 2 loops, each character of $password will be repeated 64 times. - The goal here is to find a string ($line) when entering the password_verify function that returns True. We'll get the FLAG ### Exploiting We will be interested in the [password_hash](https://www.php.net/manual/en/function.password-hash.php) function first. `password_hash — Creates a password hash` ![](https://i.imgur.com/Xbg7UXX.png) ![](https://i.imgur.com/YZDYkmD.png) We can see the author uses PASSWORD_DEFAULT, which means the maximum input is only 72 bytes, the remainder will be truncated. [You can refer here for more information](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/php-tricks-esp#password_hash-password_verify) Ok, to test, i have simulated the following code ```php= <?php $password = "5aa980cbe366458bd0b36f7e0193d59e46ee49aac520ab457901d3af5d2d3058b9b3a1bc88a1e28ba96ba40189e98358f7fc46dcccdebbdb11d8c037a9c650a3"; // for example password parameter is generated like this sequence $stretched_password = ""; for($a = 0; $a < strlen($password); $a++) { for($b = 0; $b < 64; $b++) $stretched_password .= $password[$a]; } $h = password_hash($stretched_password, PASSWORD_DEFAULT); $line = "5555555555555555555555555555555555555555555555555555555555555555aaaaaaaa"; if(password_verify(trim($line), $h)) die("True"); echo "False"; ``` Thus, my mining idea will only need the first 64 characters and the next 8 characters of $password. Now simply we will write the script to brute force Because this post connects netcat to answer via terminal, I needed the help of the team (pwner) ```python= import os from pwn import * # connect to server r = remote('stretchy.chal.irisc.tf', 10704) msg = r.recvuntil(b"Solution?") x = msg.decode('utf8').split('\n')[3].strip().split(' ') solution = os.popen("python3 pow.py " + x[4] + " " + x[5]).read() r.sendline(str(solution)) r.recvuntil(b">") f = open("out.txt", "r") for x in f: r.sendline(str(x.strip())) log.info(str(r.recv())) r.close() ``` ![](https://i.imgur.com/lYbKxYc.png) Attached files: pow.py ```python= #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import base64 import os import secrets import socket import sys import hashlib try: import gmpy2 HAVE_GMP = True except ImportError: HAVE_GMP = False sys.stderr.write("[NOTICE] Running 10x slower, gotta go fast? pip3 install gmpy2\n") VERSION = 's' MODULUS = 2**1279-1 CHALSIZE = 2**128 SOLVER_URL = 'https://goo.gle/kctf-pow' def python_sloth_root(x, diff, p): exponent = (p + 1) // 4 for i in range(diff): x = pow(x, exponent, p) ^ 1 return x def python_sloth_square(y, diff, p): for i in range(diff): y = pow(y ^ 1, 2, p) return y def gmpy_sloth_root(x, diff, p): exponent = (p + 1) // 4 for i in range(diff): x = gmpy2.powmod(x, exponent, p).bit_flip(0) return int(x) def gmpy_sloth_square(y, diff, p): y = gmpy2.mpz(y) for i in range(diff): y = gmpy2.powmod(y.bit_flip(0), 2, p) return int(y) def sloth_root(x, diff, p): if HAVE_GMP: return gmpy_sloth_root(x, diff, p) else: return python_sloth_root(x, diff, p) def sloth_square(x, diff, p): if HAVE_GMP: return gmpy_sloth_square(x, diff, p) else: return python_sloth_square(x, diff, p) def encode_number(num): size = (num.bit_length() // 24) * 3 + 3 return str(base64.b64encode(num.to_bytes(size, 'big')), 'utf-8') def decode_number(enc): return int.from_bytes(base64.b64decode(bytes(enc, 'utf-8')), 'big') def decode_challenge(enc): dec = enc.split('.') if dec[0] != VERSION: raise Exception('Unknown challenge version') return list(map(decode_number, dec[1:])) def encode_challenge(arr): return '.'.join([VERSION] + list(map(encode_number, arr))) def get_challenge(diff): x = secrets.randbelow(CHALSIZE) return encode_challenge([diff, x]) def solve_challenge(chal): [diff, x] = decode_challenge(chal) y = sloth_root(x, diff, MODULUS) return encode_challenge([y]) def can_bypass(chal, sol): from ecdsa import VerifyingKey from ecdsa.util import sigdecode_der if not sol.startswith('b.'): return False sig = bytes.fromhex(sol[2:]) with open("/kctf/pow-bypass/pow-bypass-key-pub.pem", "r") as fd: vk = VerifyingKey.from_pem(fd.read()) return vk.verify(signature=sig, data=bytes(chal, 'ascii'), hashfunc=hashlib.sha256, sigdecode=sigdecode_der) def verify_challenge(chal, sol, allow_bypass=True): if allow_bypass and can_bypass(chal, sol): return True [diff, x] = decode_challenge(chal) [y] = decode_challenge(sol) res = sloth_square(y, diff, MODULUS) return (x == res) or (MODULUS - x == res) def usage(): sys.stdout.write('Usage:\n') sys.stdout.write('Solve pow: {} solve $challenge\n') sys.stdout.write('Check pow: {} ask $difficulty\n') sys.stdout.write(' $difficulty examples (for 1.6GHz CPU) in fast mode:\n') sys.stdout.write(' 1337: 1 sec\n') sys.stdout.write(' 31337: 30 secs\n') sys.stdout.write(' 313373: 5 mins\n') sys.stdout.flush() sys.exit(1) def main(): if len(sys.argv) != 3: usage() sys.exit(1) cmd = sys.argv[1] if cmd == 'ask': difficulty = int(sys.argv[2]) if difficulty == 0: sys.stdout.write("== proof-of-work: disabled ==\n") sys.exit(0) challenge = get_challenge(difficulty) sys.stdout.write("== proof-of-work: enabled ==\n") sys.stdout.write("please solve a pow first\n") sys.stdout.write("You can run the solver with:\n") sys.stdout.write(" python3 <(curl -sSL {}) solve {}\n".format(SOLVER_URL, challenge)) sys.stdout.write("===================\n") sys.stdout.write("\n") sys.stdout.write("Solution? ") sys.stdout.flush() solution = '' with os.fdopen(0, "rb", 0) as f: while not solution: line = f.readline().decode("utf-8") if not line: sys.stdout.write("EOF") sys.stdout.flush() sys.exit(1) solution = line.strip() if verify_challenge(challenge, solution): sys.stdout.write("Correct\n") sys.stdout.flush() sys.exit(0) else: sys.stdout.write("Proof-of-work fail") sys.stdout.flush() elif cmd == 'solve': challenge = sys.argv[2] solution = solve_challenge(challenge) if verify_challenge(challenge, solution, False): sys.stderr.write("Solution: \n".format(solution)) sys.stderr.flush() sys.stdout.write(solution) sys.stdout.flush() sys.stderr.write("\n") sys.stderr.flush() sys.exit(0) else: usage() sys.exit(1) if __name__ == "__main__": main() ``` file out.txt ``` 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000011111111 000000000000000000000000000000000000000000000000000000000000000022222222 000000000000000000000000000000000000000000000000000000000000000033333333 000000000000000000000000000000000000000000000000000000000000000044444444 000000000000000000000000000000000000000000000000000000000000000055555555 000000000000000000000000000000000000000000000000000000000000000066666666 000000000000000000000000000000000000000000000000000000000000000077777777 000000000000000000000000000000000000000000000000000000000000000088888888 000000000000000000000000000000000000000000000000000000000000000099999999 0000000000000000000000000000000000000000000000000000000000000000aaaaaaaa 0000000000000000000000000000000000000000000000000000000000000000bbbbbbbb 0000000000000000000000000000000000000000000000000000000000000000cccccccc 0000000000000000000000000000000000000000000000000000000000000000dddddddd 0000000000000000000000000000000000000000000000000000000000000000eeeeeeee 0000000000000000000000000000000000000000000000000000000000000000ffffffff 111111111111111111111111111111111111111111111111111111111111111100000000 111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111122222222 111111111111111111111111111111111111111111111111111111111111111133333333 111111111111111111111111111111111111111111111111111111111111111144444444 111111111111111111111111111111111111111111111111111111111111111155555555 111111111111111111111111111111111111111111111111111111111111111166666666 111111111111111111111111111111111111111111111111111111111111111177777777 111111111111111111111111111111111111111111111111111111111111111188888888 111111111111111111111111111111111111111111111111111111111111111199999999 1111111111111111111111111111111111111111111111111111111111111111aaaaaaaa 1111111111111111111111111111111111111111111111111111111111111111bbbbbbbb 1111111111111111111111111111111111111111111111111111111111111111cccccccc 1111111111111111111111111111111111111111111111111111111111111111dddddddd 1111111111111111111111111111111111111111111111111111111111111111eeeeeeee 1111111111111111111111111111111111111111111111111111111111111111ffffffff 222222222222222222222222222222222222222222222222222222222222222200000000 222222222222222222222222222222222222222222222222222222222222222211111111 222222222222222222222222222222222222222222222222222222222222222222222222 222222222222222222222222222222222222222222222222222222222222222233333333 222222222222222222222222222222222222222222222222222222222222222244444444 222222222222222222222222222222222222222222222222222222222222222255555555 222222222222222222222222222222222222222222222222222222222222222266666666 222222222222222222222222222222222222222222222222222222222222222277777777 222222222222222222222222222222222222222222222222222222222222222288888888 222222222222222222222222222222222222222222222222222222222222222299999999 2222222222222222222222222222222222222222222222222222222222222222aaaaaaaa 2222222222222222222222222222222222222222222222222222222222222222bbbbbbbb 2222222222222222222222222222222222222222222222222222222222222222cccccccc 2222222222222222222222222222222222222222222222222222222222222222dddddddd 2222222222222222222222222222222222222222222222222222222222222222eeeeeeee 2222222222222222222222222222222222222222222222222222222222222222ffffffff 333333333333333333333333333333333333333333333333333333333333333300000000 333333333333333333333333333333333333333333333333333333333333333311111111 333333333333333333333333333333333333333333333333333333333333333322222222 333333333333333333333333333333333333333333333333333333333333333333333333 333333333333333333333333333333333333333333333333333333333333333344444444 333333333333333333333333333333333333333333333333333333333333333355555555 333333333333333333333333333333333333333333333333333333333333333366666666 333333333333333333333333333333333333333333333333333333333333333377777777 333333333333333333333333333333333333333333333333333333333333333388888888 333333333333333333333333333333333333333333333333333333333333333399999999 3333333333333333333333333333333333333333333333333333333333333333aaaaaaaa 3333333333333333333333333333333333333333333333333333333333333333bbbbbbbb 3333333333333333333333333333333333333333333333333333333333333333cccccccc 3333333333333333333333333333333333333333333333333333333333333333dddddddd 3333333333333333333333333333333333333333333333333333333333333333eeeeeeee 3333333333333333333333333333333333333333333333333333333333333333ffffffff 444444444444444444444444444444444444444444444444444444444444444400000000 444444444444444444444444444444444444444444444444444444444444444411111111 444444444444444444444444444444444444444444444444444444444444444422222222 444444444444444444444444444444444444444444444444444444444444444433333333 444444444444444444444444444444444444444444444444444444444444444444444444 444444444444444444444444444444444444444444444444444444444444444455555555 444444444444444444444444444444444444444444444444444444444444444466666666 444444444444444444444444444444444444444444444444444444444444444477777777 444444444444444444444444444444444444444444444444444444444444444488888888 444444444444444444444444444444444444444444444444444444444444444499999999 4444444444444444444444444444444444444444444444444444444444444444aaaaaaaa 4444444444444444444444444444444444444444444444444444444444444444bbbbbbbb 4444444444444444444444444444444444444444444444444444444444444444cccccccc 4444444444444444444444444444444444444444444444444444444444444444dddddddd 4444444444444444444444444444444444444444444444444444444444444444eeeeeeee 4444444444444444444444444444444444444444444444444444444444444444ffffffff 555555555555555555555555555555555555555555555555555555555555555500000000 555555555555555555555555555555555555555555555555555555555555555511111111 555555555555555555555555555555555555555555555555555555555555555522222222 555555555555555555555555555555555555555555555555555555555555555533333333 555555555555555555555555555555555555555555555555555555555555555544444444 555555555555555555555555555555555555555555555555555555555555555555555555 555555555555555555555555555555555555555555555555555555555555555566666666 555555555555555555555555555555555555555555555555555555555555555577777777 555555555555555555555555555555555555555555555555555555555555555588888888 555555555555555555555555555555555555555555555555555555555555555599999999 5555555555555555555555555555555555555555555555555555555555555555aaaaaaaa 5555555555555555555555555555555555555555555555555555555555555555bbbbbbbb 5555555555555555555555555555555555555555555555555555555555555555cccccccc 5555555555555555555555555555555555555555555555555555555555555555dddddddd 5555555555555555555555555555555555555555555555555555555555555555eeeeeeee 5555555555555555555555555555555555555555555555555555555555555555ffffffff 666666666666666666666666666666666666666666666666666666666666666600000000 666666666666666666666666666666666666666666666666666666666666666611111111 666666666666666666666666666666666666666666666666666666666666666622222222 666666666666666666666666666666666666666666666666666666666666666633333333 666666666666666666666666666666666666666666666666666666666666666644444444 666666666666666666666666666666666666666666666666666666666666666655555555 666666666666666666666666666666666666666666666666666666666666666666666666 666666666666666666666666666666666666666666666666666666666666666677777777 666666666666666666666666666666666666666666666666666666666666666688888888 666666666666666666666666666666666666666666666666666666666666666699999999 6666666666666666666666666666666666666666666666666666666666666666aaaaaaaa 6666666666666666666666666666666666666666666666666666666666666666bbbbbbbb 6666666666666666666666666666666666666666666666666666666666666666cccccccc 6666666666666666666666666666666666666666666666666666666666666666dddddddd 6666666666666666666666666666666666666666666666666666666666666666eeeeeeee 6666666666666666666666666666666666666666666666666666666666666666ffffffff 777777777777777777777777777777777777777777777777777777777777777700000000 777777777777777777777777777777777777777777777777777777777777777711111111 777777777777777777777777777777777777777777777777777777777777777722222222 777777777777777777777777777777777777777777777777777777777777777733333333 777777777777777777777777777777777777777777777777777777777777777744444444 777777777777777777777777777777777777777777777777777777777777777755555555 777777777777777777777777777777777777777777777777777777777777777766666666 777777777777777777777777777777777777777777777777777777777777777777777777 777777777777777777777777777777777777777777777777777777777777777788888888 777777777777777777777777777777777777777777777777777777777777777799999999 7777777777777777777777777777777777777777777777777777777777777777aaaaaaaa 7777777777777777777777777777777777777777777777777777777777777777bbbbbbbb 7777777777777777777777777777777777777777777777777777777777777777cccccccc 7777777777777777777777777777777777777777777777777777777777777777dddddddd 7777777777777777777777777777777777777777777777777777777777777777eeeeeeee 7777777777777777777777777777777777777777777777777777777777777777ffffffff 888888888888888888888888888888888888888888888888888888888888888800000000 888888888888888888888888888888888888888888888888888888888888888811111111 888888888888888888888888888888888888888888888888888888888888888822222222 888888888888888888888888888888888888888888888888888888888888888833333333 888888888888888888888888888888888888888888888888888888888888888844444444 888888888888888888888888888888888888888888888888888888888888888855555555 888888888888888888888888888888888888888888888888888888888888888866666666 888888888888888888888888888888888888888888888888888888888888888877777777 888888888888888888888888888888888888888888888888888888888888888888888888 888888888888888888888888888888888888888888888888888888888888888899999999 8888888888888888888888888888888888888888888888888888888888888888aaaaaaaa 8888888888888888888888888888888888888888888888888888888888888888bbbbbbbb 8888888888888888888888888888888888888888888888888888888888888888cccccccc 8888888888888888888888888888888888888888888888888888888888888888dddddddd 8888888888888888888888888888888888888888888888888888888888888888eeeeeeee 8888888888888888888888888888888888888888888888888888888888888888ffffffff 999999999999999999999999999999999999999999999999999999999999999900000000 999999999999999999999999999999999999999999999999999999999999999911111111 999999999999999999999999999999999999999999999999999999999999999922222222 999999999999999999999999999999999999999999999999999999999999999933333333 999999999999999999999999999999999999999999999999999999999999999944444444 999999999999999999999999999999999999999999999999999999999999999955555555 999999999999999999999999999999999999999999999999999999999999999966666666 999999999999999999999999999999999999999999999999999999999999999977777777 999999999999999999999999999999999999999999999999999999999999999988888888 999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999aaaaaaaa 9999999999999999999999999999999999999999999999999999999999999999bbbbbbbb 9999999999999999999999999999999999999999999999999999999999999999cccccccc 9999999999999999999999999999999999999999999999999999999999999999dddddddd 9999999999999999999999999999999999999999999999999999999999999999eeeeeeee 9999999999999999999999999999999999999999999999999999999999999999ffffffff aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa11111111 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa22222222 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa33333333 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa44444444 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa55555555 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa66666666 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa77777777 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa88888888 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa99999999 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbb aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadddddddd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeee aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffffffff bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00000000 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb11111111 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb22222222 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb33333333 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb44444444 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb55555555 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb66666666 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb77777777 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb88888888 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb99999999 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccc bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddddddd bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeee bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbffffffff cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc00000000 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc11111111 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc22222222 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc33333333 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc44444444 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc55555555 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc66666666 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc77777777 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc88888888 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc99999999 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaa ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbb cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdddddddd cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccceeeeeeee ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccffffffff dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00000000 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd11111111 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd22222222 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd33333333 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd44444444 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd55555555 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd66666666 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd77777777 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd88888888 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd99999999 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddaaaaaaaa ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddbbbbbbbb ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcccccccc dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeee ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffffff eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee11111111 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee22222222 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee33333333 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee44444444 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee55555555 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee66666666 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee77777777 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee88888888 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee99999999 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaaaaaaa eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeebbbbbbbb eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeecccccccc eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedddddddd eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11111111 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22222222 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33333333 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44444444 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff55555555 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff66666666 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77777777 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88888888 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99999999 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaaaaaaaa ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbbbbbbbb ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcccccccc ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdddddddd ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeee ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ```