Skip to content

Instantly share code, notes, and snippets.

@streanger
Created March 22, 2020 17:20
Show Gist options
  • Save streanger/6e9dc99aa60ae2283964cdaa02c9be5b to your computer and use it in GitHub Desktop.
Save streanger/6e9dc99aa60ae2283964cdaa02c9be5b to your computer and use it in GitHub Desktop.
ascii_art_1_writeup
import sys
import nclib
def characters_map(s):
'''return value depend on specified character
important thins is escape characters at the end -> \\
'''
dictio = {
''' _
/ |
| |
| |
|_|''': '1',
''' ____
|___ \
__) |
/ __/
|_____|''': '2',
''' _____
|___ /
|_ \
___) |
|____/ ''': '3',
''' _ _
| || |
| || |_
|__ _|
|_| ''': '4',
''' ____
| ___|
|___ \
___) |
|____/ ''': '5',
''' __
/ /_
| '_ \
| (_) |
\___/ ''': '6',
''' _____
|___ |
/ /
/ /
/_/ ''': '7',
''' ___
( _ )
/ _ \
| (_) |
\___/ ''': '8',
''' ___
/ _ \
| (_) |
\__, |
/_/ ''': '9',
''' _
_| |_
|_ _|
|_| ''': '+',
''' _____
|_____|''': '-',
'''__/\__
\ /
/_ _\\
\/ ''': '*',
''' __
/ /
/ /
/ /
/_/ ''': '//',
}
if s in list(dictio.keys()):
return dictio[s]
return False
def join_columns(data, start, stop):
return '\n'.join([''.join(line) for line in list(zip(*data[start:stop]))])
def get_response(s):
'''s is string'''
lines_list = [line for line in s.splitlines() if line.strip()] # remove white lines
stripped = '\n'.join([line for line in lines_list if line.strip()])
line_length = len(stripped.splitlines()[0])
swapped = list(zip(*[list(line) for line in stripped.splitlines()]))
equation = ''
start_key = 0
for key, _ in enumerate(swapped):
character = join_columns(swapped, start_key, key+1)
character = '\n'.join([line for line in character.splitlines() if line.strip()])
value = characters_map(character)
if value:
equation += value
start_key = key+1
out = str(eval(equation))
return out, equation
if __name__ == "__main__":
test_cmd = 'nc 3.91.74.70 1338'
nc = nclib.Netcat(('3.91.74.70', 1338), udp=False)
wait_newline = False
first_stuff = True
while True:
full_lines = b''
while True:
try:
line = nc.recvline()
except nclib.errors.NetcatError:
print('Connection dropped!')
print('\nFLAG:\n\t{}'.format(full_lines.decode('utf-8')))
sys.exit()
full_lines += line
if b'\r\n' in line:
wait_newline = True
if wait_newline and not b'\r\n' in line:
wait_newline = False
break
lines_list = [line.decode('utf-8') for line in full_lines.splitlines()]
if first_stuff:
lines_list = lines_list[3:]
first_stuff = False
else:
lines_list = [line[1:] if not key else line for key, line in enumerate(lines_list)]
s = '\n'.join(lines_list)
print(s)
response, equation = get_response(s)
print('equation: {} => {}'.format(equation, response))
response_bytes = '{}'.format(response).encode('utf-8')
nc.sendline(response_bytes)
FLAG_BYTES = b'>securinets{th1s_w4s_g00d_r1ght??}\n'
_ ____
/ |__/\__| ___|
| |\ /|___ \
| |/_ _\ ___) |
|_| \/ |____/
equation: 1*5 => 5
_____ ____
|___ | _ |___ \
/ / _| |_ __) |
/ / |_ _| / __/
/_/ |_| |_____|
equation: 7+2 => 9
____ ___
|___ \ __/\__ / _ \
__) |\ /| (_) |
/ __/ /_ _\ \__, |
|_____| \/ /_/
equation: 2*9 => 18
___ __ _____
( _ ) / /|___ /
/ _ \ / / |_ \
| (_) | / / ___) |
\___/ /_/ |____/
equation: 8//3 => 2
_____ ___
|___ |__/\__ ( _ )
/ / \ / / _ \
/ / /_ _\| (_) |
/_/ \/ \___/
equation: 7*8 => 56
_____ __
|___ | / /_
/ / _____ | '_ \
/ / |_____|| (_) |
/_/ \___/
equation: 7-6 => 1
___ _ _
/ _ \ __/\__| || |
| (_) |\ /| || |_
\__, |/_ _\|__ _|
/_/ \/ |_|
equation: 9*4 => 36
_ __
/ | _ / /_
| | _| |_ | '_ \
| ||_ _|| (_) |
|_| |_| \___/
equation: 1+6 => 7
____ __
| ___| _ / /_
|___ \ _| |_ | '_ \
___) ||_ _|| (_) |
|____/ |_| \___/
equation: 5+6 => 11
____ _____
|___ \ _ |___ /
__) | _| |_ |_ \
/ __/ |_ _| ___) |
|_____| |_| |____/
equation: 2+3 => 5
__ ____
/ /_ _ | ___|
| '_ \ _| |_ |___ \
| (_) ||_ _| ___) |
\___/ |_| |____/
equation: 6+5 => 11
____ _ _
|___ \ | || |
__) | _____ | || |_
/ __/ |_____||__ _|
|_____| |_|
equation: 2-4 => -2
__ _ _
/ /_ __/\__| || |
| '_ \ \ /| || |_
| (_) |/_ _\|__ _|
\___/ \/ |_|
equation: 6*4 => 24
__ _ _
/ /_ _ | || |
| '_ \ _| |_ | || |_
| (_) ||_ _||__ _|
\___/ |_| |_|
equation: 6+4 => 10
____ ___
| ___| __/\__ ( _ )
|___ \ \ / / _ \
___) |/_ _\| (_) |
|____/ \/ \___/
equation: 5*8 => 40
__ _____
/ /_ _ |___ |
| '_ \ _| |_ / /
| (_) ||_ _| / /
\___/ |_| /_/
equation: 6+7 => 13
_____ _____
|___ | |___ /
/ / _____ |_ \
/ / |_____| ___) |
/_/ |____/
equation: 7-3 => 4
____ ____
|___ \ |___ \
__) | _____ __) |
/ __/ |_____| / __/
|_____| |_____|
equation: 2-2 => 0
_ __ _____
/ | / /|___ /
| | / / |_ \
| | / / ___) |
|_|/_/ |____/
equation: 1//3 => 0
__ _____
/ /_ |___ |
| '_ \ _____ / /
| (_) ||_____| / /
\___/ /_/
equation: 6-7 => -1
___ ___
( _ ) ( _ )
/ _ \ _____ / _ \
| (_) ||_____|| (_) |
\___/ \___/
equation: 8-8 => 0
_ __ ___
/ | / / / _ \
| | / / | (_) |
| | / / \__, |
|_|/_/ /_/
equation: 1//9 => 0
____ ___
|___ \ / _ \
__) | _____ | (_) |
/ __/ |_____| \__, |
|_____| /_/
equation: 2-9 => -7
_ ___
/ | _ ( _ )
| | _| |_ / _ \
| ||_ _|| (_) |
|_| |_| \___/
equation: 1+8 => 9
____ _
| ___| _ / |
|___ \ _| |_ | |
___) ||_ _|| |
|____/ |_| |_|
equation: 5+1 => 6
_ _ ___
| || | _ ( _ )
| || |_ _| |_ / _ \
|__ _||_ _|| (_) |
|_| |_| \___/
equation: 4+8 => 12
____ ____
| ___| __/\__| ___|
|___ \ \ /|___ \
___) |/_ _\ ___) |
|____/ \/ |____/
equation: 5*5 => 25
____ ___
| ___| _ ( _ )
|___ \ _| |_ / _ \
___) ||_ _|| (_) |
|____/ |_| \___/
equation: 5+8 => 13
____ ___
| ___| _ ( _ )
|___ \ _| |_ / _ \
___) ||_ _|| (_) |
|____/ |_| \___/
equation: 5+8 => 13
_ _ ___
| || | __/\__ / _ \
| || |_ \ /| (_) |
|__ _|/_ _\ \__, |
|_| \/ /_/
equation: 4*9 => 36
_ _ _
/ | | || |
| | _____ | || |_
| ||_____||__ _|
|_| |_|
equation: 1-4 => -3
_ ____
/ | |___ \
| | _____ __) |
| ||_____| / __/
|_| |_____|
equation: 1-2 => -1
_____ ___
|___ / ( _ )
|_ \ _____ / _ \
___) ||_____|| (_) |
|____/ \___/
equation: 3-8 => -5
_____ _____
|___ / __/\__|___ /
|_ \ \ / |_ \
___) |/_ _\ ___) |
|____/ \/ |____/
equation: 3*3 => 9
___ _____
/ _ \ _ |___ /
| (_) | _| |_ |_ \
\__, ||_ _| ___) |
/_/ |_| |____/
equation: 9+3 => 12
____ ___
|___ \ __/\__ ( _ )
__) |\ / / _ \
/ __/ /_ _\| (_) |
|_____| \/ \___/
equation: 2*8 => 16
____ ____
|___ \ |___ \
__) | _____ __) |
/ __/ |_____| / __/
|_____| |_____|
equation: 2-2 => 0
__ ___
/ /_ _ ( _ )
| '_ \ _| |_ / _ \
| (_) ||_ _|| (_) |
\___/ |_| \___/
equation: 6+8 => 14
_ ___
/ | ( _ )
| | _____ / _ \
| ||_____|| (_) |
|_| \___/
equation: 1-8 => -7
____ __ _
|___ \ / // |
__) | / / | |
/ __/ / / | |
|_____|/_/ |_|
equation: 2//1 => 2
____ ___
|___ \ / _ \
__) | _____ | (_) |
/ __/ |_____| \__, |
|_____| /_/
equation: 2-9 => -7
_ ___
/ |__/\__ / _ \
| |\ /| (_) |
| |/_ _\ \__, |
|_| \/ /_/
equation: 1*9 => 9
_____ __
|___ / __/\__ / /_
|_ \ \ /| '_ \
___) |/_ _\| (_) |
|____/ \/ \___/
equation: 3*6 => 18
___ _____
( _ ) __/\__|___ |
/ _ \ \ / / /
| (_) |/_ _\ / /
\___/ \/ /_/
equation: 8*7 => 56
__ __
/ /_ / /_
| '_ \ _____ | '_ \
| (_) ||_____|| (_) |
\___/ \___/
equation: 6-6 => 0
____ _____
|___ \ _ |___ /
__) | _| |_ |_ \
/ __/ |_ _| ___) |
|_____| |_| |____/
equation: 2+3 => 5
_ _ __ _
| || | / // |
| || |_ / / | |
|__ _| / / | |
|_| /_/ |_|
equation: 4//1 => 4
_ __ _____
/ | / /|___ |
| | / / / /
| | / / / /
|_|/_/ /_/
equation: 1//7 => 0
___ ___
/ _ \ ( _ )
| (_) | _____ / _ \
\__, ||_____|| (_) |
/_/ \___/
equation: 9-8 => 1
_____ __ __
|___ / / / / /_
|_ \ / / | '_ \
___) | / / | (_) |
|____/ /_/ \___/
equation: 3//6 => 0
____ ___
|___ \ _ ( _ )
__) | _| |_ / _ \
/ __/ |_ _|| (_) |
|_____| |_| \___/
equation: 2+8 => 10
_ _____
/ |__/\__|___ /
| |\ / |_ \
| |/_ _\ ___) |
|_| \/ |____/
equation: 1*3 => 3
___ ___
/ _ \ __/\__ / _ \
| (_) |\ /| (_) |
\__, |/_ _\ \__, |
/_/ \/ /_/
equation: 9*9 => 81
__ _____
/ /_ _ |___ /
| '_ \ _| |_ |_ \
| (_) ||_ _| ___) |
\___/ |_| |____/
equation: 6+3 => 9
_ _ ___
| || | __/\__ ( _ )
| || |_ \ / / _ \
|__ _|/_ _\| (_) |
|_| \/ \___/
equation: 4*8 => 32
__ _____
/ /_ __/\__|___ |
| '_ \ \ / / /
| (_) |/_ _\ / /
\___/ \/ /_/
equation: 6*7 => 42
_ _ ___
| || | __/\__ / _ \
| || |_ \ /| (_) |
|__ _|/_ _\ \__, |
|_| \/ /_/
equation: 4*9 => 36
_____ ___
|___ | _ ( _ )
/ / _| |_ / _ \
/ / |_ _|| (_) |
/_/ |_| \___/
equation: 7+8 => 15
_____ _
|___ / / |
|_ \ _____ | |
___) ||_____|| |
|____/ |_|
equation: 3-1 => 2
____ ___
|___ \ __/\__ ( _ )
__) |\ / / _ \
/ __/ /_ _\| (_) |
|_____| \/ \___/
equation: 2*8 => 16
___ ____
( _ ) _ | ___|
/ _ \ _| |_ |___ \
| (_) ||_ _| ___) |
\___/ |_| |____/
equation: 8+5 => 13
____ ____
| ___| _ | ___|
|___ \ _| |_ |___ \
___) ||_ _| ___) |
|____/ |_| |____/
equation: 5+5 => 10
____ __ ____
|___ \ / /| ___|
__) | / / |___ \
/ __/ / / ___) |
|_____|/_/ |____/
equation: 2//5 => 0
___ ___
/ _ \ __/\__ / _ \
| (_) |\ /| (_) |
\__, |/_ _\ \__, |
/_/ \/ /_/
equation: 9*9 => 81
____ _____
|___ \ |___ /
__) | _____ |_ \
/ __/ |_____| ___) |
|_____| |____/
equation: 2-3 => -1
__ _ _
/ /_ _ | || |
| '_ \ _| |_ | || |_
| (_) ||_ _||__ _|
\___/ |_| |_|
equation: 6+4 => 10
_ ___
/ | _ ( _ )
| | _| |_ / _ \
| ||_ _|| (_) |
|_| |_| \___/
equation: 1+8 => 9
___ __ ____
/ _ \ / /| ___|
| (_) | / / |___ \
\__, | / / ___) |
/_/ /_/ |____/
equation: 9//5 => 1
___ _____
( _ ) |___ |
/ _ \ _____ / /
| (_) ||_____| / /
\___/ /_/
equation: 8-7 => 1
__ ___
/ /_ _ / _ \
| '_ \ _| |_ | (_) |
| (_) ||_ _| \__, |
\___/ |_| /_/
equation: 6+9 => 15
____ __ ___
|___ \ / / ( _ )
__) | / / / _ \
/ __/ / / | (_) |
|_____|/_/ \___/
equation: 2//8 => 0
_____ __ ____
|___ | / /| ___|
/ / / / |___ \
/ / / / ___) |
/_/ /_/ |____/
equation: 7//5 => 1
___ ___
/ _ \ _ / _ \
| (_) | _| |_ | (_) |
\__, ||_ _| \__, |
/_/ |_| /_/
equation: 9+9 => 18
___ ____
( _ ) | ___|
/ _ \ _____ |___ \
| (_) ||_____| ___) |
\___/ |____/
equation: 8-5 => 3
_____ __ _____
|___ / / /|___ |
|_ \ / / / /
___) | / / / /
|____/ /_/ /_/
equation: 3//7 => 0
__ _ _
/ /_ _ | || |
| '_ \ _| |_ | || |_
| (_) ||_ _||__ _|
\___/ |_| |_|
equation: 6+4 => 10
___ __ ____
/ _ \ / /|___ \
| (_) | / / __) |
\__, | / / / __/
/_/ /_/ |_____|
equation: 9//2 => 4
____ __ ____
| ___| / /|___ \
|___ \ / / __) |
___) | / / / __/
|____/ /_/ |_____|
equation: 5//2 => 2
___ _ _
( _ ) __/\__| || |
/ _ \ \ /| || |_
| (_) |/_ _\|__ _|
\___/ \/ |_|
equation: 8*4 => 32
_ _ ____
| || | __/\__|___ \
| || |_ \ / __) |
|__ _|/_ _\ / __/
|_| \/ |_____|
equation: 4*2 => 8
_____ ____
|___ / |___ \
|_ \ _____ __) |
___) ||_____| / __/
|____/ |_____|
equation: 3-2 => 1
____ _ _
| ___| _ | || |
|___ \ _| |_ | || |_
___) ||_ _||__ _|
|____/ |_| |_|
equation: 5+4 => 9
_____ __
|___ | _ / /_
/ / _| |_ | '_ \
/ / |_ _|| (_) |
/_/ |_| \___/
equation: 7+6 => 13
_____ ___
|___ / ( _ )
|_ \ _____ / _ \
___) ||_____|| (_) |
|____/ \___/
equation: 3-8 => -5
___ __ _
( _ ) / // |
/ _ \ / / | |
| (_) | / / | |
\___/ /_/ |_|
equation: 8//1 => 8
_ __ _____
/ | / /|___ /
| | / / |_ \
| | / / ___) |
|_|/_/ |____/
equation: 1//3 => 0
__ ____
/ /_ |___ \
| '_ \ _____ __) |
| (_) ||_____| / __/
\___/ |_____|
equation: 6-2 => 4
_____ _
|___ |__/\__/ |
/ / \ /| |
/ / /_ _\| |
/_/ \/ |_|
equation: 7*1 => 7
____ _ _
|___ \ | || |
__) | _____ | || |_
/ __/ |_____||__ _|
|_____| |_|
equation: 2-4 => -2
_____ __ ____
|___ | / /|___ \
/ / / / __) |
/ / / / / __/
/_/ /_/ |_____|
equation: 7//2 => 3
____ __ _____
|___ \ / /|___ |
__) | / / / /
/ __/ / / / /
|_____|/_/ /_/
equation: 2//7 => 0
_____ ____
|___ | |___ \
/ / _____ __) |
/ / |_____| / __/
/_/ |_____|
equation: 7-2 => 5
_ __ _
/ | / // |
| | / / | |
| | / / | |
|_|/_/ |_|
equation: 1//1 => 1
____ ____
| ___| | ___|
|___ \ _____ |___ \
___) ||_____| ___) |
|____/ |____/
equation: 5-5 => 0
__ _ _
/ /_ | || |
| '_ \ _____ | || |_
| (_) ||_____||__ _|
\___/ |_|
equation: 6-4 => 2
_ _ __ __
| || | / / / /_
| || |_ / / | '_ \
|__ _| / / | (_) |
|_| /_/ \___/
equation: 4//6 => 0
__ _____
/ /_ _ |___ /
| '_ \ _| |_ |_ \
| (_) ||_ _| ___) |
\___/ |_| |____/
equation: 6+3 => 9
_____ __
|___ | / /_
/ / _____ | '_ \
/ / |_____|| (_) |
/_/ \___/
equation: 7-6 => 1
_____ ____
|___ | |___ \
/ / _____ __) |
/ / |_____| / __/
/_/ |_____|
equation: 7-2 => 5
___ __ ___
( _ ) / / / _ \
/ _ \ / / | (_) |
| (_) | / / \__, |
\___/ /_/ /_/
equation: 8//9 => 0
Connection dropped!
FLAG:
>securinets{th1s_w4s_g00d_r1ght??}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment