---
# System prepended metadata

title: 連猴子都看得懂的簡易mspaint隱寫術
tags: [無聊研究的小玩意]

---

# 連猴子都看得懂的簡易mspaint隱寫術

參考文章
https://cn-sec.com/archives/1554579.html
https://www.pentestpartners.com/security-blog/breaking-out-of-citrix-and-other-restricted-desktop-environments/#gainingacommandshell

---

## 簡易範例 -- CMD.exe

將畫布調整成6:1px
![](https://i.imgur.com/89dIEOu.png)

使用顏色選擇器指定顏色，左到右分別為RGB
```
1. R：10，G：0，B：0
2. R：13，G：10，B：13
3. R：100，G：109，B：99
4. R：120，G：101，B：46
5. R：0，G：0，B：101
6. R：0，G：0，B：0
```

完成圖
![](https://i.imgur.com/wiAxfyp.png)

將圖片存檔成.bmp

將.bmp改成.bat即可呼叫cmd.exe
![](https://i.imgur.com/g0n5G2b.png)

notepad++ 內容
![](https://i.imgur.com/WD7CNdw.png)


## 原理

其實原理很簡單
RGB中有三個坐標值，分別對應紅綠藍三個顏色，可轉為16進制

然後RGB中的16進制可轉10進制，10進制再去轉成ASCII code
ASCII表如下
![](https://i.imgur.com/cdXhNrW.png)

但要注意的是RGB中的字元會反向，比如剛剛的cmd色表
```
1. R：10，G：0，B：0      -- (NUL)(NUL)/r
2. R：13，G：10，B：13    -- /n/r/n
3. R：100，G：109，B：99  -- dmc
4. R：120，G：101，B：46  -- xe.
5. R：0，G：0，B：101     -- e(NUL)(NUL)
6. R：0，G：0，B：0       -- (NUL)(NUL)(NUL)
```
就是他讀的時候會反著讀，所以RGB要填色時要把字反著放
然後單個色=一個字元，所以1px的RGB可以塞三個字
開頭因為bmp會有固定的header，所以要換行，顏色固定開頭都會是(10.0.0)(13.10.13)
遇到空值(NUL)就是補0，所以最後要結尾時都是將顏色設為0

這樣就可以獲得一個(算是(?)被放程式碼的圖片了

## powershell.exe

圖片多少px都沒差 反正空了就是補0

色碼
```
1. R：10，G：0，B：0      -- (NUL)(NUL)/r
2. R：13，G：10，B：13    -- /n/r/n
3. R：119，G：111，B：112 -- wop
4. R：115，G：114，B：101 -- ser
5. R：108，G：101，B：104 -- leh
6. R：101，G：46，B：108  -- e.l
7. R：0，G：101，B：120   -- (NUL)ex
8. R：0，G：0，B：0       -- (NUL)(NUL)(NUL)
```

恭喜獲得powershell
![](https://i.imgur.com/OfbbD40.png)

>shellcode熱血開塞(X
>[name=羽澤]

## 如果格子字數算的好的話 也可以直接用WINHEX去編輯