{%hackmd @abc90/temp3 %}
# PatriotCTF 2023
# Crypto
## Multi-Numeral
Challenge given a binary string
```
0011010100110011001000000011010100110011001000000011001100110010001000000011010100110010001000000011010100110011001000000011001100110010001000000011010100110010001000000011011000111001001000000011001100110010001000000011010100110011001000000011010100110011001000000011001100110010001000000011010100110011001000000011010100110000001000000011001100110010001000000011010100110100001000000011011000111001001000000011001100110010001000000011010100110101001000000011010100110010001000000011001100110010001000000011010100110001001000000011010100110001001000000011001100110010001000000011010100110010001000000011011000111000001000000011001100110010001000000011010100110010001000000011010100110110001000000011001100110010001000000011010100110100001000000011010100110010001000000011001100110010001000000011010100110100001000000011010100110100001000000011001100110010001000000011010100110100001000000011010100110001001000000011001100110010001000000011010100110101001000000011011000110101001000000011001100110010001000000011010100110010001000000011010100110000001000000011001100110010001000000011010100110100001000000011010100110100001000000011001100110010001000000011010100110100001000000011010100110000001000000011001100110010001000000011010100110011001000000011010100110010001000000011001100110010001000000011010100110011001000000011010100110000001000000011001100110010001000000011010100110101001000000011010100110011001000000011001100110010001000000011010100110100001000000011010100110011001000000011001100110010001000000011010100110011001000000011010100110100001000000011001100110010001000000011010100110001001000000011010100110111001000000011001100110010001000000011010100110101001000000011010100110011001000000011001100110010001000000011010100110100001000000011010100110010001000000011001100110010001000000011010100110011001000000011010100110101001000000011001100110010001000000011010100110001001000000011010000111001001000000011001100110010001000000011010100110100001000000011010100110111001000000011001100110010001000000011010100110011001000000011011000110101001000000011001100110010001000000011010100110011001000000011010100110110001000000011001100110010001000000011010100110010001000000011010100110111001000000011001100110010001000000011010100110001001000000011010000111001001000000011001100110010001000000011010100110100001000000011010100110100001000000011001100110010001000000011010100110011001000000011010000111001001000000011001100110010001000000011010100110001001000000011011000111000001000000011001100110010001000000011010100110001001000000011011000111000
```
solve by CyberChef

Flag: `PCTF{w0w_s0_m4ny_number5}`
## My phone
Description
Some weird triangle man stole my phone, he taunted me by sending me his location but it seems to be encrypted with some odd cipher I've never seen before, could you please help me get my phone back?
Flag format: PCTF{city name} (all lowercase)
cipher.png

Solve by dcode [link](https://www.dcode.fr/gravity-falls-bill-crypto
Convert the image to words using Gravity falls bill cipher, you will recieve a coordinate list written. Convert the words to numbers (ex one -> 1). Paste the numbers into a longitude & lattitude coordinate locator.
Flag : `PCTF{Duluth}`
## ReReCaptcha
Boy these captcha's are getting out of hand! First it was some numbers and letters, then they wanted me to find all the crosswalks and stoplights, now, I just got these 4 images in a zip file as the captcha.
P.png

Q.png

E = 65537
CT.png

This is basic RSA ,Just give the numbers through the pictures
I use GG len to scan the numbers
```python=
from Crypto.Util.number import bytes_to_long, long_to_bytes, getPrime
p = 752756528841875537911878995753042707647403949554360208367234877025624409540203682761921093915508418655852799100141664622335039455920022213609629067262019404612608900257336038659394515010131767517305770031660647162848609109822750643234640501869740955176655922145570708435217100522986867976006579678556886154064634200401859738311135275046545253349948244695029660140086807289271141101862789519751792359117649145998563961368942821022739792392716620716795592972055314693267400368927621775645833555066476806996288903284102193917193424100068717536343788993196099054983601286805432602788326469869468644448618558376266945936822260704639989072737441301312016573245856870596451013862168846041144962976913828840204703903519058925554216678932337578982416183815574423593903203140061821312979288304894805529113548445359754020916457961543405670043499378618149742163277100368075376976838192481235095913624354114215289486427358337371249645934091262158698478769080944913191018283682299227448548572620178211758775226399248736351823883253425428859608839822967748417750750768678997191631591453855893210333524224040810300416007274952248435723849035137713609019261006737832050925751968653488941495762445378969236893490220931960617082372175080757226428538037
q = 880398969251452887308660917504486182562846904076287121291763168719274136746566491678268037510905591990771798869782714420383346558397372393848950944120645649208321456758294667377506618947318155191556866564510660193561519685221217401809653517643739084470712009338319620153911750948178187377988580670621276663435429513039194166524665848331078509242778461325908028625612645176647057551931509423846025480365963513278356214803825583621656344773968156935822116713294271209716208332966958714033498575400100929432657699444697408341784580190674105709745459315906374144815643729066799108493717417753626735266610965158888422349537481792575479701428877195230383568296602594553805793662138189357884360599766137250987445388558207947305949875916134750004434379767332412127692481777269654899411040863041093873128187130822708039864773659377990453077182559620579273207601721543020232868137483373438109337018806333516965007507716183075768926336370269493707028653198744031420944067462865900096247705191920717575149703524335706216759290920064723973507925674189242744371890566278426602689696896442712046610306732798031648865549772061987449249681612534599958604135136995325790860158962960039727556175624948552406762985831640742320290062631120287472335619521
ct = 54759004599647026122514406856463259157378742086576765421244403681057296667830958496097262677746909468103297432816490414974960025967213693421040371093540798741957150802518404127189506742415632446902481096660685226143139168835776151244118812818745848450316412121438483636074283621696771442062588211105702224797096594284830392179478934633773789319724361281826846525046587704425880624392223072702388140497093800595319096777828899843167601670276914798992771993918276031148033426480942116222001562109013541640188092750398752212726596965440829166079035212641935716410853385684323732317195302607653110572864832832492308614332695688026288520379691225852762946806737257238301231217698751952484355171918946864695694585061331718299798994297433154149373824622985169040067985382226600836882257453757742535197828643434202698460569184108581507634281208686802314678004371660462919488865692183302431661256061955513742244618890434230273318857591946851400449861980175942498279589784406195234672687906617881785093459544645790910945383784867571124154943079571223415398926441026293968354045886500561571326810144583303737574480859608505324180488889170197186871175999271657954999333530291298833058735090465076060239548834720762411779404098209293580868238466921597526031645695700528053632374874845185932714808431370633811502523716823233253451786716629551331404364972256882272398057080620635036019083703322493946834189252061534859326525293003316374735791004880070727032995927925012517689373392639682427582718014579410960338409525830939648282656446532813746549464546747380511872293584924550440836335584666857767951458610836477980076516864059214230403983895530230891408789302306325203234906970983917665145158863889393533463367162504710902317594257056239723173936694745323601923224395095916354161650048792002668682709118545891847039556531344563788200718268073364636546696496449249304700845489683618878058637196637029487619802085884870782067462172988768589896393636504395939721367767239915021596943439462134035647695619496772122726337729191387011155654027977443603283338951893855590636103517011604511158111104893275895159828829025697557539673460337393857004875529156640158439781534266181143797969599285806376638562160457655232891670383782099559129401371578394437360288146260479509996113420815925580470892601019143611638145200265373771650504910779904325868578063492818604204326923531004660704531023499416374365214282656114536666455627295115405857300937775736555543797882713184445755824314743287083
e = 65537
d = pow(e, -1, (p-1)*(q-1))
m = long_to_bytes(pow(ct, d, p*q))
print(m)
```
Flag: `PCTF{I_H0P3_U_U53D_0CR!}`
## Secret Wall Code
Description
We found this werid symbol language in a secret backroom wall. We have scanned the symbols and need your help figuring what it means. We were able to figure out one symbol.
Challenge given 2 images cipher.png and E.png
cipher.png

E.png


Manual Solving: Steps to get the Key if cannot find on the internet Step One: Break Alphabet into 6 Groups with Z on its own A B C D E | F H G I J | K L M N O | P Q R S T | U V W X Y | Z
Step Two: Every other Row Reverse E D C B A | F G H I J | O N M L K | P Q R S T | Y X W V U | Z
Step Three: Reverse The Entire time Z | U V W X Y | T S R Q P | K L M N O | J I H G F | A B C D E |
Step Four: Start at end, Alternate Back, Loop E C A G I | O M K Q S | Y W U D B | F H J N L | P R T X V | Z
KEY

Create a variation of the pigpen cipher using hexagon From the links above should be able to see the pattern. Then it becomes a substitution cipher
Flag: `pctf{fnaf_is_pretty_insane} not case sensitive`
## Breakfast Club
Challenge given some hashs
```
SHA 511993d3c99719e38a6779073019dacd7178ddb9
SHA1 32096c2e0eff33d844ee6d675407ace18289357d
MD2 ae8033c09e7cf93b230414cd919da992
MD4 189bb272d916eea5b99b2a572ad93e9a
MD5 f95b70fdc3088560732a5ac135644506
SHA224 7e27c59a202f5e2b2b3b5458300140ef7aa7edc3a97a605b788546a1
SHA256 c3641f8544d7c02f3580b07c0f9887f0c6a27ff5ab1d4a3e29caf197cfc299ae
SHA384 1861ebe932dc65c5f04d33f6972b13acc8b1e572344016bf3cc950f60bfad6fdc0e32f0318e8bba57cf756eac0a49fce
SHA512 9032fb94055d4d14e42185bdff59642b98fe6073f68f29d394620c4e698a86fb2e51351ca6997e6a164aae0b871cf789fbc6e0d863733d05903b4eb11be58d9c
SHA3_224 d22e03747b83667e3e84c78e9fb49f7c9376334b9cb337addbdf3ff9
SHA3_256 d14a329a1924592faf2d4ba6dc727d59af6afae983a0c208bf980237b63a5a6a
SHA3_384 3bd4e7dcad9d3c02adfa7aa5388727d346278a9a7b007f497b48a4fa2a12b9545c820df150854a8f8c494275bd6fd941
SHA3_512 2d44da53f305ab94b6365837b9803627ab098c41a6013694f9b468bccb9c13e95b3900365eb58924de7158a54467e984efcfdabdbcc9af9a940d49c51455b04c
TupleHash128 aed477850ed48df54054e9d3e7b8cae7e1764d949adb68fe4f24802ec464cb6c334ef97cc0453471fac5faf0118265bc9388062ccb704d5ac4010489bee201da
TupleHash256 a130e4df9144790d9c8824f90f4c1220a3eb5aa0cb296ab1f4f41f23f3ed0800f2ac3fad4f235a4ee601a8ca8bf0be394e06e53e2f789a6272f1bc54c4901d0c
BLAKE2s 5abf6b1a79dee98ea32a98195c61a667c29a3674e79c82e43f0d19b0efa4b6f7
BLAKE2b 7ae26253cfd42a3a090c44023c234ec63d0ffe63f8ad40b7913f3f646503b7a7cb8ac571d42a311ef71508344de72f30b57e5c100b402130060ebc947e07a59b
```
Each is only a single letter,so we can brute force
```python=
from Crypto.Hash import SHA, SHA1, MD2, MD4, MD5, SHA224, SHA256, SHA384, SHA512, SHA3_224, SHA3_256, SHA3_384, SHA3_512, TupleHash128, TupleHash256, BLAKE2s, BLAKE2b
algos = [SHA, SHA1, MD2, MD4, MD5, SHA224, SHA256, SHA384, SHA512, SHA3_224, SHA3_256, SHA3_384, SHA3_512, TupleHash128, TupleHash256, BLAKE2s, BLAKE2b]
import string
with open("BreakfastPasswords.txt", "r") as f:
hashes = f.readlines()
flag = ""
for i in range(len(hashes)):
algo, hash = hashes[i].split(" ")
algo = algos[i]
for char in string.printable:
test_hash = algo.new()
test_hash.update(char.encode())
if test_hash.hexdigest() in hash:
flag += char
print(flag)
```
Flag: `PCTF{H@5H_8R0WNS}`
## MasonCompetitiveCyber
Challenge given file txt
```
MMMMMaaaaaaassssoooooonnnnnCCCCCCC
MMMMaaaaaaassssssoooonnCCCCCCCCCCCCCCC
MMMMMMaaaaaaasoooonnnnnCCCCCCCC
MMMMMMaaaaaasssooonnnnCCCCCCCCC
MMMMMMMMMMaaaasoonnnCCCCCCCCCCCC
MMMMaaaaaaaaaasssooonnnnnnnnnnCCCCCCCC
MMMMMaaaaaaaaaasooooooonCCCCCCCCCCCCCCCCC
MMMMMaaaaaaaaasooooonnnnCCCCCCCCCCCC
MMMMaaaasssooooooonnnnnnCCCCCCCCCCCCC
MMMMasssooooooonnnnnnnnnCCCCCCCCCCCCCCCC
MaaaaaaassssoooonnnnnnnnCCCCCCCCCCCCCCCC
MMMMMMaaaaaassssssssssoooooonnnnCCCCCCCCCCCC
MMaaaaaaaaassoonnnnnnnnCCC
MMMMaaaaasssssssooooonnnnCCCCCCCCCCC
MMMMMMaaaaaaaaaassssssssooooooonnnnnnCCCCCCC
MMMMaasssssssssooonnnnnnnnnCCCCCCCCCCCCCCCCC
MaasssooonCCCCCCCCCCCCCCCC
MMaaasssoooonnnnnCCCCCCCCCCCCCCCCCCCC
MMMaaaaaaaasoooooooooonnnnnnnCCCCCCCCCCCCCCCCCC
MMMMMMaassssssssoonnnnnnnnnnCCCCCCCCCCCCCC
MMMMMMMaaaassssssssssonnCCCCCCCCCCCCCC
MaaaaaaasssssooonnnnnnnCCCCCCCCCCC
MMMMMaaaasssssoonnnnCCCCCCCC
MMMMMMMMMMaaaaaaasssoonnnCCCCCCCCCCC
MMMMMMMMMaasssssssssooonnnnnnnnnnCCCCCCCCCCCCC
MMMaaassssooooooonnnnCCCCCCCCCC
MMMMMMMaaaaaassssssssssooonnnnCCCCCCC
MMMMMMMMaaaassssssooooonnnnnCCCCC
MMMaaasooooooonnnnnnnnnCCCCCCC
MMMMMMaaaaaassssoooonnnnnnnnCCCCCCCCCCCCC
MaaaaaaaaaasssssoonnnnCCCC
MMMMMMMMMaaaaaaaasoooooooonnnnnnnCCCCCC
MMaaasssoonnnnnnnnnnCCCCCCC
MMMMMMMaaaaaasoooooooooonnnnnnnnnnCCCCCCCC
MMMMMMaaaassoooooooonnnnnnCCCCCCC
MMMMaaaaaaaaaasssssssssoooooooooonnnnCCCCC
MMMMMMaaaaaassssonnnnnnnnnCCCCCCCCCCCCC
MMMMMMaaassooooonCCCCCCC
```
Solve by CyberChef

```python=
from random import random
string = 'MasonCC'
zero = '\u200C'
one = '\u200D'
space = '\uFEFF'
count=0
flag = '01010000 01000011 01010100 01000110 01111011 01001101 01000000 01110011 00100100 00110000 01001110 01011111 01000011 01001111 01101101 01010000 00110011 01110100 00110001 01110100 00110001 01010110 01000101 01011111 01000011 01011001 01000010 00110011 01110010 00100001 01111101'
for i in range(38):
for j in string:
#print(int(random()*10)+1)
print(j*(int(random()*10)+1), end='')
if(random()*10>5.2):
for i in range(2):
if count < len(flag):
if(flag[count] == '0'):
print(zero, end='')
count+=1
elif(flag[count] == '1'):
print(one, end='')
count+=1
else:
print(space, end='')
count+=1
print()
print()
print(count)
print(len(flag))
```
Flag : `PCTF{M@s$0N_COmP3t1t1VE_CYB3r!}`
## MasonCompetitiveCyber2
Challenge given file
```
MMaaaaassssooonCCCC
MaaaaaaaaaasonCCCCCCCCCCCCC
MMMasssoooonnCCCCCCCCCCCC
MMMaaaasoonnCCCCCCCCCCCCC
MMMMMMMMaaaassoooooooonCCCCCCCCCCCCCCCC
MMMMaaaaaaaaasonCCCCCCCCCCC
MaassonCCCCCCCCCC
MMMMaaaaaaasoooonnnnnnCCCCCCC
MMMaaasonCCCCCCCC
MasonCCCCCC
MMaaaaaaaassooooooonCCCCCCCCCC
MMMMasooonCCCCCCCCCCCCCCCCC
MaassonCCCCCCCCCC
MMaaaaaassooooooonnnCCCCCCCCCCCCCCCC
MMMMMMMaassssssonCCCCCCCCCCCC
MaaaaaaassoooonCCCC
MaassssoonnnCCCCCCCCCCCC
MaaaaaasonCCCCCCC
MMMaaassoooooooonnnnCCCCCCCCCCCCCCCC
MMasooooooooonCCCCCCCCC
MMMaaaassssssooooooonCCCCCCCC
MMMaaaaassooooooonnCCCCCCCCCCCCC
MaaassoooooonnnnnCCCCCC
MMMMaaaasooonCCCCCCCC
MMaaaaaaasssssssonnnCCCCCCCCC
MMaaaaaasooonCCCCCCCCCCC
MaaassoonCCCCCC
MMMaaaaaaaaaasoonnCCCCCCC
MMaaaaasssooooooonCCCCCCCCCCC
MMMaaasoonCCCCCCCCCCCCCCCCC
MMMassssoooooooonCCCCCC
MMMaassoonnnCCCCCCCCCCC
MMaaaaaasonCCCCC
MasonCCCCCCCCC
MaaasonCCC
MMMMMMMasssssooooonCCCCCC
MMMMMMaaaaaaassonnnnnCCCC
MaaaaaaaassoooooooooonnnnCCCCCCCCCCCC
```
Solve by CyberChef

```python=
f = open('MasonCompetitiveCyber2.txt', 'rb')
f = f.readlines()
values = {'M':5, 'a':3, 's':8, 'o':4, 'n':7, 'C':1}
keys = "".join(list(values.keys()))
flag = ''
for row in f:
line = str(row)[2:-1]
temp = ''
i=0
while i < len(line):
if line[i] in keys:
temp += line[i]
i+=1
else:
i+=4
num=0
for char in temp:
num += values[char]
flag += chr(num)
print(flag)
```
Flag: `PCTF{M0r3!_C0mpET1tIve_CyB3R_@_M4$$on}`