<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Case Studies on ebyte.org</title>
    <link>https://ebyte.org/tags/case-studies/</link>
    <description>Recent content in Case Studies on ebyte.org</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 21 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ebyte.org/tags/case-studies/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>EByte Case Study Comparing Sensor Captures Before and After a Firmware Update</title>
      <link>https://ebyte.org/ebyte-case-study-comparing-sensor-captures-before-and-after-a-firmware-update/</link>
      <pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-comparing-sensor-captures-before-and-after-a-firmware-update/</guid>
      <description>&lt;p&gt;A firmware update changes what a device sends, and the usual way to find out what changed is to capture its traffic before and after and stare at hex dumps. EByte 0.5.0 adds &lt;code&gt;ebyte diff&lt;/code&gt;, which decodes two files through the same schema and lists the fields that differ, with each side&amp;rsquo;s offset and length and the old and new values of integers. This case study compared two packet captures of a small network sensor using the released &lt;code&gt;ebyte&lt;/code&gt; 0.5.0 Linux binary, downloaded from GitHub. Its checksum matched SHA256SUMS before anything ran.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Editing a PNG File With Every Chunk CRC Recomputed</title>
      <link>https://ebyte.org/ebyte-case-study-editing-a-png-file-with-every-chunk-crc-recomputed/</link>
      <pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-editing-a-png-file-with-every-chunk-crc-recomputed/</guid>
      <description>&lt;p&gt;A PNG file is an 8-byte signature followed by chunks, and every chunk ends with a CRC-32 of its type and data. Change one byte of a comment by hand and the image is broken, because that CRC no longer matches. EByte 0.4.0 adds checksums to its schemas: a field can be declared as the CRC-32, Adler-32 or one of three CRC-16 variants of other fields, and EByte checks it on decode and writes it on encode. This case study tried it on a real PNG with the released &lt;code&gt;ebyte&lt;/code&gt; 0.4.0 Linux binary, downloaded from GitHub. Its checksum matched SHA256SUMS before anything ran.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Editing a WAV Title in the Browser</title>
      <link>https://ebyte.org/ebyte-case-study-editing-a-wav-title-in-the-browser/</link>
      <pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-editing-a-wav-title-in-the-browser/</guid>
      <description>&lt;p&gt;EByte 0.7.0 runs in a web browser. The release has a new asset, &lt;code&gt;ebyte-wasm.zip&lt;/code&gt;, which is the same Go library compiled to WebAssembly, and the &lt;a href=&#34;https://ebyte.org/demo/&#34;&gt;demo page&lt;/a&gt; on this site loads it. There&amp;rsquo;s no server behind the page: a file you open is read by the page itself and never sent anywhere. This case study used the demo the way someone new to EByte would, with a file of their own, and then checked what came out with tools that know nothing about EByte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Editing WAV and ZIP Files Without Fixing Sizes by Hand</title>
      <link>https://ebyte.org/ebyte-case-study-editing-wav-and-zip-files-without-fixing-sizes-by-hand/</link>
      <pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-editing-wav-and-zip-files-without-fixing-sizes-by-hand/</guid>
      <description>&lt;p&gt;Every earlier case study ended with the same chore. Change the length of anything and some size field elsewhere in the file goes stale, and you fix it yourself: &lt;code&gt;riff_size&lt;/code&gt; in a WAV, the name lengths and the directory offset in a ZIP. EByte 0.3.0 adds derived sizes and offsets, so the schema can say where those numbers come from and the encoder works them out. This case study tried it on the same WAV and ZIP samples as before, using the released &lt;code&gt;ebyte&lt;/code&gt; 0.3.0 Linux binary downloaded from GitHub. Its checksum matched SHA256SUMS before anything ran.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Floats Bit Fields and Palettes in WAV BMP and IPv4</title>
      <link>https://ebyte.org/ebyte-case-study-floats-bit-fields-and-palettes-in-wav-bmp-and-ipv4/</link>
      <pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-floats-bit-fields-and-palettes-in-wav-bmp-and-ipv4/</guid>
      <description>&lt;p&gt;EByte 0.6.0 adds three kinds of field that real formats kept asking for. There are floating-point numbers. There are bit fields, several small numbers packed into the same bytes. And there are byte fields that run up to an offset another field declares, like the colour palette in an 8-bit BMP. This case study tried each one on a different format with the released &lt;code&gt;ebyte&lt;/code&gt; 0.6.0 Linux binary, downloaded from GitHub. Its checksum matched SHA256SUMS before anything ran. Every result was checked with a tool that knows nothing about EByte: ffmpeg, Pillow and dpkt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Flipping and Editing a Real BMP Image</title>
      <link>https://ebyte.org/ebyte-case-study-flipping-and-editing-a-real-bmp-image/</link>
      <pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-flipping-and-editing-a-real-bmp-image/</guid>
      <description>&lt;p&gt;BMP is about as plain as image formats get, which makes it a good test of whether a schema can describe a real file down to the last byte. This case study made a tiny bitmap with Python&amp;rsquo;s Pillow library, read it with the released &lt;code&gt;ebyte&lt;/code&gt; 0.1.1 binary, edited it four ways and broke it five ways. Every number below is what the tools printed.&lt;/p&gt;&#xA;&lt;p&gt;The image is 5 pixels wide and 3 tall: a red stripe on top, green in the middle, blue at the bottom. Pillow saved it as a 102-byte, 24-bit BMP. That&amp;rsquo;s a 14-byte file header, a 40-byte info header and 48 bytes of pixels. Five pixels at 3 bytes each make 15 bytes a row, and BMP pads every row to a multiple of 4, so each row carries one extra zero byte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Inspecting and Editing a Real ZIP Archive</title>
      <link>https://ebyte.org/ebyte-case-study-inspecting-and-editing-a-real-zip-archive/</link>
      <pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-inspecting-and-editing-a-real-zip-archive/</guid>
      <description>&lt;p&gt;A ZIP file is a good test of whether a schema can follow a real format&amp;rsquo;s bookkeeping. Every file inside it is described twice: once in a local header just before its data, and again in a central directory near the end. A short end record then says where that directory starts. This case study built a one-file ZIP with Python&amp;rsquo;s &lt;code&gt;zipfile&lt;/code&gt; module, read it with the released &lt;code&gt;ebyte&lt;/code&gt; 0.1.1 binary, edited it and then fed it archives it wasn&amp;rsquo;t built for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Reading and Editing a Real WAV File</title>
      <link>https://ebyte.org/ebyte-case-study-reading-and-editing-a-real-wav-file/</link>
      <pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-reading-and-editing-a-real-wav-file/</guid>
      <description>&lt;p&gt;The example that ships with EByte is a made-up format. This case study uses a real one: a WAV audio file, made by Python&amp;rsquo;s standard &lt;code&gt;wave&lt;/code&gt; module and read with the released &lt;code&gt;ebyte&lt;/code&gt; 0.1.0 binary, downloaded from GitHub like anyone else would get it. Everything below, every number and every error, is what that binary actually printed.&lt;/p&gt;&#xA;&lt;p&gt;The file is a tenth of a second of a 440 Hz tone, mono, 16-bit, 8,000 samples a second. That makes 1,644 bytes: a 44-byte header and 1,600 bytes of samples. The Linux archive&amp;rsquo;s checksum matched SHA256SUMS before anything ran.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EByte Case Study Reading Every Chunk of a WAV File</title>
      <link>https://ebyte.org/ebyte-case-study-reading-every-chunk-of-a-wav-file/</link>
      <pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://ebyte.org/ebyte-case-study-reading-every-chunk-of-a-wav-file/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://ebyte.org/ebyte-case-study-reading-and-editing-a-real-wav-file/&#34;&gt;first WAV case study&lt;/a&gt; used a schema that knew exactly three chunks in a fixed order. Real WAV files aren&amp;rsquo;t that tidy. Recorders and editors add a &lt;code&gt;LIST&lt;/code&gt; chunk with a title and the software name, and some put it before the audio, some after. EByte 0.2.0 adds a &lt;code&gt;repeat&lt;/code&gt; field for this, and this case study tries it on a WAV file with metadata, using the released &lt;code&gt;ebyte&lt;/code&gt; 0.2.0 Linux binary downloaded from GitHub. Its checksum matched SHA256SUMS before anything ran.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
