(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     27770,        722]
NotebookOptionsPosition[     21061,        615]
NotebookOutlinePosition[     23938,        672]
CellTagsIndexPosition[     23895,        669]
WindowTitle->Steganography
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES GUIDE", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "fe65515f-b5fb-413d-884e-7073a7359418"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "bc81fe25-24f2-469b-98d2-e14f9cf9527c"],
        Background->LightDarkSwitched[
          RGBColor[0.85098, 0.396078, 0]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[Cell[BoxData[
     TagBox[
      ActionMenuBox[
       FrameBox[Cell[TextData[{
         "URL",
         " ",
         Cell[BoxData[
          GraphicsBox[
           {GrayLevel[0.66667], Thickness[0.13], 
            LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
           AspectRatio->1,
           ImageSize->20,
           PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
          "d267c258-3c4e-40f3-bfb5-668c07e95fa7"]
        }],ExpressionUUID->"81fb5894-5623-4502-841f-cf4a466a665e"],
        StripOnInput->False],{
       "\"WolframInstitute/Puzzles/guide/Steganography\"" :> None, 
        "\"Copy Wolfram Documentation Center URL\"" :> 
        CopyToClipboard["WolframInstitute/Puzzles/guide/Steganography"], 
        Delimiter, "\"Copy web URL\"" :> 
        Module[{DocumentationSearch`Private`nb$}, 
          DocumentationSearch`Private`nb$ = 
           NotebookPut[
            Notebook[{
              Cell[BoxData[
                MakeBoxes[
                 Hyperlink[
                  "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/guide/Steganography.html"], StandardForm]], "Input", 
                TextClipboardType -> "PlainText"]}, Visible -> False]]; 
          SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
          FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
          NotebookClose[DocumentationSearch`Private`nb$]; Null], 
        "\"Go to web URL\"" :> 
        FrontEndExecute[{
          NotebookLocate[{
            URL[If[TrueQ[False], 
                "http://reference.wolfram.com/system-modeler/", 
                "http://reference.wolfram.com/language/"] <> 
              "WolframInstitute/Puzzles/guide/Steganography" <> ".html"], 
             None}]}]},
       Appearance->None,
       MenuAppearance->Automatic,
       MenuStyle->"URLMenu"],
      MouseAppearanceTag["LinkHand"]]],
     LineSpacing->{1.4, 0},ExpressionUUID->
     "925e8f5f-1d7c-4ddd-8994-4d64a5e1a373"]], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "3da862ef-fe7e-45a5-a78a-b2d1a3ec2823"]}
  }]], "AnchorBarGrid",
 GridBoxOptions->{GridBoxItemSize->{"Columns" -> {
     Scaled[0.65], {
      Scaled[0.34]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, 
   "RowsIndexed" -> {}}},
 CellID->1,ExpressionUUID->"3373f440-db16-4f5f-bf4e-b27029c824b3"],

Cell[CellGroupData[{

Cell["Steganography", "GuideTitle",
 CellID->942062912,ExpressionUUID->"79a9cadd-acdb-422b-bc2d-32bf393c2042"],

Cell["\<\
A puzzle image hides its payload in one of a small number of places: the low \
bits of the pixel samples, a container unit the decoder never shows, the \
bytes past the declared end of the file, or a metadata field nobody reads. \
The functions here open all four, and one function runs the lot and reports \
what came back. Everything in this category reads; nothing writes. Extraction \
is the whole job, and it is a job with a false-positive problem: printable \
text turns up in random data, magic numbers occur by chance, and an ordinary \
camera file already contains a nested TIFF stream. Each function that reports \
a candidate therefore reports how often a carrier with nothing hidden in it \
would produce the same thing, so a result can be weighed instead of believed. \
The scope is spatial-domain hiding in PNG, JPEG and GIF carriers. Payloads \
embedded in JPEG transform coefficients are not recoverable from decoded \
pixels and are out of scope, as is estimating an embedding rate, which the \
published steganalysis literature does properly and this category does not \
attempt.\
\>", "GuideAbstract",
 CellID->2001916300,ExpressionUUID->"978b5fe8-a8f7-45eb-a041-803fb3cbdbf8"],

Cell["\t", "GuideDelimiterSubsection",ExpressionUUID->"c44080d8-61c5-45e1-8010-2055fb15958c"],

Cell[CellGroupData[{

Cell["The survey", "GuideFunctionsSubsection",ExpressionUUID->"ca61079e-17a1-44ac-b1d9-b09c6306e720"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SteganographySurvey"]], 
    "paclet:WolframInstitute/Puzzles/ref/SteganographySurvey", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "fe2b64e1-92ee-45a7-87ce-dd74cedf2e1a"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "runs the whole battery over one carrier and reports each finding with a \
confidence and its false-positive mode"
}], "GuideText",ExpressionUUID->"b0f06749-186d-4168-82f4-189e15472218"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Bit planes and channels", "GuideFunctionsSubsection",ExpressionUUID->"b470a81a-e475-4998-ae9a-cbe36cb84727"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageBitPlane"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageBitPlane", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "517e9aea-7fd6-47ec-9e84-42da703ec9b6"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "one bit plane of an image, or of one of its channels, as a binary image"
}], "GuideText",ExpressionUUID->"dd55a310-7cdf-4ee6-a06a-c27c221ffa07"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageBitStream"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageBitStream", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "6a0c25df-9604-436a-af8e-3ff19be6b8f8"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "selected bit planes serialised into an ordered bit list, over a chosen scan \
and channel order"
}], "GuideText",ExpressionUUID->"2a437f8c-ea22-4749-9037-f46cbb8a8d20"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageBitStreamBytes"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageBitStreamBytes", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "62a80785-a3f1-4de5-9313-bbf2abb5117e"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the same stream packed into bytes, at either bit order"
}], "GuideText",ExpressionUUID->"7ece412e-14d6-48a0-9348-f02354d1a0ad"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageBitPlaneScan"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageBitPlaneScan", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "adf208f3-22a3-40ca-a30b-8e34e596b5bf"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "sweeps every standard traversal and reports the printable text each one \
yielded"
}], "GuideText",ExpressionUUID->"b5c330ee-88b9-4223-97af-194045e1491a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ColorSeparate", FontSlant -> "Italic"]]], 
    "paclet:ref/ColorSeparate"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "67738f33-a55c-4715-ba80-def874619af4"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "an image split into its channels"
}], "GuideText",ExpressionUUID->"a8ee6780-2c3a-495b-b271-a3a94be1898a"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["AlphaChannel", FontSlant -> "Italic"]]], 
    "paclet:ref/AlphaChannel"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "49e7ed4d-0039-472a-8867-07748f62dd1c"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the alpha channel of an image"
}], "GuideText",ExpressionUUID->"396dee55-4168-4f12-a4e2-451ecebcb122"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ImageDifference", FontSlant -> "Italic"]]], 
    "paclet:ref/ImageDifference"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "d338a6bb-adf0-4854-b108-3349c0ea31d0"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the absolute difference of two images, for comparing channels or two \
versions of a carrier"
}], "GuideText",ExpressionUUID->"9f8db0f4-d6e3-4ff6-af96-4687bc5bfb0e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BitGet", FontSlant -> "Italic"]]], "paclet:ref/BitGet"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "efa216d6-c619-46aa-8935-a9eeabae19b8"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the bit of an integer at a given index, listable over an array of samples"
}], "GuideText",ExpressionUUID->"38921d4f-f08c-4007-8906-b841a36cada8"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Container structure", "GuideFunctionsSubsection",ExpressionUUID->"cf1c0122-ba97-439d-a53b-8ac846d6782f"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageContainerChunks"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageContainerChunks", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1a8bdeb4-2016-45f2-b859-0597a9ac0d6b"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the structural units of a PNG, JPEG or GIF, with positions, lengths and PNG \
chunk checksums"
}], "GuideText",ExpressionUUID->"5a139109-5705-49c2-9789-192bda9d9f2e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageAppendedData"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageAppendedData", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "d2fd53c0-26d0-4601-a01f-b0d842b922fb"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the bytes that follow the container's declared end"
}], "GuideText",ExpressionUUID->"6983dcf0-c59a-4dd7-a805-ef79b21c496e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Import", FontSlant -> "Italic"]]], "paclet:ref/Import"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "efcf8ddc-78a1-4356-b1ae-8c0e75f6122b"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the decoded image, and its ",
 Cell["\"ColorMap\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "672c190b-8311-4d63-8e81-02fd76619385"],
 ", ",
 Cell["\"RasterSize\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c62db8b7-fdb7-4f4d-b54a-b511a1539eb2"],
 " and ",
 Cell["\"BitDepth\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b5a37297-3bf9-417e-9b5b-060ac66440b9"],
 " elements"
}], "GuideText",ExpressionUUID->"adfaf77a-7c65-4219-8bf9-49bed56636ab"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Hash", FontSlant -> "Italic"]]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "30f977cc-6aeb-4cf1-a243-01c504a54e46"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "with ",
 Cell["\"CRC32\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "8bc50848-9a79-41be-ae28-397fcc7fccd3"],
 ", the checksum the PNG specification puts on every chunk"
}], "GuideText",ExpressionUUID->"c757a60a-677c-498d-b7ef-2278115bf734"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Bytes and payloads", "GuideFunctionsSubsection",ExpressionUUID->"6ef4dde0-9098-43c3-b305-bf04507045a9"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["EmbeddedFileSignatures"]], 
    "paclet:WolframInstitute/Puzzles/ref/EmbeddedFileSignatures", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "4f0c2591-2c53-4402-88b0-9b55aeaf9f15"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the positions of known file-format magic numbers, each weighed by how often \
chance would produce it"
}], "GuideText",ExpressionUUID->"9e826da0-f8b4-410d-ac09-ebf4e7c61137"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteArrayStrings"]], 
    "paclet:WolframInstitute/Puzzles/ref/ByteArrayStrings", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "80a5495d-974a-4053-9491-dbfc8342ca1f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the printable runs in arbitrary bytes, in the manner of the strings \
utility"
}], "GuideText",ExpressionUUID->"b2ef478c-db3c-44bf-a814-8740f0fd11c3"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ZlibUncompress"]], 
    "paclet:WolframInstitute/Puzzles/ref/ZlibUncompress", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "abf4f2d1-04be-425a-92ba-44ac93e9e727"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "a zlib or bare DEFLATE stream inflated, which the kernel's importers cannot \
do"
}], "GuideText",ExpressionUUID->"94672884-a549-44cc-8e9a-a9db59a3796d"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ImportByteArray", FontSlant -> "Italic"]]], 
    "paclet:ref/ImportByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "972884f6-a2a1-4aaa-a67e-88d99a5c6f29"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "opens a recovered payload once its format is known"
}], "GuideText",ExpressionUUID->"926055e4-a497-4078-996d-44685264a30e"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BaseDecode", FontSlant -> "Italic"]]], 
    "paclet:ref/BaseDecode"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "bcb57e8d-6dc0-409d-bbbf-c6f978dfa824"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "decodes a base64 payload found in a metadata field"
}], "GuideText",ExpressionUUID->"94254ace-1b9c-4058-857f-91cf3a7b1d93"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Metadata", "GuideFunctionsSubsection",ExpressionUUID->"03762254-56b9-4023-9835-06f2f88d58df"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageTextMetadata"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageTextMetadata", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "748703a8-350b-4e8b-a686-f8987f8f4ce7"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "every string a container carries outside its pixels, from Exif, XMP, PNG \
text chunks and JPEG comments"
}], "GuideText",ExpressionUUID->"7eea5b57-9ed4-41e6-957f-e4b8626ffaeb"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Import", FontSlant -> "Italic"]]], "paclet:ref/Import"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "785216e0-50bb-4eb6-afd7-7c5ef37540a0"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "reads the typed ",
 Cell["\"Exif\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3a45e35a-db23-49a0-8b0a-da419f296dfb"],
 ", ",
 Cell["\"XMP\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "55057da7-9bcf-4995-821a-99f48f866fd9"],
 " and ",
 Cell["\"Comments\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "45eef3b4-06ee-4163-ae23-1494ffbe5a35"],
 " elements when a value other than plain text is wanted"
}], "GuideText",ExpressionUUID->"f87111fc-8288-48db-a580-1407dd314bd2"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "GuideMoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Puzzles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Puzzles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "b5117e4d-1810-4626-b2e6-6acd7b6a50ad"]], "GuideMoreAbout",
         ExpressionUUID->"7458c085-675a-4f82-82fd-0313e5958a54"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Encodings"]], 
           "paclet:WolframInstitute/Puzzles/guide/Encodings"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "00965a81-d1db-4a84-bca7-caaaf65735e2"]], "GuideMoreAbout",
         ExpressionUUID->"4321cfb0-4e38-4789-99c1-b8e05d0d8b90"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Search"]], 
           "paclet:WolframInstitute/Puzzles/guide/Search"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "6a6c612a-8425-4ecf-9d96-308748356365"]], "GuideMoreAbout",
         ExpressionUUID->"4d7d9079-71d5-4a1d-951c-43b991af8d2a"]}]}
     }]}
  }]], "GuideMoreAboutSection",ExpressionUUID->"c47b023b-4a5c-45a4-97af-\
d478cdad3252"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["PNG Specification, Second Edition"]], 
   "https://www.w3.org/TR/2003/REC-PNG-20031110/"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"ba024d0b-a429-469b-b991-\
0051a3795c06"]], "GuideRelatedLinks",ExpressionUUID->"cb74eb33-ced3-486f-9351-\
09cc44668a3b"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["ITU-T T.81, JPEG"]], "https://www.itu.int/rec/T-REC-T.81"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"94a5785d-7847-4d91-844a-\
84661064a2cd"]], "GuideRelatedLinks",ExpressionUUID->"f7465080-4b38-462a-ad78-\
b989b559b4d5"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["Graphics Interchange Format Version 89a"]], 
   "https://www.w3.org/Graphics/GIF/spec-gif89a.txt"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"f2a65f3a-56a5-41a3-873a-\
9ac3afd0a0f8"]], "GuideRelatedLinks",ExpressionUUID->"0c0b221a-d486-4158-973c-\
f77a82f3dc88"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["RFC 1950, ZLIB Compressed Data Format"]], 
   "https://www.rfc-editor.org/rfc/rfc1950"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"c238f9e3-db8e-448a-9e1d-\
a0e3617210be"]], "GuideRelatedLinks",ExpressionUUID->"2840a0e5-4e8f-43de-a56e-\
5a29c5a030e6"],

Cell[TextData[Cell[BoxData[
 TemplateBox[{
   Cell[
    TextData["RFC 1951, DEFLATE Compressed Data Format"]], 
   "https://www.rfc-editor.org/rfc/rfc1951"},
  "WebLink",
  BaseStyle->{
   "GuideRelatedLinks"}]],ExpressionUUID->"424ff6e4-18fb-4692-9d98-\
ec0fef4cfa8c"]], "GuideRelatedLinks",ExpressionUUID->"88db50a3-8612-46f7-9d05-\
b77a06b0f1ac"]
}, Open  ]],

Cell[" ", "FooterCell",ExpressionUUID->"b6ff1664-b149-4052-9d67-df609edec545"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"Steganography",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}}, 
  "NewStyles" -> True, "CitationPopupData" -> {$Failed, ""}, "ShowCitation" -> 
  False, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 5.983145}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {
     "steganography", "steganalysis", "LSB", "bit plane", "PNG chunk", 
      "JPEG marker", "appended data", "magic number", "Exif", "zTXt", "zlib", 
      "forensics"}, "specialkeywords" -> {}, "tutorialcollectionlinks" -> {}, 
    "index" -> True, "label" -> "Wolfram Institute/ Puzzles Guide", 
    "language" -> "en", "paclet" -> "WolframInstitute/Puzzles", "status" -> 
    "None", "summary" -> 
    "A puzzle image hides its payload in one of a small number of places: the \
low bits of the pixel samples, a container unit the decoder never shows, the \
bytes past the declared end of the file, or a metadata field nobody reads. \
The functions here open all four, and one function runs the lot and reports \
what came back. Everything in this category reads; nothing writes. Extraction \
is the whole job, and it is a job with a false-positive problem: printable \
text turns up in random data, magic numbers occur by chance, and an ordinary \
camera file already contains a nested TIFF stream. Each function that reports \
a candidate therefore reports how often a carrier with nothing hidden in it \
would produce the same thing, so a result can be weighed instead of believed. \
The scope is spatial-domain hiding in PNG, JPEG and GIF carriers. Payloads \
embedded in JPEG transform coefficients are not recoverable from decoded \
pixels and are out of scope, as is estimating an embedding rate, which the \
published steganalysis literature does properly and this category does not \
attempt.", "synonyms" -> {}, "tabletags" -> {}, "title" -> "Steganography", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> 
    "Steganography", "type" -> "Guide", "uri" -> 
    "WolframInstitute/Puzzles/guide/Steganography", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
CacheGraphics->False,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"262f88d7-3ada-4ecd-aebe-64bcc30e8d37"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[581, 21, 3072, 74, 70, "AnchorBarGrid",ExpressionUUID->"3373f440-db16-4f5f-bf4e-b27029c824b3",
 CellID->1],
Cell[CellGroupData[{
Cell[3678, 99, 110, 1, 70, "GuideTitle",ExpressionUUID->"79a9cadd-acdb-422b-bc2d-32bf393c2042",
 CellID->942062912],
Cell[3791, 102, 1206, 17, 70, "GuideAbstract",ExpressionUUID->"978b5fe8-a8f7-45eb-a041-803fb3cbdbf8",
 CellID->2001916300],
Cell[5000, 121, 93, 0, 70, "GuideDelimiterSubsection",ExpressionUUID->"c44080d8-61c5-45e1-8010-2055fb15958c"],
Cell[CellGroupData[{
Cell[5118, 125, 101, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"ca61079e-17a1-44ac-b1d9-b09c6306e720"],
Cell[5222, 127, 589, 15, 70, "GuideText",ExpressionUUID->"b0f06749-186d-4168-82f4-189e15472218"]
}, Open  ]],
Cell[CellGroupData[{
Cell[5848, 147, 114, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"b470a81a-e475-4998-ae9a-cbe36cb84727"],
Cell[5965, 149, 536, 14, 70, "GuideText",ExpressionUUID->"dd55a310-7cdf-4ee6-a06a-c27c221ffa07"],
Cell[6504, 165, 562, 15, 70, "GuideText",ExpressionUUID->"2a437f8c-ea22-4749-9037-f46cbb8a8d20"],
Cell[7069, 182, 531, 14, 70, "GuideText",ExpressionUUID->"7ece412e-14d6-48a0-9348-f02354d1a0ad"],
Cell[7603, 198, 554, 15, 70, "GuideText",ExpressionUUID->"b5c330ee-88b9-4223-97af-194045e1491a"],
Cell[8160, 215, 470, 15, 70, "GuideText",ExpressionUUID->"a8ee6780-2c3a-495b-b271-a3a94be1898a"],
Cell[8633, 232, 465, 15, 70, "GuideText",ExpressionUUID->"396dee55-4168-4f12-a4e2-451ecebcb122"],
Cell[9101, 249, 534, 16, 70, "GuideText",ExpressionUUID->"9f8db0f4-d6e3-4ff6-af96-4687bc5bfb0e"],
Cell[9638, 267, 492, 14, 70, "GuideText",ExpressionUUID->"38921d4f-f08c-4007-8906-b841a36cada8"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10167, 286, 110, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"cf1c0122-ba97-439d-a53b-8ac846d6782f"],
Cell[10280, 288, 572, 15, 70, "GuideText",ExpressionUUID->"5a139109-5705-49c2-9789-192bda9d9f2e"],
Cell[10855, 305, 523, 14, 70, "GuideText",ExpressionUUID->"6983dcf0-c59a-4dd7-a805-ef79b21c496e"],
Cell[11381, 321, 893, 26, 70, "GuideText",ExpressionUUID->"adfaf77a-7c65-4219-8bf9-49bed56636ab"],
Cell[12277, 349, 616, 18, 70, "GuideText",ExpressionUUID->"c757a60a-677c-498d-b7ef-2278115bf734"]
}, Open  ]],
Cell[CellGroupData[{
Cell[12930, 372, 109, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"6ef4dde0-9098-43c3-b305-bf04507045a9"],
Cell[13042, 374, 584, 15, 70, "GuideText",ExpressionUUID->"9e826da0-f8b4-410d-ac09-ebf4e7c61137"],
Cell[13629, 391, 548, 15, 70, "GuideText",ExpressionUUID->"b2ef478c-db3c-44bf-a814-8740f0fd11c3"],
Cell[14180, 408, 547, 15, 70, "GuideText",ExpressionUUID->"94672884-a549-44cc-8e9a-a9db59a3796d"],
Cell[14730, 425, 492, 15, 70, "GuideText",ExpressionUUID->"926055e4-a497-4078-996d-44685264a30e"],
Cell[15225, 442, 482, 15, 70, "GuideText",ExpressionUUID->"94254ace-1b9c-4058-857f-91cf3a7b1d93"]
}, Open  ]],
Cell[CellGroupData[{
Cell[15744, 462, 99, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"03762254-56b9-4023-9835-06f2f88d58df"],
Cell[15846, 464, 577, 15, 70, "GuideText",ExpressionUUID->"7eea5b57-9ed4-41e6-957f-e4b8626ffaeb"],
Cell[16426, 481, 916, 26, 70, "GuideText",ExpressionUUID->"f87111fc-8288-48db-a580-1407dd314bd2"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[17391, 513, 1841, 43, 70, "GuideMoreAboutSection",ExpressionUUID->"c47b023b-4a5c-45a4-97af-d478cdad3252"],
Cell[19235, 558, 348, 9, 70, "GuideRelatedLinks",ExpressionUUID->"cb74eb33-ced3-486f-9351-09cc44668a3b"],
Cell[19586, 569, 317, 8, 70, "GuideRelatedLinks",ExpressionUUID->"f7465080-4b38-462a-ad78-b989b559b4d5"],
Cell[19906, 579, 357, 9, 70, "GuideRelatedLinks",ExpressionUUID->"0c0b221a-d486-4158-973c-f77a82f3dc88"],
Cell[20266, 590, 346, 9, 70, "GuideRelatedLinks",ExpressionUUID->"2840a0e5-4e8f-43de-a56e-5a29c5a030e6"],
Cell[20615, 601, 349, 9, 70, "GuideRelatedLinks",ExpressionUUID->"88db50a3-8612-46f7-9d05-b77a06b0f1ac"]
}, Open  ]],
Cell[20979, 613, 78, 0, 70, "FooterCell",ExpressionUUID->"b6ff1664-b149-4052-9d67-df609edec545"]
}
]
*)

(* End of internal cache information *)

