# NASA HW0
作者:B11902001 陳靖塘
## Network Administration
### 1. True/False
1. True
4G和5G的“G”代表的是generation的意思,5G擁有高速、低延遲等特性,傳輸速度高達1GB/s,而4G僅止於幾十MB/s。
參考資料:https://www.bnext.com.tw/article/54075/5g-4g-difference
2. True
每一個裝置在最初生產製造時就有唯一的MAC address;IP address 的前半為網路的區域、後半為在該網路中的特定裝置,因此兩者皆可以被用來辨識網路上唯一的裝置。
參考資料:https://www.cloudflare.com/learning/network-layer/what-is-a-subnet/
3. False
由於IPv6尚未完全普及,裝置不一定支援IPv6。可利用NAT、subnetting等技術來彌補IPv4 address短缺的問題。
參考資料:https://www.linksys.com/support-article?articleNum=139604
4. False
傳輸封包前往目的地時會先經過VPN server,而從client端前往server途中的source IP即為原本的IP。
參考資料:https://zicodeng.medium.com/how-vpn-works-b7549dcc6ce4
5. True
NAT可以讓眾多private IP使用同一個public IP,讓內部的裝置連到外網,但同時因為大家都是相同的IP,所以外面的裝置無法直接主動連接到內部的裝置。
資料來源:https://en.wikipedia.org/wiki/Network_address_translation
6. False
DHCP server只負責分配IP address,裝置送出的封包並不會經過DHCP server。
資料來源:https://www.techtarget.com/searchnetworking/definition/DHCP
資料來源:https://www.efficientip.com/what-is-dhcp-and-why-is-it-important/
7. True
http並無經過加密,只規範了client request跟host response的標準,因此只要擷取到封包,便能輕易得知封包的內容。
資料來源:https://tw.alphacamp.co/blog/http-https-difference
8. True
由於VLAN間沒有router的存在,因此無法彼此傳送封包。
資料來源:https://www.solarwinds.com/resources/it-glossary/vlan
9. True
裝置發送DHCP request時,會傳送自己裝置NIC的實體位址給DHCP server,並不需要IP address。
資料來源:https://learn.microsoft.com/zh-tw/windows-server/troubleshoot/dynamic-host-configuration-protocol-basics
10. True
即使DNS、NAT等技術不存在,我們仍可以透過IP address直接連到server,並且可手動設定public IP address。那些技術只是讓我們更方便而已,例如DNS將位址轉換為可讀的網址(140.112.30.26->csie.ntu.edu.tw)。
資料來源:https://www.quora.com/How-does-the-internet-work-without-DNS
### 2. Short Answer
1.
(a) gateway:閘道器是不同網路中的連通道,用來接收A網路的資料、轉成B網路的協定後再傳送至B網路。
資料來源:http://dns-learning.twnic.net.tw/internet/intro9.html#1
(b) switch:交換器被用來連接LAN中的各個裝置,並傳輸封包。交換器具有單一性,目的地只會有一個,可能是另一個交換器、路由器、或裝置。
資料來源:https://www.cloudflare.com/learning/network-layer/what-is-a-network-switch/
(c\) port forwarding:通訊埠轉發讓WAN上的裝置得以連接到LAN內的裝置。Forwarding後,router就能明確的接收外來的資料並傳送到指定的port。
資料來源:https://portforward.com/
2. 64.128.64.144/28
將四個IP address轉成二進位表示法後我們得知network bit長度為28,host bit長度為4,因此host的數量有16個,而起點在[147/16]16=144,因此最小subnet為64.128.64.144/28。
3.
1. Physical Layer
在同網路中的兩裝置間傳輸資料
2. Data Link Layer
IP datagram -> Frames, 辨識封包的網路協定。(e.g. PPP framing, Ethernet IEEE 802.2 framing)
3. Network/Internet layer
TCP segment -> IP datagram、給予IP位址、將原datagram分解成小片的fragment,使其更容易在網路中傳輸、routing。(e.g. ARP, ICMP)
4. Transport Layer
data -> TCP segment、檢查datagram是否受損(e.g. UDP, TCP)
5. Application Layer
讓應用程式傳輸的資料進入TCP/IP model(e.g. http, ftp)
資料來源:https://www.geeksforgeeks.org/tcp-ip-model/
資料來源:https://www.javatpoint.com/computer-network-tcp-ip-model
資料來源:https://www.pcnet.idv.tw/pcnet/network/network_ip_model.htm
4.
(a) TCP讓每個packet有唯一的ID,並且按照順序傳輸
(b) UDP以串流方式傳輸packet
(c\) TCP較穩定、不易出錯,但速度較慢;UDP速度較快,但容易出錯
(d) TCP:傳輸電子郵件、檔案傳輸;UDP:網路電話、串流媒體
資料來源:https://www.spiceworks.com/tech/networking/articles/tcp-vs-udp/
資料來源:https://nordvpn.com/zh-tw/blog/tcp-udp-bijiao/
5.
(a)CSMA/CD
1. 檢查通道是否有其他工作
2. 若有其他工作,則等待通道空閒
3. 若無其他工作,則開始傳送並偵測是否出現collision
4. 若偵測到collision,則進入collision resolution並從頭來過
5. 若無偵測到collision並完成工作,則工作結束
(b)CSMA/CA
1. 檢查通道是否有其他工作
2. 若有其他工作,則等待通道空閒
3. 若無其他工作,則等待通道有Inter-frame gap的時間
4. 開始傳送並設timer直到傳輸完成
5. 若無傳輸完成,則從頭來過
(c\) 兩者最大的差異在於CSMA/CD為傳輸中偵測碰撞、CSMA/CA為先探路再傳輸。CSMA/CD的效率比CSMA/CA好,但同時CSMA/CA的出事率較CSMA/CD低。出事時CSMA/CD的恢復速度較快。
資料來源:https://www.tutorialspoint.com/csma-with-collision-detection-csma-cd
資料來源:https://www.tutorialspoint.com/csma-with-collision-avoidance-csma-ca
資料來源:https://www.tutorialspoint.com/difference-between-csma-ca-and-csma-cd
### 3. Command Line Utilities
1.
IP address:
(a) 140.112.8.116
`$ ping www.ntu.edu.tw`
(b) 140.112.30.26
`$ ping csie.ntu.edu.tw`
Domain name:
(a) pc09.cr.liberal.ntu.edu.tw
`$ host 140.112.145.153`
(b) linux5.csie.ntu.edu.tw
`$ host 140.112.30.36`
2.
(a) 140.112.151.197
`$ curl ifconfig.me`
(b) 140.112.254.4#53
```
$ dig csie.ntu.edu.tw
$ dig +trace csie.ntu.edu.tw
140.112.254.4#53(140.112.254.4)
192.36.148.17#53(i.root-servers.net)
210.201.138.58#53(b.dns.tw)
192.83.166.17#53(moemoon.edu.tw)
163.28.16.10#53(dns.tp1rc.edu.tw)
140.112.30.13#53(csman.csie.ntu.edu.tw)
```
(c\) 140.112.30.21#53
`$ dig csie.ntu.edu.tw`
(d)
```
$ traceroute to 140.112.30.21 (140.112.30.21), 64 hops max, 52 byte packets
1 10.5.7.254 (10.5.7.254) 3.904 ms 1.342 ms 1.357 ms
2 140.112.16.190 (140.112.16.190) 8.696 ms 3.136 ms 2.908 ms
3 dns.csie.ntu.edu.tw (140.112.30.21) 1.572 ms 1.516 ms 1.707 ms
```
## System Administration
本機:MacBook Pro 2019, 2.3 GHz 8-Core Intel Core i9
1. NASA{P1_I'm a good root}
```
$ sudo -i
$ ./treasure_box-1
```
2. NASA{P2_GoodRemote}
```
$ sudo -i
$ systemctl enable sshd
$ systemctl start sshd
```
Oracle VM Manager -> Settings -> Network -> Advanced -> Port Forwarding更改設定
到本機終端機
```
$ ssh musk@localhost -p 2222
$ sudo -i
$ ./treasure_box-2
```
3. NASA{P3_I Love SA}
```
$ tar -xvf gifts_from_SA.tar
$ cat gifts_from_SA/flag_3
```
4. NASA{P4_6.1.4-arch1-1}
```
$ uname -r
```
5. NASA{P5_AHOY My planet}
```
$ sudo -i
$ vim /etc/hostname
$ reboot
$ ./gifts_from_SA/p5/treasure_box-5
```
6. NASA{P6_Tesla Fxxk}
```
$ sudo usermod -c 'Elon Musk Twitter Fxxk' musk
$ ./gifts_from_SA/p6/treasure_box-6
```
*與鄭允臻討論
7. NASA{P7_Door opened}
```
$ sudo -i
$ groupadd spy
$ useradd nasa -g spy
$ usermod musk -g spy
$ chown nasa:spy gifts_from_SA/p7/openDoor
$ su nasa
$ ./gifts_from_SA/p7/openDoor
```
8. NASA{P8_man pacman_package manager utility}
```
$ man pacman
```
pacman讓我們輕鬆管理資源包,方便我們下載、更新,以下為幾個pacman能做到的例子:
```
$ pacman -S package_name #install package
$ pacman -R package_name #remove package
$ pacman -Syu #update all packages in the system
```
資料來源:https://wiki.archlinux.org/title/pacman
9. NASA{P9_Taiwan No.1!}
```
$ sudo localectl set-locale LC_CTYPE=zh_TW.UTF-8
$ sudo localectl set-locale LANG=zh_TW.UTF-8
$ ./gifts_from_SA/p9/treasure_box-9
```
*與謝政洋討論
10. NASA{P10_sl}
NASA{P10_cowsay}
NASA{P10_sl \| lolcat --spread 1.0}
NASA{P10_ cowsay -f kiss "Hi" \| lolcat --spread 1.0}
11. NASA{P11_good spy}
```
$ cd gifts_from_SA/p11/
$ mkdir -m 710 hide
$ cd hide/
$ ./secret
```
12. NASA{P12_nice large file}
1.
```
$ for i in {0..9}; do truncate -s 1M ${i}; done
```
2.
```
$ for i in {0..9}; do dd if=/dev/zero of=$i bs=1048576 count=1; done
```
3.
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *file = fopen("0", "wb");
char space = ' ';
for (int i = 0; i < 1024*1024; i++)
fwrite(&space, sizeof(char), 1, file);
fclose(file);
}
```
```
$ for i in {1..9}; do cp 0 $i; done
```
*與謝政洋討論
13. NASA{P13_GuitarHeroBocchiDesu}
```
$ ./bocchi_the_rock^z
$ ps aux | grep bocchi
$ kill -9 864
$ ./getkey < keygen
```
https://www.csie.ntu.edu.tw/~b09902109
```
$ strings bocchi.jpg | grep NASA
```
14. NASA{P14_This@large#file%is+such*an&asshole^Dont:you\<think>so}
```
$ sed 's/[^a-zA-Z0-9 ]//g' storybook > output
$ cat output | grep "pacman so handsome"
```
得到e0b0189cjf34akmqrdsov4msp4atahg3uqnwqaa37msy27nx5i7h6x34nlza7A
用C語言轉換後得到flag
15. NASA{P15_Do_You_Find_Me_}
利用C語言找出每個檔案最短的字串
再找出擁有最短字串的檔案p157/3
其中有兩個最短字串
NASA{P15_3b32a04d6%d0129}
NASA{P15_Do_You_Find_Me_}
符合要求的為後者
16. NASA{P16_don't laugh me!}
背景執行的檔案常在systemd
```
$ cd /etc/systemd/system/
$ cat AutoExec.sh
```
發現會自動檢查systemctl status cronie
```
$ sudo systemctl stop cronie
$ sudo systemctl disable cronie
$ sudo systemctl status cronie
```
找到被定期執行的檔案:/usr/lib/systemd/system/cronie.service
```
$ cat ~/flag16
```