{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-learning-aes-en","result":{"data":{"markdownRemark":{"id":"9e453061-7349-5ef7-b049-f1cc44dd00cd","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-learning-aes\">original page</a>.</p>\n</blockquote>\n<!-- omit in toc -->\n<h2 id=\"table-of-contents\" style=\"position:relative;\"><a href=\"#table-of-contents\" aria-label=\"table of contents permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Contents</h2>\n<ul>\n<li><a href=\"#references\">References</a></li>\n<li>\n<p><a href=\"#overview-of-aesrijndael\">Overview of AES(Rijndael)</a></p>\n<ul>\n<li><a href=\"#cipher-and-inverse-cipher\">Cipher and Inverse Cipher</a></li>\n<li><a href=\"#key-block-and-round-parameters\">Key, Block, and Round Parameters</a></li>\n<li><a href=\"#about-the-sbox\">About the SBox</a></li>\n<li><a href=\"#about-the-subbytes-function\">About the SubBytes Function</a></li>\n<li><a href=\"#about-the-shiftrows-function\">About the ShiftRows Function</a></li>\n<li><a href=\"#about-the-mixcolumns-function\">About the MixColumns Function</a></li>\n<li><a href=\"#about-the-addroundkey-function\">About the AddRoundKey Function</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#trying-encryption-and-decryption-with-aes\">Trying Encryption and Decryption with AES</a></p>\n<ul>\n<li><a href=\"#decrypting-data-encrypted-with-a-custom-sbox\">Decrypting Data Encrypted with a Custom SBox</a></li>\n</ul>\n</li>\n<li><a href=\"#identifying-aes-encryption-processing-from-decompiled-output\">Identifying AES Encryption Processing from Decompiled Output</a></li>\n<li><a href=\"#summary\">Summary</a></li>\n</ul>\n<p>I recently ran into the problem in WMCTF that I could neither recognize an AES implementation nor write a decryption script on my own, so I decided to sit down and properly study how AES (Rijndael) is implemented.</p>\n<p>Reference: <a href=\"/ctf-wmctf-2023\">Analyzing Android Native Library Functions and Decrypting RC4 and AES [WMCTF 2023] - Kaeru no Himitsukichi</a></p>\n<p>Rev problems that require AES decryption have come up several times before, but up to now I had only been able to solve the ones where I could identify the Key and IV and easily decrypt them with CyberChef. I had not been able to solve problems where I needed to identify the Rijndael SBox and create a decryption script, so I want to use this opportunity to get at least a little better at that.</p>\n<h2 id=\"references\" style=\"position:relative;\"><a href=\"#references\" aria-label=\"references permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>References</h2>\n<p>Reference: <a href=\"https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FIPS 197 AES</a></p>\n<p>Reference: <a href=\"https://www.youtube.com/watch?v=Lr37P_kew2Y&#x26;ab_channel=kurenaif\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[Introduction to Cryptography] Understand AES by Implementing It - YouTube</a></p>\n<p>Reference: <a href=\"https://en.wikipedia.org/wiki/Rijndael_S-box#Forward_S-box\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Rijndael S-box - Wikipedia</a></p>\n<p>Reference: <a href=\"https://qiita.com/tobira-code/items/152befa86bd515f67241\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Understanding AES - Qiita</a></p>\n<p>Reference: <a href=\"https://onboardbase.com/blog/aes-encryption-decryption/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">AES Encryption &#x26; Decryption In Python: Implementation, Modes &#x26; Key Management</a></p>\n<h2 id=\"overview-of-aesrijndael\" style=\"position:relative;\"><a href=\"#overview-of-aesrijndael\" aria-label=\"overview of aesrijndael permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Overview of AES(Rijndael)</h2>\n<p>Currently, AES as a secure encryption algorithm generally refers to the algorithm called Rijndael.</p>\n<p>AES is a symmetric cipher that uses the same key for both data encryption and decryption.</p>\n<p>AES is considered secure because a brute-force search for the key is computationally difficult, and one can say that the longer the key length is—such as AES-256—the stronger the security becomes.</p>\n<p>When using AES for encryption, you first prepare a key whose length is one of 128, 192, 256, or 512 bits.</p>\n<p>In many cases, AES-256, which uses a 256-bit key (44 characters when Base64-encoded), seems to be used.</p>\n<h3 id=\"cipher-and-inverse-cipher\" style=\"position:relative;\"><a href=\"#cipher-and-inverse-cipher\" aria-label=\"cipher and inverse cipher permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cipher and Inverse Cipher</h3>\n<p>In AES, the encryption process is called Cipher, and the decryption process is called Inverse Cipher. They are described by the following pseudocode.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token function\">Cipher</span><span class=\"token punctuation\">(</span>byte in<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> byte out<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> word w<span class=\"token punctuation\">[</span>Nb<span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>Nr<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\nbegin\n    byte state<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span>Nb<span class=\"token punctuation\">]</span>\n    state <span class=\"token operator\">=</span> in\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.4</span>\n\n    <span class=\"token keyword\">for</span> round <span class=\"token operator\">=</span> <span class=\"token number\">1</span> step <span class=\"token number\">1</span> to Nr–<span class=\"token number\">1</span>\n        <span class=\"token function\">SubBytes</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.1</span>\n        <span class=\"token function\">ShiftRows</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.2</span>\n        <span class=\"token function\">MixColumns</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.3</span>\n        <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span>round<span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>round<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span>Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    end <span class=\"token keyword\">for</span>\n    \n    <span class=\"token function\">SubBytes</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">ShiftRows</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span>Nr<span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>Nr<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span>Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    out <span class=\"token operator\">=</span> state\nend</code></pre></div>\n<p>The Inverse Cipher for decryption performs the steps of the Cipher in reverse order.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token function\">InvCipher</span><span class=\"token punctuation\">(</span>byte in<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> byte out<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> word w<span class=\"token punctuation\">[</span>Nb<span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>Nr<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\nbegin\n    byte state<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span>Nb<span class=\"token punctuation\">]</span>\n    state <span class=\"token operator\">=</span> in\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span>Nr<span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>Nr<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span>Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.4</span>\n    \n    <span class=\"token keyword\">for</span> round <span class=\"token operator\">=</span> Nr<span class=\"token operator\">-</span><span class=\"token number\">1</span> step <span class=\"token operator\">-</span><span class=\"token number\">1</span> downto <span class=\"token number\">1</span>\n        <span class=\"token function\">InvShiftRows</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.3.1</span>\n        <span class=\"token function\">InvSubBytes</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.3.2</span>\n        <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span>round<span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>round<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span>Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">InvMixColumns</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.3.3</span>\n    end <span class=\"token keyword\">for</span>\n    \n    <span class=\"token function\">InvShiftRows</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">InvSubBytes</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    out <span class=\"token operator\">=</span> state\nend</code></pre></div>\n<p>Below, I will work through each item.</p>\n<h3 id=\"key-block-and-round-parameters\" style=\"position:relative;\"><a href=\"#key-block-and-round-parameters\" aria-label=\"key block and round parameters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Key, Block, and Round Parameters</h3>\n<p>For now, I will read the description in the Algorithm Specification section of <a href=\"https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FIPS 197 AES</a> while watching <a href=\"https://www.youtube.com/watch?v=Lr37P_kew2Y&#x26;ab_channel=kurenaif\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[Introduction to Cryptography] Understand AES by Implementing It - YouTube</a>.</p>\n<p>First, in the AES algorithm, the lengths of the data to be encrypted or decrypted (<code class=\"language-text\">input block</code>), the encrypted or decrypted data (<code class=\"language-text\">output block</code>), and the data being processed (<code class=\"language-text\">State</code>) are all represented as <code class=\"language-text\">Nb = 4</code>, and this is common across AES-128, 192, and 256.</p>\n<p>Next, in the AES algorithm, the length of the <code class=\"language-text\">Cipher Key</code> is represented by <code class=\"language-text\">Nk</code>; for AES-128, 4 is specified, and for AES-256, 6 is specified.</p>\n<p>Finally, the number of rounds, which indicates how many times the algorithm runs, is represented by <code class=\"language-text\">Nr</code>; for AES-128, 10 is specified, and for AES-256, 12 is specified.</p>\n<p>In <a href=\"https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FIPS 197 AES</a>, these combinations are summarized in the following table.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 629px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0f9d9adaf7d0faae43eabec0dbc5bd63/63a68/image-20230825203717844.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.083333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABY0lEQVQoz3VS2W7CMBDM/38QD/SRS+IhkUqTAAkQCrkI5HTIIcF0d2mq9qErjWyPvbPjtbXn84nfeDwe4CjyHIahY7/fYblcwnVdWJYJ3TBg2zbW6zWSJMHbeIzRaITV6gPX6xUa/om6rhFFEYIwJNE9sixDTOswCHA6nYg7SPEsS7Gj/bbtUFUVtL7v0TSNVOMKjK7rf9Z8SCmF2+0Gn8R4ztzlckEcx8Jvtw7SNBVOYyctCc5mU8wXC8zmcyrQiqOiKOQgC5RlKUV4znsDlKpE+H6/v67MFZk0qDe6rsuoVC3JOfWRk1iExTnxNc/FGUPROiEh1hHBofp0MsFEMEXbdXKY3fN+27bSFnbLI/MsUNJeTWPw3Qo2IT3kBLYs/XAchPQQvu9js9nANE04xFmWBZvgujt5ZeYZURSL+9f11d9Xbkj0fbXC+eyL/UHI8zxpvHc44Hj8FH5AQbfj4C/H8QWwAlX7uX+5wwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0f9d9adaf7d0faae43eabec0dbc5bd63/8ac56/image-20230825203717844.webp 240w,\n/static/0f9d9adaf7d0faae43eabec0dbc5bd63/d3be9/image-20230825203717844.webp 480w,\n/static/0f9d9adaf7d0faae43eabec0dbc5bd63/abae2/image-20230825203717844.webp 629w\"\n              sizes=\"(max-width: 629px) 100vw, 629px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0f9d9adaf7d0faae43eabec0dbc5bd63/8ff5a/image-20230825203717844.png 240w,\n/static/0f9d9adaf7d0faae43eabec0dbc5bd63/e85cb/image-20230825203717844.png 480w,\n/static/0f9d9adaf7d0faae43eabec0dbc5bd63/63a68/image-20230825203717844.png 629w\"\n            sizes=\"(max-width: 629px) 100vw, 629px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0f9d9adaf7d0faae43eabec0dbc5bd63/63a68/image-20230825203717844.png\"\n            alt=\"image-20230825203717844\"\n            title=\"image-20230825203717844\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h3 id=\"about-the-sbox\" style=\"position:relative;\"><a href=\"#about-the-sbox\" aria-label=\"about the sbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About the SBox</h3>\n<p>When doing Rev, you often see this SBox. It is a 16 * 16 byte array used by SubBytes in the Cipher function.</p>\n<p>Likewise, when decrypting ciphertext, the Inverse SBox is used inside the InvSubBytes function.</p>\n<p>The SBox itself is just a byte array, so I will look at its detailed usage in the sections on SubBytes and InvSubBytes.</p>\n<p>By the way, as described in the following Wikipedia article, it seems that the SBox and Inverse SBox normally have default values.</p>\n<p>The Inverse SBox is a byte array produced as the result of a special operation on the default SBox.</p>\n<p>Reference: <a href=\"https://en.wikipedia.org/wiki/Rijndael_S-box#Forward_S-box\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Rijndael S-box - Wikipedia</a></p>\n<p>The operation for deriving the Inverse SBox from the SBox is shown in the following Python script.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">sbox <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span> <span class=\"token number\">0x63</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x77</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x30</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x01</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x67</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x76</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x82</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfa</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x59</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x47</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xad</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xaf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x72</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x36</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcc</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x34</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x31</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x04</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x23</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x18</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x96</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x05</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x12</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x80</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x27</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x75</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x83</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x29</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x84</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x53</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xed</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x20</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfc</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x39</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xef</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xaa</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x43</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x33</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x45</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x02</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x50</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x51</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x40</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x92</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x38</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbc</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xda</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x21</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x13</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xec</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x97</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x44</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x17</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x64</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x19</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x81</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdc</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x22</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x46</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xee</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xde</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x32</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x49</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x06</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x24</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xac</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x62</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x91</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x95</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x79</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x56</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xea</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x08</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xba</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x78</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x25</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x66</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x48</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x03</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x61</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x57</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x86</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x11</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x69</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x94</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x87</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xce</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x55</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x89</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x42</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x68</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x41</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x54</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x16</span> <span class=\"token punctuation\">]</span>\n\ninverse_sbox <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> <span class=\"token number\">256</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">256</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    line <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>sbox<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xf0</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">>></span> <span class=\"token number\">4</span>\n    rol <span class=\"token operator\">=</span> sbox<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xf</span>\n    inverse_sbox<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>line <span class=\"token operator\">*</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> rol<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> i\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>inverse_sbox<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">%</span> <span class=\"token number\">16</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"0x%02X\"</span><span class=\"token operator\">%</span>inverse_sbox<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>end<span class=\"token operator\">=</span><span class=\"token string\">\",\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>If you actually feed the default(?) SBox into this script and run it, you can obtain the same byte sequence as the Inverse SBox listed on the Wikipedia page.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ python3 sample.py\n<span class=\"token operator\">></span>\n0x52,0x09,0x6A,0xD5,0x30,0x36,0xA5,0x38,0xBF,0x40,0xA3,0x9E,0x81,0xF3,0xD7,0xFB,\n0x7C,0xE3,0x39,0x82,0x9B,0x2F,0xFF,0x87,0x34,0x8E,0x43,0x44,0xC4,0xDE,0xE9,0xCB,\n0x54,0x7B,0x94,0x32,0xA6,0xC2,0x23,0x3D,0xEE,0x4C,0x95,0x0B,0x42,0xFA,0xC3,0x4E,\n0x08,0x2E,0xA1,0x66,0x28,0xD9,0x24,0xB2,0x76,0x5B,0xA2,0x49,0x6D,0x8B,0xD1,0x25,\n0x72,0xF8,0xF6,0x64,0x86,0x68,0x98,0x16,0xD4,0xA4,0x5C,0xCC,0x5D,0x65,0xB6,0x92,\n0x6C,0x70,0x48,0x50,0xFD,0xED,0xB9,0xDA,0x5E,0x15,0x46,0x57,0xA7,0x8D,0x9D,0x84,\n0x90,0xD8,0xAB,0x00,0x8C,0xBC,0xD3,0x0A,0xF7,0xE4,0x58,0x05,0xB8,0xB3,0x45,0x06,\n0xD0,0x2C,0x1E,0x8F,0xCA,0x3F,0x0F,0x02,0xC1,0xAF,0xBD,0x03,0x01,0x13,0x8A,0x6B,\n0x3A,0x91,0x11,0x41,0x4F,0x67,0xDC,0xEA,0x97,0xF2,0xCF,0xCE,0xF0,0xB4,0xE6,0x73,\n0x96,0xAC,0x74,0x22,0xE7,0xAD,0x35,0x85,0xE2,0xF9,0x37,0xE8,0x1C,0x75,0xDF,0x6E,\n0x47,0xF1,0x1A,0x71,0x1D,0x29,0xC5,0x89,0x6F,0xB7,0x62,0x0E,0xAA,0x18,0xBE,0x1B,\n0xFC,0x56,0x3E,0x4B,0xC6,0xD2,0x79,0x20,0x9A,0xDB,0xC0,0xFE,0x78,0xCD,0x5A,0xF4,\n0x1F,0xDD,0xA8,0x33,0x88,0x07,0xC7,0x31,0xB1,0x12,0x10,0x59,0x27,0x80,0xEC,0x5F,\n0x60,0x51,0x7F,0xA9,0x19,0xB5,0x4A,0x0D,0x2D,0xE5,0x7A,0x9F,0x93,0xC9,0x9C,0xEF,\n0xA0,0xE0,0x3B,0x4D,0xAE,0x2A,0xF5,0xB0,0xC8,0xEB,0xBB,0x3C,0x83,0x53,0x99,0x61,\n0x17,0x2B,0x04,0x7E,0xBA,0x77,0xD6,0x26,0xE1,0x69,0x14,0x63,0x55,0x21,0x0C,0x7D,</code></pre></div>\n<p>As in the challenge solved in <a href=\"/ctf-wmctf-2023\">Analyzing Android Native Library Functions and Decrypting RC4 and AES [WMCTF 2023] - Kaeru no Himitsukichi</a>, when the SBox byte sequence is processed in the binary—for example, when it is swapped—or when a custom SBox is used in the first place, it seems necessary to run the above script in order to obtain the Inverse SBox used for decryption.</p>\n<h3 id=\"about-the-subbytes-function\" style=\"position:relative;\"><a href=\"#about-the-subbytes-function\" aria-label=\"about the subbytes function permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About the SubBytes Function</h3>\n<p>The SubBytes function appears to be a function that transforms each byte of the State using the substitution table called SBox.</p>\n<p>For how SubBytes transforms input values, the Appendix B – Cipher Example section was helpful.</p>\n<p>Here, the input value <code class=\"language-text\">input</code> is divided into blocks of 4 bytes, and the transitions when they are transformed using the SBox are shown as an example.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 249px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/15c4c17231c8c7b76953153b94526b74/6a5fb/image-20230825225455438.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 52.916666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACSUlEQVQoz01TaVPiQBDN//8bq+63LTmsqEBClEOEJEASQg5IgnJTKiKXqG+7x13KqZqame6e6dev30hWu41OpwPf92Hb9nHveR4cx8Hz8zN49Pt94e92u+T3xN513aMtCAIcDgdI8kUGSlFD7kpGrqCiqBZQUFRcXcr4c56GS8FfX18o5HM4PT3DXbUCWZZRrZRx8usEqlaCWsgjnbnAbreF9Pr6ivl8jhWts9kcm80ay+USw+EQLy9L+JR5v98TWhtvb294eHjA5+cnxuOxiJ1OZ9hut7AsS/ilbCaNfEHB7U0R8uUVTENHuVxBPpfD+XmKyvHEA4xcUYsUp6GoaahWy8hmL8imQiuquM6r2KzXkDyvK8oajYbo9XpiHY1GgpOQzr7/zU2jXsdisUAvDDAkf9TvUXwfURRjOhmjoRtYrwmhaRrQ6eBSM6p3NbRaJtqWTQiqYjLhh8MHcVZCs2WhSfGGrqPe0GGaJuqUyNAbyOWVb4TlUglOxxVGx+mg27HFRU7CwUHYw/v7O6yWAT/sI4kjGAbtgxD3tRpsUkLXdVCq3BGXG0iDwUBIYjKZiDJ5nc1mCMMQcZwIhPwgP8LNY3q4WUHg/7tD63Qqkq9WK0i/z05xX2/gWs5AvSkLWdQos6ooSKUzgkNuyq2miCY0my0oJCtGlUqlqBo6k6Sy8jX2ux2kCbU/SQZCwIz26elJkP/4+CgQscgZYYsusi+OYyGjKIqOdxhZmz6IQMhq51/Bk8v7uefJOuWRJMnR9jP2v40p4kr+ApV2B3xKfEKRAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/15c4c17231c8c7b76953153b94526b74/8ac56/image-20230825225455438.webp 240w,\n/static/15c4c17231c8c7b76953153b94526b74/1fa9f/image-20230825225455438.webp 249w\"\n              sizes=\"(max-width: 249px) 100vw, 249px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/15c4c17231c8c7b76953153b94526b74/8ff5a/image-20230825225455438.png 240w,\n/static/15c4c17231c8c7b76953153b94526b74/6a5fb/image-20230825225455438.png 249w\"\n            sizes=\"(max-width: 249px) 100vw, 249px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/15c4c17231c8c7b76953153b94526b74/6a5fb/image-20230825225455438.png\"\n            alt=\"image-20230825225455438\"\n            title=\"image-20230825225455438\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>For details on the implementation of the SubBytes function, the explanation around the 13-minute mark in the video <a href=\"https://youtu.be/Lr37P_kew2Y?si=B2qFAOQp9ttVs8PL&#x26;t=792\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[Introduction to Cryptography] Understand AES by Implementing It</a> was helpful.</p>\n<h3 id=\"about-the-shiftrows-function\" style=\"position:relative;\"><a href=\"#about-the-shiftrows-function\" aria-label=\"about the shiftrows function permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About the ShiftRows Function</h3>\n<p>The ShiftRows function is called after SubBytes during the processing of each round in the Cipher.</p>\n<p>This processing is relatively simple: it seems to left-rotate each column of the State(?), wrapping the overflowing bytes back around to the right side.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 710px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/7131f/image-20230825225829102.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVQ4y3WTW4+CQAyF+f//yVfjmzFZE3W5CKh4QYWAmijS7VcdgtndSZoZ6Olpe6bjyT+rKAoJw1CCwJf5fC7L5VLKsvwPLm3b2u49n095PB7SNE1n9/tdVquVbNZrWb8tyzIlD+R2uxmGGGd8O1Jvu91KkiRGEMexBUZRZDsAF8Ti/2KxMN9mszEj7nA4dKQeZLRE9m8FhxpEq4D6rbBOp5P4vm9YyIMgtO9USTtCVz6t99t3ROz9cx/D2cnUaeiyV3UtVVVZZVwIZwIdIVZfLlLXlez3+w5zvV4/LsYIm+Zh+u0UCCG67nY7Da4/bhLN9urHl+e5EWMfl/IibOwm0QiDlBEhCVq5YFe9q/B8PpvPXdoHYZqm5jyqUQEBkI1GIxMeEjqABD+Jj8fj3xWSgZkDDBBiV+FwOLRk/QrZwWKQ/qqwbZ82iwDzXDXUOYMYosFgIOPx2ILRlv9Ztu0Su/FyyyMj4kMIQZKkNqzr96Azc8wlGuOP46VJYed3TFkWUmhHtO5NJhMFv6YegjCMTCPernvDs9nczpESL3T/Vk3R1ddkAYOu9jWd6gjd5AeXONqc0JRHsQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/8ac56/image-20230825225829102.webp 240w,\n/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/d3be9/image-20230825225829102.webp 480w,\n/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/457aa/image-20230825225829102.webp 710w\"\n              sizes=\"(max-width: 710px) 100vw, 710px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/8ff5a/image-20230825225829102.png 240w,\n/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/e85cb/image-20230825225829102.png 480w,\n/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/7131f/image-20230825225829102.png 710w\"\n            sizes=\"(max-width: 710px) 100vw, 710px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/28aa8e3fd5f4b2f3b5beaa82b0e5d034/7131f/image-20230825225829102.png\"\n            alt=\"image-20230825225829102\"\n            title=\"image-20230825225829102\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>The Appendix examples also let you confirm the movement of the byte values.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 373px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/aabfc0898bcb809f3ba31e01ccd65e49/67a5d/image-20230825230248901.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 35.416666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABS0lEQVQoz02RzW6DMBCEef/HaiBJwWBjAzYEiPKrcAw0ipTLdHfbVD2shHc8346XyDmHoihgjIFSCnmeQ1F9PR6oK4c0zaBJS9OUNIWqrvF6vej8KT32brdblGUJay2iLMvQti2qqkIIQS6k1LvdJlijobVBTRAeHHwj5/v9jvV6LSFYYxh74zhGpMhcN40IXdeS0VLCAtM0oQ2ehnUCc66C93yv+QEmCYVwv7AWwzDItwCZ7gnKDa6Mns5A7wlIGvfYzCswpcU8z/JMQy/gQd1uh4b8m82GgGTu+56gXsAsGFMKcBh6jOOIQCvpuo7SBnqNF+A7CHvH/V4S8vqi1epD9sYL553wT+FJNwJq6qWZkiFaa9jSUPocyzIjSWLkFIYDWevkh8gOD4cDTqeT1PF4lOLesiy4XK9/vbd+Pp/xfD4l+X+Na09JvwGcZOuF6SwtwAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/aabfc0898bcb809f3ba31e01ccd65e49/8ac56/image-20230825230248901.webp 240w,\n/static/aabfc0898bcb809f3ba31e01ccd65e49/48a24/image-20230825230248901.webp 373w\"\n              sizes=\"(max-width: 373px) 100vw, 373px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/aabfc0898bcb809f3ba31e01ccd65e49/8ff5a/image-20230825230248901.png 240w,\n/static/aabfc0898bcb809f3ba31e01ccd65e49/67a5d/image-20230825230248901.png 373w\"\n            sizes=\"(max-width: 373px) 100vw, 373px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/aabfc0898bcb809f3ba31e01ccd65e49/67a5d/image-20230825230248901.png\"\n            alt=\"image-20230825230248901\"\n            title=\"image-20230825230248901\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h3 id=\"about-the-mixcolumns-function\" style=\"position:relative;\"><a href=\"#about-the-mixcolumns-function\" aria-label=\"about the mixcolumns function permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About the MixColumns Function</h3>\n<p>During round processing, the function called after ShiftRows is MixColumns.</p>\n<p>MixColumns seems to be a function that multiplies the State by a polynomial with coefficients.</p>\n<p>(My understanding is shaky here, so please refer to <a href=\"https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FIPS 197 AES</a> for details.)</p>\n<p>The State transitions after running the MixColumns example shown in the Appendix are as follows.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/45d8338a147307f104bee6616f6c21c3/0b533/image-20230825230637292.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9ElEQVQY0y2RyxaDIAxE/f//qg/wDQqCoraLuvAfpknsLmcy3DMZsq5toZSC1hp5UeC+b/R9hzwvSK9QVhXenw+WZUFFs9YKr1eO4zhw7AlFWaKuaxT01hiDbBxHGZxzaJoW1/cLaw2GYYAlnffHeQqQ52maaG9FS9uKtutFe3YzsnmexcxABl/XhXVdwbonzdoJ5/nGRppzHikl8aZ9xy6z/7/3mDghQ4yxAugpFQMX7x+gd3R+j53OizEIKIYgCTeCMdBSOk9+ThljRMa3K6XR/HtgoKZOWWupX+5t3TZK4R9f05BWIhA4hIW6zsXHf8Bn/wDBeFzYh71UiwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/45d8338a147307f104bee6616f6c21c3/8ac56/image-20230825230637292.webp 240w,\n/static/45d8338a147307f104bee6616f6c21c3/d3be9/image-20230825230637292.webp 480w,\n/static/45d8338a147307f104bee6616f6c21c3/b0a15/image-20230825230637292.webp 500w\"\n              sizes=\"(max-width: 500px) 100vw, 500px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/45d8338a147307f104bee6616f6c21c3/8ff5a/image-20230825230637292.png 240w,\n/static/45d8338a147307f104bee6616f6c21c3/e85cb/image-20230825230637292.png 480w,\n/static/45d8338a147307f104bee6616f6c21c3/0b533/image-20230825230637292.png 500w\"\n            sizes=\"(max-width: 500px) 100vw, 500px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/45d8338a147307f104bee6616f6c21c3/0b533/image-20230825230637292.png\"\n            alt=\"image-20230825230637292\"\n            title=\"image-20230825230637292\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>The video <a href=\"https://www.youtube.com/watch?v=Lr37P_kew2Y&#x26;ab_channel=kurenaif\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[Introduction to Cryptography] Understand AES by Implementing It - YouTube</a> also explains this from around the 16-minute mark.</p>\n<h3 id=\"about-the-addroundkey-function\" style=\"position:relative;\"><a href=\"#about-the-addroundkey-function\" aria-label=\"about the addroundkey function permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About the AddRoundKey Function</h3>\n<p>As can be seen from the following Cipher pseudocode, the AddRoundKey function seems to be called before the rounds begin, at the end of each round, and again at the end of the Cipher.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token function\">Cipher</span><span class=\"token punctuation\">(</span>byte in<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> byte out<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> word w<span class=\"token punctuation\">[</span>Nb<span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>Nr<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\nbegin\n    byte state<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span>Nb<span class=\"token punctuation\">]</span>\n    state <span class=\"token operator\">=</span> in\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.4</span>\n\n    <span class=\"token keyword\">for</span> round <span class=\"token operator\">=</span> <span class=\"token number\">1</span> step <span class=\"token number\">1</span> to <span class=\"token number\">1</span>Nr\n        <span class=\"token function\">SubBytes</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.1</span>\n        <span class=\"token function\">ShiftRows</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.2</span>\n        <span class=\"token function\">MixColumns</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span> <span class=\"token comment\">// See Sec. 5.1.3</span>\n        <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span>round<span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>round<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span>Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    end <span class=\"token keyword\">for</span>\n    \n    <span class=\"token function\">SubBytes</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">ShiftRows</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>state<span class=\"token punctuation\">,</span> w<span class=\"token punctuation\">[</span>Nr<span class=\"token operator\">*</span>Nb<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>Nr<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span>Nb<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    out <span class=\"token operator\">=</span> state\nend</code></pre></div>\n<p>The AddRoundKey function is used for the transformation that adds the Round Key to the State using XOR.</p>\n<p>The length of the Round Key is equal to the size of the State, which seems to be 128 bits (16 bytes) when <code class=\"language-text\">Nb = 4</code>.</p>\n<h2 id=\"trying-encryption-and-decryption-with-aes\" style=\"position:relative;\"><a href=\"#trying-encryption-and-decryption-with-aes\" aria-label=\"trying encryption and decryption with aes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Trying Encryption and Decryption with AES</h2>\n<p>At this point, I have a rough image of the processing performed inside the AES Cipher, so I would like to actually try encrypting and decrypting data.</p>\n<p>Implementing the AES logic myself is not the point this time, so I will simply use sample code I obtained from GitHub.</p>\n<p>Reference: <a href=\"https://github.com/kokke/tiny-AES-c\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">kokke/tiny-AES-c: Small portable AES128/192/256 in C</a></p>\n<p>First, I download the code from my fork of the repository based on tiny-AES-c from the repository above, and try building <code class=\"language-text\">test.elf</code> with the <code class=\"language-text\">make</code> command.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">git</span> clone https://github.com/kash1064/tiny-AES-c\n<span class=\"token builtin class-name\">cd</span> tiny-AES-c\n<span class=\"token function\">make</span> clean <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">make</span> <span class=\"token assign-left variable\">AES256</span><span class=\"token operator\">=</span><span class=\"token number\">1</span> <span class=\"token operator\">&amp;&amp;</span> ./test.elf</code></pre></div>\n<p>At build time, I specify AES-256 as the encryption algorithm.</p>\n<p>Looking at the source code of the original repository, you can see that <code class=\"language-text\">sbox</code> and <code class=\"language-text\">rsbox</code>, as well as the AES Key and PlainText, are each hard-coded.</p>\n<p>In the source code in my fork, I made it possible to encode arbitrary Key and Plain Text byte sequences and try encryption and decryption.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/96b057be28dc47ba576bf9fb9f066ac0/561da/image-20230826004544253.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 17.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVQY012NyQ6CMBCGexJewAAuWOBgTAwCigJFZE2MxqPx/Z9k7EyLUQ9f/mWmU3ZdVyCsCLYTDqHpKwyN+aej/8b49ey2qaGYhlA6MZR2BEJydhJCWDupqqdultDnmEs7JrAbM+6wV/aAlp+gXqbQuEdoVhrpcfmyONCsdtWcvKaa76knZMY77Jneofdz6L0cOk/pEBQEHsBZ52WfruUZZdrnqu/02yEQ8AZJs3nsNvLucAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/96b057be28dc47ba576bf9fb9f066ac0/8ac56/image-20230826004544253.webp 240w,\n/static/96b057be28dc47ba576bf9fb9f066ac0/d3be9/image-20230826004544253.webp 480w,\n/static/96b057be28dc47ba576bf9fb9f066ac0/e46b2/image-20230826004544253.webp 960w,\n/static/96b057be28dc47ba576bf9fb9f066ac0/bd9c6/image-20230826004544253.webp 969w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/96b057be28dc47ba576bf9fb9f066ac0/8ff5a/image-20230826004544253.png 240w,\n/static/96b057be28dc47ba576bf9fb9f066ac0/e85cb/image-20230826004544253.png 480w,\n/static/96b057be28dc47ba576bf9fb9f066ac0/d9199/image-20230826004544253.png 960w,\n/static/96b057be28dc47ba576bf9fb9f066ac0/561da/image-20230826004544253.png 969w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/96b057be28dc47ba576bf9fb9f066ac0/d9199/image-20230826004544253.png\"\n            alt=\"image-20230826004544253\"\n            title=\"image-20230826004544253\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>When embedding arbitrary input, edit the following code in <code class=\"language-text\">test.c</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">static</span> <span class=\"token keyword\">int</span> <span class=\"token function\">encrypt_ecb</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">if</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>AES256<span class=\"token punctuation\">)</span></span></span>\n    <span class=\"token class-name\">uint8_t</span> key<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x77</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x81</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x61</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x08</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf4</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">elif</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>AES192<span class=\"token punctuation\">)</span></span></span>\n    <span class=\"token class-name\">uint8_t</span> key<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xda</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x64</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x80</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x79</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x62</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xea</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7b</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">elif</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>AES128<span class=\"token punctuation\">)</span></span></span>\n    <span class=\"token class-name\">uint8_t</span> key<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x16</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3c</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n    <span class=\"token comment\">// 16 バイトの倍数</span>\n    <span class=\"token comment\">// \",\".join([hex(ord(c)) for c in \"testtesttesttest\"])</span>\n    <span class=\"token class-name\">uint8_t</span> in<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>  <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">struct</span> <span class=\"token class-name\">AES_ctx</span> ctx<span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Plain Text:\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"0x%02x, \"</span><span class=\"token punctuation\">,</span> in<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">AES_init_ctx</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>ctx<span class=\"token punctuation\">,</span> key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">AES_ECB_encrypt</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>ctx<span class=\"token punctuation\">,</span> in<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ECB encrypt:\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"0x%02x, \"</span><span class=\"token punctuation\">,</span> in<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token keyword\">static</span> <span class=\"token keyword\">int</span> <span class=\"token function\">decrypt_ecb</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">if</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>AES256<span class=\"token punctuation\">)</span></span></span>\n    <span class=\"token class-name\">uint8_t</span> key<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x77</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x81</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x61</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x08</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf4</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">uint8_t</span> in<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>  <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x50</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x67</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x92</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x43</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0f</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">elif</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>AES192<span class=\"token punctuation\">)</span></span></span>\n    <span class=\"token class-name\">uint8_t</span> key<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xda</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x64</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x80</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x79</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe5</span><span class=\"token punctuation\">,</span>\n                      <span class=\"token number\">0x62</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xea</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7b</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">uint8_t</span> in<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>  <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0xbd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x33</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x45</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x12</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x57</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcc</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">elif</span> <span class=\"token expression\"><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>AES128<span class=\"token punctuation\">)</span></span></span>\n    <span class=\"token class-name\">uint8_t</span> key<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x16</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3c</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">uint8_t</span> in<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>  <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> <span class=\"token number\">0x3a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x36</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x24</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x66</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xef</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x97</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span>\n\n    <span class=\"token keyword\">struct</span> <span class=\"token class-name\">AES_ctx</span> ctx<span class=\"token punctuation\">;</span>\n    \n    <span class=\"token function\">AES_init_ctx</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>ctx<span class=\"token punctuation\">,</span> key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">AES_ECB_decrypt</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>ctx<span class=\"token punctuation\">,</span> in<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">// \"\".join([chr(b) for b in []])</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ECB decrypt: \\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>in<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"0x%02x, \"</span><span class=\"token punctuation\">,</span> in<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">return</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>I verified whether this result was actually correct by comparing it with the result of the following Python script.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> Crypto<span class=\"token punctuation\">.</span>Cipher <span class=\"token keyword\">import</span> AES\n\nkey <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x77</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x81</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x61</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x08</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf4</span><span class=\"token punctuation\">]</span>\nkey <span class=\"token operator\">=</span> <span class=\"token builtin\">bytes</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> key<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\ncipher <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>new<span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">,</span> AES<span class=\"token punctuation\">.</span>MODE_ECB<span class=\"token punctuation\">)</span>\n\nplaintext <span class=\"token operator\">=</span> <span class=\"token string\">b\"testtesttesttest\"</span>\ncipher_text <span class=\"token operator\">=</span> cipher<span class=\"token punctuation\">.</span>encrypt<span class=\"token punctuation\">(</span>plaintext<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"PlainText : \"</span><span class=\"token punctuation\">,</span> plaintext<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Encrypt : \"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\",\"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> cipher_text<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Decrypt : \"</span><span class=\"token punctuation\">,</span> cipher<span class=\"token punctuation\">.</span>decrypt<span class=\"token punctuation\">(</span>cipher_text<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Running the code above produced the same result as when encrypting with the customized C program.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 916px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/fee75fa034e978a70b9dc8ca8e2587dc/59822/image-20230826091806026.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 6.666666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAARUlEQVQI12MItfL976lu999Jwfx/mIXv/3AgDjX3+R9g4AYUs/jvDMQOsqb/HeXMwGwQ7ShvBlbvJG8OlgOzgXJmglr/AUaRIO4qRP7LAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/fee75fa034e978a70b9dc8ca8e2587dc/8ac56/image-20230826091806026.webp 240w,\n/static/fee75fa034e978a70b9dc8ca8e2587dc/d3be9/image-20230826091806026.webp 480w,\n/static/fee75fa034e978a70b9dc8ca8e2587dc/3fccf/image-20230826091806026.webp 916w\"\n              sizes=\"(max-width: 916px) 100vw, 916px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/fee75fa034e978a70b9dc8ca8e2587dc/8ff5a/image-20230826091806026.png 240w,\n/static/fee75fa034e978a70b9dc8ca8e2587dc/e85cb/image-20230826091806026.png 480w,\n/static/fee75fa034e978a70b9dc8ca8e2587dc/59822/image-20230826091806026.png 916w\"\n            sizes=\"(max-width: 916px) 100vw, 916px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/fee75fa034e978a70b9dc8ca8e2587dc/59822/image-20230826091806026.png\"\n            alt=\"image-20230826091806026\"\n            title=\"image-20230826091806026\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h3 id=\"decrypting-data-encrypted-with-a-custom-sbox\" style=\"position:relative;\"><a href=\"#decrypting-data-encrypted-with-a-custom-sbox\" aria-label=\"decrypting data encrypted with a custom sbox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Decrypting Data Encrypted with a Custom SBox</h3>\n<p>Next, I also tried customizing the SBox.</p>\n<p>The SBox is hard-coded in <code class=\"language-text\">aes.c</code>.</p>\n<p>Remembering the challenge in <a href=\"/ctf-wmctf-2023\">Analyzing Android Native Library Functions and Decrypting RC4 and AES [WMCTF 2023]</a>, I replaced the SBox and Inverse SBox with the following, respectively.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">static</span> <span class=\"token keyword\">const</span> <span class=\"token class-name\">uint8_t</span> sbox<span class=\"token punctuation\">[</span><span class=\"token number\">256</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n<span class=\"token number\">0x29</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x40</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x57</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xe1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x54</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x82</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xde</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x51</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x68</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x96</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xad</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xdb</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x20</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xaa</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xc1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xef</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x06</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x62</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x79</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xec</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x03</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x31</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x48</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x76</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbb</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xe9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x00</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x45</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xa1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xcf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xfd</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x42</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x59</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x87</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xcc</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xfa</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x11</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x56</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x84</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xc9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x53</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x81</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xaf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xdd</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x39</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x50</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x67</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x95</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xac</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xda</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xf1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x08</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x64</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x92</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xa9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xee</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x05</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x33</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x61</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x78</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbd</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x02</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x19</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x47</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x75</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xba</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xd1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xff</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x44</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x72</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x89</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xce</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xfc</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x41</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x86</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xcb</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xf9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x55</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x83</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xb1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x69</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x80</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x97</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xdc</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x21</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x66</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x94</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xd9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x63</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x91</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xed</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x04</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x49</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x77</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbc</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xea</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x01</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x46</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xd0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xfe</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x43</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5a</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xcd</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xe4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xfb</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x12</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">if</span> <span class=\"token expression\"><span class=\"token punctuation\">(</span><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>CBC<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span> CBC <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span><span class=\"token function\">defined</span><span class=\"token punctuation\">(</span>ECB<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span> ECB <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span></span></span>\n<span class=\"token keyword\">static</span> <span class=\"token keyword\">const</span> <span class=\"token class-name\">uint8_t</span> rsbox<span class=\"token punctuation\">[</span><span class=\"token number\">256</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n<span class=\"token number\">0x41</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xDD</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x84</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x79</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x20</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xBC</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x63</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xB1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xFF</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x42</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xE9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xDE</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x21</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xBD</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x64</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x59</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x00</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x43</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xEA</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x91</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xDF</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x86</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xC9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xBE</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x65</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x01</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x44</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xEB</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x92</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x39</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x87</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xCA</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xBF</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x66</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x02</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xA9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x50</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x45</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xEC</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xE1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xCB</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x72</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x19</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x67</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x03</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xAA</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x51</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x46</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xED</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x94</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x89</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xCC</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xC1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x68</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x04</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xAB</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x52</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xF9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x47</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xEE</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x95</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x31</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xCD</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x69</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x05</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xAC</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x53</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xFA</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xA1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x48</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xEF</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x96</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xD9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x80</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xCE</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x75</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x11</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB8</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x06</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xAD</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x54</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xFB</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x49</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x97</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x33</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xDA</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x81</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xCF</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x76</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xB9</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xAE</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x55</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xFC</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xF1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xDB</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x82</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x29</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xD0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x77</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xBA</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x61</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x08</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xAF</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x56</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xFD</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4B</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF2</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x40</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xE7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8E</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xDC</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x83</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2A</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0xD1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x78</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1F</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xC6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6D</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xBB</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x62</span><span class=\"token punctuation\">,</span>\n<span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xB0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x57</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xFE</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xA5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4C</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xF3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9A</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">endif</span></span></code></pre></div>\n<p>Next, using the key and encrypted data identified from the binary, I replaced the code in <code class=\"language-text\">test.c</code> with the following.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdint.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;string.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;math.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdlib.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;time.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">\"aes.h\"</span></span>\n\n<span class=\"token comment\">// test.c にコピーして使う</span>\n<span class=\"token comment\">// SBox をカスタマイズする場合は、aes.c を編集する</span>\nos<span class=\"token punctuation\">.</span>environ<span class=\"token punctuation\">[</span><span class=\"token char\">'PYGAME_HIDE_SUPPORT_PROMPT'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> '\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> buf<span class=\"token punctuation\">[</span><span class=\"token number\">16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token number\">0x2B</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xC8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x20</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8B</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5C</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0D</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xA7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9B</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2A</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x51</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3A</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xD2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x71</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xCA</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x50</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>key <span class=\"token operator\">=</span> <span class=\"token function\">malloc</span><span class=\"token punctuation\">(</span><span class=\"token number\">17</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">memcpy</span><span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">,</span> <span class=\"token string\">\"Re_1s_eaSy123456\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">17</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">struct</span> <span class=\"token class-name\">AES_ctx</span> aesCtx<span class=\"token punctuation\">;</span>\n    <span class=\"token function\">AES_init_ctx</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>aesCtx<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>key<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">AES_ECB_decrypt</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>aesCtx<span class=\"token punctuation\">,</span> buf<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"%s\\n\"</span><span class=\"token punctuation\">,</span> buf<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// WMCTF{Re_1s_eaSy_eZ_Rc4_@nd_AES!}</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>After that, when I ran <code class=\"language-text\">make test</code>, I was able to confirm that the AES-128 decryption result correctly became the password string <code class=\"language-text\">_eZ_Rc4_@nd_AES!</code>, as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 774px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/28bb280ce68a65c8d7ca9f83b49ad77a/41d3b/image-20230826115645877.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 69.58333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAACiUlEQVQ4y3VUaVfaUBD1Y2vdWqsW21oFQdwgCQmEkJCQjU12kM2tHE7//z+4nXk5oH7ww5x5zHnvZu6dO2x4qgtTtmBJFgI62wkb5XQII+5AP7VQuanDSfuwUh4GhTZmpS4e7AHurl04vzUECQP691tkPycgbZ5jYxlMMZCqGCp1LIMZ5mYXC+8efTlETwrwrzbHizvCszOkfI+Hch/PlRGW1TlmdPfFG8M705H5FI8AuzKBqU20b32MCy00Lh2E5ybU3cvoq1+SUWwmIVNWtlMic01+EwzG9zd6aoiWVEEzY8NPFmDGsrB/qSjs38A4zKJ8rMD8IUURk1E6irIVU2AcZUVd2b54paznj5FV96Bo+9BLMWiJA7hJGe6JThqpaKRtVJOm6LqWssS5dlFG88qBHzfE2TjMvALO7A7ubh20shXMyh0MtBompTZJ4NGjCh7tIaY0iKnRwdzqC91YxyfScZRv0u8eKif5Vw0nxbbQj7WbGl10sgHq1BXnR5rmWG8RPZmoEU2iX/6ZE7lEVAV9ymu9xVCkEBOjjb5SFTTYCqwhBwP7Z0Voe1fQ6JG2dyly/uuV0FjdTdP5WgxlDRicl1A8yJD4OTgnBEYdMAWDalx3/xREcI3t4Z4W3tW4Af7QGrBDHbK4+W/X6yLHygorO3wUqztr2yzCmRB3kKvjmYw7Jk2fnJHQkCVYBBNhaB7CgpaA73Be1j4w9rjYQo+2ggH48lBroKew2Rv464/Fmnmnugg/XhSaMiNeOabMtXerxwD3hTsByD5jw/L0eChdWj32WW4nDWUrFW3JVvLNOcorugKwmjLh0GOmzVTZb/wHwHYQQ+HuqCsO7moVIQ2TB8R0eeorwP981sS/X/FxCQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/28bb280ce68a65c8d7ca9f83b49ad77a/8ac56/image-20230826115645877.webp 240w,\n/static/28bb280ce68a65c8d7ca9f83b49ad77a/d3be9/image-20230826115645877.webp 480w,\n/static/28bb280ce68a65c8d7ca9f83b49ad77a/9b58d/image-20230826115645877.webp 774w\"\n              sizes=\"(max-width: 774px) 100vw, 774px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/28bb280ce68a65c8d7ca9f83b49ad77a/8ff5a/image-20230826115645877.png 240w,\n/static/28bb280ce68a65c8d7ca9f83b49ad77a/e85cb/image-20230826115645877.png 480w,\n/static/28bb280ce68a65c8d7ca9f83b49ad77a/41d3b/image-20230826115645877.png 774w\"\n            sizes=\"(max-width: 774px) 100vw, 774px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/28bb280ce68a65c8d7ca9f83b49ad77a/41d3b/image-20230826115645877.png\"\n            alt=\"image-20230826115645877\"\n            title=\"image-20230826115645877\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"identifying-aes-encryption-processing-from-decompiled-output\" style=\"position:relative;\"><a href=\"#identifying-aes-encryption-processing-from-decompiled-output\" aria-label=\"identifying aes encryption processing from decompiled output permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Identifying AES Encryption Processing from Decompiled Output</h2>\n<p>At this point, I feel that I have somewhat grasped the overall feel of the processing that happens inside the AES Cipher.</p>\n<p>Up to now, I had been thinking, “How am I supposed to identify AES from decompiled output?” But now that my understanding of AES implementations has improved a little, I feel like I will be able to spot it more smoothly than before.</p>\n<p>So, let’s look at the decompiled output of tiny-AES-c in IDA.</p>\n<ul>\n<li>Decompiled output of the <code class=\"language-text\">Cipher</code> function in tiny-AES-c</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\">__int64 __fastcall <span class=\"token function\">Cipher</span><span class=\"token punctuation\">(</span>__int64 a1<span class=\"token punctuation\">,</span> __int64 a2<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">int</span> v2<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r13d</span>\n  <span class=\"token keyword\">int</span> v3<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r14d</span>\n  <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span> v4<span class=\"token punctuation\">;</span> <span class=\"token comment\">// ebx</span>\n  _BYTE <span class=\"token operator\">*</span>v5<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r10</span>\n  __int64 v6<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r11</span>\n  _BYTE <span class=\"token operator\">*</span>v7<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rcx</span>\n  <span class=\"token keyword\">unsigned</span> __int8 <span class=\"token operator\">*</span>v8<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rdx</span>\n  <span class=\"token keyword\">unsigned</span> __int8 <span class=\"token operator\">*</span>v9<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rax</span>\n  __int64 v10<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rsi</span>\n  __int64 v11<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r8</span>\n  <span class=\"token keyword\">char</span> v12<span class=\"token punctuation\">;</span> <span class=\"token comment\">// al</span>\n  <span class=\"token keyword\">char</span> v13<span class=\"token punctuation\">;</span> <span class=\"token comment\">// dl</span>\n  <span class=\"token keyword\">char</span> v14<span class=\"token punctuation\">;</span> <span class=\"token comment\">// al</span>\n  <span class=\"token keyword\">char</span> v15<span class=\"token punctuation\">;</span> <span class=\"token comment\">// dl</span>\n  <span class=\"token keyword\">char</span> v16<span class=\"token punctuation\">;</span> <span class=\"token comment\">// al</span>\n  <span class=\"token keyword\">char</span> v17<span class=\"token punctuation\">;</span> <span class=\"token comment\">// dl</span>\n  <span class=\"token keyword\">char</span> v18<span class=\"token punctuation\">;</span> <span class=\"token comment\">// al</span>\n  _BYTE <span class=\"token operator\">*</span>v19<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rcx</span>\n  <span class=\"token keyword\">int</span> v20<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r12d</span>\n  <span class=\"token keyword\">char</span> v21<span class=\"token punctuation\">;</span> <span class=\"token comment\">// al</span>\n  <span class=\"token keyword\">int</span> v22<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r12d</span>\n  <span class=\"token keyword\">char</span> v23<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r8</span>\n  __int64 v24<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rcx</span>\n  __int64 v25<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rdx</span>\n  __int64 v26<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rcx</span>\n  __int64 v27<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rdx</span>\n  <span class=\"token keyword\">unsigned</span> __int8 v28<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r8</span>\n  __int64 v29<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rcx</span>\n  __int64 v30<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rdx</span>\n  __int64 v31<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r10</span>\n  __int64 v32<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r11</span>\n  _BYTE <span class=\"token operator\">*</span>v33<span class=\"token punctuation\">;</span> <span class=\"token comment\">// r9</span>\n  __int64 v34<span class=\"token punctuation\">;</span> <span class=\"token comment\">// rdi</span>\n\n  v4 <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n  <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span><span class=\"token number\">0LL</span><span class=\"token punctuation\">,</span> a1<span class=\"token punctuation\">,</span> a2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">{</span>\n    v7 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">;</span>\n    v8 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">do</span>\n    <span class=\"token punctuation\">{</span>\n      v9 <span class=\"token operator\">=</span> v8<span class=\"token punctuation\">;</span>\n      <span class=\"token function\">LODWORD</span><span class=\"token punctuation\">(</span>v10<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">do</span>\n      <span class=\"token punctuation\">{</span>\n        v11 <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>v9<span class=\"token punctuation\">;</span>\n        v10 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v10 <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        v9 <span class=\"token operator\">+=</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\n        <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>v9 <span class=\"token operator\">-</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> sbox<span class=\"token punctuation\">[</span>v11<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span> <span class=\"token punctuation\">(</span>_BYTE<span class=\"token punctuation\">)</span>v10 <span class=\"token operator\">!=</span> <span class=\"token number\">4</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token operator\">++</span>v8<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span> v5 <span class=\"token operator\">+</span> <span class=\"token number\">4</span> <span class=\"token operator\">!=</span> v8 <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    v12 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v13 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">13</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v12<span class=\"token punctuation\">;</span>\n    v14 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v13<span class=\"token punctuation\">;</span>\n    v15 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v14<span class=\"token punctuation\">;</span>\n    v16 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v15<span class=\"token punctuation\">;</span>\n    v17 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">14</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v16<span class=\"token punctuation\">;</span>\n    v18 <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v17<span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">15</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">11</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">LOBYTE</span><span class=\"token punctuation\">(</span>v8<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> v5<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> v18<span class=\"token punctuation\">;</span>\n    v5<span class=\"token punctuation\">[</span><span class=\"token number\">11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>_BYTE<span class=\"token punctuation\">)</span>v8<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span> v4 <span class=\"token operator\">==</span> <span class=\"token number\">10</span> <span class=\"token punctuation\">)</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">do</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token function\">LOBYTE</span><span class=\"token punctuation\">(</span>v11<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token operator\">*</span>v7<span class=\"token punctuation\">;</span>\n      <span class=\"token function\">LOBYTE</span><span class=\"token punctuation\">(</span>v3<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> v7<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n      v19 <span class=\"token operator\">=</span> v7 <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\n      <span class=\"token function\">LOBYTE</span><span class=\"token punctuation\">(</span>v2<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>v19 <span class=\"token operator\">-</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token function\">LOBYTE</span><span class=\"token punctuation\">(</span>v10<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>v19 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      v20 <span class=\"token operator\">=</span> v3 <span class=\"token operator\">^</span> v11<span class=\"token punctuation\">;</span>\n      v21 <span class=\"token operator\">=</span> <span class=\"token function\">xtime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> __int8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v3 <span class=\"token operator\">^</span> v11<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> v10<span class=\"token punctuation\">,</span> v8<span class=\"token punctuation\">,</span> v19<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      v22 <span class=\"token operator\">=</span> v10 <span class=\"token operator\">^</span> v2 <span class=\"token operator\">^</span> v20<span class=\"token punctuation\">;</span>\n      <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>_BYTE <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v24 <span class=\"token operator\">-</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> v22 <span class=\"token operator\">^</span> v23 <span class=\"token operator\">^</span> v21<span class=\"token punctuation\">;</span>\n      v3 <span class=\"token operator\">^=</span> v22 <span class=\"token operator\">^</span> <span class=\"token function\">xtime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> __int8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v2 <span class=\"token operator\">^</span> v3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> v10<span class=\"token punctuation\">,</span> v25<span class=\"token punctuation\">,</span> v24<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>_BYTE <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v26 <span class=\"token operator\">-</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> v3<span class=\"token punctuation\">;</span>\n      v2 <span class=\"token operator\">^=</span> v22 <span class=\"token operator\">^</span> <span class=\"token function\">xtime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> __int8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v10 <span class=\"token operator\">^</span> v2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> v10<span class=\"token punctuation\">,</span> v27<span class=\"token punctuation\">,</span> v26<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>_BYTE <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>v29 <span class=\"token operator\">-</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> v2<span class=\"token punctuation\">;</span>\n      v10 <span class=\"token operator\">=</span> v22 <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span><span class=\"token function\">xtime</span><span class=\"token punctuation\">(</span>v28<span class=\"token punctuation\">,</span> v10<span class=\"token punctuation\">,</span> v30<span class=\"token punctuation\">,</span> v29<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span>v10<span class=\"token punctuation\">;</span>\n      <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>v7 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> v10<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span> v33 <span class=\"token operator\">!=</span> v7 <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    v34 <span class=\"token operator\">=</span> v4<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span>v34<span class=\"token punctuation\">,</span> v31<span class=\"token punctuation\">,</span> v32<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">return</span> <span class=\"token function\">AddRoundKey</span><span class=\"token punctuation\">(</span><span class=\"token number\">10LL</span><span class=\"token punctuation\">,</span> v5<span class=\"token punctuation\">,</span> v6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>If there were no <code class=\"language-text\">AddRoundKey</code> symbol, I feel it would be fairly hard to immediately conclude that this is using AES.</p>\n<p>If I were to tackle it, I suppose I would look for the SBox definition in the data section and then find the function that references it to locate the initial State initialization process, or identify processing that keeps splitting things into 4 blocks.</p>\n<p>I still feel like I need more practice around this area.</p>\n<h2 id=\"summary\" style=\"position:relative;\"><a href=\"#summary\" aria-label=\"summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary</h2>\n<p>I will keep studying cryptography.</p>\n<p>I want to improve my reversing skills.</p>","fields":{"slug":"/ctf-learning-aes-en","tagSlugs":["/tag/ctf-en/","/tag/rev-en/","/tag/crypto-en/","/tag/english/"]},"frontmatter":{"date":"2023-08-26","description":"I tried learning how AES is implemented.","tags":["CTF (en)","Rev (en)","Crypto (en)","English"],"title":"Learning the AES Implementation and Decrypting Ciphertext That Uses a Custom SBox","socialImage":{"publicURL":"/static/e59e16e902f8072fbc2ada6b6a2e4d01/ctf-learning-aes.png"}}}},"pageContext":{"slug":"/ctf-learning-aes-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}