# 300撞數 ###### tags: `ns107` 組別: "包"在我身上 組員: 林宇翔、宋兆竣 ## 題目描述 echo This is Sparta!!!!!!!! ## 解題思路 解壓縮300.zip之後,看到檔名為ooo+xxx.rar的加密壓縮檔。 而檔名ooo+xxx,也就是數字和,就是該壓縮檔的解壓縮密碼。 就這樣一直做滿300次,會產生一個300.txt,裡面放的就是解答。 ## 解法 寫bash程式迴圈解碼 ```bash= #!/bin/sh unzip 300.zip counter=1 while [ $counter -le 300 ] do path=$(ls *.rar) one=$(echo $path | cut -d'+' -f1) tmp=$(echo $path | cut -d'+' -f2) two=$(echo $tmp | cut -d'.' -f1) sum=$(expr $one + $two) rar e -p$sum $path rm $path counter=$(expr $counter + 1) done ``` 首先unzip指令解壓縮300.zip,counter紀錄解壓縮的次數。 " -le " 表示 " less than or equal to "。 path: 紀錄ls出來後的 .rar檔名,所以path=ooo+xxx.rar one: 以" + "為分界,切下ooo+xxx.rar字串前面的ooo數字,所以one=ooo tmp: 切下ooo+xxx.rar字串" + "以後的部分,所以tmp=xxx.rar two: 以" . "為分界,切下xxx.rar字串前面的xxx數字,所以two=xxx sum: one+two數字和 用rar指令以sum為密碼,解壓縮ooo+xxx.rar這個檔案,壓縮後目錄底下會有兩個.rar的檔案,我們必須把舊的.rar檔案,也就是ooo+xxx.rar砍掉,不然迴圈第二次ls會出現兩個檔案,path這個變數會出錯,因為他沒辦法一次儲存兩個檔名 最後counter++
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up