# 隱寫術
:::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>