[๐ฅ Bronze 2] IV๋ฅผ ํ์ผ๋ช
์ ํฉ๋ฟ๋ฆฐ AES-CBC โ DreamHack ์จ๋ฟ๋ฆฌ๊ธฐ ํ์ด โ ZINO2026-07-16ยท1๋ถ ์ฝ๊ธฐยท
AES-128-CBC์ ciphertext์ key๋ง ์ฃผ๊ณ IV๋ ์ ์ค๋ค. ๋์ ์จ์ยท๊ณก๋ฌผ ์ฌ์ง 6์ฅ์ hint๋ก ๋์ง๋ค. ์ฌ์ง ์์ ์๋ฌด๋ฆฌ ๋ค์ ธ๋ ์ ๋์ค๋๋ฐ, IV๋ ์ฌ์ฏ ํ์ผ'๋ช
'์ hex ์กฐ๊ฐ์ผ๋ก ์๋ ค ์์๋ค. ๋ฒํธ์์ผ๋ก ์ด์ด ๋ถ์ฌ ๋ณตํธํ๋ฉด flag๊ฐ ๋์ค๋ crypto+forensics ๋ฌธ์ ๋ค.
๋ฌธ์ : DreamHack โ ์จ๋ฟ๋ฆฌ๊ธฐ
๋ถ๋ฅ: Crypto / Forensics
๋์ด๋: ๐ฅ Bronze 2
FLAG: bisc2024{1_10V3_D0M3571C_CrYP70}
AES-128-CBC๋ก ๋ญ๊ฐ๋ฅผ ์ํธํํ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ค. ๊ทธ๋ฐ๋ฐ ๋ณตํธ์ ํ์ํ ์ธ ๊ฐ ์ค ciphertext์ key๋ง ์๊ณ IV๊ฐ ์๋ค. ๋์ "hint....!" ํด๋์ ์จ์๊ณผ ๊ณก๋ฌผ์ ์ฐ์ ์ฌ์ง 6์ฅ์ด ๋ค์ด ์๋ค. ์ฒ์์ ๋น์ฐํ ์ฌ์ง ์์ IV๋ฅผ ์จ๊ฒผ๊ฒ ๊ฑฐ๋ ํ๊ณ ์คํ
๊ฐ๋
ธ๊ทธ๋ํผ๋ถํฐ ํ ๋๋ฐ, ์ ๋ต์ ํจ์ฌ ์ฑ๊ฑฐ์ด ๊ณณ โ ํ์ผ ์ด๋ฆ ์์ฒด์ ์์๋ค.
์กฐ๋ฆฝํ IV๋ก ๋ณตํธํ๋ flag๊ฐ ๋์จ๋ค
๋ฌธ์ ๊ฐ์
| ํญ๋ชฉ | ๋ด์ฉ |
|---|
| ๋ฌธ์ ๋ช
| ์จ๋ฟ๋ฆฌ๊ธฐ |
| ๋์ด๋ | ๐ฅ Bronze 2 |
| ๋ถ๋ฅ | Crypto / Forensics |
| ์ ๊ณต ํ์ผ | enc.txt (ciphertext + key), hint....!/ ์ด๋ฏธ์ง 6์ฅ |
| ์๋ฒ | ์์ (ํ์ผ๋ง์ผ๋ก ์คํ๋ผ์ธ ํ์ด) |
| ํต์ฌ ๊ธฐ๋ฒ | AES-CBC IV ๋ณต์ + ํ์ผ๋ช
์ ํฉ์ด์ง hex ์กฐ๊ฐ ์ฌ์กฐ๋ฆฝ |
ํ์ด ํ๋ฆ์ ์งง๋ค. enc.txt์์ 48๋ฐ์ดํธ ciphertext์ 16๋ฐ์ดํธ key๋ฅผ ๊บผ๋ด๊ณ , ์๋ IV๋ฅผ hint ์ด๋ฏธ์ง 6์ฅ์ ํ์ผ๋ช
์์ hex ์กฐ๊ฐ์ผ๋ก ๊ธ์ด ๋ชจ์๋ค. ๋ฒํธ์์ผ๋ก ์ด์ด ๋ถ์ด๋ฉด 16๋ฐ์ดํธ IV๊ฐ ๋๊ณ , AES-128-CBC๋ก ๋ณตํธํ๋ฉด flag๊ฐ ๊ทธ๋๋ก ๋จ์ด์ง๋ค.
์ด๋ฆ๋ถํฐ๊ฐ ํํธ๋ค. "์จ๋ฟ๋ฆฌ๊ธฐ" โ IV๋ฅผ ์ฌ๊ธฐ์ ๊ธฐ ์จ์ฒ๋ผ ๋ฟ๋ ค ๋จ๋ค๋ ๋ง์ด์๋ค.
๐งฉ ๋ฐฐ๊ฒฝ โ CBC ๋ชจ๋์์ IV๊ฐ ํ๋ ์ผ
AES๋ ๋ธ๋ก ๋จ์(16๋ฐ์ดํธ) ์ํธ๋ค. ํ๋ฌธ์ด ์ฌ๋ฌ ๋ธ๋ก์ด๋ฉด ๊ฐ ๋ธ๋ก์ ์ด๋ป๊ฒ ์ด์ด ์ํธํํ ์ง๋ฅผ ์ ํ๋ ๊ฒ "์ด์ฉ ๋ชจ๋"๊ณ , ์ด ๋ฌธ์ ๋ ๊ทธ์ค CBC(Cipher Block Chaining)๋ฅผ ์ผ๋ค.
CBC ๋ณตํธ๋ ๋ธ๋ก ํ๋๋ฅผ ์ด๋ ๊ฒ ํผ๋ค.
P0 = AES_decrypt(C0) โ IV โ ์ฒซ ๋ธ๋ก๋ง IV๋ฅผ XOR
P1 = AES_decrypt(C1) โ C0 โ ๋๋จธ์ง๋ ๋ฐ๋ก ์ "์ํธ๋ฌธ" ๋ธ๋ก์ XOR
์ด ๊ธ์ด ๋์์ด ๋๋์?
P2 = AES_decrypt(C2) โ C1
์ฌ๊ธฐ์ ๋์ฌ๊ฒจ๋ณผ ๊ฑด IV๊ฐ ์ฒซ ๋ธ๋ก P0 ํ๋์๋ง ๋ค์ด๊ฐ๋ค๋ ์ ์ด๋ค. P1, P2๋ ์์ ์ํธ๋ฌธ ๋ธ๋ก(C0, C1)๋ง XORํ๋ฏ๋ก IV๋ฅผ ๋ชฐ๋ผ๋ ๊ทธ๋ฅ ๋ณตํธ๋๋ค. IV๋ฅผ ์์ด๋ฒ๋ ค๋ ๋ ๋ฒ์งธ ๋ธ๋ก๋ถํฐ๋ ๋ฉ์ฉกํ๊ฒ ์ฝํ๋ค๋ ๋ป์ด๊ณ , ์ด ์ฑ์ง์ด ์ด ๋ฌธ์ ์ ์ค๋ง๋ฆฌ๊ฐ ๋๋ค.
๐ฌ ์ ์ฐฐ โ enc.txt๊ฐ ์ค ๊ฒ
๋จผ์ ์ค ํ์ผ๋ถํฐ ๋ณธ๋ค. enc.txt๋ ํ
์คํธ ๋ ์ค์ด๋ค.
echo "[ enc.txt ์๋ฌธ (CRLF ํฌํจ) ]"; cat -A enc.txt
echo; echo "[ xxd โ ciphertext 48B + key 16B ]"; xxd enc.txt
enc.txt์๋ 48๋ฐ์ดํธ ciphertext์ 16๋ฐ์ดํธ key๋ง ์๋ค
| ๊ฐ | ๊ธธ์ด | ๋ด์ฉ |
|---|
| ciphertext | 48๋ฐ์ดํธ (hex 96์) | 070fc151...e5039ac5 โ AES ๋ธ๋ก 3๊ฐ |
| key | 16๋ฐ์ดํธ (hex 32์) | 26cc1f81...81fa8f1c โ AES-128 |
| IV | โ | ์์ |
ciphertext๊ฐ 48๋ฐ์ดํธ = 3๋ธ๋ก์ด๋ ํ๋ฌธ๋ 48๋ฐ์ดํธ๋ค. key๋ 16๋ฐ์ดํธ๋ผ AES-128. ๋ฑ ํ๋ ๋น ์ง ๊ฒ IV๋ค. AES-CBC๋ฅผ ๋๋ฆฌ๋ ค๋ฉด ๋ฐ๋์ ์์ด์ผ ํ๋ ๊ฐ์ธ๋ฐ, ํ์ผ ์ด๋์๋ ์๋ค.
๐ฑ hint ํด๋ โ ์จ์ ์ฌ์ง 6์ฅ
์๋ IV์ ์๋ฆฌ๋ฅผ ์ฑ์ ์ค ํ๋ณด๋ hint ํด๋๋ฟ์ด๋ค. ์ด์ด ๋ณด๋ฉด ์จ์, ์ฝฉ, ํด๋ฐ๋ผ๊ธฐ์จ, ๊ณก๋ฌผ ์ฌ์ง์ด 6์ฅ ๋ค์ด ์๋ค. ๋ฌธ์ ์ด๋ฆ์ด "์จ๋ฟ๋ฆฌ๊ธฐ"๋ผ ์ฌ์ง ์ฃผ์ ๋ ์จ์์ผ๋ก ๋ง์ถฐ ๋์ ๊ฒ์ด๋ค.
hint ํด๋์ ์จ์ยท๊ณก๋ฌผ ์ฌ์ง 6์ฅ. ํ์ผ๋ช
์ด ์์ฌ๋กญ์ง ์๋ค
์ฌ์ง ๋ด์ฉ์ ํ๋ฒํ๋ค. ๋์ ํ์ผ๋ช
์ด ๋์ ๊ฑธ๋ฆฐ๋ค.
1.f660e.jpg 2.5daa8.jpeg 3.ad64e.jpeg
4.fa2a5.jpg 5.332d9.jpg 6.6b145e2.jpg
์์ ์ซ์๋ ์๋ฒ์ด๊ณ , ๊ฐ์ด๋ฐ ํ ๋ง(f660e, 5daa8 โฆ)์ ์ ๋ถ hex๋ก๋ง ์ด๋ค์ ธ ์๋ค. ํ์ฅ์ ์์ ๊ตณ์ด ์ด๋ฐ ๋ฌธ์์ด์ ๋ถ์ผ ์ด์ ๊ฐ ์๋ค. ์ผ๋จ ๋์ด๊ฐ๊ณ , ์ฌ์ง ์๋ถํฐ ๋ค์ก๋ค.
๐ ์ฝ์ง โ ์ฌ์ง ์์ ๋จผ์ ๋ค์ก๋ค
crypto + forensics ์กฐํฉ์ ์ด๋ฏธ์ง๊ฐ hint๋ก ๋ถ์ผ๋ฉด ๋ฐ์ฌ์ ์ผ๋ก ์คํ
๊ฐ๋
ธ๊ทธ๋ํผ๋ฅผ ์์ฌํ๊ฒ ๋๋ค. IV๊ฐ 16๋ฐ์ดํธ๋ EXIF ์ฃผ์์ด๋ LSB, ์๋๋ฉด JPEG ๋ค์ ๋ถ์ธ ๋ฐ์ดํฐ์ ์จ๊ฒผ์ ๊ฑฐ๋ผ ๋ณด๊ณ ๋๊ตฌ๋ฅผ ๋๋ ธ๋ค.
โถ๐ ์ฝ์ง โ exiftoolยทstringsยทappended data ๋ค์ง๊ธฐ (์ ๋ถ ๊ฝ)
D="hint....!"
# 1) EXIF ์ฃผ์/์ฌ์ฉ์ ํ๊ทธ์ IV๊ฐ?
exiftool "$D/2.5daa8.jpeg" | grep -iE "comment|iv|key|secret|flag"
# 2) JPEG EOI(ffd9) ๋ค์ ๋ง๋ถ์ ๋ฐ์ดํฐ๊ฐ?
tail -c 16 "$D/6.6b145e2.jpg" | xxd
# 3) ํ์ผ ์์ flag/bisc ํ์ ์ด?
strings "$D"/*.jp*g | grep -iE "bisc|DH\{|flag"
๋ฉํ๋ฐ์ดํฐยทํ์ผ ๊ผฌ๋ฆฌยทstrings ์ด๋์๋ IV๋ ์๋ค
- EXIF์๋
JPEGmini, Lightroom ๊ฐ์ ํธ์ง ํ์ ๋ฟ, IV๋ก ์ธ ๊ฐ์ ์๋ค.
- ํ์ผ ๋์ ์ ์ JPEG ์ข
๋ฃ ๋ง์ปค
ffd9๋ก ๋ฑ ๋๋๋ค. ๋ค์ ๋ถ์ธ ๋ฐ์ดํฐ๊ฐ ์๋ค.
strings๋ก flag ๋ฌธ์์ด์ ํ์ด๋ ๋์ค๋ ๊ฒ ์๋ค.
binwalk, zsteg๊น์ง ๋๋ ค ๋ด๋ ๋ง์ฐฌ๊ฐ์ง์๋ค. ์ฌ์ง 6์ฅ์ ์ ๋ถ ๋ฏธ๋ผ๋ค. ์ฌ๊ธฐ์ ๋ค์ ํ์ผ๋ช
์ผ๋ก ๋์ ๋๋ ธ๋ค.
์ฌ์ง์์ 30๋ถ์ ํ์ฐ๊ณ ๋์์ผ ํ์ผ๋ช
์ ์ ๋๋ก ๋ดค๋ค. ์กฐ๊ฐ 6๊ฐ์ hex ์๋ฆฟ์๋ฅผ ์ธ์ด ๋ณด๋ฉด 5 + 5 + 5 + 5 + 5 + 7 = 32์. 16๋ฐ์ดํธ IV๋ฅผ hex๋ก ์ฐ๋ฉด ์ ํํ 32์๋ค. ์ฌ์ง์ ๋์์์ด๊ณ , IV๋ ํ์ผ ์ด๋ฆ์ ์๋ผ์ ๋ฟ๋ ค ๋จ๋ ๊ฑฐ์๋ค.
๐ฃ ํต์ฌ โ IV๋ ๋ธ๋ก0์๋ง ํ์ํ๊ณ , ๊ทธ IV๋ ํ์ผ๋ช
์ด์๋ค
๋ ์กฐ๊ฐ์ ๋ง์ถ๋ค. ํ๋๋ "IV๊ฐ ์ด๋์ ํ์ํ๊ฐ", ๋ค๋ฅธ ํ๋๋ "IV๊ฐ ์ด๋์ ์๋".
๋จผ์ IV๊ฐ ์ผ๋ง๋ ํ์ํ์ง๋ถํฐ. IV๋ฅผ 0์ผ๋ก ์ฑ์ ๋ณตํธํด ๋ณด๋ฉด, ์ฒซ ๋ธ๋ก๋ง ๊นจ์ง๊ณ ๋ ๋ฒ์งธ ๋ธ๋ก๋ถํฐ๋ ์ด๋ฏธ ์ฝํ๋ค.
CT=070fc151...e5039ac5 # 48๋ฐ์ดํธ ciphertext
KEY=26cc1f81...81fa8f1c
printf '%s' "$CT" | xxd -r -p | \
openssl enc -d -aes-128-cbc -K $KEY -iv 00000000000000000000000000000000 -nopad | xxd
IV=0์ผ๋ก ํ๋ฉด ๋ธ๋ก1,2๋ D0M3571C_CrYP70}๋ก ์ด๋ฏธ ์ฝํ๋ค
๋ธ๋ก0(์คํ์
0x00~0x0f)์ ๋ค์ฃฝ๋ฐ์ฃฝ์ด์ง๋ง, ๋ธ๋ก1ยท2๋ D0M3571C_CrYP70}๋ก ๋ฉ์ฉกํ ๋์จ๋ค. ๋์ 10์ด ์ด์ฌ์ฏ ๋ฒ ๋ถ์ ๊ฑด PKCS#7 ํจ๋ฉ(0x10 = 16)์ด๋ผ, ํ๋ฌธ์ด ๋ฑ 32๋ฐ์ดํธ์๊ณ ํจ๋ฉ ๋ธ๋ก ํ๋๊ฐ ๋ ๋ถ์๋ค๋ ๋ป์ด๋ค. ์์ ๋ณธ CBC ์ฑ์ง ๊ทธ๋๋ก โ ๋งํ ๊ฑด IV๊ฐ ๊ฑธ๋ฆฌ๋ ๋ธ๋ก0 ํ๋๋ฟ์ด๋ค.
CBC ๋ณตํธ์์ IV๋ ์ฒซ ๋ธ๋ก์๋ง XOR๋๋ค
flag ๋ท๋ถ๋ถ(..._D0M3571C_CrYP70})์ด ์ด๋ฏธ ๋ณด์ด๋, "DOMESTIC CRYPTO๋ฅผ ์ฌ๋ํ๋ค" ๊ฐ์ ๋ฌธ์ฅ์ด๋ผ๋ ๊ฒ๋ ์ง์๋๋ค. ๋จ์ ๊ฑด ์ 16๋ฐ์ดํธ๋ฅผ ์ฌ๋ IV ํ๋.
๊ทธ IV๊ฐ ํ์ผ๋ช
์ด๋ค. 6๊ฐ ํ์ผ๋ช
์ hex ํ ๋ง์ ๋ฒํธ์์ผ๋ก ์ด์ด ๋ถ์ธ๋ค.
ํ์ผ๋ช
6๊ฐ์ hex ์กฐ๊ฐ์ ์ด์ด ๋ถ์ด๋ฉด 16๋ฐ์ดํธ IV๊ฐ ๋๋ค
1.f660e + 2.5daa8 + 3.ad64e + 4.fa2a5 + 5.332d9 + 6.6b145e2
= f660e5daa8ad64efa2a5332d96b145e2 (32 hex = 16 bytes)
๐ฏ ํ์ด โ ์กฐ๋ฆฝํ IV๋ก ๋ณตํธ
์กฐ๋ฆฝํ IV๋ฅผ ๋ฃ๊ณ ๊ฐ์ openssl ๋ช
๋ น์ ๋ค์ ๋๋ฆฐ๋ค. ์ด๋ฒ์ ํจ๋ฉ๊น์ง ์ ์ ์ฒ๋ฆฌ๋๋๋ก -nopad๋ฅผ ๋บ๋ค.
IV=f660e5daa8ad64efa2a5332d96b145e2 # ํ์ผ๋ช
6๊ฐ์์ ์กฐ๋ฆฝ
printf '%s' "$CT" | xxd -r -p | \
openssl enc -d -aes-128-cbc -K $KEY -iv $IV
์กฐ๋ฆฝํ IV๋ก ๋ณตํธํ๋ flag ์ ์ฒด๊ฐ ๋์จ๋ค
๋ธ๋ก0๊น์ง ์ด๋ฆฌ๋ฉด์ bisc2024{...๋ก ์์ํ๋ flag๊ฐ ํต์งธ๋ก ๋์จ๋ค. IV๊ฐ ๋ง์๋ค๋ ์ฆ๊ฑฐ๋ ๋ณตํธ ๊ฒฐ๊ณผ๊ฐ ์ ํจํ ASCII flag์ด์ ํจ๋ฉ(0x10 ร 16)์ด ์๋ฒฝํ๋ค๋ ๊ฒ โ ๊ฐ ํ๋๋ง ํ๋ ค๋ ๋ธ๋ก0์ ๋ค์ ๋์๊ฐ ๋๋ค.
bisc2024{1_10V3_D0M3571C_CrYP70}
๋ฆฌํธ ํ๊ธฐ๋ฅผ ํ๋ฉด I LOVE DOMESTIC CRYPTO. ๊ตญ์ฐ ์ํธ(SEEDยทARIA ๊ฐ์)๋ฅผ ์ฌ๋ํ๋ค๋ ๋๋ด์ด flag์ ๋ฐํ ์๋ค.
๐ Full Exploit
ํ์ฑ โ ํ์ผ๋ช
์์ IV ์กฐ๋ฆฝ โ ๋ณตํธ๊น์ง ํ ๋ฒ์ ๋๋ ์คํฌ๋ฆฝํธ๋ค. IV๋ฅผ ์์ผ๋ก ๋ถ์ผ ํ์ ์์ด hint ํด๋๋ฅผ ๋ฒํธ์์ผ๋ก ์ ๋ ฌํด ๊ฐ์ด๋ฐ ํ ๋ง๋ง ๊ธ์ด ์จ๋ค.
import binascii
from pathlib import Path
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
BASE = Path("extracted/unz/๊ณผ์ ")
# 1) enc.txt ํ์ฑ -- ciphertext(48B) + key(16B)
kv = {}
for line in (BASE / "enc.txt").read_text().splitlines():
if ":" in line:
k, v = line.split(":", 1)
kv[k.strip()] = v.strip()
ct = binascii.unhexlify(kv["ciphertext"])
key = binascii.unhexlify(kv["key"])
# 2) ํฌ๋ ์: hint ํ์ผ๋ช
์์ IV ์กฐ๋ฆฝ (1..6 ์์๋ก ๊ฐ์ด๋ฐ hex ํ ๋ง)
hints = sorted((BASE / "hint....!").glob("*"),
key=lambda p: int(p.name.split(".")[0]))
iv_hex = "".join(p.name.split(".", 2)[1] for p in hints)
iv = binascii.unhexlify(iv_hex) # f660e5daa8ad64efa2a5332d96b145e2
# 3) AES-128-CBC ๋ณตํธ
pt = unpad(AES.new(key, AES.MODE_CBC, iv).decrypt(ct), 16)
print("FLAG:", pt.decode()) # bisc2024{1_10V3_D0M3571C_CrYP70}
๋งจ ์ ์บก์ณ๊ฐ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ๊ทธ๋๋ก ๋๋ฆฐ ์ถ๋ ฅ์ด๋ค. ciphertext/key ๊ธธ์ด, ๊ธ์ด ์จ ํ์ผ๋ช
์กฐ๊ฐ, ์กฐ๋ฆฝํ IV, ๊ทธ๋ฆฌ๊ณ flag๊ฐ ์์๋๋ก ์ฐํ๋ค.
๐ ๊ฒฐ๋ก
IV๋ ๋น๋ฐ์ด ์๋์ง๋ง, ์์ผ๋ฉด ์ฒซ ๋ธ๋ก์ ๋ชป ์ฐ๋ค.
CBC์ IV๋ ๊ณต๊ฐ๋ผ๋ ๋๋ ๊ฐ์ด๋ผ ๋ณดํต ciphertext ์์ ๊ทธ๋ฅ ๋ถ์ฌ ๋ณด๋ธ๋ค. ์ด ๋ฌธ์ ๋ ๊ทธ IV๋ฅผ ์ผ๋ถ๋ฌ ๋ผ์ "hint"๋ผ๋ ์ด๋ฆ์ ์ฌ์ง ํ์ผ๋ช
์ ์๋ผ ์จ๊ฒผ๋ค. ์ํธ ์์ฒด๋ ํ์ค AES-128-CBC ๊ทธ๋๋ก๋ผ ๊นจ๋ ๊ฒ ์๋๋ผ, ํฉ์ด ๋์ IV ์กฐ๊ฐ์ ๋์ฐพ๋ ํฌ๋ ์์ด ํต์ฌ์ด์๋ค.
์ฌ์ง์ด ๋ถ์ด ์๋ค๊ณ ๋ค ์คํ
๊ฐ๋
ธ๋ ์๋๋ค.
crypto์ ์ด๋ฏธ์ง๊ฐ hint๋ก ์ค๋ฉด ๋ฐ์ฌ์ ์ผ๋ก ํ์ผ ์(EXIFยทLSBยทappended data)์ ๋จผ์ ๋ค์ง๊ฒ ๋๋ค. ์ฌ๊ธฐ์๋ ๊ทธ๊ฒ ํจ์ ์ด์๋ค. ํ์ผ์ ๋ด์ฉ์ด ์๋๋ผ ์ด๋ฆ, ๊ฐ์, ์๋ฒ ๊ฐ์ ๋ฉํ ์ ๋ณด์ ๋จ์๊ฐ ์๋ ๊ฒฝ์ฐ๋ ๋ง๋ค. ์ฌ์ง 6์ฅ์ ํ์ผ๋ช
hex ์๋ฆฟ์๋ฅผ ์ง์ ์ธ์ด ๋ดค์ผ๋ฉด 30๋ถ์ ์๊ผ์ ๊ฒ์ด๋ค.
๋์ฐพ์ IV๊ฐ ๋ง๋์ง๋ ๊ฒฐ๊ณผ๊ฐ ์ฆ๋ช
ํ๋ค.
๋ธ๋ก0์ IV๊ฐ ํ ๋นํธ๋ง ํ๋ ค๋ ํต์งธ๋ก ๋์๊ฐ ๋๋ค. ๋ณตํธ ๊ฒฐ๊ณผ๊ฐ ์ฝํ๋ ASCII์ด๊ณ PKCS#7 ํจ๋ฉ๊น์ง ๋ฑ ๋ง์ผ๋ฉด, ๊ทธ๊ฑด IV๋ฅผ ์ ๋๋ก ๋ณต์ํ๋ค๋ ํ์คํ ์ ํธ๋ค. ๊ตณ์ด flag ํ์์ ๋ฏธ๋ฆฌ ๊ฐ์ ํ์ง ์์๋ ํจ๋ฉ ํ๋๋ก ์ ๋ต์ ๊ฐ๋ฆด ์ ์๋ค.
Comments
๋๊ธ
๋๊ธ์ ๋จ๊ธฐ๋ ค๋ฉด ๋ก๊ทธ์ธ์ด ํ์ํด์. (๋ค์ด๋ฒ ยท ๊ตฌ๊ธ ๊ณ์ )
๋๊ธ ๋ถ๋ฌ์ค๋ ์คโฆ