图片指定区域根据rgb值计算出对应的坐标地址_【水文】震惊!高考期间,这位学生居然能通过图片隐写实现文字通信!...
圖片隱寫術,是一種將信息藏在圖片中的技術。這個技術的前景非常廣闊,在網(wǎng)絡安全、神經(jīng)網(wǎng)絡對抗攻擊等都有一定應用。
2020年7月10日,我開發(fā)出圖片隱寫工具——TPEncoder v1.0.2,可以將海量信息藏匿在圖片中。寫完還迫不及待地跟別人試了試。
今天山東還在高考,所以標題沒啥毛病。(狗頭)
據(jù)計算,大小為
的肉眼意義上的純色圖片,可以儲存一篇三萬七千余字的論文。比如下圖:
由于知乎無法上傳bmp格式,因此損失了一些精度,直接解碼會出現(xiàn)亂碼這張圖藏著dio的著名臺詞:
ジョジョ、人間ってのは能力に限界があるな。俺が短い人生で學んだことは、人間は策を弄 すれば弄するほど、予期せぬ事態(tài)で策が崩れ去るってことだ。人間を超えるものにならねばな。俺は、人間をやめるぞ、ジョジョ!俺は、人間をやめるぞ、ジョジョ工程源代碼與可執(zhí)行程序:
Text-Picture Encoder?github.com理論基礎
首先,無論是中文、日文、英文還是什么其他語言的字符,在計算機中都有對應的二進制編碼方式,如unicode:
unicode編碼下的“ジョジョ”為八個字節(jié)而位圖中每一個像素也是二進制的,根據(jù)RGB的值存儲的——第一個字節(jié)是B的值,范圍為
;第二個字節(jié)是G的值,范圍為;第三個字節(jié)是R的值,范圍為。忘記的朋友可以戳這個鏈接一下:劉冬煜:七、位圖的讀入方法?zhuanlan.zhihu.com如果我們將每一個字符的值直接輸出到位圖的RGB中,最簡單的文本轉圖片編碼器就完成了。不過根據(jù)像素的值很容易推斷出其內容,比如下圖中,用工具直接加密源代碼:
工具中-d和-s選項都使用0x000000時,任務退化為將每一個字符的值直接作為RGB輸出到圖片文件中細心的朋友可以看出,由于一個像素是三個字節(jié),即三個字符的編碼值共同決定的,因此最接近灰色的位置可能是由小寫字母字符('a'-'z',ASCII取值范圍
)、大括號('{' '}',ASCII分別為123和125)、位或符號('|',ASCII為124)、點引號('`',ASCII為126)中任意三個構成的三元組;而明亮的部分則可能是中文注釋、日文假名等,可以比較直觀地看出這是代碼文件。再比如這篇我的這篇關于搖滾音樂文化的論文:
圖片里中英文的分界非常明確——明亮為中文,灰暗為英文因此我們希望在這個最簡單的編碼器中有所加強,使得輸出的圖片盡可能地接近純色;或者換句話說,相鄰兩個像素之間顏色的變化不能太過明顯。
有三個維度擾動限制的文本圖片編碼器
沒有擾動限制時,每個像素的取值范圍為
,若把每個像素看作一個三維向量的話,兩個像素向量差的模長決定了二者在視覺上的差距:顏色空間中的幾個點及其坐標因此,如果將每個像素RGB值的可變范圍從
變?yōu)?#xff0c;即每個像素實際存儲的比特數(shù)從24下降到15:加擾動限制前后實際有效比特的區(qū)別雖然需要更大的圖片來存儲,但有兩點更加顯著的變化:
如果僅僅是全黑的圖片就沒意思了,我們還可以修改默認像素顏色。
默認像素顏色的加入
這一步就非常容易了,只需要用戶自定義基礎值,而不是簡單的RGB全0即可。不過需要檢查基礎值與擾動最大限度的和不能超過255:
通過編碼器,實現(xiàn)jojo著名臺詞的圖片隱寫工具的展望
除純色圖片隱寫之外,編碼器工具還可以實現(xiàn)彩色位圖的隱寫——即默認RGB值并非固定,而是根據(jù)額外輸入圖片里每個位置的RGB值而變化。這樣生成的fake image,隱寫更難被發(fā)現(xiàn)。
圖片隱寫的起點也未必是左上角像素,可以是任意指定的位置(只要沒有超過圖片大小),其余像素也可以是隨機噪聲,以混淆視聽。
這些功能,工具暫時還沒有實現(xiàn),不過也比較容易去完成。敬請期待!
總結
以上是生活随笔為你收集整理的图片指定区域根据rgb值计算出对应的坐标地址_【水文】震惊!高考期间,这位学生居然能通过图片隐写实现文字通信!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mvd没什么每次参数双都多一个逗号_学服
- 下一篇: 合成孔径成像算法与实现_声呐二维成像技术