1import{_ as s,c as a,f as p,o as t}from"./app-D7CCjthX.js";const e={};function o(c,n){return t(),a("div",null,[...n[0]||(n[0]=[p(`<h3 id="åé¢" tabindex="-1"><a class="header-anchor" href="#åé¢"><span>åé¢</span></a></h3><div class="language-python line-numbers-mode has-collapsed-lines collapsed" data-highlighter="prismjs" data-ext="py" style="--vp-collapsed-lines:15;"><pre><code class="language-python"><span class="line"><span class="token keyword">import</span> gmpy2</span> 2<span class="line"><span class="token keyword">import</span> random</span> 3<span class="line"><span class="token keyword">import</span> binascii</span> 4<span class="line"><span class="token keyword">from</span> hashlib <span class="token keyword">import</span> sha256</span> 5<span class="line"><span class="token keyword">from</span> sympy <span class="token keyword">import</span> nextprime</span> 6<span class="line"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Cipher <span class="token keyword">import</span> AES</span> 7<span class="line"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Util<span class="token punctuation">.</span>Padding <span class="token keyword">import</span> pad</span> 8<span class="line"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Util<span class="token punctuation">.</span>number <span class="token keyword">import</span> long_to_bytes</span> 9<span class="line"><span class="token keyword">from</span> FLAG <span class="token keyword">import</span> flag</span> 10<span class="line"><span class="token comment">#flag = 'wdflag{123}'</span></span> 11<span class="line"></span> 12<span class="line"><span class="token keyword">def</span> <span class="token function">victory_encrypt</span><span class="token punctuation">(</span>plaintext<span class="token punctuation">,</span> key<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 13<span class="line"> key <span class="token operator">=</span> key<span class="token punctuation">.</span>upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 14<span class="line"> key_length <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span></span> 15<span class="line"> plaintext <span class="token operator">=</span> plaintext<span class="token punctuation">.</span>upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 16<span class="line"> ciphertext <span class="token operator">=</span> <span class="token string">''</span></span> 17<span class="line"></span> 18<span class="line"> <span class="token keyword">for</span> i<span class="token punctuation">,</span> char <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>plaintext<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 19<span class="line"> <span class="token keyword">if</span> char<span class="token punctuation">.</span>isalpha<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 20<span class="line"> shift <span class="token operator">=</span> <span class="token builtin">ord</span><span class="token punctuation">(</span>key<span class="token punctuation">[</span>i <span class="token operator">%</span> key_length<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span></span> 21<span class="line"> encrypted_char <span class="token operator">=</span> <span class="token builtin">chr</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">ord</span><span class="token punctuation">(</span>char<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span> <span class="token operator">+</span> shift<span class="token punctuation">)</span> <span class="token operator">%</span> <span class="token number">26</span> <span class="token operator">+</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 22<span class="line">
22 ciphertext <span class="token operator">+=</span> encrypted_char</span> 23<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 24<span class="line"> ciphertext <span class="token operator">+=</span> char</span> 25<span class="line"></span> 26<span class="line"> <span class="token keyword">return</span> ciphertext</span> 27<span class="line"></span> 28<span class="line">victory_key <span class="token operator">=</span> <span class="token string">"WANGDINGCUP"</span></span> 29<span class="line">victory_encrypted_flag <span class="token operator">=</span> victory_encrypt<span class="token punctuation">(</span>flag<span class="token punctuation">,</span> victory_key<span class="token punctuation">)</span></span> 30<span class="line"></span> 31<span class="line">p <span class="token operator">=</span> <span class="token number">0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f</span></span> 32<span class="line">a <span class="token operator">=</span> <span class="token number">0</span></span> 33<span class="line">b <span class="token operator">=</span> <span class="token number">7</span></span> 34<span class="line">xG <span class="token operator">=</span> <span class="token number">0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798</span></span> 35<span class="line">yG <span class="token operator">=</span> <span class="token number">0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8</span></span> 36<span class="line">G <span class="token operator">=</span> <span class="token punctuation">(</span>xG<span class="token punctuation">,</span> yG<span class="token punctuation">)</span></span> 37<span class="line">n <span class="token operator">=</span> <span class="token number">0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141</span></span> 38<span class="line">h <span class="token operator">=</span> <span class="token number">1</span></span> 39<span class="line">zero <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">)</span></span> 40<span class="line"></span> 41<span class="line">dA <span class="token operator">=</span> nextprime<span class="token punctuation">(</span>random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> n<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 42<span class="line"></span> 43<span class="line"><span class="token keyword">if</span> dA <span class="token operator">></span> n<span class="token punctuation">:</span></span> 44<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"warning!!"</span><span class="token punctuation">)</span></span> 45<span class="line"></span> 46<span class="line"><span class="token keyword">def</span> <span class="token function">addition</span><span class="token punctuation">(</span>t1<span class="token punctuation">,</span> t2<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 47<span class="line"> <span class="token keyword">if</span> t1 <span class="token operator">==</span> zero<span class="token punctuation">:</span></span> 48<span class="line"> <span class="token keyword">return</span> t2</span> 49<span class="line"> <span class="token keyword">if</span> t2 <span class="token operator">==</span> zero<span class="token punctuation">:</span></span> 50<span class="line"> <span class="token keyword">return</span> t2</span> 51<span class="line"> <span class="token punctuation">(</span>m1<span class="token punctuation">,</span> n1<span class="token punctuation">)</span> <span class="token operator">=</span> t1</span> 52<span class="line"> <span class="token punctuation">(</span>m2<span class="token punctuation">,</span> n2<span class="token punctuation">)</span> <span class="token operator">=</span> t2</span> 53<span class="line"> <span class="token keyword">if</span> m1 <span class="token operator">==</span> m2<span class="token punctuation">:</span></span> 54<span class="line">
54 <span class="token keyword">if</span> n1 <span class="token operator">==</span> <span class="token number">0</span> <span class="token keyword">or</span> n1 <span class="token operator">!=</span> n2<span class="token punctuation">:</span></span> 55<span class="line"> <span class="token keyword">return</span> zero</span> 56<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 57<span class="line"> k <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">3</span> <span class="token operator">*</span> m1 <span class="token operator">*</span> m1 <span class="token operator">+</span> a<span class="token punctuation">)</span> <span class="token operator">%</span> p <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> n1 <span class="token punctuation">,</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 58<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 59<span class="line"> k <span class="token operator">=</span> <span class="token punctuation">(</span>n2 <span class="token operator">-</span> n1 <span class="token operator">+</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span><span class="token punctuation">(</span>m2 <span class="token operator">-</span> m1 <span class="token operator">+</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p<span class="token punctuation">,</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 60<span class="line"> m3 <span class="token operator">=</span> <span class="token punctuation">(</span>k <span class="token operator">*</span> k <span class="token operator">%</span> p <span class="token operator">-</span> m1 <span class="token operator">-</span> m2 <span class="token operator">+</span> p <span class="token operator">*</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 61<span class="line"> n3 <span class="token operator">=</span> <span class="token punctuation">(</span>k <span class="token operator">*</span> <span class="token punctuation">(</span>m1 <span class="token operator">-</span> m3<span class="token punctuation">)</span> <span class="token operator">%</span> p <span class="token operator">-</span> n1 <span class="token operator">+</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 62<span class="line"> <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">(</span>m3<span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token builtin">int</span><span class="token punctuation">(</span>n3<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 63<span class="line"></span> 64<span class="line"><span class="token keyword">def</span> <span class="token function">multiplication</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 65<span class="line"> ans <span class="token operator">=</span> zero</span> 66<span class="line"> t <span class="token operator">=</span> <span class="token number">1</span></span> 67<span class="line"> <span class="token keyword">while</span><span class="token punctuation">(</span>t <span class="token operator"><=</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 68<span class="line">
68 <span class="token keyword">if</span> <span class="token punctuation">(</span>k <span class="token operator">&</span>t <span class="token punctuation">)</span><span class="token operator">></span><span class="token number">0</span><span class="token punctuation">:</span></span> 69<span class="line"> ans <span class="token operator">=</span> addition<span class="token punctuation">(</span>ans<span class="token punctuation">,</span> x<span class="token punctuation">)</span></span> 70<span class="line"> x <span class="token operator">=</span> addition<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token punctuation">)</span></span> 71<span class="line"> t <span class="token operator"><<</span><span class="token operator">=</span> <span class="token number">1</span></span> 72<span class="line"> <span class="token keyword">return</span> ans</span> 73<span class="line"></span> 74<span class="line"><span class="token keyword">def</span> <span class="token function">getrs</span><span class="token punctuation">(</span>z<span class="token punctuation">,</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 75<span class="line"> <span class="token punctuation">(</span>xp<span class="token punctuation">,</span> yp<span class="token punctuation">)</span> <span class="token operator">=</span> P</span> 76<span class="line"> r <span class="token operator">=</span> xp</span> 77<span class="line"> s <span class="token operator">=</span> <span class="token punctuation">(</span>z <span class="token operator">+</span> r <span class="token operator">*</span> dA <span class="token operator">%</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span>k<span class="token punctuation">,</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n</span> 78<span class="line"> <span class="token keyword">return</span> r<span class="token punctuation">,</span>s</span> 79<span class="line"></span> 80<span class="line">z1 <span class="token operator">=</span> random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> p<span class="token punctuation">)</span></span> 81<span class="line">z2 <span class="token operator">=</span> random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> p<span class="token punctuation">)</span></span> 82<span class="line">k <span class="token operator">=</span> random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> n<span class="token punctuation">)</span></span> 83<span class="line">P <span class="token operator">=</span> multiplication<span class="token punctuation">(</span>G<span class="token punctuation">,</span> k<span class="token punctuation">)</span></span> 84<span class="line">hA <span class="token operator">=</span> multiplication<span class="token punctuation">(</span>G<span class="token punctuation">,</span> dA<span class="token punctuation">)</span></span> 85<span class="line">r1<span class="token punctuation">,</span> s1 <span class="token operator">=</span> getrs<span class="token punctuation">(</span>z1<span class="token punctuation">,</span> k<span class="token punctuation">)</span></span> 86<span class="line">r2<span class="token punctuation">,</span> s2 <span class="token operator">=</span> getrs<span class="token punctuation">(</span>z2<span class="token punctuation">,</span> k<span class="token punctuation">)</span></span> 87<span class="line"></span> 88<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"r1 = {}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>r1<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 89<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"r2 = {}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>r2<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 90<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"s1 = {}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>s1<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 91<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"s2 = {}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>s2<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 92<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"z1 = {}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>z1<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 93<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"z2 = {}"</span><span class="token punctuation">.</span><span class="token builtin">format</span><span class="token punctuation">(</span>z2<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 94<span class="line"></span> 95<span class="line">key <span class="token operator">=</span> sha256<span class="token punctuation">(</span>long_to_bytes<span class="token punctuation">(</span>dA<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>digest<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 96<span class="line">cipher <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_CBC<span class="token punctuation">)</span></span> 97<span class="line">iv <span class="token operator">=</span> cipher<span class="token punctuation">.</span>iv</span> 98<span class="line">encrypted_flag <span class="token operator">=</span> cipher<span class="token punctuation">.</span>encrypt<span class="token punctuation">(</span>pad<span class="token punctuation">(</span>victory_encrypted_flag<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> AES<span class="token punctuation">.</span>block_size<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 99<span class="line">encrypted_flag_hex <span class="token operator">=</span> binascii<span class="token punctuation">.</span>hexlify<span class="token punctuation">(</span>iv <span class="token operator">+</span> encrypted_flag<span class="token punctuation">)</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span></span> 100<span class="line"></span> 101<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Encrypted flag (AES in CBC mode, hex):"</span><span class="token punctuation">,</span> encrypted_flag_hex<span class="token punctuation">)</span></span> 102<span class="line"></span> 103<span class="line"><span class="token comment"># output</span></span> 104<span class="line"><span class="token comment"># r1 = 86806104739558095745988469033305523200538774705708894815836887970976487278764</span></span> 105<span class="line"><span class="token comment">
105# r2 = 86806104739558095745988469033305523200538774705708894815836887970976487278764</span></span> 106<span class="line"><span class="token comment"># s1 = 93400851884262731807098055393482657423555590196362184363643455285862566867372</span></span> 107<span class="line"><span class="token comment"># s2 = 58741027521216057788923508334695668250013849866589902683641825341545919891746</span></span> 108<span class="line"><span class="token comment"># z1 = 47591695289461307212638536234394543297527537576682980326526736956079807805586</span></span> 109<span class="line"><span class="token comment"># z2 = 97911075901954715147720917205165523174582665086645698292621371632896283314804</span></span> 110<span class="line"><span class="token comment"># ('Encrypted flag (AES in CBC mode, hex):', u'86cd24e2914c0c4d9b87bea34005a98bd8587d14cae71909b917679d3328304e7915e6ba4cad1096faa4a85bc52f8056d3f21ef09516be8a5160f1b338a6b936')</span></span> 111<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div><div class="collapsed-lines"></div></div><h3 id="æ¥éª¤ä¸-å®è£ 缺失è¿è¡åº" tabindex="-1"><a class="header-anchor" href="#æ¥éª¤ä¸-å®è£ 缺失è¿è¡åº"><span>
111æ¥éª¤ä¸ï¼å®è£ 缺失è¿è¡åº</span></a></h3><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh"><pre><code class="language-bash"><span class="line"><span class="token comment"># å建èæç¯å¢ï¼é²æ¢æ±¡ææ¬æºç¯å¢</span></span> 112<span class="line">python3 <span class="token parameter variable">-m</span> venv venv</span> 113<span class="line"><span class="token builtin class-name">source</span> ./venv/bin/activate</span> 114<span class="line"><span class="token comment"># pipå®è£ è¿è¡åº</span></span> 115<span class="line">pip <span class="token function">install</span> gmpy2 sympy pycryptodome</span> 116<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="æ¥éª¤äº-åæå å¯ä»£ç å®ç°" tabindex="-1"><a class="header-anchor" href="#æ¥éª¤äº-åæå å¯ä»£ç å®ç°"><span>æ¥éª¤äºï¼åæå å¯ä»£ç å®ç°</span></a></h3><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">key <span class="token operator">=</span> sha256<span class="token punctuation">(</span>long_to_bytes<span class="token punctuation">(</span>dA<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>digest<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 117<span class="line">cipher <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_CBC<span class="token punctuation">)</span></span> 118<span class="line">iv <span class="token operator">=</span> cipher<span class="token punctuation">.</span>iv</span> 119<span class="line">encrypted_flag <span class="token operator">=</span> cipher<span class="token punctuation">.</span>encrypt<span class="token punctuation">(</span>pad<span class="token punctuation">(</span>victory_encrypted_flag<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> AES<span class="token punctuation">.</span>block_size<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 120<span class="line">encrypted_flag_hex <span class="token operator">=</span> binascii<span class="token punctuation">.</span>hexlify<span class="token punctuation">(</span>iv <span class="token operator">+</span> encrypted_flag<span class="token punctuation">)</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span></span> 121<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>é¢ç®æä¾ç»æä»¬çæ¯<code>encrypted_flag_hex</code>ï¼æä»¬è¦è·å<code>flag</code>ï¼éè¦å å¾å°<code>encrypted_flag</code>.</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">encrypted_flag_hex <span class="token operator">=</span> <span class="token string">u'86cd24e2914c0c4d9b87bea34005a98bd8587d14cae71909b917679d3328304e7915e6ba4cad1096faa4a85bc52f8056d3f21ef09516be8a5160f1b338a6b936'</span></span> 122<span class="line">encrypted_flag_bytes <span class="token operator">=</span> binascii<span class="token punctuation">.</span>unhexlify<span class="token punctuation">(</span>encrypted_flag_hex<span class="token punctuation">)</span></span> 123<span class="line">iv <span class="token operator">=</span> encrypted_flag_bytes<span class="token punctuation">[</span><span class="token punctuation">:</span>AES<span class="token punctuation">.</span>block_size<span class="token punctuation">]</span></span> 124<span class="line">encrypted_flag <span class="token operator">=</span> encrypted_flag_bytes<span class="token punctuation">[</span>AES<span class="token punctuation">.</span>block_size<span class="token punctuation">:</span><span class="token punctuation">]</span></span> 125<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>æä»¬éè¦è·å¾<code>victory_encrypted_flag</code>çå¼ï¼ä¹å°±éè¦ï¼</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">key <span class="token operator">=</span> sha256<span class="token punctuation">(</span>long_to_bytes<span class="token punctuation">(</span>dA<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>digest<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 126<span class="line">cipher <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_CBC<span class="token punctuation">,</span> iv<span class="token punctuation">)</span></span> 127<span class="line"></span> 128<span class="line">victory_encrypted_flag <span class="token operator">=</span> unpad<span class="token punctuation">(</span>cipher<span class="token punctuation">.</span>decrypt<span class="token punctuation">(</span>encrypted_flag<span class="token punctuation">)</span><span class="token punctuation">,</span> AES<span class="token punctuation">.</span>block_size<span class="token punctuation">)</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span></span> 129<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>è¿ééè¦<code>dA</code>çå¼ï¼è<code>dA</code>å¨è¿éå®ä¹:</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">dA <span class="token operator">=</span> nextprime<span class="token punctuation">(</span>random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> n<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 130<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>é¦å çæä¸ä¸ªå¨ <code>0</code> å° <code>n</code> ä¹é´çéæºæ´æ°ï¼ç¶åæ¾å°å¤§äºè¿ä¸ªéæºæ´æ°çä¸ä¸ä¸ªè´¨æ°ï¼å¹¶å°å ¶èµå¼ç»åé<code>dA</code>. å¦æè¦æ±å¾<code>dA</code>ï¼å°±è¦æ±å¾<code>k</code>çå¼ã</p><h3 id="æ¥éª¤ä¸-计ç®å¾å°kå¼" tabindex="-1"><a class="header-anchor" href="#æ¥éª¤ä¸-计ç®å¾å°kå¼"><span>æ¥éª¤ä¸ï¼è®¡ç®å¾å°<code>k</code>å¼</span></a></h3><p>å ççå彿°å¦ä½å è£ k å¼ï¼</p><p>é¦å ï¼çæèå´ä¸º<code>(0, n)</code>çéæºæ´æ°<code>k</code>.</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">n <span class="token operator">=</span> <span class="token number">0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141</span></span> 131<span class="line">k <span class="token operator">=</span> random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> n<span class="token punctuation">)</span></span> 132<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>ç¶åçæèå´ä¸º<code>(0, p)</code>çéæºæ´æ°<code>z1</code>, <code>z2</code>.</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">p <span class="token operator">=</span> <span class="token number">0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f</sp
132an></span> 133<span class="line">z1 <span class="token operator">=</span> random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> p<span class="token punctuation">)</span></span> 134<span class="line">z2 <span class="token operator">=</span> random<span class="token punctuation">.</span>randint<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> p<span class="token punctuation">)</span></span> 135<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>z1</code>, <code>z2</code>åå·²ç»åºè¾åºå¼ã</p><p>ç¶åå°<code>k</code>, <code>z1</code>, <code>z2</code>åå«ä¼ å ¥<code>getrs()</code>彿°ãå¹¶è¾åº<code>r1</code>, <code>s1</code>, <code>r2</code>, <code>s2</code>.</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">r1<span class="token punctuation">,</span> s1 <span class="token operator">=</span> getrs<span class="token punctuation">(</span>z1<span class="token punctuation">,</span> k<span class="token punctuation">)</span></span> 136<span class="line">r2<span class="token punctuation">,</span> s2 <span class="token operator">=</span> getrs<span class="token punctuation">(</span>z2<span class="token punctuation">,</span> k<span class="token punctuation">)</span></span> 137<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>ç°å¨å·²ç»æç½äº k æ¯å¦ä½è¢«ä¸æ¥æ¥å è£ æå 个åéçï¼å¯ä»¥æ ¹æ®ä»£ç 鿥çéåè¿ç®å¾å°<code>k</code>å¼ã</p><p>é¦å ï¼<code>r1</code>, <code>s1</code>, <code>r2</code>, <code>s2</code>æåäºä¸ä¸ª<code>getrs()</code>彿°ï¼æä»¬å¯ä»¥åæä¸ä¸è¿ä¸ªå½æ°ã</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">getrs</span><span class="token punctuation">(</span>z<span class="token punctuation">,</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 138<span class="line"> <span class="token punctuation">(</span>xp<span class="token punctuation">,</span> yp<span class="token punctuation">)</span> <span class="token operator">=</span> P</span> 139<span class="line"> r <span class="token operator">=</span> xp</span> 140<span class="line"> s <span class="token operator">=</span> <span class="token punctuation">(</span>z <span class="token operator">+</span> r <span class="token operator">*</span> dA <span class="token operator">%</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span>k<span class="token punctuation">,</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n</span> 141<span class="line"> <span class="token keyword">return</span> r<span class="token punctuation">,</span>s</span> 142<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>æ¤å½æ°ç<code>(xp, yp) = P</code>æåäº<code>P = multiplication(G, k)</code>.æä»¬å¯ä»¥åæä¸ä¸<code>multiplication()</code>彿°ã</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">multiplication</span><span class="token punctuation">(</span>
142x<span class="token punctuation">,</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 143<span class="line"> ans <span class="token operator">=</span> zero</span> 144<span class="line"> t <span class="token operator">=</span> <span class="token number">1</span></span> 145<span class="line"> <span class="token keyword">while</span><span class="token punctuation">(</span>t <span class="token operator"><=</span> k<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 146<span class="line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>k <span class="token operator">&</span>t <span class="token punctuation">)</span><span class="token operator">></span><span class="token number">0</span><span class="token punctuation">:</span></span> 147<span class="line"> ans <span class="token operator">=</span> addition<span class="token punctuation">(</span>ans<span class="token punctuation">,</span> x<span class="token punctuation">)</span></span> 148<span class="line"> x <span class="token operator">=</span> addition<span class="token punctuation">(</span>x<span class="token punctuation">,</span> x<span class="token punctuation">)</span></span> 149<span class="line"> t <span class="token operator"><<</span><span class="token operator">=</span> <span class="token number">1</span></span> 150<span class="line"> <span class="token keyword">return</span> ans</span> 151<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>è¿ä¸ªå½æ°çæäºåéæåäº<code>addition()</code>彿°ï¼æä»¬ç»§ç»çä¸ä¸è¿æ®µå½æ°ã</p><div class="language-python line-numbers-mode has-collapsed-lines collapsed" data-highlighter="prismjs" data-ext="py" style="--vp-collapsed-lines:15;"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">addition</span><span class="token punctuation">(</span>t1<span class="token punctuation">,</span> t2<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 152<span class="line"> <span class="token keyword">if</span> t1 <span class="token operator">==</span> zero<span class="token punctuation">:</span></span> 153<span class="line"> <span class="token keyword">return</span> t2</span> 154<span class="line"> <span class="token keyword">if</span> t2 <span class="token operator">==</span> zero<span class="token punctuation">:</span></span> 155<span class="line"> <span class="token keyword">return</span> t2</span> 156<span class="line"> <span class="token punctuation">(</span>m1<span class="token punctuation">,</span> n1<span class="token punctuation">)</span> <span class="token operator">=</span> t1</span> 157<span class="line"> <span class="token punctuation">(</span>m2<span class="token punctuation">,</span> n2<span class="token punctuation">)</span> <span class="token operator">=</span> t2</span> 158<span class="line"> <span class="token keyword">if</span> m1 <span class="token operator">==</span> m2<span class="token punctuation">:</span></span> 159<span class="line"> <span class="token keyword">if</span> n1 <span class="token operator">==</span> <span class="token number">0</span> <span class="token keyword">or</span> n1 <span class="token operator">!=</span> n2<span class="token punctuation">:</span></span> 160<span class="line"> <span class="token keyword">return</span> zero</span> 161<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 162<span class="line"> k <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">3</span> <span class="token operator">*</span> m1 <span class="token operator">*</span> m1 <span class="token operator">+</span> a<span class="token punctuation">)</span> <span class="token operator">%</span> p <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> n1 <span class="token punctuation">,</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 163<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 164<span class="line"> k <span class="token operator">=</span> <span class="token punctuation">(</span>
164n2 <span class="token operator">-</span> n1 <span class="token operator">+</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span><span class="token punctuation">(</span>m2 <span class="token operator">-</span> m1 <span class="token operator">+</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p<span class="token punctuation">,</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 165<span class="line"> m3 <span class="token operator">=</span> <span class="token punctuation">(</span>k <span class="token operator">*</span> k <span class="token operator">%</span> p <span class="token operator">-</span> m1 <span class="token operator">-</span> m2 <span class="token operator">+</span> p <span class="token operator">*</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 166<span class="line"> n3 <span class="token operator">=</span> <span class="token punctuation">(</span>k <span class="token operator">*</span> <span class="token punctuation">(</span>m1 <span class="token operator">-</span> m3<span class="token punctuation">)</span> <span class="token operator">%</span> p <span class="token operator">-</span> n1 <span class="token operator">+</span> p<span class="token punctuation">)</span> <span class="token operator">%</span> p</span> 167<span class="line"> <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token builtin">int</span><span class="token punctuation">(</span>m3<span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token builtin">int</span><span class="token punctuation">(</span>n3<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 168<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div><div class="collapsed-lines"></div></div><p>éè¿è¿å 段æå ³æ¤å彿°çè¿ç®å¯ä»¥æ¨æåº<code>k</code>æ¯ä½¿ç¨æ¤åæ²çº¿æ°åç¾åç®æ³ï¼ECDSAï¼å å¯çãå¯åè<a href="https://zhuanlan.zhihu.com/p/455030060" target="_blank" rel="noopener noreferrer">ä¸æçææ¤åæ²çº¿ç¾åç®æ³ - ç¥ä¹</a>è¿è¡æ±è§£<code>k</code>å¼ã</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">k <span class="token operator">=</span> <span class="token punctuation">(</span>z1 <span class="token operator">-</span> z2<span class="token punctuation">)</span> <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span>s1 <span class="token operator">-</span> s2<span class="token punctuation">,</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n</span> 169<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="æ¥éª¤å-计ç®å¾å°daå¼" tabindex="-1"><a class="header-anchor" href="#æ¥éª¤å-计ç®å¾å°daå¼"><span>æ¥éª¤åï¼è®¡ç®å¾å°<code>dA</code>å¼</span></a></h3><p>æ ¹æ®ä¹åçåæï¼å¯ä»¥éåå¾å°<code>dA</code>.</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">dA <span class="token operator">=</span> <span class="token punctuation">(</span>s1 <span class="token operator">*</span> k <span class="token operator">-</span> z1<span class="token punctuation">)</span> <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span>r1<span class="token punctuation">,</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n</span> 170<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="æ¥éª¤äº-忍彿°å¾å°victory-encrypted-flag" tabindex="-1"><a class="header-anchor" href="#æ¥éª¤äº-忍彿°å¾å°victory-encrypted-flag"><span>æ¥éª¤äºï¼åæ¨å½æ°å¾å°<code>victory_encrypted_flag</code></span></a></h3><p>é è¯»âæ¥éª¤äºâå¯å¾<code>victory_encrypted_flag</code>çéå代ç ã</p><div class="language-python line-numbers-mode" data-highlighter="prismjs" data-ext="py"><pre><code class="language-python"><span class="line">key <span class="token operator">=</span> sha256<span class="token punctuation">(</span>long_to_bytes<span class="token punctuation">(</span>dA<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>digest<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 171<span class="line">cipher <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_CBC<span class="token punctuation">,</span> iv<span class="token punctuation">)</span></span> 172<span class="line"></span> 173<span class="line">victory_encrypted_flag <span class="token operator">=</span> unpad<span class="token punctuation">(</span>cipher<span class="token punctuation">.</span>decrypt<span class="token punctuation">(</span>encrypted_flag<span class="token punctuation">)</span><span class="token punctuation">,</span> AES<span class="token punctuation">.</span>block_size<span class="token punctuation">)</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span></span> 174<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>è¿è¡åå¾å°è¾åºå¼ä¸º<code>SDSRDO{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}</code>ï¼è¿å¹¶ä¸æ¯æ£ç¡®<code>flag</code>æ ¼å¼ã</p><h3 id="æ¥éª¤å -å¾å°æ£ç¡®flag" tabindex="-1"><a class="header-anchor" href="#æ¥éª¤å -å¾å°æ£ç¡®flag"><span>æ¥éª¤å ï¼å¾å°æ£ç¡®<code>flag</code></span></a></h3><p>ä»ç»é 读代ç ï¼å¯ä»¥åç°<code>victory_encrypted_flag</code>ç±<code>victory_encrypt()</code>彿°å¾å°ã</p><div class="language-python line-numbers-mode has-collapsed-lines collapsed" data-highlighter="prismjs" data-ext="py" style="--vp-collapsed-lines:15;"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">victory_encrypt</span><span class="token punctuation">(</span>plaintext<span class="token punctuation">,</span> key<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 175<span class="line"> key <span class="token operator">=</span> key<span class="token punctuation">.</span>upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 176<span class="line"> key_length <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span></span> 177<span class="line"> plaintext <span class="token operator">=</span> plaintext<span class="token punctuation">.</span>upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 178<span class="line">
178 ciphertext <span class="token operator">=</span> <span class="token string">''</span></span> 179<span class="line"></span> 180<span class="line"> <span class="token keyword">for</span> i<span class="token punctuation">,</span> char <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>plaintext<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 181<span class="line"> <span class="token keyword">if</span> char<span class="token punctuation">.</span>isalpha<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 182<span class="line"> shift <span class="token operator">=</span> <span class="token builtin">ord</span><span class="token punctuation">(</span>key<span class="token punctuation">[</span>i <span class="token operator">%</span> key_length<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span></span> 183<span class="line"> encrypted_char <span class="token operator">=</span> <span class="token builtin">chr</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">ord</span><span class="token punctuation">(</span>char<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span> <span class="token operator">+</span> shift<span class="token punctuation">)</span> <span class="token operator">%</span> <span class="token number">26</span> <span class="token operator">+</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 184<span class="line"> ciphertext <span class="token operator">+=</span> encrypted_char</span> 185<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 186<span class="line"> ciphertext <span class="token operator">+=</span> char</span> 187<span class="line"></span> 188<span class="line"> <span class="token keyword">return</span> ciphertext</span> 189<span class="line"></span> 190<span class="line">victory_key <span class="token operator">=</span> <span class="token string">"WANGDINGCUP"</span></span> 191<span class="line">victory_encrypted_flag <span class="token operator">=</span> victory_encrypt<span class="token punctuation">(</span>flag<span class="token punctuation">,</span> victory_key<span class="token punctuation">)</span></span> 192<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div><div class="collapsed-lines"></div></div><p>æä»¬åæ¨<code>victory_encrypt()</code>å¾å°<code>victory_decrypt()</code></p><div class="language-python line-numbers-mode has-collapsed-lines collapsed" data-highlighter="prismjs" data-ext="py" style="--vp-collapsed-lines:15;"><pre><code class="language-python"><span class="line"><span class="token keyword">def</span> <span class="token function">victory_decrypt</span><span class="token punctuation">(</span>
192ciphertext<span class="token punctuation">,</span> key<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 193<span class="line"> key <span class="token operator">=</span> key<span class="token punctuation">.</span> upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 194<span class="line"> key_length <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span></span> 195<span class="line"> ciphertext <span class="token operator">=</span> ciphertext<span class="token punctuation">.</span> upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 196<span class="line"> plaintext <span class="token operator">=</span> <span class="token string">''</span></span> 197<span class="line"></span> 198<span class="line"> <span class="token keyword">for</span> i<span class="token punctuation">,</span> char <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>
198ciphertext<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 199<span class="line"> <span class="token keyword">if</span> char<span class="token punctuation">.</span>isalpha<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 200<span class="line"> shift <span class="token operator">=</span> <span class="token builtin">ord</span><span class="token punctuation">(</span>key<span class="token punctuation">[</span>i <span class="token operator">%</span> key_length<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span></span> 201<span class="line"> decrypted_char <span class="token operator">=</span> <span class="token builtin">chr</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">ord</span><span class="token punctuation">(</span>char<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span> <span class="token operator">-</span> shift <span class="token operator">+</span><span class="token number">26</span><span class="token punctuation">)</span><span class="token operator">%</span> <span class="token number">26</span> <span class="token operator">+</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 202<span class="line"> plaintext <span class="token operator">+=</span> decrypted_char</span> 203<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 204<span class="line"> plaintext <span class="token operator">+=</span> char</span> 205<span class="line"></span> 206<span class="line"> <span class="token keyword">return</span> plaintext</span> 207<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div><div class="collapsed-lines"></div></div><p>éè¿<code>victory_decrypt()</code>å¯ä»¥å¾å°å¤§åç<code>FLAG</code>ï¼å°å ¶è½¬æ¢æå°å<code>flag</code>å³å¯ã</p><h3 id="宿´å®ç°æºç " tabindex="-1"><a class="header-anchor" href="#宿´å®ç°æºç "><span>宿´å®ç°æºç </span></a></h3><div class="language-python line-numbers-mode has-collapsed-lines collapsed" data-highlighter="prismjs" data-ext="py" style="--vp-collapsed-lines:15;"><pre><code class="language-python"><span class="line"><span class="token keyword">import</span> binascii</span> 208<span class="line"><span class="token keyword">from</span> hashlib <span class="token keyword">import</span> sha256</span> 209<span class="line"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Cipher <span class="token keyword">import</span> AES</span> 210<span class="line"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Util<span class="token punctuation">.</span>number <span class="token keyword">import</span> long_to_bytes</span> 211<span class="line"><span class="token keyword">from</span> Crypto<span class="token punctuation">.</span>Util<span class="token punctuation">.</span>Padding <span class="token keyword">
211import</span> unpad</span> 212<span class="line"><span class="token keyword">import</span> gmpy2</span> 213<span class="line"></span> 214<span class="line">n <span class="token operator">=</span> <span class="token number">0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141</span></span> 215<span class="line">r1 <span class="token operator">=</span> <span class="token number">86806104739558095745988469033305523200538774705708894815836887970976487278764</span></span> 216<span class="line">r2 <span class="token operator">=</span> <span class="token number">86806104739558095745988469033305523200538774705708894815836887970976487278764</span></span> 217<span class="line">s1 <span class="token operator">=</span> <span class="token number">93400851884262731807098055393482657423555590196362184363643455285862566867372</span></span> 218<span class="line">s2 <span class="token operator">=</span> <span class="token number">58741027521216057788923508334695668250013849866589902683641825341545919891746</span></span> 219<span class="line">z1 <span class="token operator">=</span> <span class="token number">47591695289461307212638536234394543297527537576682980326526736956079807805586</span></span> 220<span class="line">z2 <span class="token operator">=</span> <span class="token number">97911075901954715147720917205165523174582665086645698292621371632896283314804</span></span> 221<span class="line">k <span class="token operator">=</span> <span class="token punctuation">(</span>z1 <span class="token operator">-</span> z2<span class="token punctuation">)</span> <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span>s1 <span class="token operator">-</span> s2<span class="token punctuation">,</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n</span> 222<span class="line">dA <span class="token operator">=</span> <span class="token punctuation">(</span>s1 <span class="token operator">*</span> k <span class="token operator">-</span> z1<span class="token punctuation">)</span> <span class="token operator">*</span> gmpy2<span class="token punctuation">.</span>invert<span class="token punctuation">(</span>r1<span class="token punctuation">,</span> n<span class="token punctuation">)</span> <span class="token operator">%</span> n</span> 223<span class="line"></span> 224<span class="line">encrypted_flag_hex <span class="token operator">=</span> <span class="token string">u'86cd24e2914c0c4d9b87bea34005a98bd8587d14cae71909b917679d3328304e7915e6ba4cad1096faa4a85bc52f8056d3f21ef09516be8a5160f1b338a6b936'</span></span> 225<span class="line">encrypted_flag_bytes <span class="token operator">=</span> binascii<span class="token punctuation">.</span>unhexlify<span class="token punctuation">(</span>encrypted_flag_hex<span class="token punctuation">)</span></span> 226<span class="line">iv <span class="token operator">=</span> encrypted_flag_bytes<span class="token punctuation">[</span><span class="token punctuation">:</span>AES<span class="token punctuation">.</span>block_size<span class="token punctuation">]</span></span> 227<span class="line">encrypted_flag <span class="token operator">=</span> encrypted_flag_bytes<span class="token punctuation">[</span>AES<span class="token punctuation">.</span>block_size<span class="token punctuation">:</span><span class="token punctuation">]</span></span> 228<span class="line"></span> 229<span class="line">key <span class="token operator">=</span> sha256<span class="token punctuation">(</span>long_to_bytes<span class="token punctuation">(</span>dA<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>digest<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 230<span class="line">cipher <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_CBC<span class="token punctuation">,</span> iv<span class="token punctuation">)</span></span> 231<span class="line"></span> 232<span class="line">victory_encrypted_flag <span class="token operator">=</span> unpad<span class="token punctuation">(</span>cipher<span class="token punctuation">.</span>decrypt<span class="token punctuation">(</span>encrypted_flag<span class="token punctuation">)</span><span class="token punctuation">,</span> AES<span class="token punctuation">.</span>block_size<span class="token punctuation">)</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span></span> 233<span class="line"></span> 234<span class="line"><span class="token keyword">def</span> <span class="token function">victory_decrypt</span><span class="token punctuation">(</span>
234ciphertext<span class="token punctuation">,</span> key<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 235<span class="line"> key <span class="token operator">=</span> key<span class="token punctuation">.</span> upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 236<span class="line"> key_length <span class="token operator">=</span> <span class="token builtin">len</span><span class="token punctuation">(</span>key<span class="token punctuation">)</span></span> 237<span class="line"> ciphertext <span class="token operator">=</span> ciphertext<span class="token punctuation">.</span> upper<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 238<span class="line"> plaintext <span class="token operator">=</span> <span class="token string">''</span></span> 239<span class="line"></span> 240<span class="line"> <span class="token keyword">for</span> i<span class="token punctuation">,</span> char <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>
240ciphertext<span class="token punctuation">)</span><span class="token punctuation">:</span></span> 241<span class="line"> <span class="token keyword">if</span> char<span class="token punctuation">.</span>isalpha<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 242<span class="line"> shift <span class="token operator">=</span> <span class="token builtin">ord</span><span class="token punctuation">(</span>key<span class="token punctuation">[</span>i <span class="token operator">%</span> key_length<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span></span> 243<span class="line"> decrypted_char <span class="token operator">=</span> <span class="token builtin">chr</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token builtin">ord</span><span class="token punctuation">(</span>char<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span> <span class="token operator">-</span> shift <span class="token operator">+</span><span class="token number">26</span><span class="token punctuation">)</span><span class="token operator">%</span> <span class="token number">26</span> <span class="token operator">+</span> <span class="token builtin">ord</span><span class="token punctuation">(</span><span class="token string">'A'</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 244<span class="line"> plaintext <span class="token operator">+=</span> decrypted_char</span> 245<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 246<span class="line"> plaintext <span class="token operator">+=</span> char</span> 247<span class="line"></span> 248<span class="line"> <span class="token keyword">return</span> plaintext</span> 249<span class="line"></span> 250<span class="line">victory_key <span class="token operator">=</span> <span class="token string">"WANGDINGCUP"</span></span> 251<span class="line">flag <span class="token operator">=</span> victory_decrypt<span class="token punctuation">(</span>victory_encrypted_flag<span class="token punctuation">,</span> victory_key<span class="token punctuation">)</span></span> 252<span class="line"></span> 253<span class="line"><span class="token keyword">print</span><span class="token punctuation">(</span>flag<span class="token punctuation">)</span></span> 254<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div><div class="collapsed-lines"></div></div>`,46)])])}const i=s(e,[["render",o]]),u=JSON.parse(`{"path":"/posts/wdb-qinglong-crypto2.html","title":"æ¤åæ²çº¿ç¾åç®æ³ | ç½é¼æ¯20241029éé¾ç» | Crypto2","lang":"zh-CN","frontmatter":{"title":"æ¤åæ²çº¿ç¾åç®æ³ | ç½é¼æ¯20241029éé¾ç» | Crypto2","category":["CTF"],"tag":["Python","Crypto"],"description":"åé¢ æ¥éª¤ä¸
254ï¼å®è£
缺失è¿è¡åº æ¥éª¤äºï¼åæå å¯ä»£ç å®ç° é¢ç®æä¾ç»æä»¬çæ¯encrypted_flag_hexï¼æä»¬è¦è·åflagï¼éè¦å
å¾å°encrypted_flag. æä»¬éè¦è·å¾victory_encrypted_flagçå¼ï¼ä¹å°±éè¦ï¼ è¿ééè¦dAçå¼ï¼èdAå¨è¿éå®ä¹: é¦å
çæä¸ä¸ªå¨ 0 å° n ä¹é´çéæºæ´æ°ï¼ç¶åæ¾å°å¤§äºè¿ä¸ªéæºæ´æ°...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"æ¤åæ²çº¿ç¾åç®æ³ | ç½é¼æ¯20241029éé¾ç» | Crypto2\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-12-10T14:04:03.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"undefined\\",\\"url\\":\\"https://www.hestudio.net/about/\\",\\"email\\":\\"[email protected]\\"}]}"],["meta",{"property":"og:url","content":"https://www.hestudio.net/posts/wdb-qinglong-crypto2.html"}],["meta",{"property":"og:site_name","content":"heStudio"}],["meta",{"property":"og:title","content":"æ¤åæ²çº¿ç¾åç®æ³ | ç½é¼æ¯20241029éé¾ç» | Crypto2"}],["meta",{"property":"og:description","content":"åé¢ æ¥éª¤ä¸ï¼å®è£
缺失è¿è¡åº æ¥éª¤äºï¼åæå å¯ä»£ç å®ç° é¢ç®æä¾ç»æä»¬çæ¯encrypted_flag_hexï¼æä»¬è¦è·åflagï¼éè¦å
å¾å°encrypted_flag. æä»¬éè¦è·å¾victory_encrypted_flagçå¼ï¼ä¹å°±éè¦ï¼ è¿ééè¦dAçå¼ï¼èdAå¨è¿éå®ä¹: é¦å
çæä¸ä¸ªå¨ 0 å° n ä¹é´çéæºæ´æ°ï¼ç¶åæ¾å°å¤§äºè¿ä¸ªéæºæ´æ°..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-12-10T14:04:03.000Z"}],["meta",{"property":"article:tag","content":"Crypto"}],["meta",{"property":"article:tag","content":"Python"}],["meta",{"property":"article:modified_time","content":"2024-12-10T14:04:03.000Z"}]]},"git":{"createdTime":1730520238000,"updatedTime":1733839443000},"readingTime":{"minutes":4.73,"words":1418},"filePathRelative":"posts/wdb-qinglong-crypto2.md","excerpt":"<h3>åé¢</h3>\\n<div class=\\"language-python line-numbers-mode has-collapsed-lines collapsed\\" data-highlighter=\\"prismjs\\" data-ext=\\"py\\" style=\\"--vp-collapsed-lines:15;\\"><pre><code class=\\"language-python\\"><span class=\\"line\\"><span class=\\"token keyword\\">import</span> gmpy2</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">import</span> random</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">import</span> binascii</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">from</span> hashlib <span class=\\"token keyword\\">import</span> sha256</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">from</span> sympy <span class=\\"token keyword\\">import</span> nextprime</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">from</span> Crypto<span class=\\"token punctuation\\">.</span>Cipher <span class=\\"token keyword\\">import</span> AES</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">from</span> Crypto<span class=\\"token punctuation\\">.</span>Util<span class=\\"token punctuation\\">.</span>Padding <span class=\\"token keyword\\">import</span> pad</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">from</span> Crypto<span class=\\"token punctuation\\">.</span>Util<span class=\\"token punctuation\\">.</span>number <span class=\\"token keyword\\">import</span> long_to_bytes</span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">from</span> FLAG <span class=\\"token keyword\\">import</span> flag</span>\\n<span class=\\"line\\"><span class=\\"token comment\\">#flag = 'wdflag{123}'</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">def</span> <span class=\\"token function\\">victory_encrypt</span><span class=\\"token punctuation\\">(</span>plaintext<span class=\\"token punctuation\\">,</span> key<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> key <span class=\\"token operator\\">=</span> key<span class=\\"token punctuation\\">.</span>upper<span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"> key_length <span class=\\"token operator\\">=</span> <span class=\\"token builtin\\">len</span><span class=\\"token punctuation\\">(</span>key<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"> plaintext <span class=\\"token operator\\">=</span> plaintext<span class=\\"token punctuation\\">.</span>upper<span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">
254 ciphertext <span class=\\"token operator\\">=</span> <span class=\\"token string\\">''</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">for</span> i<span class=\\"token punctuation\\">,</span> char <span class=\\"token keyword\\">in</span> <span class=\\"token builtin\\">enumerate</span><span class=\\"token punctuation\\">(</span>plaintext<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">if</span> char<span class=\\"token punctuation\\">.</span>isalpha<span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> shift <span class=\\"token operator\\">=</span> <span class=\\"token builtin\\">ord</span><span class=\\"token punctuation\\">(</span>key<span class=\\"token punctuation\\">[</span>i <span class=\\"token operator\\">%</span> key_length<span class=\\"token punctuation\\">]</span><span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">-</span> <span class=\\"token builtin\\">ord</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">'A'</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"> encrypted_char <span class=\\"token operator\\">=</span> <span class=\\"token builtin\\">chr</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">(</span><span class=\\"token builtin\\">ord</span><span class=\\"token punctuation\\">(</span>char<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">-</span> <span class=\\"token builtin\\">ord</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">'A'</span><span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">+</span> shift<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> <span class=\\"token number\\">26</span> <span class=\\"token operator\\">+</span> <span class=\\"token builtin\\">ord</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">'A'</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"> ciphertext <span class=\\"token operator\\">+=</span> encrypted_char</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">else</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> ciphertext <span class=\\"token operator\\">+=</span> char</span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> ciphertext</span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\">victory_key <span class=\\"token operator\\">=</span> <span class=\\"token string\\">\\"WANGDINGCUP\\"</span></span>\\n<span class=\\"line\\">victory_encrypted_flag <span class=\\"token operator\\">=</span> victory_encrypt<span class=\\"token punctuation\\">(</span>flag<span class=\\"token punctuation\\">,</span> victory_key<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\">p <span class=\\"token operator\\">=</span> <span class=\\"token number\\">0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f</span></span>\\n<span class=\\"line\\">a <span class=\\"token operator\\">=</span> <span class=\\"token number\\">0</span></span>\\n<span class=\\"line\\">b <span class=\\"token operator\\">=</span> <span class=\\"token number\\">7</span></span>\\n<span class=\\"line\\">xG <span class=\\"token operator\\">=</span> <span class=\\"token number\\">0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798</span></span>\\n<span class=\\"line\\">yG <span class=\\"token operator\\">=</span> <span class=\\"token number\\">0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8</span></span>\\n<span class=\\"line\\">G <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span>xG<span class=\\"token punctuation\\">,</span>
254 yG<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">n <span class=\\"token operator\\">=</span> <span class=\\"token number\\">0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141</span></span>\\n<span class=\\"line\\">h <span class=\\"token operator\\">=</span> <span class=\\"token number\\">1</span></span>\\n<span class=\\"line\\">zero <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">,</span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\">dA <span class=\\"token operator\\">=</span> nextprime<span class=\\"token punctuation\\">(</span>random<span class=\\"token punctuation\\">.</span>randint<span class=\\"token punctuation\\">(</span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">,</span> n<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">if</span> dA <span class=\\"token operator\\">></span> n<span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"warning!!\\"</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">def</span> <span class=\\"token function\\">addition</span><span class=\\"token punctuation\\">(</span>t1<span class=\\"token punctuation\\">,</span> t2<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">if</span> t1 <span class=\\"token operator\\">==</span> zero<span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> t2</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">if</span> t2 <span class=\\"token operator\\">==</span> zero<span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> t2</span>\\n<span class=\\"line\\"> <span class=\\"token punctuation\\">(</span>m1<span class=\\"token punctuation\\">,</span> n1<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">=</span> t1</span>\\n<span class=\\"line\\"> <span class=\\"token punctuation\\">(</span>m2<span class=\\"token punctuation\\">,</span> n2<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">=</span> t2</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">if</span> m1 <span class=\\"token operator\\">==</span> m2<span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">if</span> n1 <span class=\\"token operator\\">==</span> <span class=\\"token number\\">0</span> <span class=\\"token keyword\\">or</span> n1 <span class=\\"token operator\\">!=</span> n2<span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> zero</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">else</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> k <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span><span class=\\"token number\\">3</span> <span class=\\"token operator\\">*</span> m1 <span class=\\"token operator\\">*</span> m1 <span class=\\"token operator\\">+</span> a<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p <span class=\\"token operator\\">*</span> gmpy2<span class=\\"token punctuation\\">.</span>invert<span class=\\"token punctuation\\">(</span><span class=\\"token number\\">2</span> <span class=\\"token operator\\">*</span> n1 <span class=\\"token punctuation\\">,</span> p<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">else</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> k <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span>
254n2 <span class=\\"token operator\\">-</span> n1 <span class=\\"token operator\\">+</span> p<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p <span class=\\"token operator\\">*</span> gmpy2<span class=\\"token punctuation\\">.</span>invert<span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">(</span>m2 <span class=\\"token operator\\">-</span> m1 <span class=\\"token operator\\">+</span> p<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p<span class=\\"token punctuation\\">,</span> p<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p</span>\\n<span class=\\"line\\"> m3 <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span>k <span class=\\"token operator\\">*</span> k <span class=\\"token operator\\">%</span> p <span class=\\"token operator\\">-</span> m1 <span class=\\"token operator\\">-</span> m2 <span class=\\"token operator\\">+</span> p <span class=\\"token operator\\">*</span> <span class=\\"token number\\">2</span><span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p</span>\\n<span class=\\"line\\"> n3 <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span>k <span class=\\"token operator\\">*</span> <span class=\\"token punctuation\\">(</span>m1 <span class=\\"token operator\\">-</span> m3<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p <span class=\\"token operator\\">-</span> n1 <span class=\\"token operator\\">+</span> p<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> p</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> <span class=\\"token punctuation\\">(</span><span class=\\"token builtin\\">int</span><span class=\\"token punctuation\\">(</span>m3<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">,</span><span class=\\"token builtin\\">int</span><span class=\\"token punctuation\\">(</span>n3<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">def</span> <span class=\\"token function\\">multiplication</span><span class=\\"token punctuation\\">(</span>x<span class=\\"token punctuation\\">,</span> k<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> ans <span class=\\"token operator\\">=</span> zero</span>\\n<span class=\\"line\\"> t <span class=\\"token operator\\">=</span> <span class=\\"token number\\">1</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">while</span><span class=\\"token punctuation\\">(</span>t <span class=\\"token operator\\"><=</span> k<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">if</span> <span class=\\"token punctuation\\">(</span>k <span class=\\"token operator\\">&</span>t <span class=\\"token punctuation\\">)</span><span class=\\"token operator\\">></span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> ans <span class=\\"token operator\\">=</span> addition<span class=\\"token punctuation\\">(</span>ans<span class=\\"token punctuation\\">,</span> x<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"> x <span class=\\"token operator\\">=</span> addition<span class=\\"token punctuation\\">(</span>x<span class=\\"token punctuation\\">,</span> x<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"> t <span class=\\"token operator\\"><<</span><span class=\\"token operator\\">=</span> <span class=\\"token number\\">1</span></span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> ans</span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">def</span> <span class=\\"token function\\">getrs</span><span class=\\"token punctuation\\">(</span>z<span class=\\"token punctuation\\">,</span> k<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">:</span></span>\\n<span class=\\"line\\"> <span class=\\"token punctuation\\">(</span>xp<span class=\\"token punctuation\\">,</span> yp<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">=</span> P</span>\\n<span class=\\"line\\"> r <span class=\\"token operator\\">=</span> xp</span>\\n<span class=\\"line\\"> s <span class=\\"token operator\\">=</span> <span class=\\"token punctuation\\">(</span>z <span class=\\"token operator\\">+</span> r <span class=\\"token operator\\">*</span> dA <span class=\\"token operator\\">%</span> n<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> n <span class=\\"token operator\\">*</span> gmpy2<span class=\\"token punctuation\\">.</span>invert<span class=\\"token punctuation\\">(</span>k<span class=\\"token punctuation\\">,</span> n<span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">%</span> n</span>\\n<span class=\\"line\\"> <span class=\\"token keyword\\">return</span> r<span class=\\"token punctuation\\">,</span>s</span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\">z1 <span class=\\"token operator\\">=</span> random<span class=\\"token punctuation\\">.</span>randint<span class=\\"token punctuation\\">(</span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">,</span> p<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">z2 <span class=\\"token operator\\">=</span> random<span class=\\"token punctuation\\">.</span>randint<span class=\\"token punctuation\\">(</span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">,</span> p<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">k <span class=\\"token operator\\">=</span> random<span class=\\"token punctuation\\">.</span>randint<span class=\\"token punctuation\\">(</span><span class=\\"token number\\">0</span><span class=\\"token punctuation\\">,</span> n<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">
254P <span class=\\"token operator\\">=</span> multiplication<span class=\\"token punctuation\\">(</span>G<span class=\\"token punctuation\\">,</span> k<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">hA <span class=\\"token operator\\">=</span> multiplication<span class=\\"token punctuation\\">(</span>G<span class=\\"token punctuation\\">,</span> dA<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">r1<span class=\\"token punctuation\\">,</span> s1 <span class=\\"token operator\\">=</span> getrs<span class=\\"token punctuation\\">(</span>z1<span class=\\"token punctuation\\">,</span> k<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">r2<span class=\\"token punctuation\\">,</span> s2 <span class=\\"token operator\\">=</span> getrs<span class=\\"token punctuation\\">(</span>z2<span class=\\"token punctuation\\">,</span> k<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"r1 = {}\\"</span><span class=\\"token punctuation\\">.</span><span class=\\"token builtin\\">format</span><span class=\\"token punctuation\\">(</span>r1<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"r2 = {}\\"</span><span class=\\"token punctuation\\">.</span><span class=\\"token builtin\\">format</span><span class=\\"token punctuation\\">(</span>r2<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"s1 = {}\\"</span><span class=\\"token punctuation\\">.</span><span class=\\"token builtin\\">format</span><span class=\\"token punctuation\\">(</span>s1<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"s2 = {}\\"</span><span class=\\"token punctuation\\">.</span><span class=\\"token builtin\\">format</span><span class=\\"token punctuation\\">(</span>s2<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"z1 = {}\\"</span><span class=\\"token punctuation\\">.</span><span class=\\"token builtin\\">format</span><span class=\\"token punctuation\\">(</span>z1<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"z2 = {}\\"</span><span class=\\"token punctuation\\">.</span><span class=\\"token builtin\\">format</span><span class=\\"token punctuation\\">(</span>z2<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\">key <span class=\\"token operator\\">=</span> sha256<span class=\\"token punctuation\\">(</span>long_to_bytes<span class=\\"token punctuation\\">(</span>dA<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">.</span>digest<span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">cipher <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_CBC<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">iv <span class=\\"token operator\\">=</span> cipher<span class=\\"token punctuation\\">.</span>iv</span>\\n<span class=\\"line\\">encrypted_flag <span class=\\"token operator\\">=</span> cipher<span class=\\"token punctuation\\">.</span>encrypt<span class=\\"token punctuation\\">(</span>pad<span class=\\"token punctuation\\">(</span>victory_encrypted_flag<span class=\\"token punctuation\\">.</span>encode<span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">,</span> AES<span class=\\"token punctuation\\">.</span>block_size<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\">encrypted_flag_hex <span class=\\"token operator\\">=</span> binascii<span class=\\"token punctuation\\">.</span>hexlify<span class=\\"token punctuation\\">(</span>iv <span class=\\"token operator\\">+</span> encrypted_flag<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">.</span>decode<span class=\\"token punctuation\\">(</span><span class=\\"token string\\">'utf-8'</span><span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token keyword\\">print</span><span class=\\"token punctuation\\">(</span><span class=\\"token string\\">\\"Encrypted flag (AES in CBC mode, hex):\\"</span><span class=\\"token punctuation\\">,</span> encrypted_flag_hex<span class=\\"token punctuation\\">)</span></span>\\n<span class=\\"line\\"></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># output</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># r1 = 86806104739558095745988469033305523200538774705708894815836887970976487278764</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\">
254# r2 = 86806104739558095745988469033305523200538774705708894815836887970976487278764</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># s1 = 93400851884262731807098055393482657423555590196362184363643455285862566867372</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># s2 = 58741027521216057788923508334695668250013849866589902683641825341545919891746</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># z1 = 47591695289461307212638536234394543297527537576682980326526736956079807805586</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># z2 = 97911075901954715147720917205165523174582665086645698292621371632896283314804</span></span>\\n<span class=\\"line\\"><span class=\\"token comment\\"># ('Encrypted flag (AES in CBC mode, hex):', u'86cd24e2914c0c4d9b87bea34005a98bd8587d14cae71909b917679d3328304e7915e6ba4cad1096faa4a85bc52f8056d3f21ef09516be8a5160f1b338a6b936')</span></span>\\n<span class=\\"line\\"></span></code></pre>\\n<div class=\\"line-numbers\\" aria-hidden=\\"true\\" style=\\"counter-reset:line-number 0\\"><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div><div class=\\"line-number\\"></div></div><div class=\\"collapsed-lines\\"></div></div>","autoDesc":true}`);export{i as comp,u as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.