{"id":13648448,"url":"https://github.com/zed-0xff/zsteg","last_synced_at":"2025-05-14T08:06:24.223Z","repository":{"id":6241274,"uuid":"7473367","full_name":"zed-0xff/zsteg","owner":"zed-0xff","description":"detect stegano-hidden data in PNG \u0026 BMP","archived":false,"fork":false,"pushed_at":"2024-03-25T19:38:54.000Z","size":9658,"stargazers_count":1413,"open_issues_count":7,"forks_count":147,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-05-12T18:00:13.148Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://zed.0xff.me","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zed-0xff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-01-06T22:12:11.000Z","updated_at":"2025-05-06T08:51:16.000Z","dependencies_parsed_at":"2024-01-13T11:13:00.014Z","dependency_job_id":"f66f2e15-ca1f-4417-9c0f-2a1f31f357f4","html_url":"https://github.com/zed-0xff/zsteg","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zed-0xff%2Fzsteg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zed-0xff%2Fzsteg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zed-0xff%2Fzsteg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zed-0xff%2Fzsteg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zed-0xff","download_url":"https://codeload.github.com/zed-0xff/zsteg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101615,"owners_count":22014909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:04:15.682Z","updated_at":"2025-05-14T08:06:19.214Z","avatar_url":"https://github.com/zed-0xff.png","language":"Ruby","funding_links":[],"categories":["Ruby","Challenges","3. [↑](#-content) Cryptography","Tools","Programming/Comp Sci/SE Things"],"sub_categories":["Steganography","[↑](#-content) 3.3 Steganalysis"],"readme":"zsteg\n======\n\n\nDescription\n-----------\ndetect stegano-hidden data in PNG \u0026 BMP\n\n\nInstallation\n------------\n    gem install zsteg\n\n\nDetects:\n--------\n * LSB steganography in PNG \u0026 BMP\n * zlib-compressed data\n * [OpenStego](http://openstego.sourceforge.net/)\n * [Camouflage 1.2.1](http://camouflage.unfiction.com/)\n * [LSB with The Eratosthenes set](http://wiki.cedricbonhomme.org/security:steganography)\n\n\nUsage\n-----\n\n    # zsteg -h\n\n    Usage: zsteg [options] filename.png [param_string]\n    \n        -a, --all                        try all known methods\n        -E, --extract NAME               extract specified payload, NAME is like '1b,rgb,lsb'\n    \n    Iteration/extraction params:\n        -o, --order X                    pixel iteration order (default: 'auto')\n                                         valid values: ALL,xy,yx,XY,YX,xY,Xy,bY,...\n        -c, --channels X                 channels (R/G/B/A) or any combination, comma separated\n                                         valid values: r,g,b,a,rg,bgr,rgba,r3g2b3,...\n        -b, --bits N                     number of bits, single int value or '1,3,5' or range '1-8'\n                                         advanced: specify individual bits like '00001110' or '0x88'\n            --lsb                        least significant bit comes first\n            --msb                        most significant bit comes first\n        -P, --prime                      analyze/extract only prime bytes/pixels\n            --shift N                    prepend N zero bits\n            --step N                     step\n            --invert                     invert bits (XOR 0xff)\n            --pixel-align                pixel-align hidden data\n    \n    Analysis params:\n        -l, --limit N                    limit bytes checked, 0 = no limit (default: 256)\n    \n            --[no-]file                  use 'file' command to detect data type (default: YES)\n            --no-strings                 disable ASCII strings finding (default: enabled)\n        -s, --strings X                  ASCII strings find mode: first, all, longest, none\n                                         (default: first)\n        -n, --min-str-len X              minimum string length (default: 8)\n    \n        -v, --verbose                    Run verbosely (can be used multiple times)\n        -q, --quiet                      Silent any warnings (can be used multiple times)\n        -C, --[no-]color                 Force (or disable) color output (default: auto)\n    \n    PARAMS SHORTCUT\n    \tzsteg fname.png 2b,b,lsb,xy  ==\u003e  --bits 2 --channel b --lsb --order xy\n\nExamples\n--------\n\n### Simple LSB\n\n    # zsteg flower_rgb3.png\n\n    imagedata           .. file: 370 XA sysV pure executable not stripped - version 768\n    b3,rgb,lsb,xy       .. text: \"SuperSecretMessage\"\n\n### Multi-result file\n\n    # zsteg cats.png\n\n    meta F              .. [\"Z\" repeated 14999985 times]\n    meta C              .. text: \"Fourth and last cat is Luke\"\n    meta A              .. [same as \"meta F\"]\n    meta date:create    .. text: \"2012-03-15T23:32:46+07:00\"\n    meta date:modify    .. text: \"2012-03-15T23:32:14+07:00\"\n    imagedata           .. file: 68K BCS executable\n    b1,r,lsb,xy         .. text: \"Second cat is Marussia\"\n    b1,g,lsb,xy         .. text: \"Good, but look a bit deeper...\"\n    b1,bgr,lsb,xy       .. text: \"MF_WIhf\u003e\"\n    b2,g,lsb,xy         .. text: \"VHello, third kitten is Bessy\"\n\n### wbStego even distributed\n\n    # zsteg wbstego/wbsteg_noenc_even.bmp 1b,lsb,bY -v\n\n    b1,lsb,bY           .. \u003cwbStego size=22, data=\"xtSuperSecretMessage\\n\", even=true, mix=true, controlbyte=\"t\"\u003e\n        00000000: 51 00 00 16 00 00 74 0d  b5 78 1e a1 39 74 e8 38  |Q.....t..x..9t.8|\n        00000010: 53 c6 56 94 75 d1 a5 70  84 c8 27 65 fe 08 72 35  |S.V.u..p..'e..r5|\n        00000020: 1f 3e 53 5d a7 65 8b 6e  3b 63 6b 1d bf 72 ee 27  |.\u003eS].e.n;ck..r.'|\n        00000030: 65 8d ee 82 74 da 8d 4d  b3 8a 06 65 7e f8 73 9c  |e...t..M...e~.s.|\n        00000040: 36 0c 73 aa bd 61 67 29  37 67 5f 0b 06 65 1f a4  |6.s..ag)7g_..e..|\n        00000050: 0a a1 f8 35                                       |...5            |\n\n### wbStego encrypted\n\n    # zsteg wbstego/wbsteg_blowfish_pass_1.bmp 1b,lsb,bY -v\n\n    b1,lsb,bY           .. \u003cwbStego size=26, data=\"\\rC\\xF5\\xBF#\\xFF[6\\e\\xB3\"..., even=false, hdr=\"\\x01\", enc=\"Blowfish\"\u003e\n        00000000: 1a 00 00 00 ff 01 01 0d  43 f5 bf 23 ff 5b 36 1b  |........C..#.[6.|\n        00000010: b3 17 42 4a 3f ba eb c7  ee 9c d7 7a 2b           |..BJ?......z+   |\n\n### zlib\n\n    # zsteg ndh2k12_sp113.bmp -b 1 -o yx -v\n\n    b1,rgb,lsb,yx       .. zlib: data=\"%PDF-1.4\\n%\\xC3\\xA4\\xC3\\xBC\\xC3\\xB6\\xC3\\x9F\\n2 0 obj\\n\u003c\u003c/Length 3 0 R/Filter/FlateDecode\u003e\u003e\\nstream\\nx\\x9C\\x8DT\\xC9n\\xDB@\\f\\xBD\\xCFW\\xF0\\x1C \\x13\\x92\\xB3\\x03\\x86\\x80\\xC8K\\xD1\\xDE\\\\\\b\\xE8\\xA1...\", offset=4, size=186\n        00000000: 00 02 eb 9b 78 9c d4 b9  65 54 24 cc 92 36 58 b8  |....x...eT$..6X.|\n        00000010: d3 68 e3 ee ee 4e e3 ee  ee 0e 85 bb 3b dd 68 23  |.h...N......;.h#|\n        00000020: 8d bb bb bb 3b 8d bb bb  3b 34 ee 6e 1f ef 7b ef  |....;...;4.n..{.|\n        00000030: 9d 3b b3 e7 cc 9e d9 3d  df 9e dd cd 8a 1f 99 19  |.;.....=........|\n        00000040: 99 55 11 99 4f 58 25 99  82 88 18 1d 13 3d 2b 2c  |.U..OX%......=+,|\n        00000050: 59 6f 7e 6f 7b 6f 63 6f  16 2c 33 21 23 a1 9d 91  |Yo~o{oco.,3!#...|\n        00000060: 25 2c 2f 2f 83 0c d0 d6  cc d9 9c 90 e5 73 46 89  |%,//.........sF.|\n        00000070: 41 cc c2 da 19 e8 c8 20  66 6d e8 0c 14 01 1a db  |A...... fm......|\n        00000080: 99 00 f9 f8 60 9d 9c 1d  81 86 36 b0 ee e9 bf 54  |....`.....6....T|\n        00000090: 86 6d 57 05 e0 3b 26 d5  2f 71 09 51 63 eb c0 82  |.mW..;\u0026./q.Qc...|\n        000000a0: bf 0f 49 4f 6f e8 40 ff  c9 f9 43 25 1d 9e 6b 1b  |..IOo.@...C%..k.|\n        000000b0: a3 73 fd 42 c4 a6 65 3d  ef 0a 07 32 17 2d dc f9  |.s.B..e=...2.-..|\n        000000c0: 10 8c 0d 4b d7 9d e6 01  12 4f 11 6f f0 cd 64 f2  |...K.....O.o..d.|\n        000000d0: f2 19 5c df 76 eb 01 49  dc fd cd 76 65 a2 3a 8a  |..\\.v..I...ve.:.|\n        000000e0: fd bb 13 a9 e6 3a c9 da  19 34 ae f0 43 bb 90 90  |.....:...4..C...|\n        000000f0: 58 88 de 46 ce 91 6f aa  8d d9 7d b8 d6 88 a6 65  |X..F..o...}....e|\n\nSee also\n--------\n1. https://29a.ch/photo-forensics/\n2. https://holloway.nz/steg/\n\nLicense\n-------\nReleased under the MIT License.  See the [LICENSE](https://github.com/zed-0xff/zsteg/blob/master/LICENSE.txt) file for further details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzed-0xff%2Fzsteg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzed-0xff%2Fzsteg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzed-0xff%2Fzsteg/lists"}