user:sachy:svgsteg
Differences
This shows you the differences between two versions of the page.
user:sachy:svgsteg [2017/08/03 19:46] – created sachy | user:sachy:svgsteg [2017/08/03 20:28] (current) – pridan testovaci svg sachy | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== Vektorova steganografie ===== | ||
+ | |||
+ | Na skryte zapisovani dat do bitmap existuje spousta nastroju, ale jeste vic clanku, bakalarek a diplomek na jejich detekci a ziskani. To same plati pro video a zvuk - proste se jemne deformace ztrati v sumu. | ||
+ | |||
+ | Naproti tomu vektory nabizi moznost zapisu informace bez kvalitativni zmeny vystupu. | ||
+ | |||
+ | Zakladni metody jsou: | ||
+ | * Jittering - zmeny nejnizsich bitu barev/ | ||
+ | * Segmentace - rozdeleni usecek na mensi casti (pouzivaji se dva body - pivot (je dana usecka zakodovana? | ||
+ | * Polygonizace - prevedeni (Bezierovych) krivek na polygon, hlavni vyhodou je moznost ulozit velke mnozstvi informace do jednoho segmentu, a polygonizace vypada nenapadne (vykonnostni duvody). | ||
+ | * Pridani novych objektu ktere splynou s pozadim/ | ||
+ | |||
+ | Proof-of-koncept svgsteg.sh | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # Read SVG file " | ||
+ | # | ||
+ | |||
+ | cp -f " | ||
+ | |||
+ | bits=$(cat " | ||
+ | msgb=$(echo " | ||
+ | msgl=$(echo " | ||
+ | msgbl=$(echo $msgl | awk ' | ||
+ | msgfull=" | ||
+ | |||
+ | if [ $(($msgl + 64)) -gt " | ||
+ | then | ||
+ | echo "Msg too big or SVG too simple"; | ||
+ | exit; | ||
+ | fi | ||
+ | |||
+ | nums=$(cat " | ||
+ | |||
+ | i=" | ||
+ | echo " | ||
+ | |||
+ | num=$(echo " | ||
+ | |||
+ | ldigit=$(echo " | ||
+ | odd=$(( $ldigit & 1)) | ||
+ | |||
+ | # if already even or already odd; do nothing | ||
+ | # if even shall be odd; add one to least place (ignore overflow) | ||
+ | # if odd shall be even; add one to least place (ignore overflow) | ||
+ | |||
+ | if [[ $bit != $odd ]] | ||
+ | then | ||
+ | # add 1 to $ldigit, but store only last digit (in case 9->10 = 0) | ||
+ | newldigit=$(echo $(($ldigit + 1)) | grep -o -e ' | ||
+ | # get updated number | ||
+ | upnum=$(echo " | ||
+ | |||
+ | # update the file | ||
+ | sed -n " | ||
+ | |||
+ | fi | ||
+ | |||
+ | i=$(($i + 1)) | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | A dekoder svgunsteg.sh | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # Get message from SVG file $1 | ||
+ | # | ||
+ | |||
+ | msg="" | ||
+ | |||
+ | nums=$(cat " | ||
+ | |||
+ | i=" | ||
+ | echo " | ||
+ | ldigit=$(echo $num | grep -o -e ' | ||
+ | odd=$(($ldigit & 1)) | ||
+ | |||
+ | msg=" | ||
+ | |||
+ | if [[ $i = " | ||
+ | then | ||
+ | mlen=" | ||
+ | msg="" | ||
+ | fi | ||
+ | |||
+ | if [[ $i = " | ||
+ | then | ||
+ | echo " | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | i=$(($i + 1)) | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | {{: | ||