# misc - Beginners CTF Online 2021
## fly
神奈川県警の魔の手から逃れるために削除。
## Mail address validator
### 解法
配布ファイルを見ると自明にReDOS。ただし正規表現は以下で固定。
```
/\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
```
こんなんで終わり。
```
a@AAAAAAAAAA.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
```
### 意見・感想
- Beginner難易度で良さそう
## depixelization
### 解法
何の処理かは知らんけど総当りで良さそう。
```python=
import cv2
import numpy as np
import string
target = cv2.imread("./output.png")
flag = ""
offset = 0
while offset < target.shape[1]:
for c in string.printable[:-6]:
img = np.full((100, 85, 3), (255,255,255), dtype=np.uint8)
cv2.putText(img, c, (0, 80), cv2.FONT_HERSHEY_PLAIN, 8, (0, 0, 0), 5, cv2.LINE_AA)
cv2.putText(img, "P", (0, 90), cv2.FONT_HERSHEY_PLAIN, 7, (0, 0, 0), 5, cv2.LINE_AA)
cv2.putText(img, "I", (0, 90), cv2.FONT_HERSHEY_PLAIN, 8, (0, 0, 0), 5, cv2.LINE_AA)
cv2.putText(img, "X", (0, 90), cv2.FONT_HERSHEY_PLAIN, 9, (0, 0, 0), 5, cv2.LINE_AA)
simg = cv2.resize(img, None, fx=0.1, fy=0.1, interpolation=cv2.INTER_NEAREST)
img = cv2.resize(simg, img.shape[:2][::-1], interpolation=cv2.INTER_NEAREST)
width = img.shape[1]
if (target[0:100, offset:offset+width,:] == img).all():
offset += width
flag += c
break
else:
print("[-] Not found :thinking:")
flag += "?"
offset += width
print(flag)
```
終わり。ただ1文字だけ答えが出なかった。
```
ctf4b{1f_y0u_p1x_y0u_c4n_?3p1x}
```
まぁこんくらいguessするけど、これは解法が悪いのか?
### 意見・感想
- easy〜mediumくらいで良さそう
- 【検閲済み】
- たぶん解法が悪いんですが、一応↑の確認だけお願いします :bow:
## width of space
### 解法
なんかcatしたらぐちゃぐちゃのが出てきた。なにこれ。
こういうのは【検閲済み】と決めてるので解きません。
### 意見・感想
solver見たけどこれは一般に自明なの?ちょっと見たこと無いタイプのやつで分からないです。
zer0ptsなら100% rejectされてるけど、Beginnersなら去年の絵文字のやつと同じような意図で出していいのかな?個人的にはrejectで。