{"id":3393,"date":"2025-04-28T04:42:18","date_gmt":"2025-04-27T19:42:18","guid":{"rendered":"https:\/\/h4ck.kr\/?p=3393"},"modified":"2025-04-28T04:42:20","modified_gmt":"2025-04-27T19:42:20","slug":"%ed%95%b5%ed%85%8c%ec%98%a8-2025-barcode","status":"publish","type":"post","link":"https:\/\/h4ck.kr\/?p=3393","title":{"rendered":"[\ud575\ud14c\uc628 2025] barcode"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Decompiled-src<\/h3>\n\n\n\n<p><strong>main<\/strong><\/p>\n\n\n\n<p>C++\uc5b8\uc5b4\ub85c \ucef4\ud30c\uc77c\ub418\uc788\uc74c. main\uc5d0\uc11c \ud638\ucd9c\uc2dc\ud0a4\ub294 4\uac00\uc9c0 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc558\uc74c.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sub_12E0<\/li>\n\n\n\n<li>sub_18F0<\/li>\n\n\n\n<li>sub_2650<\/li>\n\n\n\n<li>sub_2850<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">__int64 __fastcall main(int a1, const char **a2, char **a3)\n{\n  const char *v3; \/\/ rbx\n  signed __int64 v4; \/\/ rax\n  size_t v5; \/\/ r14\n  char *v6; \/\/ r15\n  const char *v7; \/\/ r15\n  size_t v8; \/\/ rax\n  _BYTE *v9; \/\/ r14\n  char v10; \/\/ al\n  std::ostream *v11; \/\/ rax\n  const char *v12; \/\/ rbx\n  size_t v13; \/\/ rax\n  __int64 v14; \/\/ rax\n  _BYTE *v15; \/\/ rbx\n  char v16; \/\/ al\n  std::ostream *v17; \/\/ rax\n  unsigned int v18; \/\/ ebx\n  __int64 v19; \/\/ rax\n  _BYTE *v20; \/\/ rbx\n  char v21; \/\/ al\n  void *v22; \/\/ rbx\n  _BYTE *v23; \/\/ r14\n  _QWORD *v24; \/\/ r15\n  _QWORD *v25; \/\/ rbp\n  unsigned __int64 v26; \/\/ rsi\n  unsigned int v27; \/\/ r8d\n  __int64 v28; \/\/ rdx\n  __int64 v29; \/\/ rax\n  __int64 v30; \/\/ rdi\n  __int64 v31; \/\/ rax\n  __int64 v32; \/\/ rdi\n  bool v33; \/\/ cf\n  __m128i *v34; \/\/ rbx\n  __m128i *v35; \/\/ r14\n  __m128i *v36; \/\/ r13\n  __m128i v37; \/\/ xmm0\n  __m128i v38; \/\/ xmm1\n  __m128i v39; \/\/ xmm2\n  __m128i *v40; \/\/ r15\n  __int64 v41; \/\/ r15\n  __int64 v42; \/\/ rax\n  __int64 v43; \/\/ r13\n  __m128i *v44; \/\/ r12\n  __int64 v45; \/\/ r15\n  __m128i v46; \/\/ xmm0\n  __m128i v47; \/\/ xmm1\n  __m128i v48; \/\/ xmm2\n  const __m128i *v49; \/\/ rax\n  __m128i v50; \/\/ xmm0\n  __m128i v51; \/\/ xmm1\n  __m128i v52; \/\/ xmm2\n  __m128i *v53; \/\/ r14\n  bool v54; \/\/ zf\n  std::ostream *v55; \/\/ rax\n  __int64 v57; \/\/ r8\n  __int64 v58; \/\/ r9\n  __int64 v59; \/\/ r10\n  __int64 v60; \/\/ r8\n  __int64 v61; \/\/ r8\n  int v62; \/\/ esi\n  char *v63; \/\/ r10\n  __int64 v64; \/\/ r11\n  __int64 v65; \/\/ rbx\n  __m128i v66; \/\/ xmm3\n  _QWORD *v67; \/\/ [rsp+0h] [rbp-118h]\n  void *v68; \/\/ [rsp+8h] [rbp-110h] BYREF\n  _QWORD *v69; \/\/ [rsp+10h] [rbp-108h]\n  __m128i v70; \/\/ [rsp+20h] [rbp-F8h] BYREF\n  __m128i v71; \/\/ [rsp+30h] [rbp-E8h] BYREF\n  __m128i v72; \/\/ [rsp+40h] [rbp-D8h] BYREF\n  __m128i v73; \/\/ [rsp+50h] [rbp-C8h] BYREF\n  _BYTE v74[64]; \/\/ [rsp+60h] [rbp-B8h] BYREF\n  void *v75[2]; \/\/ [rsp+A0h] [rbp-78h] BYREF\n  _QWORD v76[2]; \/\/ [rsp+B0h] [rbp-68h] BYREF\n  void *v77; \/\/ [rsp+C0h] [rbp-58h]\n  unsigned __int64 v78; \/\/ [rsp+C8h] [rbp-50h]\n  _QWORD dest[9]; \/\/ [rsp+D0h] [rbp-48h] BYREF\n\n  dest[2] = __readfsqword(0x28u);\n  if ( a1 == 2 )\n  {\n    v3 = a2[1];\n    v77 = dest;\n    if ( !v3 )\n      std::__throw_logic_error(\"basic_string::_M_construct null not valid\");\n    v4 = strlen(v3);\n    v5 = v4;\n    v6 = (char *)dest;\n    if ( (unsigned __int64)v4 >= 0x10 )\n    {\n      if ( v4 &lt; 0 )\n        std::__throw_length_error(\"basic_string::_M_create\");\n      if ( v4 + 1 &lt; 0 )\n        std::__throw_bad_alloc();\n      v6 = (char *)operator new(v4 + 1);\n      v77 = v6;\n      dest[0] = v5;\n    }\n    if ( v5 )\n    {\n      if ( v5 == 1 )\n        *v6 = *v3;\n      else\n        memcpy(v6, v3, v5);\n    }\n    v78 = v5;\n    v6[v5] = 0;\n    if ( v78 &lt;= 2 )\n    {\n      std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cerr, \"Invalid hex-string\", 18);\n      v19 = *(_QWORD *)(std::cerr - 24LL);\n      v20 = *(_BYTE **)((char *)&amp;std::cerr + v19 + 240);\n      if ( !v20 )\n        std::__throw_bad_cast();\n      if ( v20[56] )\n      {\n        v21 = v20[67];\n      }\n      else\n      {\n        std::ctype&lt;char>::_M_widen_init(*(_QWORD *)((char *)&amp;std::cerr + v19 + 240));\n        v21 = (*(__int64 (__fastcall **)(_BYTE *, __int64))(*(_QWORD *)v20 + 48LL))(v20, 10);\n      }\n      v55 = (std::ostream *)std::ostream::put((std::ostream *)&amp;std::cerr, v21);\n      v18 = 1;\n      std::ostream::flush(v55);\nLABEL_72:\n      if ( v77 != dest )\n        operator delete(v77);\n      return v18;\n    }\n    v22 = (void *)(v78 - 2);\n    v75[0] = v76;\n    v23 = (char *)v77 + 2;\n    if ( v78 - 2 &lt; 0x10 )\n    {\n      v24 = v76;\n      if ( v78 == 3 )\n      {\n        LOBYTE(v76[0]) = *v23;\n        v24 = v76;\n        goto LABEL_37;\n      }\n    }\n    else\n    {\n      if ( (__int64)v22 &lt; 0 )\n        std::__throw_length_error(\"basic_string::_M_create\");\n      if ( (__int64)(v78 - 1) &lt; 0 )\n        std::__throw_bad_alloc();\n      v24 = (_QWORD *)operator new(v78 - 1);\n      v75[0] = v24;\n      v76[0] = v22;\n    }\n    memcpy(v24, v23, (size_t)v22);\nLABEL_37:\n    v75[1] = v22;\n    *((_BYTE *)v22 + (_QWORD)v24) = 0;\n    sub_12E0(&amp;v68, v75);\n    v25 = v68;\n    v67 = v69;\n    v26 = (unsigned __int64)((char *)v69 - (_BYTE *)v68) >> 3;\n    v27 = v26 - 1;\n    if ( (int)v26 - 1 > 0 )\n    {\n      v28 = v27;\n      v29 = (unsigned int)v26;\n      if ( v27 &lt; 0x22\n        || (v57 = (unsigned int)(v26 - 2), v58 = 8 * v28 - 8, (char *)v68 + 8 * v57 - v58 > (char *)v68 + 8 * v57)\n        || (char *)v68 + 8 * v28 - v58 > (char *)v68 + 8 * v28\n        || (unsigned int)v57 &lt; (int)v28 - 1\n        || (unsigned __int64)(v28 - 1) >> 32\n        || (v59 = 8 * v28, v60 = ((char *)v69 - (_BYTE *)v68 + 0x7FFFFFFF0LL) &amp; 0x7FFFFFFF8LL, v68 &lt; (char *)v68 + v60)\n        &amp;&amp; (char *)v68 + v60 - v59 + 8 &lt; (char *)v68 + 8 * v28 + 8 )\n      {\n        v30 = v28;\n      }\n      else\n      {\n        v61 = v28 &amp; 0x7FFFFFFC;\n        v29 = (unsigned int)v26 - v61;\n        v30 = v28 &amp; 3;\n        v62 = v26 - 2;\n        v63 = (char *)v68 + v59 - 8;\n        v64 = 0;\n        do\n        {\n          v65 = (unsigned int)(v62 + v64);\n          v66 = _mm_xor_si128(\n                  _mm_xor_si128(_mm_loadu_si128((const __m128i *)&amp;v63[8 * v64 - 16]), (__m128i)-1LL),\n                  _mm_loadu_si128((const __m128i *)&amp;v25[v65 - 3]));\n          *(__m128i *)&amp;v63[8 * v64] = _mm_xor_si128(\n                                        _mm_xor_si128(_mm_loadu_si128((const __m128i *)&amp;v63[8 * v64]), (__m128i)-1LL),\n                                        _mm_loadu_si128((const __m128i *)&amp;v25[v65 - 1]));\n          *(__m128i *)&amp;v63[8 * v64 - 16] = v66;\n          v64 -= 4;\n        }\n        while ( -(v28 &amp; 0x7FFFFFFC) != v64 );\n        if ( v61 == v28 )\n          goto LABEL_42;\n      }\n      v31 = v29 + 4294967294LL;\n      v32 = v30 + 1;\n      do\n      {\n        v25[v32 - 1] = ~(v25[v32 - 1] ^ v25[(unsigned int)v31--]);\n        v33 = v32-- == 1;\n      }\n      while ( !v33 &amp;&amp; v32 != 1 );\n    }\nLABEL_42:\n    if ( v25 != v67 )\n    {\n      v34 = 0;\n      v35 = 0;\n      v36 = 0;\n      do\n      {\n        while ( 1 )\n        {\n          sub_18F0(*v25, v74);\n          sub_2650(&amp;v70, v74);\n          if ( v35 == v36 )\n            break;\n          v37 = _mm_loadu_si128(&amp;v70);\n          v38 = _mm_loadu_si128(&amp;v71);\n          v39 = _mm_loadu_si128(&amp;v72);\n          v35[3] = _mm_loadu_si128(&amp;v73);\n          v35[2] = v39;\n          v35[1] = v38;\n          *v35 = v37;\n          v40 = v35;\n          v35 += 4;\n          if ( ++v25 == v67 )\n            goto LABEL_60;\n        }\n        if ( (char *)v35 - (char *)v34 == 0x7FFFFFFFFFFFFFC0LL )\n          std::__throw_length_error(\"vector::_M_realloc_insert\");\n        v41 = ((char *)v35 - (char *)v34) >> 6;\n        v42 = (v41 == 0) + v41;\n        v43 = v42 + v41;\n        if ( (unsigned __int64)(v42 + v41) >= 0x1FFFFFFFFFFFFFFLL )\n          v43 = 0x1FFFFFFFFFFFFFFLL;\n        if ( __CFADD__(v41, v42) )\n          v43 = 0x1FFFFFFFFFFFFFFLL;\n        if ( v43 )\n          v44 = (__m128i *)operator new(v43 &lt;&lt; 6);\n        else\n          v44 = 0;\n        v45 = v41 &lt;&lt; 6;\n        v46 = _mm_loadu_si128(&amp;v70);\n        v47 = _mm_loadu_si128(&amp;v71);\n        v48 = _mm_loadu_si128(&amp;v72);\n        *(__m128i *)((char *)&amp;v44[3] + v45) = _mm_loadu_si128(&amp;v73);\n        *(__m128i *)((char *)&amp;v44[2] + v45) = v48;\n        *(__m128i *)((char *)&amp;v44[1] + v45) = v47;\n        *(__m128i *)((char *)v44 + v45) = v46;\n        v40 = v44;\n        if ( v34 != v35 )\n        {\n          v40 = v44;\n          v49 = v34;\n          do\n          {\n            v50 = _mm_loadu_si128(v49);\n            v51 = _mm_loadu_si128(v49 + 1);\n            v52 = _mm_loadu_si128(v49 + 2);\n            v40[3] = _mm_loadu_si128(v49 + 3);\n            v40[2] = v52;\n            v40[1] = v51;\n            *v40 = v50;\n            v49 += 4;\n            v40 += 4;\n          }\n          while ( v49 != v35 );\n        }\n        if ( v34 )\n          operator delete(v34);\n        v36 = &amp;v44[4 * v43];\n        v34 = v44;\n        v35 = v40 + 4;\n        ++v25;\n      }\n      while ( v25 != v67 );\nLABEL_60:\n      if ( v34 != v35 )\n      {\n        v53 = v34;\n        do\n        {\n          sub_2850(v53);\n          v54 = v53 == v40;\n          v53 += 4;\n        }\n        while ( !v54 );\n      }\n      if ( v34 )\n        operator delete(v34);\n    }\n    if ( v68 )\n      operator delete(v68);\n    if ( v75[0] != v76 )\n      operator delete(v75[0]);\n    v18 = 0;\n    goto LABEL_72;\n  }\n  std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cout, \"Usage: \", 7);\n  v7 = *a2;\n  if ( *a2 )\n  {\n    v8 = strlen(*a2);\n    std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cout, v7, v8);\n  }\n  else\n  {\n    std::ios::clear(\n      (char *)&amp;std::cout + *(_QWORD *)(std::cout - 24LL),\n      *(_DWORD *)((char *)&amp;std::cout + *(_QWORD *)(std::cout - 24LL) + 32) | 1u);\n  }\n  std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cout, \" {hex-string}\", 13);\n  v9 = *(_BYTE **)((char *)&amp;std::cout + *(_QWORD *)(std::cout - 24LL) + 240);\n  if ( !v9 )\n    goto LABEL_88;\n  if ( v9[56] )\n  {\n    v10 = v9[67];\n  }\n  else\n  {\n    std::ctype&lt;char>::_M_widen_init(v9);\n    v10 = (*(__int64 (__fastcall **)(_BYTE *, __int64))(*(_QWORD *)v9 + 48LL))(v9, 10);\n  }\n  v11 = (std::ostream *)std::ostream::put((std::ostream *)&amp;std::cout, v10);\n  std::ostream::flush(v11);\n  std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cout, \"Example: \", 9);\n  v12 = *a2;\n  if ( *a2 )\n  {\n    v13 = strlen(v12);\n    std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cout, v12, v13);\n  }\n  else\n  {\n    std::ios::clear(\n      (char *)&amp;std::cout + *(_QWORD *)(std::cout - 24LL),\n      *(_DWORD *)((char *)&amp;std::cout + *(_QWORD *)(std::cout - 24LL) + 32) | 1u);\n  }\n  std::__ostream_insert&lt;char,std::char_traits&lt;char>>(&amp;std::cout, \" 0x3E08080818381808\", 19);\n  v14 = *(_QWORD *)(std::cout - 24LL);\n  v15 = *(_BYTE **)((char *)&amp;std::cout + v14 + 240);\n  if ( !v15 )\nLABEL_88:\n    std::__throw_bad_cast();\n  if ( v15[56] )\n  {\n    v16 = v15[67];\n  }\n  else\n  {\n    std::ctype&lt;char>::_M_widen_init(*(_QWORD *)((char *)&amp;std::cout + v14 + 240));\n    v16 = (*(__int64 (__fastcall **)(_BYTE *, __int64))(*(_QWORD *)v15 + 48LL))(v15, 10);\n  }\n  v17 = (std::ostream *)std::ostream::put((std::ostream *)&amp;std::cout, v16);\n  std::ostream::flush(v17);\n  return 1;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Run<\/h3>\n\n\n\n<p>\uc2e4\ud589\uc2dc \uc544\ub798\uc640 \uac19\uc774 \ub9e4\uac1c\ubcc0\uc218 16\uc9c4\uc218\ub97c \uc694\uad6c\ud568.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">seo@seo:~\/study\/hto2025\/barcode$ .\/barcode\nUsage: .\/barcode {hex-string}\nExample: .\/barcode 0x3E08080818381808<\/pre>\n\n\n\n<p>\ub9e4\uac1c\ubcc0\uc218 8\ubc14\uc774\ud2b8\uc77c \uacbd\uc6b0, \ubcc4 \uc544\uc2a4\ud0a4 \uc544\ud2b8\uac00 8\uc904 \ucd9c\ub825\ub428.<\/p>\n\n\n\n<p><strong><code>.\/barcode 0x4142434445464748<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">seo@seo:~\/study\/hto2025\/barcode$ .\/barcode 0x4142434445464748\n   *  *\n***   *\n **   *\n* *   *\n  *   *\n**    *\n *    *\n*     *<\/pre>\n\n\n\n<p>16\ubc14\uc774\ud2b8\uc778 \uacbd\uc6b0, \ubcc4 \uc544\uc2a4\ud0a4 \uc544\ud2b8\uac00 16\uc904 \ucd9c\ub825\ub428.<\/p>\n\n\n\n<p><strong><code>.\/barcode 0x4142434445464748abadbabe13371338<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">seo@seo:~\/study\/hto2025\/barcode$ .\/barcode 0x4142434445464748abadbabe13371338\n   *  *\n***   *\n **   *\n* *   *\n  *   *\n**    *\n *    *\n*     *\n****   *\n** * * *\n ***   *\n*  * * *\n* *\n **\n    *\n* * *<\/pre>\n\n\n\n<p>\uadf8\ub807\ub2e4\uba74, flag.barcode\ub294 \ub9e4\uac1c\ubcc0\uc218\uac00 32\ubc14\uc774\ud2b8\uc5ec\uc57c\ud568.<\/p>\n\n\n\n<p>ex) <strong><code>.\/barcode 0x4142434445464748abadbabedeadbeef1337c0de5152535455565758<\/code><\/strong><\/p>\n\n\n\n<p><code>cat flag.barcode<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">seo@seo:~\/study\/hto2025\/barcode$ cat flag.barcode\n\n ******\n *\n ******\n *\n *\n *\n\n\n *\n *\n *\n *\n *\n ******\n\n\n  ****\n *    *\n ******\n *    *\n *    *\n *    *\n\n\n  ****\n *    *\n *\n *  ***\n *    *\n  ****\n<\/pre>\n\n\n\n<p>main\uc5d0\uc11c \ud638\ucd9c\uc2dc\ud0a4\ub294 4\uac00\uc9c0 \ud568\uc218\ub97c \ucc28\ub840\ub300\ub85c \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<p>\ub9e4\uac1c\ubcc0\uc218\ub294 <strong><code>0x000000004142434445464748abadbabedeadbeef1337c0de5152535455565758<\/code><\/strong> \uc73c\ub85c \uc6b0\uc120 \ub123\uc5b4\uc8fc\uc5c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">sub_12E0(__int64 a1, __int64 a2)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \uc804<\/li>\n<\/ul>\n\n\n\n<p><strong><code>rdi = 00007FFFFFFFE0E8<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE0E8 dq 0<\/pre>\n\n\n\n<p><strong><code>rsi = 00007FFFFFFFE180<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE180 dq offset off_55555556BF00\n...\nMEMORY:000055555556BF00 a41424344454647 db '4142434445464748abadbabedeadbeef1337c0de5152535455565758',0<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \ud6c4<\/li>\n<\/ul>\n\n\n\n<p><strong><code>rdi = 7<\/code><\/strong><br><strong><code>rsi = 000055555555A010<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:000055555555A010 dq offset unk_2000000000003<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">sub_18F0(__int64 a1, _BYTE *a2)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \uc804<\/li>\n<\/ul>\n\n\n\n<p><strong><code>rdi = 0000000041424344<\/code><\/strong><br><strong><code>rsi = 00007FFFFFFFE140<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE140 db 2, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE148 db 6, 0, 0, 0, 0, 0, 0, 80h\nMEMORY:00007FFFFFFFE150 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE158 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE160 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE168 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE170 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE178 db 0, 0, 0, 0, 0, 0, 0, 0<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \ud6c4<\/li>\n<\/ul>\n\n\n\n<p>rdi \uac12\uc5d0 \uc758\ud574 64\ubc14\uc774\ud2b8 \ud06c\uae30\uc758 \ubc30\uc5f4\uc774 \uc0dd\uc131\ub428.<\/p>\n\n\n\n<p><strong><code>rdi = 0<\/code><\/strong><br><strong><code>rsi = 00007FFFFFFFE140<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE140 db 0, 0, 1, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE148 db 1, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE150 db 0, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE158 db 1, 0, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE160 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE168 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE170 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE178 db 0, 0, 0, 0, 0, 0, 0, 0<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">sub_2650(_BYTE *a1, _BYTE *a2)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \uc804<\/li>\n<\/ul>\n\n\n\n<p><strong><code>rdi = 00007FFFFFFFE100<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE100 dq offset off_7FFFF7E2A000\n...\nMEMORY:00007FFFF7E2A000 off_7FFFF7E2A000 dq offset off_7FFFF7E24318\n...\nMEMORY:00007FFFF7E24318 off_7FFFF7E24318 dq offset off_7FFFF7D4FA30\n...\nMEMORY:00007FFFF7D4FA30 off_7FFFF7D4FA30 dq offset unk_89485355FA1E0FF3<\/pre>\n\n\n\n<p><strong><code>rsi = 00007FFFFFFFE140<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE140 db 0, 0, 1, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE148 db 1, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE150 db 0, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE158 db 1, 0, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE160 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE168 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE170 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE178 db 0, 0, 0, 0, 0, 0, 0, 0<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \ud6c4<\/li>\n<\/ul>\n\n\n\n<p><strong><code>rdi = 00007FFFFFFFE100<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE100 db 0, 0, 1, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE108 db 1, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE110 db 0, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE118 db 1, 0, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE120 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE128 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE130 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE138 db 0, 0, 0, 0, 0, 0, 0, 0<\/pre>\n\n\n\n<p><strong><code>rsi = 00007FFFFFFFE140<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE140 db 0, 0, 1, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE148 db 1, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE150 db 0, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE158 db 1, 0, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE160 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE168 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE170 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE178 db 0, 0, 0, 0, 0, 0, 0, 0<\/pre>\n\n\n\n<p>64\ubc14\uc774\ud2b8 \ud06c\uae30\uc758 \ubc30\uc5f4 \uac12\uc774 a1\uc5d0 \ubcf5\uc0ac\ub428.<\/p>\n\n\n\n<p>\uc774\ud6c4 while(1) \ub8e8\ud504\ubb38\uc5d0 \uc758\ud574 \uacc4\uc18d sub_18F0, sub_2650 \ud568\uc218\uac00 \ud638\ucd9c\ub428.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">sub_18F0(__int64 a1, _BYTE *a2) (2\ud2b8)<\/h3>\n\n\n\n<p>\ub9c8\ucc2c\uac00\uc9c0\ub85c <strong><code>BAB9B8B715100605<\/code><\/strong> \uac12\uc5d0 \uc758\ud574 64\ubc14\uc774\ud2b8 \ud06c\uae30\uc758 \ubc30\uc5f4\uc774 \uc0dd\uc131\ub428.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud638\ucd9c \uc804<\/li>\n<\/ul>\n\n\n\n<p><strong><code>RDI = BAB9B8B715100605<\/code><\/strong><br><strong><code>RSI = 00007FFFFFFFE140<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:00007FFFFFFFE140 db 0, 0, 1, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE148 db 1, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE150 db 0, 1, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE158 db 1, 0, 0, 0, 0, 0, 1, 0\nMEMORY:00007FFFFFFFE160 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE168 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE170 db 0, 0, 0, 0, 0, 0, 0, 0\nMEMORY:00007FFFFFFFE178 db 0, 0, 0, 0, 0, 0, 0, 0<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\uadf8\ub7fc, <code>BAB9B8B715100605<\/code>\uc800 \uac12\uc740 \uadf8\ub7fc \uc5b4\ub5bb\uac8c \ub098\uc628\uac78\uae4c?<\/strong><\/h2>\n\n\n\n<p>main \ud568\uc218 \uc911 \uc544\ub798 \ucf54\ub4dc, <strong>XOR\uacfc NOR \uc5f0\uc0b0\uc2dc\ud0a4\ub294 \ubc18\ubcf5\ubb38<\/strong>\uc5d0 \ube0c\ud3ec \uac78\uc5b4\ubd04.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">do\n{\n  v25[v32 - 1] = ~(v25[v32 - 1] ^ v25[(unsigned int)v31--]);\n  v33 = v32-- == 1;\n}\nwhile ( !v33 &amp;&amp; v32 != 1 );<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1\ud2b8:<\/h3>\n\n\n\n<p>\uc5b4\uc148 \ucf54\ub4dc:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.text:0000000000001F27                 xor     rcx, [rbp+rdi*8-8]<\/pre>\n\n\n\n<p>\uc2e4\ud589 \uc804<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = DEADBEEF1337C0DE<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>[rbp+rdi*8-8] = 000055555556C068<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:000055555556C068 dq offset unk_5152535455565758<\/pre>\n\n\n\n<p>\uc2e4\ud589 \ud6c4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 8FFFEDBB46619786<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<p>\uc5b4\uc148 \ucf54\ub4dc:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.text:0000000000001F2C                 not     rcx<\/pre>\n\n\n\n<p>\uc2e4\ud589 \ud6c4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 70001244B99E6879<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2\ud2b8:<\/h3>\n\n\n\n<p>\uc5b4\uc148 \ucf54\ub4dc:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.text:0000000000001F27                 xor     rcx, [rbp+rdi*8-8]<\/pre>\n\n\n\n<p>\uc2e4\ud589 \uc804<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 0x45464748ABADBABE<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>[rbp+rdi*8-8] = 000055555556C060<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:000055555556C060 dq offset unk_DEADBEEF1337C0DE<\/pre>\n\n\n\n<p>\uc2e4\ud589 \ud6c4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 9BEBF9A7B89A7A60<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<p>\uc5b4\uc148 \ucf54\ub4dc:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.text:0000000000001F2C                 not     rcx<\/pre>\n\n\n\n<p>\uc2e4\ud589 \ud6c4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 641406584765859F<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3\ud2b8:<\/h3>\n\n\n\n<p>\uc5b4\uc148 \ucf54\ub4dc:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.text:0000000000001F27                 xor     rcx, [rbp+rdi*8-8]<\/pre>\n\n\n\n<p>\uc2e4\ud589 \uc804<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 0x0000000041424344<\/code><\/strong><\/li>\n\n\n\n<li><strong><code>[rbp+rdi*8-8] = 000055555556C058<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:000055555556C058 dq offset unk_45464748ABADBABE<\/pre>\n\n\n\n<p>\uc2e4\ud589 \ud6c4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 0x45464748EAEFF9FA<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<p>\uc5b4\uc148 \ucf54\ub4dc:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.text:0000000000001F2C                 not     rcx<\/pre>\n\n\n\n<p>\uc2e4\ud589 \ud6c4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>rcx = 0xBAB9B8B715100605<\/code><\/strong><\/li>\n<\/ul>\n\n\n\n<p>\uc5ec\uae30\uc11c <strong><code>BAB9B8B715100605<\/code> \uac12\uc774 \ub098\uc654\ub2e4.<\/strong><\/p>\n\n\n\n<p>\uc989, <strong>0x0000000041424344\uc640 45464748ABADBABE\uc774 XOR\ud558\uace0 NOT\uc5f0\uc0b0<\/strong>\ub418\uc5b4 \ub098\uc628\uac83.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">>>> hex(~(0x0000000041424344 ^ 0x45464748ABADBABE) &amp; 0xffffffffffffffff)\n'0xbab9b8b715100605'<\/pre>\n\n\n\n<p>XOR\uacfc NOT \uc5f0\uc0b0 \ubc18\ubcf5\ubb38\uc774 \ub05d\ub098\uba74, \uc544\ub798 \uac12\ub4e4\uc774 sub_18F0 \ud638\ucd9c\uc804 RDI\ub85c \uc9c0\uc815\ub428.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">MEMORY:000055555556C050 dq offset unk_41424344\nMEMORY:000055555556C058 dq offset unk_BAB9B8B715100605\nMEMORY:000055555556C060 dq offset unk_641406584765859F\nMEMORY:000055555556C068 dq offset unk_70001244B99E6879\nMEMORY:000055555556C070 dq 0<\/pre>\n\n\n\n<p><strong>0x000000004142434445464748abadbabedeadbeef1337c0de5152535455565758<\/strong><\/p>\n\n\n\n<p>8\ubc14\uc774\ud2b8\uc529 \ub098\ub204\uba74 \ub2e4\uc74c\uacfc \uac19\uc740\ub370, \uac01\uac01 a, b, c, d\ub85c \uba85\uba85\ud558\uaca0\uc74c.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>0x0000000041424344<\/strong> \u2192 a<\/li>\n\n\n\n<li><strong>0x45464748abadbabe<\/strong> \u2192 b<\/li>\n\n\n\n<li><strong>0xdeadbeef1337c0de<\/strong> \u2192 c<\/li>\n\n\n\n<li><strong>0x5152535455565758<\/strong> \u2192 d<\/li>\n<\/ul>\n\n\n\n<p>\uc544\ub798\uc640 \uac19\uc774 \uacc4\uc0b0\ub418\uc5c8\ub2e4\uace0 \ubcfc \uc218 \uc788\uc74c.<\/p>\n\n\n\n<p><strong>0x0000000041424344 \u2192 <code>0x0000000041424344<\/code><\/strong><\/p>\n\n\n\n<p><strong>0xBAB9B8B715100605<\/strong> \u2192 <strong><code>hex(~(a ^ b) &amp; 0xffffffffffffffff)<\/code><\/strong><\/p>\n\n\n\n<p><strong>0x641406584765859F<\/strong> \u2192 <strong><code>hex(~(b ^ c) &amp; 0xffffffffffffffff)<\/code><\/strong><\/p>\n\n\n\n<p><strong>0x70001244B99E6879<\/strong><\/p>\n\n\n\n<p>\u2192 <strong><code>hex(~(c ^ d) &amp; 0xffffffffffffffff)<\/code><\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc7ac\uad6c\ud604<\/h3>\n\n\n\n<p>32\ubc14\uc774\ud2b8 \ud06c\uae30\uc758 \ub9e4\uac1c\ubcc0\uc218\uac12\uc774 XOR\/NOT \uc5f0\uc0b0\ub418\uc5b4, 64\ubc14\uc774\ud2b8 \ubc30\uc5f4\ub4e4\uc774 4\ubc88 \ub098\uc624\ub294 \ucf54\ub4dc\ub97c \uc7ac\uad6c\ud604\uc2dc\ud0a4\uba74 \uc544\ub798\uc640 \uac19\uc74c.<\/p>\n\n\n\n<p>sub_18F0 \ud568\uc218\ub294 64\uac1c \ube44\ud2b8 \uc800\uc7a5\ud560 \ub9ac\uc2a4\ud2b8 \uc0dd\uc131\ud558\uace0, n\ubc88\uc9f8 \ube44\ud2b8\ub97c \ucd94\ucd9c\ud558\uc5ec \uc800\uc7a5\uc2dc\ud0b4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>barcode_reimpl.py<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">value = 0x000000004142434445464748abadbabedeadbeef1337c0de5152535455565758\n\nhex_str = f\"{value:064x}\"\na = int(hex_str[0:16], 16)\nb = int(hex_str[16:32], 16)\nc = int(hex_str[32:48], 16)\nd = int(hex_str[48:64], 16)\n\nprint(f\"a = 0x{a:016x}\")\nprint(f\"b = 0x{b:016x}\")\nprint(f\"c = 0x{c:016x}\")\nprint(f\"d = 0x{d:016x}\")\n\n_a = a\n_b = ~(a ^ b) &amp; 0xffffffffffffffff\n_c = ~(b ^ c) &amp; 0xffffffffffffffff\n_d = ~(c ^ d) &amp; 0xffffffffffffffff\n\na=_a\nb=_b\nc=_c\nd=_d\n\nprint(\"XOR\/NOT loop calculated\")\nprint(f\"a = 0x{a:016x}\")\nprint(f\"b = 0x{b:016x}\")\nprint(f\"c = 0x{c:016x}\")\nprint(f\"d = 0x{d:016x}\")\n\ndef sub_18F0(a1: int):\n    a2 = [0] * 64 \n    for i in range(64):\n        a2[i] = ((a1 >> i) &amp; 1)  # i\ubc88\uc9f8 \ube44\ud2b8\ub97c \ucd94\ucd9c\ud558\uc5ec \uc800\uc7a5\n\n    return a2\n\ndef pretty_print(bits: list[int]):\n    output = \"\"\n    for i in range(64):\n        if i % 8 == 0 and i != 0:\n            output += \"\\n\"  # 8\ube44\ud2b8\ub9c8\ub2e4 \uc904\ubc14\uafc8\n        output += \"*\" if bits[i] else \" \"\n    print(output)\n\nfor val in (a, b, c, d):\n    r = sub_18F0(val)\n    pretty_print(r)<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Result<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">PS C:\\Users\\seo\\Desktop\\\ud575\ud14c\uc628\\\ud575\ud14c\uc628_2025\\barcode> python3 .\\barcode_reimpl.py\na = 0x0000000041424344\nb = 0x45464748abadbabe\nc = 0xdeadbeef1337c0de\nd = 0x5152535455565758\nXOR\/NOT loop calculated\na = 0x0000000041424344\nb = 0xbab9b8b715100605\nc = 0x641406584765859f\nd = 0x70001244b99e6879\n  *   * \n**    * \n *    *\n*     *\n\n\n\n\n* *\n **\n    *\n* * *\n*** ** *\n   *** *\n*  *** *\n * *** *\n*****  *\n* *    *\n* *  **\n***   *\n   ** *\n **\n  * *\n  *  **\n*  ****\n   * **\n ****  *\n*  *** *\n  *   *\n *  *\n\n    ***<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">solve.py<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\uba3c\uc800 flag.barcode \ud30c\uc77c\uc744 \ud30c\uc2f1\ud558\uc5ec 8\ubc14\uc774\ud2b8 align \uc2dc\ucf1c \uac01 \ubc30\uc5f4\ub85c \uc800\uc7a5. (<code>barcode_array<\/code> 2\ucc28\uc6d0 \ub9ac\uc2a4\ud2b8 \uc0dd\uc131\ub428)<\/li>\n\n\n\n<li><code>calculated_val<\/code> \ubcc0\uc218\ub97c \ud1b5\ud574 \uc778\ub371\uc2a4 \ubcc4\ub85c 0x0~0xFF \ubc94\uc704\uc758 \ud55c \ubc14\uc774\ud2b8\uc529 \ubc14\uafe8\uc744\ub54c, <code>get_star_result<\/code> \uacb0\uacfc\uc758 \ud55c \ubc30\uc5f4\uacfc \uac19\uc744 \uacbd\uc6b0, \ub2e4\uc74c \uc778\ub371\uc2a4 \uc9c4\ud589.<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def parse_barcode_file(filename):\n    result = []\n    with open(filename, 'r', encoding='utf-8') as f:\n        lines = f.readlines()\n\n    for line in lines:\n        line = line.rstrip('\\n')\n        # \ube48 \uc904\uc774\uba74 8\uac1c\uc758 0\uc73c\ub85c \ucc44\uc6b4 \ud589 \ucd94\uac00\n        if not line.strip():\n            result.append([0] * 8)\n            continue\n\n        row = []\n        for ch in line:\n            if ch == '*':\n                row.append(1)\n            elif ch == ' ':\n                row.append(0)\n        result.append(row)\n\n    return result\n\nbarcode_array = parse_barcode_file('flag.barcode')\n# print(barcode_array)\n\ndef edit_byte(v: int, idx: int, b: int, size: int = 32) -> int:\n    \"\"\"\n    v      : \uc218\uc815\ud560 \uc815\uc218\n    idx    : 0\ubd80\ud130 \uc2dc\uc791\ud558\ub294 \ubc14\uc774\ud2b8 \uc778\ub371\uc2a4 (0 = \ucd5c\uc0c1\uc704 \ubc14\uc774\ud2b8)\n    b      : \ub300\uccb4\ud560 \uc0c8 \ubc14\uc774\ud2b8 \uac12 (0\u2013255)\n    size   : \uc804\uccb4 \ubc14\uc774\ud2b8 \uae38\uc774 (\uae30\ubcf8 32\ubc14\uc774\ud2b8)\n    \"\"\"\n    ba = bytearray(v.to_bytes(size, 'big'))\n    ba[idx] = b &amp; 0xFF\n    return int.from_bytes(ba, 'big')\n\ndef get_star_result(value):    \n    hex_str = f\"{value:064x}\"\n    a = int(hex_str[0:16], 16)\n    b = int(hex_str[16:32], 16)\n    c = int(hex_str[32:48], 16)\n    d = int(hex_str[48:64], 16)\n\n    _a = a\n    _b = ~(a ^ b) &amp; 0xffffffffffffffff\n    _c = ~(b ^ c) &amp; 0xffffffffffffffff\n    _d = ~(c ^ d) &amp; 0xffffffffffffffff\n\n    a=_a\n    b=_b\n    c=_c\n    d=_d\n\n    def sub_18F0(a1: int):\n        a2 = [0] * 64 \n        for i in range(64):\n            a2[i] = ((a1 >> i) &amp; 1)\n\n        return a2\n\n    all_data = []\n    for val in (a, b, c, d):\n        r = sub_18F0(val)\n        all_data += r\n\n    grouped = [all_data[i:i+8] for i in range(0, len(all_data), 8)]\n    return grouped\n\ndef get_a_b_c_d(value):\n    value = f\"{calculated_val:064x}\"\n    while len(value) &lt; 64:\n        value = '0' + value\n    a = int(value[0:16], 16)\n    b = int(value[16:32], 16)\n    c = int(value[32:48], 16)\n    d = int(value[48:64], 16)\n    return a, b, c, d\n\nvalue, a, b, c, d = 0, 0, 0, 0, 0\ncalculated_val = value\n\ndef decrypt_hex(start_idx, end_idx):\n    global calculated_val\n\n    for i in range(8):\n        for j in range(0x0, 0x100):\n            calculated_val = edit_byte(calculated_val, end_idx - i, j)\n            star_group = get_star_result(calculated_val)\n            if(star_group[i + start_idx] == barcode_array[i + start_idx]):\n                break\n\ndecrypt_hex(0, 7)\ndecrypt_hex(8, 15)\ndecrypt_hex(16, 23)\ndecrypt_hex(24, 31)\n\na, b, c, d = get_a_b_c_d(calculated_val)\nprint(f\"0x{calculated_val:064x}\")<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Result<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">PS C:\\Users\\seo\\Desktop\\\ud575\ud14c\uc628\\\ud575\ud14c\uc628_2025\\barcode> python3 .\\solve.py\n0x000202027e027e00ff83ffff83ff83ff003e424202424000fffdffcfffff83ff<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Decompiled-src main C++\uc5b8\uc5b4\ub85c \ucef4\ud30c\uc77c\ub418\uc788\uc74c. main\uc5d0\uc11c \ud638\ucd9c\uc2dc\ud0a4\ub294 4\uac00\uc9c0 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc558\uc74c. Run \uc2e4\ud589\uc2dc \uc544\ub798\uc640 \uac19\uc774 \ub9e4\uac1c\ubcc0\uc218 16\uc9c4\uc218\ub97c \uc694\uad6c\ud568. \ub9e4\uac1c\ubcc0\uc218 8\ubc14\uc774\ud2b8\uc77c \uacbd\uc6b0, \ubcc4 \uc544\uc2a4\ud0a4 \uc544\ud2b8\uac00 8\uc904 \ucd9c\ub825\ub428. .\/barcode 0x4142434445464748 16\ubc14\uc774\ud2b8\uc778 \uacbd\uc6b0, \ubcc4 \uc544\uc2a4\ud0a4 \uc544\ud2b8\uac00 16\uc904 \ucd9c\ub825\ub428. .\/barcode 0x4142434445464748abadbabe13371338 \uadf8\ub807\ub2e4\uba74, flag.barcode\ub294 \ub9e4\uac1c\ubcc0\uc218\uac00 32\ubc14\uc774\ud2b8\uc5ec\uc57c\ud568. ex) .\/barcode 0x4142434445464748abadbabedeadbeef1337c0de5152535455565758 cat flag.barcode main\uc5d0\uc11c \ud638\ucd9c\uc2dc\ud0a4\ub294 4\uac00\uc9c0 \ud568\uc218\ub97c \ucc28\ub840\ub300\ub85c \uc0b4\ud3b4\ubcf4\uc790. \ub9e4\uac1c\ubcc0\uc218\ub294 0x000000004142434445464748abadbabedeadbeef1337c0de5152535455565758 \uc73c\ub85c \uc6b0\uc120&hellip;&nbsp;<a href=\"https:\/\/h4ck.kr\/?p=3393\" rel=\"bookmark\">\ub354 \ubcf4\uae30 &raquo;<span class=\"screen-reader-text\">[\ud575\ud14c\uc628 2025] barcode<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[19],"tags":[24],"class_list":["post-3393","post","type-post","status-publish","format-standard","hentry","category-ctf-private","tag-reversing"],"_links":{"self":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/3393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3393"}],"version-history":[{"count":1,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/3393\/revisions"}],"predecessor-version":[{"id":3394,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/3393\/revisions\/3394"}],"wp:attachment":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}