---
# System prepended metadata

title: L4G-CSTV

---

# Write-Up L4G – CSTV

## 1/ Sửa file PNG

File đầu khi đưa lên hexed.it thì mình nhận thấy 'NG', mình đoán đây là file PNG  bị crash nên mình sẽ chỉnh lại.

Đầu tiên là sửa header và chunk IHDR
![image](https://hackmd.io/_uploads/Bk_3716uT.png)

 
Đổi thành : 89 50 4E 47 (header) và 49 48 44 52 ( IHDR)

 ![image](https://hackmd.io/_uploads/r1wHzyTdp.png)

Dùng PNG check thì thấy có lỗi ở trunk gama -> đổi lại thành : 0B FC 61 05

 ![image](https://hackmd.io/_uploads/SyJ8M16OT.png)

Chunk IDAT bị sai cú pháp -> đổi thành 49 44 41 54

 ![image](https://hackmd.io/_uploads/BJhUfkTdp.png)

Chỉnh length của IDAT, length của IDAT là 4 byte  phía trước ‘IDAT’ 
Length = offset đầu của đoạn IDAT kế tiếp – offset đầu của IDAT hiện tại ( ko tính length) – 0x08
                = 0x10004 – 0x57 – 0x08 = 0xffa5
                
Và đây là tất cả các byte chỉnh sửa: 

 ![image](https://hackmd.io/_uploads/ByMwGypuT.png)
 
Mình có viết một đoạn code để fix ảnh mặc dù nó cũng chẳng nhanh hơn fix tay bao nhiêu :+1: 

```python=
def modify(file_path,output_path):
    try:
        with open(file_path, 'rb') as file:
            content = bytearray(file.read())

            content[0x01] = 0x50
            content[0x03] = 0x47
            content[0x0c] = 0x49
            content[0x0e] = 0x44
            content[0x3a:0x3e] = [0x0B, 0xFC, 0x61, 0x05]
            content[0x53:0x55] = [0x00, 0x00]
            content[0x56] = 0xA5
            content[0x58] = 0x44
            content[0x5A] = 0x54

        with open(output_path, 'wb') as file:
            file.write(content)
    except Exception as e:
        print(f"Error: {e}")

modify('C:\\Users\\phgvee\\Downloads\\3y3L4g','C:\\Users\\phgvee\\Downloads\\fixed.png')
```




## 2/ Decode 
Sau khi chỉnh ảnh thì mình thu được ảnh như sau 
 ![image](https://hackmd.io/_uploads/Hk0wMJ6_6.png)

Bài này nó còn cho thêm một file .wav có mã morse, mình ngồi decode ra thì nó ra như này : 

WH4TY0UH34R1SN0TWH4TY0US33KF0R
Đối với bài này thì mình không rõ hướng đi nên mình thử tất cả các cách có thể làm đối với file ảnh và wav, cuối cùng thì mình dùng steghide trên file wav với pass 123321232123 thì ra được một file txt: 
 ![image](https://hackmd.io/_uploads/S1PuMJada.png)

![image](https://hackmd.io/_uploads/SknOGypda.png)

 
Biết là BrainFuck nhưng decode hoài hong ra , nhìn lại cái ảnh thì thấy chữ viết dọc nên đoán là cái brainfuck nên viết dọc lại và decode, mình dùng script sau để chỉnh :
```python
def read_and_process_columns(file_path):
    columns = []
    with open(file_path, 'r') as file:
        lines = file.readlines()
        for line in lines:
            for i, char in enumerate(line.rstrip('\n')):
                if len(columns) <= i:
                    columns.append([])
                columns[i].append(char)
    for i, column in enumerate(columns):
        print(f"{''.join(column)}",end="")

file_path = 'Br41nL4g.txt' 
read_and_process_columns(file_path)
```
Và đây là kết quả : 
```
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>++.++++++.-----------.++++++.<------------.>+++++.<------.>-----..++.+++++.-------.--------.<-.>+++++++++++++++++++++++.<.>----.+++++++.--.---------------.<.>++++++++++.<.........
```
Giơ đem đi decode ở [tools](https://www.dcode.fr/brainfuck-language) này thì ra kết quả : 

```flag:l4gging_3v3rywh3r333333333```

