---
# System prepended metadata

title: 隱寫術
tags: [Enlightened, NISRA, '2021']

---

# 隱寫術

:::danger
請愛惜共筆，勿進行惡意刪減
:::

[NISRA CTF](https://class.enlightened.nisra.net/)
[Slide](https://slides.com/cha-cha/steganography/fullscreen)

---

## Intro
* **Misc**ellaneous
* 不讓非預期使用者得知詳細訊息

## Feature
- 安全性+隱蔽性+藏密量
    - 色覺、聽閾
- 著重隱藏資料
    - 強健性不足
    - 被發現就GG

### Lab 0x0

- [Lab 0x0 那頁的link](https://slides.com/cha-cha/steganography/fullscreen#/1/3/5)

## Binary

- 首見於萊布尼茲的著作 ~~辣個跟牛頓一起搞出微積分的藍人~~
- 十進位：{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  二進位：{0, 1}

## Operators
- NOT `'`
    - 0' = 1
    - 1' = 0
- AND `·`
    - 1 · 1 = 1
    - 0 · 0 = 0 · 1 = 1 · 0 = 0
- OR `+`
    - 1 + 1 = 0 + 1 = 1 + 0 = 1
    - 0 + 0 = 0
- [Decimal to Binary Converter](https://www.binaryhexconverter.com/decimal-to-binary-converter)
- Q&A
    - 用 `'` 而不用 `!` 表示 not
      用 `·` 而不用 `&` 表示 and
      用 `+` 而不用 `|` 表示 or 真的好嗎
      [name=1143 Koios]
        - and or not 的表示方法在各個領域上不盡相同，沒有好壞之分喔
          [name=Mask]

## Hexadecimal
- { 0, 1, ..., 8, 9, A, B, C, D, E, F }
- (1443)~10~ = (5A3)~16~ = 0x5A3
 
## ASCII
**A**merican **S**tandard **C**ode for **I**nformation **I**nterchange
- 電腦常用編碼系統
    - 128個字元
    - "A" = 65 = 0x41
    - "a" = 97 = 0x61
    - "0" = 48 = 0x30

## Pixel
* **Pix**(picture) + **El**ement
* ~~向量圖~~？點陣圖！
* RGB (+ Alpha)
* [Gigapixel](https://www.jeffrey-martin.com/paris-360-gigapixel-2019)

### RGB

- **R**ed, **G**reen, **B**lue
- 每一個 pixel 的 RGB 各佔 3 bytes x 3 ~(RGB三個顏色)~
- 3 bytes = 3 x 8 bits (0～255)

> 電競七彩霓虹燈(X
> [name=safe98.otis]
> 東西加了 RGB 價格直接乘與7
> [name=houpig1]
> RGB高清色彩顯示器(x
> [name=forensic7306]
> 害我仔細看了 XD
> [name=winnie5062611]

## Header
- 檔頭
- 用來確保檔案格式
    - 詳細資訊
    - 每種檔案都有
	- 常以 Hex 表示
- E.g.
    - [List of Fiile Signatures](https://en.wikipedia.org/wiki/List_of_file_signatures)
    - pdf
        - `25 50 44 46 2D`
    - png
        - `89 50 4E 47 0D 0A 1A 0A`
- Q&A
    - 有可能副檔名對不起來 magic number 嗎
      [name=winnie5062611]
      - 有哦～
        [name=LAVI]

## 好用的工具們
> **WinHex** 和 **010Editor** 選一個下載就好囉~

### WinHex
- **免費**的十六進位編輯器
- 數位鑑識、資料修復...
- [WinHex Download](https://x-ways.net/winhex/)
> IE：解除封鎖拉~!!
> [name=houpig1]
> chrome用無痕就可以下載了
> [name=勁廷 郭]
> 湮滅證據(X
> [name=safe98.otis]
> IE：你為甚麼要騙我QQ
> [name=houpig1]


### 010 Editor
- Text Editor + Hex Editor
    - 層次分明的架構
    > 眼睛不脫窗好棒棒
    > [name=LAVI]
    - 五彩繽紛
    - **要錢**(解除安裝還要重開機QQ)
        - 試用版~
    - [Download](https://www.sweetscape.com/010editor/)

### Lab 0x1 (5 min)

- 是個打不開的檔案
- 起手式：丟到工具裡瞧瞧 :eyes: 
- png file but with jpg header?!
    - `FF DB FF DB` -> `89 50 4E 47 0D 0A 1A 0A`
    - 把它改回 png file header
- Q&A
    - 為什麼header不一樣，檔案副檔名.jpg 改成 .png  還是可以打開
      [name=hjom7356731]
        - 圖片檢視器在開啟一張照片時根據底層實作的不同，可能會看副檔名，也可能直接用header作判斷。
          因此單純修改副檔名還是有可能打得開，希望有解答到您的問題。
          [name=Mask]

### PNG IHDR

- [Chunk Specification](http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html)
- Header chunk
    - 第一且唯一
    - 13 bytes
        - 寬、高、深、顏色
        - ![](https://i.imgur.com/byiqMdT.png)

## Binwalk

- 快速、簡單的分析檔案資料與結構
    - 逆向工程
    - 提取韌體資訊
- [binwalk download](https://github.com/ReFirmLabs/binwalk)
- `python setup.py install`
- `python src\scripts\binwalk <option> <file>`

:::info
安裝 debug 區
> - no such file：檢查路徑
> - error：檢查環境變數 or 以系統管理員啟動 cmd
> - Linux 的 binwalk 在套件管理員就可以下載了，裝完終端打開就能直接用了
> - VSCode裡面的是插件，非 Python 本身，請去[官網](https://www.python.org/)下載

:::

### Lab 0x1 cont.
- `python src\scripts\binwalk -e <file>`
- `python src\scripts\binwalk -D=".*" -C="<folder>" <file>`
- 輸入解壓縮密碼後就看的到 Flag 囉~


## Exif
- **Ex**changeable **i**mage **f**ile **f**ormat
- 專門為數位相機設計
    - 屬性資訊
    - 拍攝資料
- 右鍵 -> 內容

### Lab 0x2
- 太簡單ㄌ
- 右鍵內容就可以看到ㄌ


## ~開始用神器搞事~

### StegSolve 

- http://www.caesum.com/handbook/Stegsolve.jar
- 雙擊~~666~~ or `java -jar Stegsolve.jar`
- 圖片隱寫解題神器
- [Online Tool](https://stegonline.georgeom.net/upload)

### Steregoram
- [Magic Eye](https://magiceye.ecksdee.co.uk/)
- 立體視覺圖
    - 2D 圖創造出 3D 效果

### Lab 0x3
- 看得出 Flag 嗎??
> 你是傳說中ㄉ 3D Eye ㄇ
:::spoiler Ans
Analyse -> Stegeogram Solver
將圖片的 Pixel 整行移動
:::

### Frame Browser
- 觀察動圖
    - 分析每幀的畫面
    - [GIF](https://zh.wikipedia.org/wiki/GIF)

### Lab 0x4
- 似乎有一個一閃而過的 Flag ?
> Vivy 好讚🚀🚀🚀🚀🚀
:::spoiler Ans
File -> Open -> Analyse -> Frame Browser
方向鍵 or 滑鼠左鍵點擊
:::

> 拚手速擷圖可以簡化很多(X
> [name=houpig1]
> 開手機相機的連拍功能
> [name=yang.yukiko]

### Image Combiner
- 合併兩張圖
    - XOR, AND, SUB, MUL...

### Lab 0x5
- 給你滿滿ㄉ~~大平台~~喵喵們![](https://i.imgur.com/2BMvnA8.jpg)

:::spoiler Ans
File → Open → 打開原圖喵喵 → Analyse → Image Combiner → Lab喵喵 → 方向鍵 or 左鍵點擊
:::

### LSB

- **L**east **S**ignificant **B**it
- $2^8 * 2^8 * 2^8 = 16,777,216$ 種顏色
    - 人眼無法察覺細微變化
    - 權重 ↓
    - 影響 ↓
- [LSB & 演算法](http://ir.lib.pccu.edu.tw/retrieve/47927/129-3gsweb.pdf)

### Lab 0x6 (2 min)

![](https://i.imgur.com/R2UwsNh.png =180x100)
:::spoiler Ans
File -> Open -> 方向鍵 or 左鍵看個通道
:::

### Data Extract

- 按照特定方式、順序提取圖片資訊
- [Bit Plane](https://en.wikipedia.org/wiki/Bit_plane)
- ![](https://i.imgur.com/wMIo8Sa.png)

### Lab 0x7
- 假的 都是假的
- ![](https://i.imgur.com/wW2OqA3.png =325x300)

:::spoiler Ans
File → Open → Analyse → Data Extract
:::

![](https://i.imgur.com/GJBY9s5.png)

###### tags: `Enlightened` `NISRA` `2021`
<style>
.navbar-brand::after { content: " × NISRA"; }
</style>