1import{_ as s,c as a,f as p,o as t}from"./app-D7CCjthX.js";const e={};function o(l,n){return t(),a("div",null,[...n[0]||(n[0]=[p(`<p>æä»¬ç»å¸¸ä¼éå°ä¸äºéè¦éªè¯å¨æå¯ç ç页é¢ï¼è¿ä¸ªæ¶å卿æºä¸æå¾å¤æ¤ç±»ç MFA åºç¨ï¼æ¯å¦ Microsoft Authenticatorï¼Duo Mobileï¼è°·æéªè¯å¨ã</p><p>é£ä¹å ¶å®æä»¬ä¹å¯ä»¥èªå·±åä¸ä¸ª MFA éªè¯å¨ãæ¬çåªè¦ç½ä¸æï¼ç»ä¸èªå·±åçååï¼æä»¬å°ä½¿ç¨å¼æºæ¨¡åæ¼åèæã</p><figure><img src="https://img.hestudio.net/img/2022/12/28/63abc608bb033.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><div class="hint-container info"><p class="hint-container-title">ç¸å ³ä¿¡æ¯</p><p>è¿éåªè®²è§£å®çåçï¼å¾å½¢æ¹æ¡äº¤ç»ä½ 们设计ã</p></div><hr><h3 id="ç¯å¢åå¤" tabindex="-1"><a class="header-anchor" href="#ç¯å¢åå¤"><span>ç¯å¢åå¤</span></a></h3><p>é¦å æä»¬éè¦å®è£ <code>pyotp</code>(è·å卿å£ä»¤)å<code>heframework</code>(ç®åå¼åè¿ç¨)ï¼è¿ä¸¤ä¸ªæ¨¡ååå¯ä»¥éè¿<code>pip</code>å®è£ ãä¸è¿°æ¨¡åéè¦å¨ Python 3.6 å以ä¸çæ¬æå¯ä»¥è¿è¡ã</p><h3 id="è§åæ¹æ¡" tabindex="-1"><a class="header-anchor" href="#è§åæ¹æ¡"><span>è§åæ¹æ¡</span></a></h3><p>å®é¦å å¯ä»¥è·å卿å£ä»¤ï¼è¿æ¯å®æç´æ¥çåè½ãè·å卿å¯ç éè¦å¯¹åºç Secureï¼æä»¥å®ä¹éè¦ç®¡ç Secure çåè½ã管ç颿¿éè¦å 嫿·»å ï¼å é¤è¿äºåºæ¬æä½ã</p><p>æä»¥æä»¬è®¡å使ç¨<code>json</code>ææ¬äº¤æ¢æ ¼å¼ä½ä¸º Secure çåå¨ä»è´¨ï¼ä½¿ç¨<code>list</code>åå«åå¨ Secure åå ¶å¯¹åºçåç§°ã</p><figure><img src="https://img.hestudio.net/img/2022/12/31/63afb45c9805d.jpeg" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><hr><h3 id="大纲代ç " tabindex="-1"><a class="header-anchor" href="#大纲代ç "><span>大纲代ç </span></a></h3><p>æä»¬é¦å éè¦æ ¹æ®ä¸»ç¨åºå¾ååºä¸ä¸ªå¤§çº²ï¼ä»¥åå¤åç»å¡«å 代ç ãè¿ééè¦åèä¸ä¸<a href="https://pypi.org/project/heframework/" target="_blank" rel="noopener noreferrer">heframework</a>ç<a href="https://gitee.com/hestudio-framework/main-windows/blob/master/docs/choose.md" target="_blank" rel="noopener noreferrer"><code>choose</code>模åç¨æ³</a></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">import</span> heframework</span> 2<span class="line"><span class="token keyword">import</span> sys</span> 3<span class="line"></span> 4<span class="line"></span> 5<span class="line"><span class="token comment"># è·å令ç</span></span> 6<span class="line"><span class="token keyword">def</span> <span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 7<span class="line"> <span class="token keyword">pass</span></span> 8<span class="line"></span> 9<span class="line"></span> 10<span class="line"><span class="token comment"># 管ç令ç</span></span> 11<span class="line"><span class="token keyword">def</span> <span class="token function">console</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 12<span class="line"> <span class="token keyword">pass</span></span> 13<span class="line"></span> 14<span class="line"></span> 15<span class="line"><span class="token comment"># main</span></span> 16<span class="line"><span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 17<span class="line"> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span></span> 18<span class="line"> main <span class="token operator">=</span> heframework<span class="token punctuation">.</span>choose<span class="token punctuation">(</span></span> 19<span class="line"> mode<span class="token operator">=</span><span class="token string">"list"</span><span class="token punctuation">,</span> name<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">"è·å令ç"</span><span class="token punctuation">,</span> <span class="token string">"管ç令ç"</span><span class="token punctuation">,</span> <span class="token string">"éåº"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
19 return_text<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span> info<span class="token operator">=</span><span class="token string">">>>"</span><span class="token punctuation">)</span></span> 20<span class="line"> <span class="token keyword">if</span> main <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span></span> 21<span class="line"> get<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 22<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">:</span></span> 23<span class="line"> console<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 24<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">3</span><span class="token punctuation">:</span></span> 25<span class="line"> sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 26<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 27<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Err"</span><span class="token punctuation">)</span></span> 28<span class="line"></span> 29<span class="line"></span> 30<span class="line"><span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span></span> 31<span class="line"> main<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 32<span class="line"></span> 33<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><div class="collapsed-lines"></div></div><h3 id="管ç令ç" tabindex="-1"><a class="header-anchor" href="#管ç令ç"><span>管ç令ç</span></a></h3><h4 id="大纲" tabindex="-1"><a class="header-anchor" href="#大纲"><span>大纲</span></a></h4><p>æ ¹æ®ä¸é¢çå å®¹ï¼æä»¬å¯ä»¥ååºç®¡ççé¢çéæ©å¨ã</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 comment"># æ·»å </span></span> 34<span class="line"><span class="token keyword">def</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 35<span class="line"> <span class="token keyword">pass</span></span> 36<span class="line"></span> 37<span class="line"></span> 38<span class="line"><span class="token comment"># å é¤</span></span> 39<span class="line"><span class="token keyword">def</span> <span class="token function">delete</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 40<span class="line"> <span class="token keyword">pass</span></span> 41<span class="line"></span> 42<span class="line"></span> 43<span class="line"><span class="token comment"># 大纲</span></span> 44<span class="line"><span class="token keyword">def</span> <span class="token function">console</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 45<span class="line"> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span></span> 46<span class="line"> main <span class="token operator">=</span> heframework<span class="token punctuation">.</span>choose<span class="token punctuation">(</span></span> 47<span class="line"> mode<span class="token operator">=</span><span class="token string">"list"</span><span class="token punctuation">,</span> name<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">"æ·»å 令ç"</span><span class="token punctuation">,</span> <span class="token string">"å é¤ä»¤ç"</span><span class="token punctuation">,</span> <span class="token string">"éåº"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
47 return_text<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span> info<span class="token operator">=</span><span class="token string">">>>"</span><span class="token punctuation">)</span></span> 48<span class="line"> <span class="token keyword">if</span> main <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span></span> 49<span class="line"> add<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 50<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">:</span></span> 51<span class="line"> delete<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 52<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">3</span><span class="token punctuation">:</span></span> 53<span class="line"> <span class="token keyword">break</span></span> 54<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 55<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Err"</span><span class="token punctuation">)</span></span> 56<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><div class="collapsed-lines"></div></div><h4 id="æ·»å 令ç" tabindex="-1"><a class="header-anchor" href="#æ·»å 令ç"><span>æ·»å 令ç</span></a></h4><p>å¨è¿éå°±æ¶åå°äº<code>json</code>çæä½åæä»¶ç读åæä½ãæä»¬è¿æ¯ç»§ç»ä½¿ç¨<code>heframework</code>ä½ä»£ç çç®åã</p><p>è¿éä»£ç æ§è¡çæ¯é¡ºåºæä½ãé¦å éè¦ç¨æ·å½å ¥ä»¤ççåç§°å Secureãéè¦æ£éªæ¯å¦åå¨<code>token.json</code>æä»¶ï¼å¦æä¸åå¨åæ°å»ºä¸ä¸ªãå¦æè¯¥æä»¶åå¨å读å该æä»¶ï¼å¹¶ç¡®ä¿ä¸åå¨éå¤çå¼ã</p><p>妿以ä¸å¤æè¿åçå¼ä¸º<code>true</code>ï¼å å°<code>name</code>å<code>secure</code>对åºç<code>list</code>读åå°å åï¼å°æ°å¢çå¼éè¿<code>append()</code>åå ¥ï¼åå°å åä¸çå¼éæ°åå ¥<code>json</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">import</span> json</span> 57<span class="line"><span class="token keyword">import</span> os</span> 58<span class="line"><span class="token keyword">import</span> time</span> 59<span class="line"></span> 60<span class="line"></span> 61<span class="line"><span class="token keyword">def</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 62<span class="line"> name <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"令çåç§°ï¼"</span><span class="token punctuation">)</span></span> 63<span class="line"> secure <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"令çSecureï¼"</span><span class="token punctuation">)</span></span> 64<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 65<span class="line">
65 <span class="token builtin">file</span> <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span> 66<span class="line"> dicts <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string">"return_text"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>secure<span class="token punctuation">]</span><span class="token punctuation">}</span></span> 67<span class="line"> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span>json<span class="token punctuation">.</span>dumps<span class="token punctuation">(</span>dicts<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 68<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 69<span class="line"> <span class="token builtin">file</span><span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 70<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Successfully!"</span><span class="token punctuation">)</span></span> 71<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 72<span class="line"> read_only_file <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span></span> 73<span class="line"> dicts <span class="token operator">=</span> json<span class="token punctuation">.</span>load<span class="token punctuation">(</span>read_only_file<span class="token punctuation">)</span></span> 74<span class="line"> read_only_file<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 75<span class="line"> <span class="token keyword">if</span> name <span class="token keyword">in</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 76<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Existed!"</span><span class="token punctuation">)</span></span> 77<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 78<span class="line"> <span class="token keyword">if</span> secure <span class="token keyword">in</span> dicts<span class="token punctuation">[</span><span class="token string">"return_text"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 79<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Existed!"</span><span class="token punctuation">)</span></span> 80<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 81<span class="line"> file_after <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span> 82<span class="line"> names <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span></span> 83<span class="line"> secures <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"return_text"</span><span class="token punctuation">]</span></span> 84<span class="line"> names<span class="token punctuation">.</span>append<span class="token punctuation">(</span>name<span class="token punctuation">)</span></span> 85<span class="line"> secures<span class="token punctuation">.</span>append<span class="token punctuation">(</span>secure<span class="token punctuation">)</span></span> 86<span class="line"> dict_after <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> names<span class="token punctuation">,</span> <span class="token string">"return_text"</span><span class="token punctuation">:</span> secures<span class="token punctuation">}</span></span> 87<span class="line"> file_after<span class="token punctuation">.</span>write<span class="token punctuation">(</span>json<span class="token punctuation">.</span>dumps<span class="token punctuation">(</span>dict_after<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 88<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 89<span class="line"> file_after<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 90<span class="line">
90 <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Successfully!"</span><span class="token punctuation">)</span></span> 91<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><div class="collapsed-lines"></div></div><h4 id="å é¤ä»¤ç" tabindex="-1"><a class="header-anchor" href="#å é¤ä»¤ç"><span>å é¤ä»¤ç</span></a></h4><p>è¿é便§ä½¿ç¨é¡ºåºç»æãå°<code>token.json</code>读ååï¼éåå表ãå½ç¨æ·éæ©åï¼éè¿<code>del</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">import</span> json</span> 92<span class="line"><span class="token keyword">import</span> os</span> 93<span class="line"><span class="token keyword">import</span> time</span> 94<span class="line"></span> 95<span class="line"><span class="token keyword">def</span> <span class="token function">delete</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 96<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 97<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No file!"</span><span class="token punctuation">)</span></span> 98<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 99<span class="line"> read_only_file <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span></span> 100<span class="line"> dicts <span class="token operator">=</span> json<span class="token punctuation">.</span>load<span class="token punctuation">(</span>read_only_file<span class="token punctuation">)</span></span> 101<span class="line"> read_only_file<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 102<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 103<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No Token!"</span><span class="token punctuation">)</span></span> 104<span class="line">
104 <span class="token keyword">else</span><span class="token punctuation">:</span></span> 105<span class="line"> num <span class="token operator">=</span> <span class="token number">0</span></span> 106<span class="line"> <span class="token keyword">for</span> i <span class="token keyword">in</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 107<span class="line"> num <span class="token operator">+=</span> <span class="token number">1</span></span> 108<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span>num<span class="token punctuation">,</span> <span class="token string">": "</span><span class="token punctuation">,</span> i<span class="token punctuation">)</span></span> 109<span class="line"> choose <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"请è¾å ¥ä½ è¦å é¤ç项ç®ï¼"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 110<span class="line"> <span class="token keyword">if</span> choose <span class="token operator">>=</span> <span class="token number">1</span> <span class="token keyword">and</span> choose <span class="token operator"><=</span> num<span class="token punctuation">:</span></span> 111<span class="line"> names <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span></span> 112<span class="line"> secures <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"return_text"</span><span class="token punctuation">]</span></span> 113<span class="line"> <span class="token keyword">del</span> names<span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">(</span>choose<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">]</span></span> 114<span class="line"> <span class="token keyword">del</span> secures<span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">(</span>choose<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">]</span></span> 115<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Successfully!"</span><span class="token punctuation">)</span></span> 116<span class="line"> file_after <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span> 117<span class="line"> dict_after <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> names<span class="token punctuation">,</span> <span class="token string">"return_text"</span><span class="token punctuation">:</span> secures<span class="token punctuation">}</span></span> 118<span class="line"> file_after<span class="token punctuation">.</span>write<span class="token punctuation">(</span>json<span class="token punctuation">.</span>dumps<span class="token punctuation">(</span>dict_after<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 119<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 120<span class="line"> file_after<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 121<span class="line">
121 <span class="token keyword">else</span><span class="token punctuation">:</span></span> 122<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Err"</span><span class="token punctuation">)</span></span> 123<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><div class="collapsed-lines"></div></div><h3 id="è·å令ç" tabindex="-1"><a class="header-anchor" href="#è·å令ç"><span>è·å令ç</span></a></h3><p>å½ç¶ï¼æéè¦çä¸è¥¿è¦ç卿åï¼è¿é¨åå 容æ¯è¿ä¸ªç¨åºæéè¦çé¨åã</p><p>æä»¬ä½¿ç¨<code>pyotp</code>ä½ token çè¿ç®ï¼å¦ææ³äºè§£è¿é¨åå 容å¯ä»¥å»æç´¢ä¸ä¸<code>TOTP</code></p><p><code>pyotp</code>è¾åºç 6 使°ä¸´æ¶å¯ç é常æ¯å ç§åå䏿¬¡ï¼éè¿æä»¬çäºè§£ï¼å ¶ä»å类软件çåå卿éå¸¸æ¯ 30s</p><figure><img src="https://img.hestudio.net/img/2022/12/31/63afdb2b5f077.jpg" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>æ ¹æ®è¿äºæä»¬å°±å¯ä»¥ååºä¸ä¸ªå¨æå¯ç æ¾ç¤ºå¨ã</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">import</span> heframework</span> 124<span class="line"><span class="token keyword">import</span> sys</span> 125<span class="line"><span class="token keyword">import</span> json</span> 126<span class="line"><span class="token keyword">import</span> os</span> 127<span class="line"><span class="token keyword">import</span> time</span> 128<span class="line"><span class="token keyword">import</span> pyotp</span> 129<span class="line"></span> 130<span class="line"></span> 131<span class="line"><span class="token keyword">def</span> <span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 132<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 133<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No File"</span><span class="token punctuation">)</span></span> 134<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 135<span class="line"> read_only_file <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span></span> 136<span class="line"> dicts <span class="token operator">=</span> json<span class="token punctuation">.</span>
136load<span class="token punctuation">(</span>read_only_file<span class="token punctuation">)</span></span> 137<span class="line"> read_only_file<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 138<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 139<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No Token!"</span><span class="token punctuation">)</span></span> 140<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 141<span class="line"> secure <span class="token operator">=</span> heframework<span class="token punctuation">.</span>choose<span class="token punctuation">(</span></span> 142<span class="line"> mode<span class="token operator">=</span><span class="token string">"json"</span><span class="token punctuation">,</span> json_file<span class="token operator">=</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> info<span class="token operator">=</span><span class="token string">"鿩令çï¼"</span><span class="token punctuation">)</span></span> 143<span class="line"> storage <span class="token operator">=</span> pyotp<span class="token punctuation">.</span>TOTP<span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>secure<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 144<span class="line"> win <span class="token operator">=</span> heframework<span class="token punctuation">.</span>refresh_show<span class="token punctuation">(</span>title<span class="token operator">=</span><span class="token string">"令ç"</span><span class="token punctuation">,</span> geometry<span class="token operator">=</span><span class="token string">"200x100"</span><span class="token punctuation">)</span></span> 145<span class="line"> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span></span> 146<span class="line"> t <span class="token operator">=</span> <span class="token number">30</span></span> 147<span class="line"> token_now <span class="token operator">=</span> storage<span class="token punctuation">.</span>now<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 148<span class="line"> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 149<span class="line"> code <span class="token operator">=</span> win<span class="token punctuation">.</span>refresh<span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>token_now<span class="token operator">+</span><span class="token string">"\\nå©ä½æ¶é´"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"ç§"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 150<span class="line"> t <span class="token operator">-=</span> <span class="token number">1</span></span> 151<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 152<span class="line">
152 <span class="token keyword">if</span> code <span class="token operator">==</span> <span class="token number">21099</span><span class="token punctuation">:</span></span> 153<span class="line"> sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 154<span class="line"> <span class="token keyword">elif</span> code <span class="token operator">==</span> <span class="token number">20000</span><span class="token punctuation">:</span></span> 155<span class="line"> <span class="token keyword">pass</span></span> 156<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 157<span class="line"> sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 158<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><div class="collapsed-lines"></div></div><h3 id="ä»£ç æ±æ»åæµè¯" tabindex="-1"><a class="header-anchor" href="#ä»£ç æ±æ»åæµè¯"><span>ä»£ç æ±æ»åæµè¯</span></a></h3><p>æ»ç»ä»£ç å¦ä¸</p><details class="hint-container details"><summary>宿´ä»£ç </summary><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> heframework</span> 159<span class="line"><span class="token keyword">import</span> sys</span> 160<span class="line"><span class="token keyword">import</span> json</span> 161<span class="line"><span class="token keyword">import</span> os</span> 162<span class="line"><span class="token keyword">import</span> time</span> 163<span class="line"><span class="token keyword">import</span> pyotp</span> 164<span class="line"></span> 165<span class="line"></span> 166<span class="line"><span class="token comment"># è·å令ç</span></span> 167<span class="line"><span class="token keyword">def</span> <span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 168<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 169<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No File"</span><span class="token punctuation">)</span></span> 170<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 171<span class="line"> read_only_file <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span></span> 172<span class="line"> dicts <span class="token operator">=</span> json<span class="token punctuation">.</span>
172load<span class="token punctuation">(</span>read_only_file<span class="token punctuation">)</span></span> 173<span class="line"> read_only_file<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 174<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 175<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No Token!"</span><span class="token punctuation">)</span></span> 176<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 177<span class="line"> secure <span class="token operator">=</span> heframework<span class="token punctuation">.</span>choose<span class="token punctuation">(</span></span> 178<span class="line"> mode<span class="token operator">=</span><span class="token string">"json"</span><span class="token punctuation">,</span> json_file<span class="token operator">=</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> info<span class="token operator">=</span><span class="token string">"鿩令çï¼"</span><span class="token punctuation">)</span></span> 179<span class="line"> storage <span class="token operator">=</span> pyotp<span class="token punctuation">.</span>TOTP<span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>secure<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 180<span class="line"> win <span class="token operator">=</span> heframework<span class="token punctuation">.</span>refresh_show<span class="token punctuation">(</span>title<span class="token operator">=</span><span class="token string">"令ç"</span><span class="token punctuation">,</span> geometry<span class="token operator">=</span><span class="token string">"200x100"</span><span class="token punctuation">)</span></span> 181<span class="line"> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span></span> 182<span class="line"> t <span class="token operator">=</span> <span class="token number">30</span></span> 183<span class="line"> token_now <span class="token operator">=</span> storage<span class="token punctuation">.</span>now<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 184<span class="line"> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 185<span class="line"> code <span class="token operator">=</span> win<span class="token punctuation">.</span>refresh<span class="token punctuation">(</span><span class="token builtin">str</span><span class="token punctuation">(</span>token_now<span class="token operator">+</span><span class="token string">"\\nå©ä½æ¶é´"</span><span class="token operator">+</span><span class="token builtin">str</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"ç§"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 186<span class="line"> t <span class="token operator">-=</span> <span class="token number">1</span></span> 187<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 188<span class="line">
188 <span class="token keyword">if</span> code <span class="token operator">==</span> <span class="token number">21099</span><span class="token punctuation">:</span></span> 189<span class="line"> sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 190<span class="line"> <span class="token keyword">elif</span> code <span class="token operator">==</span> <span class="token number">20000</span><span class="token punctuation">:</span></span> 191<span class="line"> <span class="token keyword">pass</span></span> 192<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 193<span class="line"> sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 194<span class="line"></span> 195<span class="line"></span> 196<span class="line"><span class="token comment"># 管ç令ç</span></span> 197<span class="line"></span> 198<span class="line"><span class="token comment"># æ·»å </span></span> 199<span class="line"><span class="token keyword">def</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 200<span class="line"> name <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"令çåç§°ï¼"</span><span class="token punctuation">)</span></span> 201<span class="line"> secure <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"令çSecureï¼"</span><span class="token punctuation">)</span></span> 202<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 203<span class="line"> <span class="token builtin">file</span> <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span> 204<span class="line"> dicts <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>name<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token string">"return_text"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>secure<span class="token punctuation">]</span><span class="token punctuation">}</span></span> 205<span class="line"> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span>json<span class="token punctuation">.</span>dumps<span class="token punctuation">(</span>dicts<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 206<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 207<span class="line"> <span class="token builtin">file</span><span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 208<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Successfully!"</span><span class="token punctuation">)</span></span> 209<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 210<span class="line"> read_only_file <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span></span> 211<span class="line"> dicts <span class="token operator">=</span> json<span class="token punctuation">.</span>
211load<span class="token punctuation">(</span>read_only_file<span class="token punctuation">)</span></span> 212<span class="line"> read_only_file<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 213<span class="line"> <span class="token keyword">if</span> name <span class="token keyword">in</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 214<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Existed!"</span><span class="token punctuation">)</span></span> 215<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 216<span class="line"> <span class="token keyword">if</span> secure <span class="token keyword">in</span> dicts<span class="token punctuation">[</span><span class="token string">"return_text"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 217<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Existed!"</span><span class="token punctuation">)</span></span> 218<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 219<span class="line"> file_after <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span> 220<span class="line"> names <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span></span> 221<span class="line"> secures <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"return_text"</span><span class="token punctuation">]</span></span> 222<span class="line"> names<span class="token punctuation">.</span>append<span class="token punctuation">(</span>name<span class="token punctuation">)</span></span> 223<span class="line"> secures<span class="token punctuation">.</span>append<span class="token punctuation">(</span>secure<span class="token punctuation">)</span></span> 224<span class="line"> dict_after <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> names<span class="token punctuation">,</span> <span class="token string">"return_text"</span><span class="token punctuation">:</span> secures<span class="token punctuation">}</span></span> 225<span class="line"> file_after<span class="token punctuation">.</span>write<span class="token punctuation">(</span>json<span class="token punctuation">.</span>dumps<span class="token punctuation">(</span>dict_after<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 226<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 227<span class="line"> file_after<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 228<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Successfully!"</span><span class="token punctuation">)</span></span> 229<span class="line"></span> 230<span class="line"></span> 231<span class="line"><span class="token comment"># å é¤</span></span> 232<span class="line"><span class="token keyword">def</span> <span class="token function">delete</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 233<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>exists<span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 234<span class="line">
234 <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No file!"</span><span class="token punctuation">)</span></span> 235<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 236<span class="line"> read_only_file <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">)</span></span> 237<span class="line"> dicts <span class="token operator">=</span> json<span class="token punctuation">.</span>load<span class="token punctuation">(</span>read_only_file<span class="token punctuation">)</span></span> 238<span class="line"> read_only_file<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 239<span class="line"> <span class="token keyword">if</span> <span class="token keyword">not</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 240<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No Token!"</span><span class="token punctuation">)</span></span> 241<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 242<span class="line"> num <span class="token operator">=</span> <span class="token number">0</span></span> 243<span class="line"> <span class="token keyword">for</span> i <span class="token keyword">in</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span><span class="token punctuation">:</span></span> 244<span class="line"> num <span class="token operator">+=</span> <span class="token number">1</span></span> 245<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span>num<span class="token punctuation">,</span> <span class="token string">": "</span><span class="token punctuation">,</span> i<span class="token punctuation">)</span></span> 246<span class="line"> choose <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"请è¾å ¥ä½ è¦å é¤ç项ç®ï¼"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span> 247<span class="line"> <span class="token keyword">if</span> choose <span class="token operator">>=</span> <span class="token number">1</span> <span class="token keyword">and</span> choose <span class="token operator"><=</span> num<span class="token punctuation">:</span></span> 248<span class="line"> names <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"name"</span><span class="token punctuation">]</span></span> 249<span class="line"> secures <span class="token operator">=</span> dicts<span class="token punctuation">[</span><span class="token string">"return_text"</span><span class="token punctuation">]</span></span> 250<span class="line"> <span class="token keyword">del</span> names<span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">(</span>choose<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">]</span></span> 251<span class="line"> <span class="token keyword">del</span> secures<span class="token punctuation">[</span><span class="token builtin">int</span><span class="token punctuation">(</span>choose<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">]</span></span> 252<span class="line">
252 <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Successfully!"</span><span class="token punctuation">)</span></span> 253<span class="line"> file_after <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"token.json"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span> 254<span class="line"> dict_after <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"name"</span><span class="token punctuation">:</span> names<span class="token punctuation">,</span> <span class="token string">"return_text"</span><span class="token punctuation">:</span> secures<span class="token punctuation">}</span></span> 255<span class="line"> file_after<span class="token punctuation">.</span>write<span class="token punctuation">(</span>json<span class="token punctuation">.</span>dumps<span class="token punctuation">(</span>dict_after<span class="token punctuation">)</span><span class="token punctuation">)</span></span> 256<span class="line"> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span></span> 257<span class="line"> file_after<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 258<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 259<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Err"</span><span class="token punctuation">)</span></span> 260<span class="line"></span> 261<span class="line"></span> 262<span class="line"><span class="token comment"># 大纲</span></span> 263<span class="line"><span class="token keyword">def</span> <span class="token function">console</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 264<span class="line"> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span></span> 265<span class="line"> main <span class="token operator">=</span> heframework<span class="token punctuation">.</span>choose<span class="token punctuation">(</span></span> 266<span class="line"> mode<span class="token operator">=</span><span class="token string">"list"</span><span class="token punctuation">,</span> name<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">"æ·»å 令ç"</span><span class="token punctuation">,</span> <span class="token string">"å é¤ä»¤ç"</span><span class="token punctuation">,</span> <span class="token string">"éåº"</span><span class="token punctuation">]</span><span class="token punctuation">,</span> return_text<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span> info<span class="token operator">=</span><span class="token string">">>>"</span><span class="token punctuation">)</span></span> 267<span class="line"> <span class="token keyword">if</span> main <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span></span> 268<span class="line"> add<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 269<span class="line">
269 <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">:</span></span> 270<span class="line"> delete<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 271<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">3</span><span class="token punctuation">:</span></span> 272<span class="line"> <span class="token keyword">break</span></span> 273<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 274<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Err"</span><span class="token punctuation">)</span></span> 275<span class="line"></span> 276<span class="line"></span> 277<span class="line"><span class="token comment"># main</span></span> 278<span class="line"><span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span></span> 279<span class="line"> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span></span> 280<span class="line"> main <span class="token operator">=</span> heframework<span class="token punctuation">.</span>choose<span class="token punctuation">(</span></span> 281<span class="line"> mode<span class="token operator">=</span><span class="token string">"list"</span><span class="token punctuation">,</span> name<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">"è·å令ç"</span><span class="token punctuation">,</span> <span class="token string">"管ç令ç"</span><span class="token punctuation">,</span> <span class="token string">"éåº"</span><span class="token punctuation">]</span><span class="token punctuation">,</span> return_text<span class="token operator">=</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span> info<span class="token operator">=</span><span class="token string">">>>"</span><span class="token punctuation">)</span></span> 282<span class="line"> <span class="token keyword">if</span> main <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span></span> 283<span class="line"> get<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 284<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">:</span></span> 285<span class="line"> console<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 286<span class="line"> <span class="token keyword">elif</span> main <span class="token operator">==</span> <span class="token number">3</span><span class="token punctuation">:</span></span> 287<span class="line"> sys<span class="token punctuation">.</span>exit<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 288<span class="line"> <span class="token keyword">else</span><span class="token punctuation">:</span></span> 289<span class="line"> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Err"</span><span class="token punctuation">)</span></span> 290<span class="line"></span> 291<span class="line"></span> 292<span class="line"><span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span></span> 293<span class="line"> main<span class="token punctuation">(</span><span class="token punctuation">)</span></span> 294<span class="line"></span> 295<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 class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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></details><figure><img src="https://img.hestudio.net/img/2022/12/31/63afe382abec2.png" alt="è¿è¡çé¢" tabindex="0" loading="lazy"><figcaption>è¿è¡çé¢</figcaption></figure>`,38)])])}const i=s(e,[["render",o]]),u=JSON.parse('{"path":"/posts/make-a-python-mfa-app.html","title":"éè¿Pythonå¶ä½ä¸ä¸ªMFAéªè¯å¨","lang":"zh-CN","frontmatter":{"title":"éè¿Pythonå¶ä½ä¸ä¸ªMFAéªè¯å¨","tag":["Python"],"category":["Python"],"description":"æä»¬ç»å¸¸ä¼éå°ä¸äºéè¦é
295ªè¯å¨æå¯ç ç页é¢ï¼è¿ä¸ªæ¶å卿æºä¸æå¾å¤æ¤ç±»ç MFA åºç¨ï¼æ¯å¦ Microsoft Authenticatorï¼Duo Mobileï¼è°·æéªè¯å¨ã é£ä¹å
¶å®æä»¬ä¹å¯ä»¥èªå·±åä¸ä¸ª MFA éªè¯å¨ãæ¬çåªè¦ç½ä¸æï¼ç»ä¸èªå·±åçååï¼æä»¬å°ä½¿ç¨å¼æºæ¨¡åæ¼åèæã","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"éè¿Pythonå¶ä½ä¸ä¸ªMFAéªè¯å¨\\",\\"image\\":[\\"https://img.hestudio.net/img/2022/12/28/63abc608bb033.png\\",\\"https://img.hestudio.net/img/2022/12/31/63afb45c9805d.jpeg\\",\\"https://img.hestudio.net/img/2022/12/31/63afdb2b5f077.jpg\\",\\"https://img.hestudio.net/img/2022/12/31/63afe382abec2.png\\"],\\"dateModified\\":\\"2025-03-13T06:15:20.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/make-a-python-mfa-app.html"}],["meta",{"property":"og:site_name","content":"heStudio"}],["meta",{"property":"og:title","content":"éè¿Pythonå¶ä½ä¸ä¸ªMFAéªè¯å¨"}],["meta",{"property":"og:description","content":"æä»¬ç»å¸¸ä¼éå°ä¸äºéè¦éªè¯å¨æå¯ç ç页é¢ï¼è¿ä¸ªæ¶å卿æºä¸æå¾å¤æ¤ç±»ç MFA åºç¨ï¼æ¯å¦ Microsoft Authenticatorï¼Duo Mobileï¼è°·æéªè¯å¨ã é£ä¹å
¶å®æä»¬ä¹å¯ä»¥èªå·±åä¸ä¸ª MFA éªè¯å¨ãæ¬çåªè¦ç½ä¸æï¼ç»ä¸èªå·±åçååï¼æä»¬å°ä½¿ç¨å¼æºæ¨¡åæ¼åèæã"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://img.hestudio.net/img/2022/12/28/63abc608bb033.png"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2025-03-13T06:15:20.000Z"}],["meta",{"property":"article:tag","content":"Python"}],["meta",{"property":"article:modified_time","content":"2025-03-13T06:15:20.000Z"}]]},"git":{"createdTime":1672582104000,"updatedTime":1741846520000},"readingTime":{"minutes":5.01,"words":1504},"filePathRelative":"posts/make-a-python-mfa-app.md","excerpt":"<p>æä»¬ç»å¸¸ä¼éå°ä¸äºéè¦éªè¯å¨æå¯ç ç页é¢ï¼è¿ä¸ªæ¶å卿æºä¸æå¾å¤æ¤ç±»ç MFA åºç¨ï¼æ¯å¦ Microsoft Authenticatorï¼Duo Mobileï¼è°·æéªè¯å¨ã</p>\\n<p>é£ä¹å
¶å®æä»¬ä¹å¯ä»¥èªå·±åä¸ä¸ª MFA éªè¯å¨ãæ¬çåªè¦ç½ä¸æï¼ç»ä¸èªå·±åçååï¼æä»¬å°ä½¿ç¨å¼æºæ¨¡åæ¼åèæã</p>\\n<figure><img src=\\"https://img.hestudio.net/img/2022/12/28/63abc608bb033.png\\" alt=\\"\\" tabindex=\\"0\\" loading=\\"lazy\\"><figcaption></figcaption></figure>\\n","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.