├── Issues.md ├── README.md ├── activities ├── .gitignore ├── 0306-git.tex ├── 0308-pgp.tex ├── 0313-backdoor.tex ├── 0320-worm.tex ├── 0327-antimalware.tex ├── 0410-av2.tex ├── 0424-debugger.tex ├── README.md ├── bins │ └── worm-bins.zip.gpg └── references.bib ├── students ├── DaramG.md ├── DaramG.pub ├── Hyeongcheol-An.md ├── Hyeongcheol-An.pub ├── JeongOhKye.md ├── JeongOhKye.pub ├── README.md ├── alinghi.md ├── alinghi.pub ├── asdfljh.md ├── asdfljh.pub ├── auditing │ ├── 0yam.md │ ├── 0yam.pub │ ├── README.md │ ├── cpuu.md │ ├── cpuu.pub │ ├── omkwon.md │ ├── omkwon.pub │ ├── pso2017.md │ ├── pso2017.pub │ ├── yeseulchoi.md │ └── yeseulchoi.pub ├── bjgwak.md ├── bjgwak.pub ├── blukat29.md ├── blukat29.pub ├── dinggul.md ├── dinggul.pub ├── donghwan17.md ├── donghwan17.pub ├── ggoboogy.md ├── ggoboogy.pub ├── ian0371.md ├── ian0371.pub ├── jaemoon-sim.md ├── jaemoon-sim.pub ├── james010kim.md ├── james010kim.pub ├── jcassou.md ├── jcassou.pub ├── jchoi2022.md ├── jchoi2022.pub ├── jhong3842.md ├── jhong3842.pub ├── jmpark81.md ├── jmpark81.pub ├── juanaevv.md ├── juanaevv.pub ├── kaistgun.md ├── kaistgun.pub ├── lbh0307.md ├── lbh0307.pub ├── mfaerevaag.md ├── mfaerevaag.pub ├── mickan921.md ├── mickan921.pub ├── mikkang.md ├── mikkang.pub ├── nohkwak.md ├── nohkwak.pub ├── pr0v3rbs.md ├── pr0v3rbs.pub ├── sbahn1992.md ├── sbahn1992.pub ├── seongil-wi.md ├── seongil.pub ├── seungwonwoo.md ├── seungwonwoo.pub ├── sig2dot.pl ├── soomin-kim.md └── soomin-kim.pub └── teams ├── README.md ├── engineering.tex ├── figs └── network.pdf ├── pubs └── README.md ├── references.bib └── setup.tex /Issues.md: -------------------------------------------------------------------------------- 1 | ### Q&A 2 | 3 | If you have any questions, please create an 4 | [issue](https://github.com/KAIST-IS521/2017-Spring/issues). 5 | When an issue is opened, course staffs will mark the issue with an appropriate 6 | label based on its contents. 7 | 8 | When describing your problem, it is always a good idea to use Markdown 9 | references to pinpoint your commit and line numbers (if you are dealing with 10 | public repository). See 11 | http://stackoverflow.com/questions/23821235/how-to-link-to-specific-line-number-on-github 12 | for more information. 13 | 14 | ##### Before Asking a Question 15 | 16 | Please *search* for the previous questions. You can search all issues including 17 | closed ones in GitHub. Also, try Google search as well. Often time, you will be 18 | able to find the answer easily from Google. Create an issue only when you cannot 19 | find any relevant questions. We will deduct point(s) if you create a duplicated 20 | issue. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IS521, 2017 spring 2 | 3 | ### Philosophy 4 | 5 | The main philosophy of this course is to "learn by doing". This course consists 6 | of a series of activities. Students will develop a small program/prototype in 7 | every activity, and push their results to Github. 8 | 9 | ### Syllabus 10 | 11 | Detailed syllabus should be found 12 | @ http://softsec.kaist.ac.kr/courses/2017s-is521/ 13 | 14 | ### Q&A 15 | 16 | Any questions? Create an [issue](Issues.md) in this repository. We will use 17 | Github as a bulletin board. 18 | -------------------------------------------------------------------------------- /activities/.gitignore: -------------------------------------------------------------------------------- 1 | *.bbl 2 | *.swp 3 | *.aux 4 | *.blg 5 | *.log 6 | *.out 7 | *.pdf 8 | -------------------------------------------------------------------------------- /activities/0306-git.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | 8 | \theoremstyle{definition} 9 | \newtheorem{exercise}{Exercise} 10 | 11 | \begin{document} 12 | %%% Header starts 13 | \noindent{\large\textbf{IS-521 Activity}\hfill 14 | \textbf{Git} \\ 15 | {\phantom{} \hfill Due Date: March 8, 2017} \\ 16 | %%% Header ends 17 | 18 | \section{Activity Overview} 19 | 20 | The aim of this activity is to make sure everyone is familiar with 21 | Git, GitHub, Markdown, and \LaTeX. As discussed in the first class, 22 | all the course materials and your assignments will be posted on 23 | GitHub. The benefits of using GitHub in education is already 24 | known~\cite{feliciano:icse2016}. Some of them include: 25 | \begin{enumerate} 26 | \item You don't need to prepare for your deliverables. Your latest 27 | assignments will be shared with course staffs. 28 | \item You can work on your assignment anywhere there is an internet 29 | connection. 30 | \item You will gain industry-relevant skills and practices. 31 | \item You will be able to contribute to the course contents with 32 | pull requests. 33 | \end{enumerate} 34 | 35 | \section{Exercises} 36 | 37 | \begin{exercise} 38 | 39 | This is a warm-up exercise. Visit the Git Tutorial 40 | website~\cite{gittutorial} and finish all the stages. 41 | 42 | \end{exercise} 43 | 44 | \begin{exercise} 45 | 46 | Visit the \LaTeX~Tutorial website~\cite{latextutorial} and finish 47 | up to step 8. Make a commit for each step in order to show your 48 | progression. 49 | 50 | \end{exercise} 51 | 52 | \begin{exercise} 53 | 54 | Read the Markdown tutorial~\cite{mdtutorial}, and create a 55 | ``README.md'' file in your repository. The file should contain a 56 | brief description about your final \LaTeX~document, and it should 57 | start with the following line: 58 | \begin{verbatim}# is-521\end{verbatim} 59 | 60 | \end{exercise} 61 | 62 | \begin{exercise} 63 | 64 | In this final exercise, you will be intentionally creating a 65 | merge conflict, and you will eventually have to resolve it. Each 66 | student is given a private repository for this exercise. Please 67 | follow the steps below. 68 | \begin{enumerate} 69 | \item Create a branch called `test'. 70 | \item Make sure you are in the branch `master'. 71 | \item Make a modification on the ``README.md'' file. Specifically, 72 | you want to make the header to be capitalized: 73 | \begin{verbatim}# IS-521\end{verbatim} 74 | \item Make a commit. 75 | \item Now switch to the branch `test' you created. 76 | \item Make a modification on the ``README.md'' file. Specifically, 77 | you want to make the header to be: 78 | \begin{verbatim}# is-521: Git Exercise\end{verbatim} 79 | \item Make a commit. This time, you want to make the author name 80 | of the commit to be: 81 | \begin{verbatim}Unknown \end{verbatim}. 82 | You can change the user name by modifying the file at 83 | ``.git/config`` or by using the command: 84 | \begin{verbatim}git commit --author=...\end{verbatim}. 85 | \item Switch back to the branch `master'. 86 | \item Merge the change you made in the `test' branch. 87 | \item Resolve the conflict. The final header would look like: 88 | \begin{verbatim}# IS-521: Git Exercise\end{verbatim} 89 | \item After resolving the conflict, push your modifications to 90 | your own assignment repository. Make sure your git repository 91 | includes the final merge commit. 92 | \item Annotate the last commit with a tag ``Activity-1'', and push 93 | the tag to the assignment repository. 94 | \end{enumerate} 95 | 96 | \end{exercise} 97 | 98 | \bibliography{references} 99 | \bibliographystyle{plainnat} 100 | 101 | \end{document} 102 | -------------------------------------------------------------------------------- /activities/0308-pgp.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | 8 | \theoremstyle{definition} 9 | \newtheorem{exercise}{Exercise} 10 | 11 | \begin{document} 12 | %%% Header starts 13 | \noindent{\large\textbf{IS-521 Activity}\hfill 14 | \textbf{PGP} \\ 15 | {\phantom{} \hfill Due Date: March 13, 2017 (before class)} \\ 16 | %%% Header ends 17 | 18 | \section{Activity Overview} 19 | 20 | In this activity, we learn how to securely encrypt your files and 21 | personal emails with PGP. We are going to use GnuPG, an open-source 22 | implementation for PGP. 23 | 24 | \section{PGP Key-Signing Party} 25 | 26 | The goal of this exercise is twofold: (1) students get to know each 27 | other; (2) students establish the web of trust using GPG. 28 | \begin{enumerate} 29 | \item Create a PGP key of your own with GPG. 30 | \item Push your public key to our web page (by opening a pull 31 | request). 32 | \item Meet your colleagues and exchange your public keys. 33 | \item A student who gets the most signatures will get an extra point 34 | (+1). 35 | \item You can also ask course staffs to sign your key. 36 | \end{enumerate} 37 | 38 | \section{Ethical Conduct Agreement} 39 | 40 | Git allows us to sign tags and commits with your PGP key. Read this 41 | web page~\cite{gitgpg} and configure your PGP key with Git, and follow 42 | the steps below. 43 | 44 | \begin{enumerate} 45 | \item Fork the repository at 46 | \url{https://github.com/KAIST-IS521/Agreement}. 47 | \item Copy from the \texttt{Agreement.md} file to 48 | \texttt{your\_github\_id.md}. 49 | \item Modify the new file appropriately: correct the date and the 50 | name. 51 | \item Commit and sign the commit with your PGP key. 52 | \item Push the signed commit. 53 | % \item Tag your commit with ``Agreement''. 54 | % \item Sign the tag, and push it. 55 | \item Open a pull request. 56 | \end{enumerate} 57 | 58 | \section{Sending an encrypted E-mail} 59 | 60 | In this exercise, your goal is to send an email that is signed by your 61 | private key and encrypted by professor's public key. The content of 62 | your email should contain the following line: 63 | \begin{verbatim} 64 | Your Name, Your GitHub ID, Your Student ID 65 | \end{verbatim}. Your email should be sent to 66 | is521-staff@softsec.kaist.ac.kr. 67 | 68 | \bibliography{references} 69 | \bibliographystyle{plainnat} 70 | 71 | \end{document} 72 | -------------------------------------------------------------------------------- /activities/0313-backdoor.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | \usepackage{listings} 8 | 9 | \theoremstyle{definition} 10 | \newtheorem{exercise}{Exercise} 11 | 12 | \begin{document} 13 | %%% Header starts 14 | \noindent{\large\textbf{IS-521 Activity}\hfill 15 | \textbf{Backdoor} \\ 16 | {\phantom{} \hfill Due Date: March 20, 2017 (before class)} \\ 17 | %%% Header ends 18 | 19 | \section{Activity Overview} 20 | 21 | The primary goal of this activity is to learn how backdoors work by 22 | creating your own. You will have to build an interpreter and programs 23 | based upon a simple language called ``Mini Language''. You will also 24 | introduce a backdoor to your own interpreter. 25 | 26 | \section{Mini Language} 27 | 28 | We first introduce Mini Language, a simple language that runs on a 29 | register-based virtual machine. This language consists of 14 30 | instructions including \texttt{halt}, \texttt{load}, \texttt{store}, 31 | etc. Each instruction starts with an opcode followed by at most 3 32 | operands. There is at least one space character between an opcode and 33 | the first operand. Each operand is separated by a comma. An operand 34 | can be either a register or an immediate. An immediate can represent a 35 | number or an address. Finally, we assume that each process is given a 36 | 8k heap memory starting at the address zero to 8192. This address 37 | space does not overlap with code, which is also started from address 38 | zero. 39 | 40 | \subsection{Operands} 41 | 42 | \paragraph{Register (reg).} There are 256 available registers in our 43 | language. We denote a register by `r' followed by a register ID: 44 | \texttt{r0, r1, \ldots, r255}. Each register is 32-bit (4-byte) long. 45 | 46 | \paragraph{Immediate (imm).} An immediate operand indicates either an 47 | integer number or an address depending on the opcode. We use a simple 48 | number representation to denote an immediate. 49 | 50 | \subsection{Opcode} 51 | 52 | There are 14 opcodes in total. Your VM should terminate immediately if 53 | it encounters an unknown opcode, i.e., opcodes other than the 14 54 | opcodes defined, with an error message. 55 | 56 | \begin{description} 57 | 58 | \item [\texttt{halt}]~\\ 59 | % 60 | This instruction does not require any operand. This instruction 61 | simply terminates the current process. 62 | 63 | \item [\texttt{load (reg), (reg)}]~\\ 64 | % 65 | This instruction loads a 1-byte value from memory located at 66 | address (the second register) into the first register. The high 24 67 | bits are zeroed out. For example, \texttt{load r0, r1} means: load 68 | a 8-bit value from the address at \texttt{r1} into \texttt{r0}. 69 | 70 | \item [\texttt{store (reg), (reg)}]~\\ 71 | % 72 | This instruction stores a 1-byte value of the second register to 73 | memory located at address (the first register). For example, 74 | \texttt{store r1, r2} means: store a byte value (the lower 8-bit 75 | of \texttt{r2}) to memory address at \texttt{r1}. 76 | 77 | \item [\texttt{move (reg), (reg)}]~\\ 78 | % 79 | This instruction moves a 32-bit value from a register to another. 80 | Both operands should be a register, but not an immediate. For 81 | example, \texttt{move r1, r0} means: move a 32-bit value from 82 | \texttt{r0} to \texttt{r1}. 83 | 84 | \item [\texttt{puti (reg), (imm)}]~\\ 85 | % 86 | This instruction moves an 8-bit immediate value to a register. The 87 | upper 24-bit of the destination register is zeroed out. 88 | 89 | \item [\texttt{add (reg), (reg), (reg)}]~\\ 90 | % 91 | This instruction adds two values from the second and the third 92 | register, and store the result to the first register. For example, 93 | \texttt{add r0, r1, r2} means: add the value of \texttt{r1} and 94 | \texttt{r2} and store the result to \texttt{r0}. When an overflow 95 | happens the result will be wrapped around the max integer 96 | ($2^{32}-1$). In other words, \texttt{0xffffffff + 0x1 = 0x0}. 97 | 98 | \item [\texttt{sub (reg), (reg), (reg)}]~\\ 99 | % 100 | This instruction subtracts two values from the second and the 101 | third register, and store the result to the first register. For 102 | example, \texttt{sub r0, r1, r2} means: subtract the value of 103 | \texttt{r2} from \texttt{r1} and store the result to \texttt{r0}. 104 | Overflow conditions are handled the same as in addition 105 | (\texttt{add}). 106 | 107 | \item [\texttt{gt (reg), (reg), (reg)}]~\\ 108 | % 109 | This instruction compares two values of the second and 110 | the third register, and store the comparison result to the first 111 | register: 1 if the second register is greater than the third 112 | register; 0 if otherwise. 113 | 114 | \item [\texttt{ge (reg), (reg), (reg)}]~\\ 115 | % 116 | This instruction compares two values of the second and 117 | the third register, and store the comparison result to the first 118 | register: 1 if the second register is greater than or equal to the 119 | third register; 0 if otherwise. 120 | 121 | \item [\texttt{eq (reg), (reg), (reg)}]~\\ 122 | % 123 | This instruction compares two values of the second and 124 | the third register, and store the comparison result to the first 125 | register: 1 if the second and the third register have the same 126 | value; 0 if otherwise. 127 | 128 | \item [\texttt{ite (reg), (imm), (imm)}]~\\ 129 | % 130 | This instruction (if-then-else) checks the value of the first 131 | register, and changes the instruction pointer to have a value 132 | (either of the second and the third operand). When the register 133 | value is greater than zero, then the instruction pointer will have 134 | the value of the second operand in the next execution. If the 135 | register value is equal to zero, then the instruction pointer will 136 | have the value of the third operand. The instruction pointer can 137 | have an address ranging from 0 (the first instruction) to $N$, 138 | where $N$ is the number of instructions in the code. See 139 | \texttt{jump} instruction for more details. 140 | 141 | \item [\texttt{jump (imm)}]~\\ 142 | % 143 | This is a jump instruction that changes the instruction pointer. 144 | The immediate value indicates an address to be executed in the 145 | next instruction. The target address is an absolute index of an 146 | instruction in the code. For example, \texttt{jump 2} means the 147 | next instruction pointer should point to the third instruction of 148 | the code. If the target instruction does not exist, the VM should 149 | produce an error message and terminate immediately. 150 | 151 | \item [\texttt{puts (reg)}]~\\ 152 | % 153 | This instruction outputs an ASCII string (terminated by a NULL 154 | character) located at memory address (reg) to the screen. The 155 | semantics of puts instruction is equivalent to the puts function 156 | in LIBC except that it does not append a newline character at the 157 | end. 158 | 159 | \item [\texttt{gets (reg)}]~\\ 160 | % 161 | This instruction takes an ASCII string (terminated by a NULL 162 | character) as input from STDIN and store the string to memory 163 | address (reg). The semantics of gets instruction is equivalent to 164 | the gets function in LIBC. Specifically, reading stops when a 165 | newline character is found, and a NULL character is appended to 166 | the end of the string. 167 | 168 | \end{description} 169 | 170 | \subsection{Bytecode} 171 | 172 | Each instruction consumes 4 bytes when it is compiled: the first byte 173 | indicates the opcode, and the rest three bytes represent the operands. 174 | We always use 4 bytes for an instruction even though it does not 175 | require three operands. Unused operands can have any value in the 176 | binary form. For example, both \texttt{0x00000000} and 177 | \texttt{0x00111111} are considered as a \texttt{halt} instruction. 178 | Notice the first byte (the operand) should be zero, meaning a halt 179 | opcode, in both cases. 180 | 181 | \section{Compiler} 182 | 183 | We provide a compiler written in OCaml. This compiler takes in a 184 | program written in Mini Language, and outputs a bytecode. The compiler 185 | is deliberately simple, e.g., it does not even type check. However, it 186 | should be enough to be used in this activity. If you can improve this 187 | compiler, and create a pull request, we will give you up to +10 extra 188 | credit. 189 | 190 | \section{Interpreter (VM)} 191 | 192 | We provide starter code for creating an interpreter for Mini Language. 193 | Your interpreter takes in a program (in byte code) and executes the 194 | program starting from the very first instruction of the program. When 195 | a program is loaded, your interpreter allocates a heap memory range 196 | from 0 to 8192. A program written in Mini Language can use hard-coded 197 | addresses to access the heap memory. When accessing a memory region 198 | outside of the predefined area, your VM should terminate immediately 199 | with an error message. 200 | 201 | For your information, the current starter code is derived from a 202 | project called Mini-VM~\cite{minivm}. 203 | 204 | \section{Login Program} 205 | 206 | You need to create a simple program written in Mini Language. The 207 | pseudocode of this program is given in Listing~\ref{lst:login}. 208 | 209 | \begin{lstlisting}[language=C, 210 | caption={Pseudocode for Login Program.}, 211 | label=lst:login, 212 | basicstyle=\footnotesize\ttfamily] 213 | void main(void) 214 | { 215 | char* buf = malloc( /* some amount */ ); 216 | printf( "User: " ); 217 | gets( buf ); 218 | if ( strcmp( buf, "user" ) == 0 ) { 219 | printf( "Password: " ); 220 | gets( buf ); 221 | if ( strcmp( buf, "password" ) == 0 ) { 222 | puts( "Success" ); 223 | } else { 224 | puts( "Failure" ); 225 | } 226 | } else { 227 | puts( "Failure" ); 228 | } 229 | exit( 0 ); 230 | } 231 | \end{lstlisting} 232 | 233 | \section{Test Program} 234 | 235 | You need to write a simple test program in Mini Language. This is to 236 | demonstrate that your VM is running correctly. We ask you to write a 237 | markdown description for your test program that includes a pseudocode 238 | (in C). The markdown description should clearly show what is the 239 | expected input/output of the program. 240 | 241 | \section{Installing Backdoor} 242 | 243 | Install a backdoor to the interpreter you created. This backdoor 244 | allows you to bypass the authentication process of the login program. 245 | Specifically, when you use a user ID ``superuser'', then this backdoor 246 | allows you to bypass the check, and the program will immediately 247 | return the ``Success'' message without providing any password. Your 248 | goal is to create a backdoor in the interpreter, which can detect your 249 | login program, and surreptitiously change the control flow of the 250 | program when a user ID ``superuser'' is given. 251 | 252 | \section{Final Deliverables} 253 | 254 | We expect you to push your source code to your own public repository 255 | (backdoor-your\_id). You \emph{must} follow the file naming convention 256 | described below. \textbf{If otherwise, course staffs will immediately 257 | deduct half of the available score}. 258 | 259 | \begin{enumerate} 260 | 261 | \item \textbf{./interpreter/} directory contains source code for 262 | your Mini Language Interpreter (VM). 263 | 264 | \item \textbf{./login/login.mini} is a login program written in Mini 265 | Language. The program should be semantically equivalent to the 266 | pseudocode given in Listing~\ref{lst:login}. 267 | 268 | \item \textbf{./test/test.mini} file is a test program written in 269 | Mini Language. We expect to see a unique test program for each 270 | student. 271 | 272 | \item \textbf{./test/test.md} file is a description of the test 273 | program. This write-up includes a pseudocode of your test program 274 | as well as a brief description of your program. In the 275 | description, you need to clearly mention the expected input/output 276 | of the program. 277 | 278 | \item \textbf{./backdoor/} directory contains source code for your 279 | Mini Language Interpreter (VM) with your own backdoor. This 280 | directory should have the \emph{same} list of files as in the 281 | ./interpreter/ directory. 282 | 283 | \item \textbf{./compiler/compiler.ml} file is a simplistic version 284 | of compiler for Mini Language. You can \emph{optionally} improve 285 | this compiler to get extra points (up to +10). If you made a 286 | modification on this file, please clearly indicate in the 287 | \texttt{./README.md} file that you modified the compiler. 288 | 289 | \item \textbf{./README.md} file contains a write-up. This write-up 290 | simply lists what you did for each directory and file, and what 291 | you learned from this activity. 292 | 293 | \end{enumerate} 294 | 295 | \bibliography{references} 296 | \bibliographystyle{plainnat} 297 | 298 | \end{document} 299 | -------------------------------------------------------------------------------- /activities/0320-worm.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | \usepackage{listings} 8 | 9 | \theoremstyle{definition} 10 | \newtheorem{exercise}{Exercise} 11 | 12 | \begin{document} 13 | %%% Header starts 14 | \noindent{\large\textbf{IS-521 Activity}\hfill 15 | \textbf{Worm} \\ 16 | {\phantom{} \hfill Due Date: March 27, 2017 (before class)} \\ 17 | %%% Header ends 18 | 19 | \section{Activity Overview} 20 | 21 | In this activity, you need to build your own worm. The worm exploits a 22 | vulnerability introduced by a backdoor installed in a \emph{vulnet}, 23 | which is a simple telnet-like service. Your goal is to design a worm 24 | that can automatically scan a specified network range, and can 25 | propagate through the network by exploiting the vulnerability. You 26 | will be working on a \emph{private repository} for this activity, 27 | since the outcome of this activity can be security-sensitive. You can 28 | use any language to write your worm, although we strongly recommend 29 | you to use C. We do not provide any starter code for this activity. 30 | Please frequently check the course git repository to get updates on 31 | the activity. We also recommend you to ``watch'' the original repo. 32 | 33 | \section{The vulnet} \label{s:vulnet} 34 | 35 | The vulnet service provides a virtual terminal connection to users. It 36 | uses a password-based authentication, and spawns a remote 37 | \texttt{bash} shell to the authenticated users. We provide source code 38 | for vulnet~\cite{vulnet}. You should be able to spot an obvious 39 | backdoor routine from the source code. Specifically, when a user types 40 | in ``superuser'' as a user name, the program immediately logs the user 41 | in without taking a password. The vulnet uses TCP port number 2323 by 42 | default. 43 | 44 | \section{The Worm} 45 | 46 | The primary goal of this activity is to design your own worm. The worm 47 | should exploit the vulnerability of vulnet introduced by the backdoor 48 | described in the previous section. 49 | 50 | \subsection{The Operation} 51 | 52 | The worm runs in the following manner: 53 | 54 | \begin{enumerate} 55 | 56 | \item It scans a user-specified network range. For every IP in the 57 | range, it checks if TCP port number 2323 can be connected. Recall 58 | the vulnerability described in \S\ref{s:vulnet}. 59 | 60 | \item Once connected, it checks if this port is used as vulnet, and 61 | tries to log in to the server by exploiting the vulnerability. In 62 | case the vulnet server does not have a backdoor, it simply goes to 63 | the next target. 64 | 65 | \item If it can be sure that the server has the backdoor, it then 66 | tries to obtain the valid user name and the password. Hint: 67 | \texttt{/proc/} filesystem (procfs) can be useful. 68 | \label{step:infer} 69 | 70 | \item If there exists a file in \texttt{/tmp/myworm}, the worm 71 | assumes that the machine has already got infected, and goes to the 72 | next step. Otherwise, it stores the binary of itself (the worm 73 | binary) to \texttt{/tmp/myworm}. For the purpose of this exercise, 74 | we just close the connection at this point without running the 75 | worm binary, but in reality, you would run the binary. N.B., we 76 | will deduct points if you execute the worm after propagation. 77 | 78 | \item It re-connects to the server with the obtained user name and 79 | the password from Step~\ref{step:infer}. If the login works, it 80 | records the IP address of the vulnerable host along with a user 81 | name and a password. Otherwise, it simply records the IP address 82 | with a user name ``superuser''. 83 | 84 | \item This process iterates until the scanning process ends. The 85 | final output is a CSV (Comma-Separated Values) file that has three 86 | tuples per each line: IP, user name, password. An example would 87 | be: 88 | \begin{verbatim} 89 | 123.0.0.1,admin,secret 90 | 42.42.42.42,superuser, 91 | ... 92 | \end{verbatim} 93 | 94 | \end{enumerate} 95 | 96 | \subsection{Specification} 97 | 98 | The worm has the following specification. 99 | 100 | \begin{enumerate} 101 | 102 | \item The worm binary has the name \texttt{myworm} (all lowercase). 103 | 104 | \item The worm binary takes in three command-line arguments: the 105 | first and the second argument specify the lower and the upper ip 106 | address (IPv4) respectively. The third argument specifies the name 107 | of an output file (the default should be \texttt{./slaves.csv}). 108 | For example, if the first and the second argument are 109 | $192.168.0.0$ and $192.168.255.255$, then the worm will scan 110 | 65,536 hosts from the given range. 111 | % 112 | The third argument is optional, and if it is not given, the 113 | default file name is used. For example, the following command will 114 | scan 256 hosts, and store the list of vulnerable hosts in the 115 | \texttt{./slaves.csv} file. 116 | \begin{verbatim} 117 | ./myworm 192.168.0.0 192.168.0.255 118 | \end{verbatim} 119 | 120 | \item When an incorrect range is given as input, the program should 121 | return an error message, and terminates the process. For example, 122 | the following is a valid command. 123 | \begin{verbatim} 124 | ./myworm 192.168.0.0 192.168.0.0 125 | \end{verbatim} But, the following is \emph{not} a valid command. 126 | \begin{verbatim} 127 | ./myworm 192.168.10.0 192.168.0.0 128 | \end{verbatim}. 129 | 130 | \item The worm process runs in the background. Specifically, it 131 | calls a Linux API, called \texttt{daemon}. See the manual 132 | (\texttt{man daemon}) for more information. You do not need to use 133 | the \texttt{daemon} API if you prefer to use \texttt{fork} and 134 | \texttt{setsid}. 135 | 136 | \end{enumerate} 137 | 138 | \section{Competition (Extra Points)} 139 | 140 | We will pick the most well-designed worm, and use it in the next 141 | activity. Furthermore, we will give up to +10 extra points to the 142 | student! 143 | 144 | \section{Final Deliverables} 145 | 146 | We expect you to push your source code to your own private repository 147 | (worm-your\_id). Do not push your binaries to the repository. You 148 | \emph{must} follow the file naming convention described below. You are 149 | allowed to add extra files that are not specifically mentioned in the 150 | list below such as 3rd-party libraries or configuration files, but you 151 | should always include the followings. \textbf{If otherwise, course 152 | staffs will immediately deduct half of the available score}. 153 | 154 | \begin{enumerate} 155 | 156 | \item \textbf{./Makefile} file is to build your worm. When we type 157 | ``make'', it should automatically build your program and place the 158 | \texttt{myworm} binary to \texttt{./build/myworm}. Again, you can 159 | use any language to implement your worm, but the final binary 160 | executable should be placed in \texttt{./build/myworm} after 161 | typing ``make''. N.B. Never commit the binary to the repository. 162 | We will immediately deduct 3 points if you commit a binary itself 163 | to the build directory. 164 | 165 | \item \textbf{./src/} directory contains the source of your worm. 166 | You can use any language you want. N.B. Points will be deducted 167 | for the lack of necessary comments. Please make your code 168 | readable. 169 | 170 | \item \textbf{./README.md} file contains a write-up. This write-up 171 | simply lists what you did for each directory and file, and what 172 | you learned from this activity. 173 | 174 | \end{enumerate} 175 | 176 | \bibliography{references} 177 | \bibliographystyle{plainnat} 178 | 179 | \end{document} 180 | -------------------------------------------------------------------------------- /activities/0327-antimalware.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | \usepackage{listings} 8 | 9 | \theoremstyle{definition} 10 | \newtheorem{exercise}{Exercise} 11 | 12 | \begin{document} 13 | %%% Header starts 14 | \noindent{\large\textbf{IS-521 Activity}\hfill 15 | \textbf{Anti-malware} \\ 16 | {\phantom{} \hfill Due Date: April 10, 2017 (before class)} \\ 17 | %%% Header ends 18 | 19 | \section{Activity Overview} 20 | 21 | In this activity, you will build your own malware scanner. We provide 22 | malware samples from the previous activities. Since the malware 23 | samples (although it is written by different authors) have the same 24 | semantics, and we can call them as the ``myworm'' malware family. 25 | Notice, each malware binary should be syntactically different from 26 | each other because they are written individually by each student. 27 | 28 | Your goal in this activity is threefold: (1) design a scanner that 29 | detects the ``myworm'' malware family using a library called 30 | YARA~\cite{yara}; (2) create a variant of your previous malware, and 31 | try to bypass other students' signatures; and (3) create a benign 32 | sample that does semantically similar activity as myworm in order to 33 | confuse other students' scanners. 34 | 35 | You want to make your signature from (1) to be as strong as possible, 36 | so that it can detect other's malware variants in (2) as well as 37 | yours. We will run your scanner against 56 malware samples (28 from 38 | the previous activity, and 28 from this activity), and 28 benign 39 | samples (from this activity). We will give extra points (up to +10) to 40 | a student who designed the most powerful scanner that detects the most 41 | of the malware samples with the least false alarms. 42 | 43 | \section{Malware Scanner Design} \label{s:scanner} 44 | 45 | We provide starter code for your malware scanner~\cite{scanner}. Your 46 | scanner will run in two modes. First, when a user does not specify any 47 | directory to scan, it will simply check all the currently running 48 | processes, and obtain the absolute path of each of the running 49 | processes, and scan the corresponding files. Second, when a user 50 | specifies at least one directory to scan, then you simply recursively 51 | enumerate and scan all the files in the directory. You should use 52 | YARA's APIs to scan files. Please refer to the YARA manual 53 | online~\cite{yaramanual} for more information. Writing a rule (file) 54 | for YARA is also straightforward. Please search google for ``yara 55 | rule'' to see related documents. 56 | 57 | We detail the specification of the scanner as follows. 58 | % 59 | \begin{enumerate} 60 | 61 | \item Your scanner takes in a command-line argument \texttt{-r} to 62 | take in a rule file. If a rule file is not given, your scanner 63 | should emit an error message, and terminate the process. 64 | 65 | \item Your scanner takes in a list of directory names. If the list 66 | is empty, then the scanner simply checks all the binary files that 67 | are currently running. To see how to check the currently running 68 | processes in C, you may want to refer to the source code of ``ps'' 69 | command: 70 | \url{https://github.com/mmalecki/procps/blob/master/ps/display.c}. 71 | 72 | \item When you found a match, your scanner should print out the 73 | following string including the file name: 74 | \begin{verbatim}File Name: FOUND!\end{verbatim} 75 | 76 | \item When a file does not match with any of your rules, your 77 | scanner should print out the following string: 78 | \begin{verbatim}File Name: Not matched.\end{verbatim} 79 | 80 | \end{enumerate} 81 | 82 | \section{Writing a Variant} 83 | 84 | Your goal is to write a malware variant that can bypass 85 | signature-based matching. There are several techniques that you can 86 | use including function reordering, register reordering, dummy code 87 | insertion, etc. You can use any creative techniques in your mind to 88 | make a strong malware variant. Your first goal should be to design a 89 | malware variant that can bypass your original signature wrote in 90 | \S\ref{s:scanner}. It is allowed to use malware code written by other 91 | peers if you could not finish the previous activity. 92 | 93 | You can also directly modify the binary code itself using a hex editor 94 | or similar. But you should not use existing packers such as UPX to 95 | pack your binary. You should write your own variant, and you need to 96 | clearly explain what you did in \texttt{Variant.md}. Course staffs can 97 | deduct points if your explanation is not sufficient. 98 | 99 | \section{Writing a Strong Signature} 100 | 101 | Now that you have created a malware variant, your final goal is to 102 | write a strong signature that can detect variants of ``myworm'' 103 | family. We say a program is a member of ``myworm'' family, if the 104 | program scans for vulnerable network ports, and exploits the vulnet 105 | vulnerability to execute an arbitrary logic. 106 | 107 | In the Git repository, you should only include the final signature 108 | that you created in this step. Notice your scanner with your final 109 | signature will be used against all the malware variants written by 110 | your peers. Try to guess what people would do to make variants, and 111 | make your signature as strong as possible. 112 | 113 | Of course, you should think both false positives and negatives to 114 | design your rules. For example, you can simply write a rule that 115 | always raise an alarm for any given file. This rule can detect all the 116 | malware samples, but any benign sample will raise a false alarm. We 117 | will open all 28 malware samples on the next (Wed.) Lab session. 118 | 119 | \section{Writing a Benign Sample} 120 | 121 | We also ask you to write a file that can potentially be detected as 122 | ``myworm'' family, even though it does not do any harm. The idea is to 123 | create a malicious-looking but benign samples to deceive the scanners 124 | written by other peers. By benign, we mean that your program should 125 | not leak any information from the vulnerable server other than the 126 | fact that the server is running a vulnerable vulnet server. Imagine a 127 | vulnerability scanner, which is benign, but may look similar to 128 | myworm. 129 | 130 | We will run your scanner against the benign samples from other 131 | students. We will give extra points to students who cheated the most 132 | number of scanners. 133 | 134 | \section{Deliverables} 135 | 136 | We expect you to push your source code to your own private repository 137 | (av-your\_id). You \emph{must} follow the file naming convention 138 | described below. You are allowed to add extra files that are not 139 | specifically mentioned in the list below such as 3rd-party libraries 140 | or configuration files, but you should always include the followings. 141 | \textbf{If otherwise, course staffs will immediately deduct half of 142 | the available score}. 143 | 144 | \begin{enumerate} 145 | 146 | \item \textbf{./Makefile} file. We should be able to build your 147 | scanner simply by typing ``make''. The produced scanner binary 148 | should be placed in \textbf{./build/scanner}. 149 | 150 | \item \textbf{./scanner.c} file contains the main scanner source. 151 | You can add additional files in the same directory, but you should 152 | mention them in the \texttt{README.md}. 153 | 154 | \item \textbf{./myworm.yar} file contains your final rule(s) to 155 | detect ``myworm'' malware family. 156 | 157 | \item \textbf{./benign/} directory contains source code for your 158 | benign sample. 159 | 160 | \item \textbf{./benign/Makefile} file should produce your benign 161 | sample in \texttt{./build/benign.bin}. This file should be invoked 162 | in the top-level Makefile. 163 | 164 | \item \textbf{./benign/Benign.md} file details how you created a benign 165 | sample. 166 | 167 | \item \textbf{./variant/variant.bin} file is a variant of myworm 168 | (binary) you generated. 169 | 170 | \item \textbf{./variant/Variant.md} file details how you manipulated 171 | your malware to bypass peers' signatures. 172 | 173 | \item \textbf{./README.md} file contains a write-up. This write-up 174 | simply lists what you did for each directory and file, and what 175 | you learned from this activity. 176 | 177 | \end{enumerate} 178 | 179 | \bibliography{references} 180 | \bibliographystyle{plainnat} 181 | 182 | \end{document} 183 | -------------------------------------------------------------------------------- /activities/0410-av2.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | \usepackage{listings} 8 | 9 | \theoremstyle{definition} 10 | \newtheorem{exercise}{Exercise} 11 | 12 | \begin{document} 13 | %%% Header starts 14 | \noindent{\large\textbf{IS-521 Activity}\hfill 15 | \textbf{Anti-anti-malware} \\ 16 | {\phantom{} \hfill Due Date: April 17, 2017 (before class)} \\ 17 | %%% Header ends 18 | 19 | \section{Activity Overview} 20 | 21 | In this activity, you will improve upon the malware you designed 22 | (myworm) in the previous activity. The major goal of this activity is 23 | to apply several anti-AV techniques we learned in the class to your 24 | worm. 25 | 26 | You should use the existing worm-* private repo. Specifically, you 27 | should create a ``2nd-activity'' branch forked off from your own 28 | master branch, and push all your modifications to the branch. You 29 | \emph{must} fork your 2nd-activity branch from the \emph{head} of your 30 | own master branch. In other words, you should use the latest code from 31 | your master. Your final submission should be a pull request from the 32 | branch to your own master. 33 | 34 | You can modify your worm (at master branch) before you start this 35 | activity if your worm was not complete at the moment of prior 36 | submission. In any case, you should clearly fork off from the head of 37 | your master branch. 38 | 39 | \section{Part 1} 40 | 41 | One of the simplest anti-forensic techniques we learned in the class 42 | is to remove the running binary itself. This makes it difficult for 43 | defenders to collect malware samples. Furthermore, the AV we designed 44 | in the previous activity would not detect your worm from the 45 | process-scanning mode, because the corresponding binary file simply 46 | does not exist. 47 | 48 | To achieve this, you can simply call \texttt{unlink} function as soon 49 | as your worm starts running. You can further confuse the AV by 50 | modifying the process name as well: the proc file system will reveal a 51 | different path other than \texttt{myworm} when your worm is running. 52 | 53 | However, this technique introduces a small problem: your worm needs to 54 | propagate, but you do not have the program binary anymore on your 55 | disk. Thus, it is desirable to keep the ability of the worm while 56 | making it undetectable. To summarize, 57 | % 58 | \begin{enumerate} 59 | 60 | \item Your worm needs to run in the same way as in the previous 61 | activity except that it does some anti-AV tricks at the beginning. 62 | 63 | \item Specifically, your worm deletes itself when it starts. 64 | 65 | \item It also changes the name of the process, so the process 66 | appears to have a different name other than \texttt{myworm} when 67 | we see the running processes using \texttt{ps} command. Be 68 | creative. Which name would you use to confuse users? Hint: 69 | ``\texttt{man prctl}''. 70 | 71 | \item Even though the binary of your worm does not present in your 72 | disk, your worm should be able to propagate through the network by 73 | exploiting the vulnet vulnerability. 74 | 75 | \end{enumerate} 76 | 77 | \section{Part 2} 78 | 79 | In this part, we consider an improved version of vulnet 80 | server~\cite{vulnet}. You should be able to find the version in the 81 | ``dumb-protection'' branch of the vulnet repository. The improved 82 | version now performs a series of simple checks in order to prevent the 83 | authenticated superuser from obtaining the user name and the password 84 | of vulnet processes. However, this protection mechanism has some 85 | vulnerabilities. Re-design your worm to bypass the defense and get the 86 | user name and the password of the running processes. Your worm should 87 | be able to exploit both the previous and the modified version of 88 | vulnet. Notice there are \emph{multiple} ways to exploit this 89 | vulnerability. 90 | 91 | Hint: One easy way to attack the new protection mechanism is to use a 92 | bash trick: you can dynamically generate command line strings with the 93 | help of several bash expressions. See the ``EXPANSION'' section of the 94 | man page of bash: \texttt{man bash}. 95 | 96 | \section{Deliverables} 97 | 98 | We expect you to push your source code to your own private repository 99 | (worm-your\_id). Your final submission for this activity is a pull 100 | request to your own master branch from your 2nd-activity branch. 101 | 102 | You \emph{must} follow the file naming convention described below. You 103 | are allowed to add extra files that are not specifically mentioned in 104 | the list below such as 3rd-party libraries or configuration files, but 105 | you should always include the followings. \textbf{If otherwise, 106 | course staffs will immediately deduct half of the available score}. 107 | 108 | \begin{enumerate} 109 | 110 | \item \textbf{./Makefile} file. We should be able to build your worm 111 | simply by typing ``make''. We will use the VM that we provided in 112 | the course to compile your worm. If there are any necessary 113 | dependencies to build your worm, your Makefile \emph{must} 114 | automatically install them. The produced binary should be placed 115 | in \textbf{./build/myworm}. 116 | 117 | \item \textbf{./src/} directory contains the source of your worm. 118 | You can use any language you want. N.B. Points will be deducted 119 | for the lack of necessary comments. Please make your code 120 | readable. 121 | 122 | \item \textbf{./README.md} file contains a write-up. This write-up 123 | should have three sections. The first section is ``Deliverables'', 124 | which simply lists what you did for each directory and file. The 125 | second section is ``Summary'', which essentially summarizes how 126 | you solved the problems in Part 1 and 2. Finally, the last section 127 | is ``Lesson''. In this section, you write what you learned from 128 | this activity. 129 | 130 | \end{enumerate} 131 | 132 | \bibliography{references} 133 | \bibliographystyle{plainnat} 134 | 135 | \end{document} 136 | -------------------------------------------------------------------------------- /activities/0424-debugger.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage{hyperref} 5 | \usepackage{amsthm} 6 | \usepackage[numbers,sort&compress]{natbib} 7 | \usepackage{listings} 8 | 9 | \theoremstyle{definition} 10 | \newtheorem{exercise}{Exercise} 11 | 12 | \begin{document} 13 | %%% Header starts 14 | \noindent{\large\textbf{IS-521 Activity}\hfill 15 | \textbf{Debugger} \\ 16 | {\phantom{} \hfill Due Date: May 3, 2017 (before class)} \\ 17 | %%% Header ends 18 | 19 | \section{Activity Overview} 20 | 21 | In this activity, you build your own custom value tracer with the 22 | ptrace debugging API~\cite{ptrace}. Before anything else, remember to 23 | read the manual: \texttt{man ptrace}. Your value tracer takes in an 24 | executable and a CSV file as input, and prints out a sequence of 25 | register or memory values specified in the CSV file by running the 26 | executable. 27 | 28 | Your value tracer takes in an executable file as the first argument, 29 | and a Comma-Separated Values (CSV)~\cite{csvwiki} file as the second 30 | argument. For example, the following command loads \texttt{/bin/ls} 31 | with a CSV file \texttt{a.csv}: 32 | % 33 | \begin{verbatim}./tracer /bin/ls ./a.csv\end{verbatim} 34 | 35 | \section{CSV File} 36 | 37 | The CSV file consists of two columns: the first column indicates 38 | breakpoint addresses in hexadecimal, and the second column represents 39 | tracing targets. A breakpoint address always starts with the prefix 40 | `0x'. Tracing targets are either a register or a memory address. Any 41 | tracing target starts with `0x' is considered to be a memory address. 42 | If tracing target is an integer between 0 and 8, it means a register 43 | ID specified in Table~\ref{tab:regid}. If otherwise, it is considered 44 | to be an error: your tracer should terminate with an error message. 45 | 46 | Consider the following CSV line: \texttt{0x1000,0x4000}. 47 | % 48 | This line means that your value tracer needs to print out the 4-byte 49 | value at 0x4000 when the program counter of the program under test is 50 | at 0x1000. Notice, we assume that your value tracer always prints out 51 | 4-byte values for simplicity. 52 | 53 | You can consider each line of the CSV file as a breakpoint. You cannot 54 | have duplicate breakpoint addresses in the CSV file, but you do not 55 | need to have an ordered addresses in the CSV. For example, suppose we 56 | have the following CSV file with 4 lines. 57 | % 58 | \begin{verbatim} 59 | 0x1000,0 60 | 0x1009,2 61 | 0x1003,1 62 | 0x1002,0 63 | \end{verbatim} 64 | % 65 | In the above case, your value tracer should insert four distinct 66 | breakpoints at address 0x1000, 0x1002, 0x1003, and 0x1009. Notice the 67 | program under test can execute the same address more than once, e.g., 68 | when it has a loop. Suppose your program executes an instruction at 69 | address 0x1000 for five times. In this case, your value tracer should 70 | print out the value of eax exactly 5 times. 71 | 72 | When the given CSV has duplicate breakpoint addresses, then your value 73 | tracer should emit an error message, and immediately exit. For 74 | example, given the following CSV: 75 | \begin{verbatim} 76 | 0x1000,0 77 | 0x2000,5 78 | 0x1000,0x2000 79 | \end{verbatim} 80 | % 81 | Your value tracer should terminate, because the address 0x1000 appears 82 | twice in the CSV. Similarly, when there is an invalid address, your 83 | tracer should exit with an error message. 84 | 85 | \begin{table}[h] 86 | \centering 87 | \begin{tabular}{lc} 88 | ID & Register Name \\\hline 89 | 0 & eax \\ 90 | 1 & ebx \\ 91 | 2 & ecx \\ 92 | 3 & edx \\ 93 | 4 & esi \\ 94 | 5 & edi \\ 95 | 6 & ebp \\ 96 | 7 & esp \\ 97 | 8 & eip \\\hline 98 | \end{tabular} 99 | \caption{Register ID} 100 | \label{tab:regid} 101 | \end{table} 102 | 103 | \section{Value Tracer} 104 | 105 | Your value tracer binary should have the name \texttt{tracer} when it 106 | is compiled. Your value tracer inserts software breakpoints (0xcc) at 107 | the addresses specified in the CSV file, and run the program under 108 | ptrace. Every time a breakpoint hits, your value tracer restores the 109 | original instruction and executes it in order to preserve the 110 | semantics of the original binary. 111 | 112 | \paragraph{Output.} You should print out the output to a file called, 113 | \texttt{./output.csv}. The output is a CSV that consists of two 114 | columns: (1) the current address (\texttt{EIP}), and (2) the traced 115 | value (4-byte register or memory value). Both values should be 116 | prefixed with `0x'. We will deduct the half of available points if 117 | you do not follow the convention. 118 | 119 | \paragraph{Evaluation.} To evaluate your value tracer, we will prepare 120 | for a list of binary and CSV pairs, and run your value tracer on them 121 | to see if it can correctly print out the values. 122 | 123 | \section{Deliverables} 124 | 125 | We expect you to push your source code to your own private repository 126 | (tracer-your\_id). You \emph{must} follow the file naming convention 127 | described below. You are allowed to add extra files that are not 128 | specifically mentioned in the list below such as 3rd-party libraries 129 | or configuration files, but you should always include the followings. 130 | \textbf{If otherwise, course staffs will immediately deduct half of 131 | the available score}. 132 | 133 | \begin{enumerate} 134 | 135 | \item \textbf{./Makefile} file. We should be able to build your 136 | value tracer simply by typing ``make''. We will use the VM that we 137 | provided in the course to compile your value tracer. If there is 138 | any necessary dependencies to build your value tracer, your 139 | Makefile \emph{must} automatically install them. The produced 140 | binary should be placed in \textbf{./build/tracer}. 141 | 142 | \item \textbf{./src/} directory contains the source of your value 143 | tracer. You should use C for this activity. N.B. Points will be 144 | deducted for the lack of necessary comments. Please make your code 145 | readable. 146 | 147 | \item \textbf{./README.md} file contains a write-up. This write-up 148 | simply lists what you did for each directory and file, and what 149 | you learned from this activity. 150 | 151 | \end{enumerate} 152 | 153 | \bibliography{references} 154 | \bibliographystyle{plainnat} 155 | 156 | \end{document} 157 | -------------------------------------------------------------------------------- /activities/README.md: -------------------------------------------------------------------------------- 1 | # List of Activities 2 | 3 | - Git (03/06/2017) [[tex](0306-git.tex)] 4 | - PGP (03/08/2017) [[tex](0308-pgp.tex)] 5 | - Backdoor (03/13/2017) [[tex](0313-backdoor.tex)] 6 | - Worm (03/20/2017) [[tex](0320-worm.tex)] 7 | - AV (03/27/2017) [[tex](0327-antimalware.tex)] 8 | - AV2 (04/10/2017) [[tex](0410-av2.tex)] 9 | - Debugger (04/24/2017) [[tex](0424-debugger.tex)] 10 | -------------------------------------------------------------------------------- /activities/bins/worm-bins.zip.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KAIST-IS521/2017-Spring/8e8154d25875a1043762eb73146dca33581774a2/activities/bins/worm-bins.zip.gpg -------------------------------------------------------------------------------- /activities/references.bib: -------------------------------------------------------------------------------- 1 | @misc{gittutorial, 2 | author = "Code School", 3 | title = "Try Git: Git Tutorial", 4 | howpublished = "\url{https://try.github.io/levels/1/challenges/1}" 5 | } 6 | 7 | @misc{latextutorial, 8 | author = "Claudio Vellage", 9 | title = "LaTeX Tutorial", 10 | howpublished = "\url{https://www.latex-tutorial.com/tutorials/}" 11 | } 12 | 13 | @misc{mdtutorial, 14 | author = "GitHub", 15 | title = "Mastering Markdown", 16 | howpublished = "\url{https://guides.github.com/features/mastering-markdown/}" 17 | } 18 | 19 | @misc{gitgpg, 20 | author = "GitHub", 21 | title = "Telling Git about your {GPG} key", 22 | howpublished = "\url{https://help.github.com/articles/telling-git-about-your-gpg-key/}" 23 | } 24 | 25 | @misc{minivm, 26 | author = "Philip Conrad", 27 | title = "mini-vm", 28 | howpublished = "\url{https://github.com/philipaconrad/mini-vm}" 29 | } 30 | 31 | @misc{vulnet, 32 | author = "Sang Kil Cha", 33 | title = "vulnet", 34 | howpublished = "\url{https://github.com/KAIST-IS521/vulnet}" 35 | } 36 | 37 | @misc{rfc2068, 38 | author = "RFC2068", 39 | title = "Hypertext Transfer Protocol -- HTTP/1.1", 40 | howpublished = "\url{https://tools.ietf.org/html/rfc2068}" 41 | } 42 | 43 | @misc{yara, 44 | author = "YARA", 45 | title = "YARA", 46 | howpublished = "\url{http://virustotal.github.io/yara/}" 47 | } 48 | 49 | @misc{yaramanual, 50 | author = "YARA", 51 | title = "The {C} {API}", 52 | howpublished = "\url{http://yara.readthedocs.io/en/v3.4.0/capi.html}" 53 | } 54 | 55 | @misc{scanner, 56 | author = "Sang Kil Cha", 57 | title = "Scanner", 58 | howpublished = "\url{https://github.com/KAIST-IS521/Scanner}" 59 | } 60 | 61 | @inproceedings{feliciano:icse2016, 62 | author = {Feliciano, Joseph and Storey, Margaret-Anne and Zagalsky, Alexey}, 63 | title = {Student Experiences Using GitHub in Software Engineering Courses: A 64 | Case Study}, 65 | booktitle = {Proceedings of the 38th International Conference on Software 66 | Engineering Companion}, 67 | year = {2016}, 68 | pages = {422--431} 69 | } 70 | 71 | @misc{ptrace, 72 | author = "Wikipedia", 73 | title = "ptrace", 74 | howpublished = "\url{https://en.wikipedia.org/wiki/Ptrace}" 75 | } 76 | 77 | @misc{csvwiki, 78 | author = "Wikipedia", 79 | title = "Comma-separated values", 80 | howpublished = "\url{https://en.wikipedia.org/wiki/Comma-separated_values}" 81 | } 82 | 83 | -------------------------------------------------------------------------------- /students/DaramG.md: -------------------------------------------------------------------------------- 1 | - Name: HyungSeok Han 2 | - ID : DaramG 3 | - Key : [DaramG.pub](DaramG.pub) 4 | -------------------------------------------------------------------------------- /students/DaramG.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 50 | 9t77G+U= 51 | =vFzO 52 | -----END PGP PUBLIC KEY BLOCK----- 53 | -------------------------------------------------------------------------------- /students/Hyeongcheol-An.md: -------------------------------------------------------------------------------- 1 | 2 | - name: Hyeongcheol An 3 | - ID: Hyeongcheol-An 4 | - Key: [Hyeongcheol-An.pub](Hyeongcheol-An.pub) 5 | -------------------------------------------------------------------------------- /students/Hyeongcheol-An.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/sokBCACb01mX//s2jD0k49zGWhsdNnt466naHtWPxBS6t1mlrIRKNDUW 5 | JRL/T4B1q8wjHjHREdLFUN/+367Gxq0Zs3YGItmP6XT6bi2osOwSOuOQ0lrEmDS6 6 | cDmMSNKeOvk2B1T47BV9xzhC88V0y4nUCmw5BhZ4XQvo+np8a55ZFvsA/hF/uuoS 7 | X63JQQqLYQdKlVdjStbGQDpAAcE2RaBUjDMaJE4V7yVSmjf45Qn2kQabuIl7pR9V 8 | eabFYh/weI7rOG86etMG1HIum6eHGM4OmaywxQMpwtVckHilL1Dt1Xm4256fRQ3g 9 | ferZFW20IYReNYq4IXGoo5leAZi62Dh4lA8xABEBAAG0JEh5ZW9uZ2NoZW9sIEFu 10 | IDxhbmgxMDI2QGthaXN0LmFjLmtyPokBOAQTAQIAIgUCWL+yiQIbAwYLCQgHAwIG 11 | FQgCCQoLBBYCAwECHgECF4AACgkQ/cGkdhCKtN8THQgAgJe5yn/hEWVklLrM0rRY 12 | 5dFPzNEe3WX8rA74VYhjRa+RP8dw5Uc2GxbHZv+QLrQHpz1yMUSvzUwK92BcaY9Z 13 | leKoT1HDNWyz6LivXoAyRj4jMMjaXq6p1TMWz/TvgZYyWwuEM7jCVirsMuXEcjga 14 | khj9/H12Fg5wUhgTQC2+LqJC+nKAWjYA7TcC3A43bPuKqQnyv+NbeRG0r5dte3fu 15 | yfI0pJKGsI4meZdd3AcbBzoRmX6EHxcpQpwmszLskI2kFOHmPAR1ianaUygkXaWu 16 | JGb/twQd+I+2+v0nDLYDK2MoOxFhMWFxEVmYUtVNL4aJjUDwwtzA+k1R8Pb/U715 17 | hbkBDQRYv7KJAQgArn5wMl8sbPat0kbIggAWzqTeHr06gTpshfzaYVgixv/l4RHd 18 | uCwBY3gkVw2DUZIyJjGxearEDxQVxm6p4DsawHCiYGKRLGu47a7z9rAzy4x5wPjj 19 | 09eZM1HnF7D9QSRMYR6pAKlsFITE5+xbkJgIRc0CgEEdA1tiTnOLWo7857P9Szqu 20 | EnYSJ84MFxP02xeNUK6T76+fseE6FRCSy6mSd2P45flXNPMhun5kCi4dsJPgfSjd 21 | k4lKx9DqUd/TgIhOVLM4YZGEipmk7xgKARkFTRDLKzJkmxp99S827r/hk+WK43Y/ 22 | fBXJPOkXxNmWt4u4ugcVHhVt9wtUlXNQchPBxQARAQABiQEfBBgBAgAJBQJYv7KJ 23 | AhsMAAoJEP3BpHYQirTfXbgH/jf0405GiqgUloUZJNRVbM1JIhTu8QBI6MNaoJ2C 24 | o9Dwr1HX8fY+jfVHiC+r/Zmlcv+QF444z72nSSZb40AylFULhnZfEZmGb/YeCPSX 25 | b2WCiin8Kfy5iWxbxXzOhldik+nRXHptVEhWC9NBD79SMiNk/p/O8Z/zgVig8smw 26 | mb9kTlCQECiZOFKpsJGUUg7GNY8IociXRHQUIxCu0fNgMxriLoRDwDF9ppmZBpYg 27 | sJpNhUn/f8WTRzogJQbjMUrZy7PYXuAdkePbDyXZA+kHQ9GOvGm84b/GSNVEUXvg 28 | r01k64n/ynAiQjlTAMZk6pqLqGusqYANJCyDh87ijg16rdQ= 29 | =Ui0c 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/JeongOhKye.md: -------------------------------------------------------------------------------- 1 | - Name : Jeong Oh Kyea 2 | - ID : JeongOhKye 3 | - Key : [JeongOhKye.pub](JeongOhKye.pub) 4 | -------------------------------------------------------------------------------- /students/JeongOhKye.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFjbawsBCADHa7oh9tNH7v/GzZtEobJ2vU13XUXzBYnXkHf8c8xb+A/Zg2JO 5 | mPNBwMm1Tony0guX0HSfteHG+pZ4j0WOxY2L4gJYSzd2kBmYCInH+h09/Uxz3Snh 6 | jsbUGlUcy1LoqVOJdT7p3h7p1t/278JdMPvHZSCyUjYB+ljEUpuwwo+/PaW/BDvw 7 | iTG9vBHMlE1Im3vpcFaxEOXE30VNL0El3PqCUlbRE7g1tDxclOl8dXqP9bmxX2xl 8 | xOvU1C26K1PUKPb7M04k6DKFyo5wC+2mmgIv1p/sg5ZLtkMGsZY2fqaAxT4Z4d0V 9 | S0k4mUqDD1ZzDcBCI6boOuUdK6XVPN+lae6hABEBAAG0LEplb25nT2ggS3llIChr 10 | a29ra29reWUpIDxvaGt5ZTQxNUBnbWFpbC5jb20+iQE4BBMBAgAiBQJY22sLAhsD 11 | BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBnavyrOWOJS7MICADD5afiLGpb 12 | X5wRF4+L5/UfuTAH1cDuWja0blJdWvn24OwAFNKiweU302ebB6/Wh0tRrlxYr3Uf 13 | rxbgp/+/cZV6BMa0aJSI5REC/Oo02r/HWrgEj3rwgGQKwTkaZJqnKGitysWt7yCd 14 | ql739PtL3hgVQbZc4hWiqAO07cluq41vd0FzhIcCG2SJx9rRoGOnoJrvJz5+yL16 15 | KywnyEg8UdluMCXTzUjEZejbGBugBMRPWLVk4mSa4T/E7YbkdOM9s4MUGrbGyS6s 16 | WSRuSi1pNmvxFcTpRgYIjZSQ8lc27vKZGS10rZakreMj2AZJgw4fB/CV2npdTEFN 17 | Zn1qb6sfYcBauQENBFjbawsBCACqmJpzcqQC4cOGnams6v4LfQR+vJDcvkTW1Eag 18 | VcSFS0cJuQfEejU3gQmPcfI0jlJQNyVhlgbGibmxb5Uod0rA5Dx1MKXeeVUrfCjn 19 | XGEr/nHJ8+hBR2u4gFOY7JdKoqvf4ookeN+A4YGTZ9HZaOAdQdwiUjuJif7OI0bf 20 | DPIr0fbpnUPC1v5xHxs8MXfL3yBG8gqNO3OX9GtNboisMtpCbN2EoxzcGFHYeQG/ 21 | Yva35VRQCMSVLDA7NcicNMaW4G/ARuchIz2HEifo28F6kEUTyfZ6e07xp8rkQp7f 22 | fskVIgovB/kr2d3wfEUhuNE02KNQw/8JyIM3X07FhcaUN32zABEBAAGJAR8EGAEC 23 | AAkFAljbawsCGwwACgkQZ2r8qzljiUsAXQgAiW9EzQluYMnylcCzgpi/+MjOWkzN 24 | JPzAGtBsFsY8yxujQqGbsHmMuJb+B5MBts3p8v40wtkRug/j+2Z4OSMcPn6wfx1u 25 | +Qpc2rQZOBoZGSW5eJj52uKKJ+n20aV1Sc3lGAXtFlpj8k4qTVfIjPjNcu42aUDO 26 | dJltqMQYpolvmiwy+dAnAGLbYDzHgHvIzp4/lGwkNPiEpMoIMuvDv2tdL/qyknnC 27 | rpjK8/EEGKHQXQqscflBzs0oci2Y+gswLUGKd+sUDbf7165NXV/Bk8gqWUmiDsBd 28 | pRQmxzWuvmXKLWyoSiA31qDw2XM1zE6o2nD13i9aNJ3D3V4mKbv9A9o0FQ== 29 | =wO1V 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/README.md: -------------------------------------------------------------------------------- 1 | # PGP keys and GitHub ID 2 | 3 | Fork this repository, and create a pull request that contains two new files: 4 | - ```your_github_id.md```: this file contains your real name, your GitHub ID, 5 | and a link to the second file. Specifically, it has the following format: 6 | 7 | ```markdown 8 | - Name: YOUR NAME 9 | - ID : GitHub ID 10 | - Key : [YOUR_GITHUB_ID.pub](your_github_id.pub) 11 | ``` 12 | - ```your_github_id.pub```: this is your PGP key file in *ASCII* 13 | -------------------------------------------------------------------------------- /students/alinghi.md: -------------------------------------------------------------------------------- 1 | - Name : Na, Yun Seok 2 | - ID : alinghi 3 | - Key : [alinghi.pub](alinghi.pub) 4 | -------------------------------------------------------------------------------- /students/alinghi.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mI0EWL+zvgEEAL00UZAFOliOnxG6o3iINch8wLyLPg2jpZho0i9bbdW6JEKDxkuJ 5 | UujYNSJZPX28w7hogFG8mcN3AjVlQuvz8mJr6339CZQmukcz284z7DvqWYr2FbDd 6 | SOWc1lUSVD2THSLtRNJWlOHtAMRlSt4Ze7VXW7KuNFBxo6nQO9qBGKL1ABEBAAG0 7 | Ik5hLCBZdW4gU2VvayA8YWxpbmdoaUBrYWlzdC5hYy5rcj6IuAQTAQIAIgUCWL+z 8 | vgIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQAp00tSKeoQ5k3gQAnigY 9 | BxQHuj199dagApnA9BzEhqLRrDmM6QzqsanY5E8rr64Axsb5J+Kt1UH7XJEMrYgu 10 | gWvPO5IFIAO8Uh7BU094v6kAlqdb84KmJrSsWRnrq4vkgwhuWInOamCVySxPdzNh 11 | vRcxqHQvcxPMGWDmadHBAwFk+mhHBYUhWNc8mTu4jQRYv7O+AQQAptJM4tjkPeVa 12 | Ymsd1GtB2BwjXfa6800YzptiXMfQpTbfBnM20l7uH9DcFqs0cod3VpqVfipz3FlA 13 | TzIRxPm4V2y7UEOKH+bT+QKXYLTERwDWhrxV85pq+N6TnvP/EsAAkpAmzbqs7fxm 14 | 5jpoz+tNuhChaU/p1ocpl8cjidls/tMAEQEAAYifBBgBAgAJBQJYv7O+AhsMAAoJ 15 | EAKdNLUinqEOudoEAJjEAM2/fisuw+JwEmd0Y/q4pZlXnBD1qhdNStqVJ5uPZfZA 16 | ysnJNpIKdwVZOUFYasJZQALZjykUTpc45SoQ8j6UJrnmKH3OU07okZonW+g48cKg 17 | uGeVCKRa08X3th3fKbhCtCMG+ot9hWUednzyVWaiuOrzLzfY9a9UTBVun1WL 18 | =t9TY 19 | 20 | -----END PGP PUBLIC KEY BLOCK----- 21 | -------------------------------------------------------------------------------- /students/asdfljh.md: -------------------------------------------------------------------------------- 1 | - Name: Jiho Lee 2 | - ID : asdfljh 3 | - Key : [asdfljh.pub](asdfljh.pub) 4 | -------------------------------------------------------------------------------- /students/asdfljh.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/pZwBCADqSunIIE4cW62sAh2A8Eo3O08yISpvPOamdj0glFXxKpD/Pt3x 5 | tgzUfkEGk0XZTWYbEO/N4k75m0G2UJ4OzTZZC1QmUI/amleg3pB5YCHnSnC+0fkv 6 | HuTFhk2cvvvL8uCR0ht4gV9A1qIPWEiPFzInpOWX8SPCQuPjmHLK07toovEpnlQi 7 | JqRMH9H91uBuIDPC5lbF+KzycA4OgFXcYJjjHY8h6wLmBpIfdFLOvTum83KRTXw+ 8 | NHA/BIzNrNRkKPaeNGUdH8iclXGX2ux8HqqrM0xL2AemPMjHXWtOnNk2tM8SSXI6 9 | 18rUH+cJCeGNpmJ8HVS8XOhbB1vz8UEgtGXXABEBAAG0HkppaG8gTGVlIDxjamRo 10 | bGRzMDhAZ21haWwuY29tPokBOAQTAQIAIgUCWL+lnAIbAwYLCQgHAwIGFQgCCQoL 11 | BBYCAwECHgECF4AACgkQbsGBjNbewnZf5gf+OJmvxFa1JjPfIs/6TM7Bniw/zLhd 12 | XEnuGfmRO4sWdhSeWojc/sN6fICXnxejeTPTIgKsHp15KwXSExA1ZFk+/ap8GaTD 13 | wSs/WUwgK5RSe8YWk7yxmWJShSaiypcefBlwIOOPCl5z0whf2TUt9UwW4F6h3Lov 14 | 8znKfweV2zU0j/k5U6wbamYIkwRFhy8ozTneAl6EQG9Yt6RHKahSrsfZ5JGKeZ1t 15 | coe7SkHTXmFv4mN+qc6AeAOmtdCDqDEkEdt7s7Spfjx8iunNmd9/M7zLd9Y9Xkhw 16 | e1uDcPv7EIOwddC6kaTYNbyTCQWqiJHR1yGdN/+HGeIOuBemK0olrKeD8LkBDQRY 17 | v6WcAQgAw9D0/GvCFBIG5nT32aTvm30w2enE8u+rwt56bsbcvTVo1+oDrDZafQgz 18 | JmNTZRtnjdMr6knUNfpiF6WPXZ+dVLIXuNjC/1r7Jhz1Fmbgjg6Q1FzYuTM8VmXK 19 | /EjZFU2HvtvJlepuCvNugpes0yVZJugg3q6BcC1D9dkkA3xXx4NqQp7ZAcAo7rtd 20 | tMQA3KlEzBY1JT+NKVQXCB64rEB34jtMtvETcylcxNlO1kNFqE23D+AOAliTenxi 21 | ZIKxUyYavftk09OaEnnjdWxvBMY2/X2CfDEmAkAv8vbfz/gzwSHzhPA190k/GGFG 22 | UM1ZWbUS2Tk2bSmzHsiT65QmKcqM3wARAQABiQEfBBgBAgAJBQJYv6WcAhsMAAoJ 23 | EG7BgYzW3sJ2gugIAOYI2BHdU3CcxF+nejvj0STyPTs21PKIhbqRYx/mRlQEtgWM 24 | t+pbYLUhyb2IWBortGcV+kjVvS5ad7+lnOLu+IhOP4y2EO04i8afi/GXqo0w65/M 25 | LlUEuXd740u/nV2NXf0MnlK4Cl76z+joknbquErBQ2OEUVkkjgjtMMlyovaYj1A5 26 | pV3rmp0npq9G5kbCyQJwdZs+S371w69SCFI0bKMkhjshBNOLs+n9jaSHgfl0qnDx 27 | FOHPIEUnvJNP8fOU3sWxHYjjLPnanJVtCs/XDpH2v9sAlmSVf+KRaIKadjHmWPmS 28 | quvZf7OZ00aTg8+Weqjsv+xCYwaWgVIQlfwMhyA= 29 | =OC3i 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/auditing/0yam.md: -------------------------------------------------------------------------------- 1 | - Name: Hee Jeong Kim 2 | - ID : 0yam 3 | - Key : [0yam.pub](0yam.pub) 4 | -------------------------------------------------------------------------------- /students/auditing/0yam.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 56 | /+hfzQBIhH3FVTgHGEtX/mVDXyDCkaI= 57 | =2DbX 58 | -----END PGP PUBLIC KEY BLOCK----- 59 | -------------------------------------------------------------------------------- /students/auditing/README.md: -------------------------------------------------------------------------------- 1 | # PGP keys and GitHub ID (for auditing students) 2 | 3 | Fork this repository, and create a pull request that contains two new files: 4 | - ```your_github_id.md```: this file contains your real name, your GitHub ID, 5 | and a link to the second file. Specifically, it has the following format: 6 | 7 | ```markdown 8 | - Name: YOUR NAME 9 | - ID : GitHub ID 10 | - Key : [YOUR_GITHUB_ID.pub](your_github_id.pub) 11 | ``` 12 | - ```your_github_id.pub```: this is your PGP key file in *ASCII* 13 | -------------------------------------------------------------------------------- /students/auditing/cpuu.md: -------------------------------------------------------------------------------- 1 | - Name: Jae You PARK 2 | - ID : cpuu 3 | - Key : [cpuu.pub](cpuu.pub) 4 | -------------------------------------------------------------------------------- /students/auditing/cpuu.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/paoBCADCQ32Jst67U8ayv1t70rHHyW+cdOo7f4yoB+8HTQXMJ+Wf6NMa 5 | sLwwqqiXndB9iiR29cf9P/bP8HljGAq8o3UAymuKuEz0eUkLle/LvVNg+XILDupA 6 | keN3YUH+fJrw7TGnrGbEGW4F1yjNYNS8T9/dEHRgcAm6m6GGJ/c2SDfeoIobPqDH 7 | ReaFbDIccBOodr41zfE+Yb1OgsNjTMBo2msdPPpBTJqwFPlSVmiS0vVwj7SDIQjY 8 | /Ff7t/azovFXrYJBPXhX+BY+uzyo9fB4jcM08zilAocHV6h8PpZoFIUm+4AyxHYS 9 | X57WT2jKKM/FgBDepKnz7Jp59iEPsdFlYQ3RABEBAAG0JEphZSBZb3UgUEFSSyAo 10 | aGkpIDxjcHV1QGthaXN0LmFjLmtyPokBPgQTAQIAKAUCWL+lqgIbAwUJAHanAAYL 11 | CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQRmq+eDUbXQcGYAgAoiO+ijY5rOYK 12 | 35TVdUvUI67ItKuniWcnlmCNwsx1+mK4iMOz55rqvxfAYz6BSWZhqTzKA7zDXK76 13 | 1RysJMKFEijO1B6X88Bm7aJ+AN3dNe4UWR8b5v2TiS5ZilkeDZQoGziBUwyrDaIY 14 | IGh7oHUuZWBtJ0ApCV9rr76a9g533KrvCF/Gd3z/sAgvP8eITwODhtz2KqEut4QM 15 | xb5b/cADDuynxTwwmJuSeMUg5w2eHFudKOQ0YKB761krKrZaQW77bUrELR/EixKO 16 | Wcjh/z/zBEx6BxstL2tCwI98vcrWKRYKdqJZxive1+gtJs/D8aIlBA+8xcvmB02A 17 | 7aDPSpgcD7kBDQRYv6WqAQgA3G9Jhycg/DoWvkWAnJRMIVXGjwDtbH6/xokWnOTI 18 | 1dIyaC8fAsY5sOlLBD6XqLbnhfVroYnjuYn1lM3Dw2JRl5LFnU/lPoBTnB8+esB0 19 | R3vzJ80fZv+NEc7Me514BKskya5TDVWGVzNoVjxsMm4Zwc/BLx3wJY7dgNQZRjft 20 | D2/8yaV5ke/zQbm3nZ7VmwZ3WDDGMPZlVduciljKaImfWCkh/WmZz95Xc3zxQasD 21 | Odt5dxZoUkXOOiL2ycICZePlFtjpZ0sdX+73p/H4Biqwuwm5OguUH1YUU/spZfEU 22 | 50nqhgK2DWvUS/oHfJO/3HAHOuSiN4Tx5wHNAPxTC1cSZwARAQABiQElBBgBAgAP 23 | BQJYv6WqAhsMBQkAdqcAAAoJEEZqvng1G10HINkH/jZWwhKczT5EKUWEpqpJ/vXB 24 | JXwE+ZuGl31Ydcxnb3N2UZp2HzG0SUvcQnLFdtY228XqsLpzK0Zk9jpolGszcj3u 25 | KBCIA8cK5P32XQTO0B23PeuyhschQwT8PFQl/WrL9tFZZltUDHB9RPM5Af34DCc7 26 | +0w9Wbl8U4ReqXOJcezWsf7PfYISxF6YC10JDecm0dG5YWn3iLZ6oh4bneJ+BeYg 27 | 8gm+nX1ny/kKt/qcs+Bi72kJXHgxjfZRqGXXTc6eFazsGFPbfks/x1b0ywFV1+WY 28 | zPnpeoBMwxJWRxYzDaDSLXE6FdbFcnlM0rrqRiy0c/EXDPcfyJK3pQNqojPEO2g= 29 | =Az9k 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/auditing/omkwon.md: -------------------------------------------------------------------------------- 1 | - Name: Ohmin Kwon 2 | - ID : omkwon 3 | - Key : [omkwon.pub](omkwon.pub) 4 | -------------------------------------------------------------------------------- /students/auditing/omkwon.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/pagBCADlJ35MSxRJzH3CnBjrJEkmRglRcgc8xAadAbkiaq8kwV8BUcgR 5 | NDdzdXECa+jiwRAYzfmVIsdO3BzWiAWtm83CMFbWNEQXOmAzBXmYBKUulhFI0Mlg 6 | ixKo4J+2DssWKdHILVP80GnGTzXGzPMJZpRVKAIJzfxnBTAp0tPi6yaDJtlXrnqj 7 | f74Ie+pZz349MaJUFdB58fJd3ZFbOmCvbcf6Gg9VnB+PLyIP5janGVFc1h191WI2 8 | CsZbfE/IUtXRvdeqK2F7QKy3PEpgtF+opIShT/L4/IipAx/liqeHlxdjTzukwkEf 9 | 1U0TjSB1iPkSpzwNg+GeGkgN28lbKR8v4pvTABEBAAG0Mk9obWluIEt3b24gKEkg 10 | YW0gb2htaW4pIDxvbWt3b25AbnNsYWIua2Fpc3QuYWMua3I+iQE4BBMBAgAiBQJY 11 | v6WoAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCH9qbmRJcqBEXvB/99 12 | XItwf2x2BIty2QAanCfMmO1pN+814v0qAUsoRvdVzurwYyeejQ5p19a7W2khWLjw 13 | FoimnjKfWzK8Gs2DS6lbRnYvYHCUvmiXy5svwy3fC6DjdeTFaIhLak5pM6fNmeGq 14 | n6hodZfGAjT53Dnt8hT4gzW5OY5R1uzttG0azoHnNK/C9D6swzFweWKGICtocTc4 15 | NwsOqksOhUr3K6EJTdPDxkc8hFzyonYD6F5/O/Q5bHzXotK3qE4Z9XltvFPEQCtP 16 | dgQtXCom5dNpghJF/n93NJHhmy04pvKfRprFSDy1OzhnP2wqPrCPg3OBy5yGKCWY 17 | i+LRjeik9b8khsK30rKvuQENBFi/pagBCAC3094k2gU2oL5H00/gfyYHbVVAY0Kt 18 | D4OYdkpOkHUZz9L/1oxS6GMlYLrOc1ExZqsZQ33eO/pa7WpjYICMcVlGtCfTK0Dr 19 | a2FbVD+R4UNpw6MOj22/sOrt5vDOT0w7uZC3xFfdQFgfTno2PCwOWadPvN3utkdE 20 | k4jKXdbbqoN9MWnhPQYgG3+Gt2kOTRP18P85DmeXYFNv5GhSfu3j7T5owLw07t/x 21 | eUXBGk91X+eUwPwcXs++l6366Rl6pWp4wxdipYpNlIWw7Td19rz7C61i/efFrHCl 22 | 09UBFt4xU7jHp9HfdpJ1WUDDtAdIZzT1Ftlm74jLrO7UqVwzbUhU4h07ABEBAAGJ 23 | AR8EGAECAAkFAli/pagCGwwACgkQh/am5kSXKgSIWAgAnGaCC7YSZ0VE4v3ExgGo 24 | 9M5YRd40DcGcQ/cTnFp+a7eATkoD8kxH/Kl5BRuYKf+ay1fJTm0eCk9/GLys/sQs 25 | 73wdrYOHXWeRaJiRIc+6yh4dUFWXvC0ysCvlWHBLjeIEldWwRiD/SmNcD+jUhMGD 26 | tUzSAZbpAMtwHnAqxGthtHTvj+zZxuFZQmuuWFfVIhJvsRwr1FrzTLaspXqxjel3 27 | +QX/eWdy4I6OihA7hGIL3Dgp0HJmYF2W848QMnYQ+kFYcApn8/1iUYiCX9xiaD5E 28 | RUsS9oFAad5PjtlFDJ3pMlxjezH3bQ1QaN7ySZFMHe/ZHl1CPPR0DoR4ScVQvq/v 29 | WQ== 30 | =S4Wy 31 | -----END PGP PUBLIC KEY BLOCK----- 32 | -------------------------------------------------------------------------------- /students/auditing/pso2017.md: -------------------------------------------------------------------------------- 1 | - Name : Sang-ok Park 2 | - ID : pso2017 3 | - Key : [pso2017.pub](pso2017.pub) 4 | -------------------------------------------------------------------------------- /students/auditing/pso2017.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFjBRmEBCAC/iiKrLhyXc4o4FDabGeYtrSxkJ1wxKsLk4DzH4NUVTGj4VTCP 5 | ib6se2ZFG45+BpNcLRUeMFOlyfVPw+rroAqSVim7SB6mcrGwn8nmaEfEQkw5pvM2 6 | 7POPGkGTBD4oXapimGYWBWyDZmaENgOQp6vrvvMPYP98nGqiwB3pljrACsgdMn0Y 7 | iCjuU9HWbsocaAiQoTOW2GFcJlS/nNGPo6uiNSfR3ml7Xb9IpTVqK16W90CJW6e+ 8 | bYdgswZKIzeIUqV/DvEmcQeajTvunhhthe28j5RefGdeX5l4pufw6t6FFUGjC3Sc 9 | dO2IUBse5LY4tmAVqs3oK0EHnMyAendALsGVABEBAAG0I1Nhbmctb2sgUGFyayA8 10 | Y3lwYXJrMTAxNkBnbWFpbC5jb20+iQE4BBMBAgAiBQJYwUZhAhsDBgsJCAcDAgYV 11 | CAIJCgsEFgIDAQIeAQIXgAAKCRAUg9LPW32sMKJHB/9RSaPTik8lspvup5L0p6Bt 12 | 0MwK6gPHLa8SUkb8WxVyycd5icBttgIlJJpyfO0t9ohBi3bIaMjlhbQLWY2aGKuu 13 | 9DwKHiCLCggjp2aMgYSWNMYEcQKm3ZsX2M/cKqQ8Bw4j7T8ZbKxlKQklD351mA++ 14 | UBzqFeDzjtBoBxw1oditmnZnrgqipBUdYbpVadjyh9lrmicXhPgoR2Ti4+T5JY0M 15 | ACArRho3n2LK/CExK8Bt0kCkoWOzLHk3Lk7U75XWgkmfuo8gEi58IHXoqrCWzyaZ 16 | 0z5TaiqcnkQKb+cTIsUS+2j63hxiXsGv+H0TbXiB51vKm7O5fPRM8m0C4YCKDk6l 17 | uQENBFjBRmEBCADXf5te/sHldlOxRGGxSkJvP9LfBoLIM8YhzREDc1lBqJOod07/ 18 | PdNMKuyEroer7/Sxe8iHGRZSaEEVGa69J5vI6wkfocML+K443PT5NMSMR7byiRFg 19 | 6Cnfqwyu+2IGKdSnvkPiqcKvmZtkYdNwb+Mz66v8k3OMEdlxpiKN/XZIWZpPWgju 20 | h5EYxLAo/K0TL+kC5y6wAOSrNIIBmT9iwth766wgm8eU9T3vLz/hY/TLcMj5iCd9 21 | nN/l9RopNF83UBGcIogbUZxFNclogoayAN8j3T09zhd9ISUHEBwmMNqgUIAJkhvJ 22 | PN58/FE9TEjWKhw5hH4OD8+a5U/bySyvhG0VABEBAAGJAR8EGAECAAkFAljBRmEC 23 | GwwACgkQFIPSz1t9rDDizAf9G3o3Mtj1Tfyjrz7poLdfIwxRlwlUEUWiGs5Oyi0L 24 | Xsil22SRTa3g7nn7qqJtELMwsKZ5iqSeYYKMc2cX/wvNnXuRKrF4XEzYD07S1T05 25 | PcoP+QnjMawqZn1nIYpLu3sHda4qZHRgDACtmnjdf/KQavWEIqdhe6m5a5XHVT8G 26 | 5x2iN0N4zUcfAtCkAFQeFckab4f/Zu3FYtbNfghnYKeDBXuMRvHNRuXP9i7avVcJ 27 | ysS7o8MwhipUSu7KRghVt/RqgH4VbYqt0Uxe7KiXdz8oc/lY9gNTmksl80R8I1L2 28 | W/UQ6LvFK6xaee+/iuG003rEC9KkMmdI8KH8n6gjhT5lfg== 29 | =eumj 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/auditing/yeseulchoi.md: -------------------------------------------------------------------------------- 1 | - Name: Yeseul Choi 2 | - ID : yeseulchoi 3 | - Key : [yeseulchoi.pub] (yeseulchoi.pub) 4 | -------------------------------------------------------------------------------- /students/auditing/yeseulchoi.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 50 | Fg== 51 | =H3sR 52 | -----END PGP PUBLIC KEY BLOCK----- 53 | -------------------------------------------------------------------------------- /students/bjgwak.md: -------------------------------------------------------------------------------- 1 | - Name : Bum jin Gwak 2 | - ID : bjgwak 3 | - Key : [bjgwak.pub](bjgwak.pub) 4 | -------------------------------------------------------------------------------- /students/bjgwak.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/rrUBCADEPgYTDBEIjzrt+lHz2utpvifMA9vNt6+CCxvy3xjJtbLUENQm 5 | dewtYmypkEtZceLeFMko07gP81EOSvyTlGvTO8QZbGifqU11L2fgxDE1J4ayAEof 6 | Rdcn3e+5HyiopDBezimlAha0hkgjWKoaI6dsUhACLcKeirUeuKNmaZ58guEpslwj 7 | he+p5NWHiZIdZXs5KYF0XpWzXVgKbZjYFgyFH51eCENZff+VHTrHdT9khoqyfnOK 8 | hQSQCfQ+cX33+tiEYCbkxWyunnbJFxUYBG9ow6GAfcckLSOCK2IOdl84cU7ccqlT 9 | Ctm3bkrs9afcySsdL57k1dRjxBO3A9KQm+SLABEBAAG0IUJ1bSBKaW4gR3dhayA8 10 | Ympnd2FrQGthaXN0LmFjLmtyPokBOAQTAQIAIgUCWL+utQIbAwYLCQgHAwIGFQgC 11 | CQoLBBYCAwECHgECF4AACgkQJntirzRTU63HRAgAvPYcCoMAxKZZxKQV5Km25z0L 12 | KI1t4MSA7Kbp6uVZv6uR11Aj21fMd+QRZzEK9tUNtJbYn7MVw7orNI2qIcWPVD2b 13 | 1dE8U12fAKZkhGx882ji0+vVp8+YCxUbAwJ4+RaZs6p/5onggoWwnDvPKmSPQeqP 14 | pHhWESF160LQiZqFSOkrZYF1SosDBLomq5gHXxbaGafgYAmDhj7cTsiotrogOiAM 15 | +GcOM14YXwC5YNHOE+A0MJg6cxJF+1PbOpJDy7GLl6hW9dilcFSxtn3AVKCyFJkG 16 | k/ivbYb4dyuufddGdKH8LwvAF6JoI7ph+f+7MD9F5SUxVoqmrFM3nWhx1OcsoLkB 17 | DQRYv661AQgAvVkkCX63t6FaCxO+ENsVBDs4keNPeR2EoA6RpKPdAd2Je7ATix1h 18 | t6j7tl83C5zQ8hbz/macoJerbgDdnkbNX4NPhzDqCeuRTy7liYp2Qz3kuj76Wc99 19 | LZe9qKfJTI4eNkn0TJ+ZCRfLHyy3TPGeAi9jtzmLDkI2vHfcP2e/xll9WzIeCROb 20 | BA/f4g8nLL2nksfK84zRnxk+xIpQQIo+xFAvIwDijnJMSpwzdAw8c4cnKzvCyPJW 21 | IZ0sM1yiupH9a+97fmWRcYHAZlO7lp6Yi7Xs8tTqgziZ4ujj2cwFtsdy9Fzloe/u 22 | aFTGJk6T3H+uHkI7QChNb9G22IL2bkoRBQARAQABiQEfBBgBAgAJBQJYv661AhsM 23 | AAoJECZ7Yq80U1OtjAgIALVQJ+YNfliJI6KCXtuYEJSLOYV0NjahJrchw+gB9cIO 24 | q0FZ7drzzYs0ne7VPfCtBIqKwhbrH/6Oe87VvmfnSa3MDIGHGWcASiK2930EdA8I 25 | MhW7RhY7QRhxHqE+0kAvPMQqTOgT2yx7ZS1YzRvImHN0IPToPGzfkOSkjtPwaVkB 26 | elsABQm3vnsKZhUXOBEwRm8N+4Iq+TYNNRP498IsjDJacUWN5k5II7tsw+LK7vOt 27 | QELirM+xM/IVEzbmlZYSvJu+gHH8bpe54mG/HHcKsy3Uu9LcDyWNM9eZuwH8ZuyW 28 | 8pZM//z94a+bPftTX80/ZN4xwgV3fdtFBCd2bRIzg44= 29 | =wQZW 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/blukat29.md: -------------------------------------------------------------------------------- 1 | - Name: Yunjong Jeong 2 | - ID : blukat29 3 | - Key : [blukat29.pub](blukat29.pub) 4 | -------------------------------------------------------------------------------- /students/blukat29.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v2 3 | 4 | mQINBFi/pNgBEADcxLCQyxmzKW84WFndrXORyjsZpcoDDDKvWhcgX9O7w3+FDEPv 5 | xx942Nh0ycdUaaBrPCJjX5ng9rugkCPJfREcmS0bKNwPxSnCkDJ5YuQbYNXscDYb 6 | gAxTbLw5qqZIxknO173oNN+SddIK8dK2w8zOVkEAbQnjHqoWhvIJCGoAA03nds8O 7 | lvGvHtX2TN4Zxefxvpe0gBg0c4JWVoze85wxZykmhHWFDELwoYbv/zWvzy3dl0Y9 8 | dJfdveUGo0dGEtSNeXtEeN9kbzAqU2/ToWwlwuWDZouGpv0RtnzhkPjS5Vs96zca 9 | wSsAVIpIhSkEtp4gGB8PfVer92RYALHAbm9OPvfIRXXRp2jRzr6OpYfooSYloFCS 10 | C6AnxDg1v1szRzJRNUzeHInbNpfbnKimX9q44SES4zieImXDRCrO1JS8SERs8gVX 11 | wMHxjtcbRJdGPxQO/HdYoz4eQQy0MLLrk5TiPWeshUgryS6dr/5ilo1rJ05ZEmim 12 | DscQSV1XxjgLtUtXmN5k5e+Ngd8oYNFFzqpdqqme0t/m8cN4zGMbw++HTnibUai1 13 | UnsTOwnAKj4Fiw83PuBI4Xu8Tmldrm1tnVDHPb39zajcysSVL/5Qj2OcVBC+jKpm 14 | ITB/ctI7xoBknpnwfScjJoKkqvjmqIXB4rpuHeEtb9Wmj1VzAODEZtZnpQARAQAB 15 | tC5ZdW5qb25nIEplb25nIChibHVrYXQyOSkgPHl1bmpvbmdAa2Fpc3QuYWMua3I+ 16 | iQI5BBMBCAAjBQJYv6TYAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQ 17 | qj2BBPoojK7k9A//Q9PlZukFr8OVU7D3buYzhaxkaTqy6AgmB3w/jRZqDHoqmCXA 18 | 8WCj1u1VCEkl28ILDADTAoQ0jtXO05xGguR0o/GeCxQ4ifaZm7MW6Oyw4lkZZ5jf 19 | nBojft6rdUC3yqkJP31SjXzoJJdNymgE1B0zeBcLhyi1v5nbIK6JMau8/WR1uEZm 20 | bkVo2XDybnNswi5V2efNIS8U2GClLuYgYy1Ds4gB7+bgeWSTfg7lVK4bn+gQne/o 21 | Ll0z/QbZ2jaMonwJLs/GVQoyg7IsXgp52jPRzuB/7vpEgnSbNIDu5Xg87NbrEBJ3 22 | jxWiuIGhIB/VaLs+LaXBIN6WJmoDxoc4y5ZJNyPtCC1uwy2HIuvoRSGxJPM956hq 23 | MG38bR+YbfUEck+kVaPL+fzdXXY0xsGoE4imgUEnpSvjGFpnpUWjeN3AV41p03T2 24 | gk9ZJN3GMeHlZnAKAsY6jgfbMOrApsapNrkOprVyg0yRkNFUv7uz2eHzGSDLoOoA 25 | vhZ37YluUZWgZbo8xWcaq7ukzPIbj6zelm/bgeiEBPQDLojed2U9j48N7SQ8Udqh 26 | k1XvRPi0GYNvYCUJ8eFjvieP+4zTO559lZEoTdSMiSc17eGVeesuBUzUQmjJNGi2 27 | RhtWpIOKa/LaU6LTtVKEasQTWXa3YvQPjjFQV1g8MjKmqHeoZO8qfCUlacC5Ag0E 28 | WL+k2AEQAL6dWSMGd/VHj/24RGizjmu9EvjMMdN9aNVz0HXrIVTxR715w6yFzPdJ 29 | yXfrMWFMF9eqqhe4J8j/TLVrwQ6K5vbbJDeuwIQaJ3E2XVrsHIJ4X55bW/KokOyW 30 | exoV14jgmePh73cW2h7/j9+LjdV1nvkLUa4XQn3QJQ9Qkf01YXYwZf3mqtVq2PjY 31 | A9a8VTzhN394q0pABaoZBn82sBrwbqRByfK7tcLeHuvvqxa0jTTl2sXgZkBChqmz 32 | DTN+6W7SCXQN086JEmvCIVJvFWAX1Rdnx7O6S9MDCzaF1d0Ln2c9zHZHOrvR3urN 33 | 4ZC+IMoygZwX0Y/QRgZjVY4DMJ78SsuCcb06lL93+Y7eaX7rKXZEtIz+9rkK0Dlq 34 | cO0yeDnu+I9i1Lh6PRatp+BYrwA1TciS+/auhX/5OvL0GXcIgBla7N0TldHm1L7I 35 | 1phNBFdae+ybMRLJvhVQuAq7UXXQC7sfkj97Il8kKLdmX1WWt1sBFgMwU39C3dm5 36 | ROOLhyE1owqoWG0lOq5SrXB+knTZgx1ArD1sbdcTT9l0MaOYg2Oz20Uv95zm3CID 37 | RzfRTAPt0j6oCMo/js8dXBHbTCNmUnyZHZryJ9cfXSYtvd5YD973+DBrAYYtam3b 38 | NAkomJcdw+13DF81jRDalmWk9XrA/uYbr65hW+vff3ksmLmrgGWBABEBAAGJAh8E 39 | GAEIAAkFAli/pNgCGwwACgkQqj2BBPoojK7EIhAAmnArzn6wAl23V9QhOiU2lw1s 40 | ljjPYESw5eNSF70K9P0RSJHrCJBnukWlhG3Shu4dfRQ6kSX17u+Su7oOtz0dHBzU 41 | JEQbUevZyQ8ugJr96M8cY+W+0F/0sMxO1clMzgj+3wkHk7Bskckj10+GfMRxQids 42 | 1PCFLmEp7CzVQcm8WJQUO5XG72rdeDEAmRQjf2+2izeLgtcg6JW5JOYEyopdumPZ 43 | WYL7laugXHpShQVU2UiMYQZOzsH4qmY1++UPh56/Dpf7cFUOw0zWPvB0BcreU7Jv 44 | MVBWIeiJnMFXCwCHQqdaUk0OpsP1ad71uvs72rwKmA8gFEz3NOmav2hiDq+iQyrn 45 | ph1gc3LooWnONB0FfNqKPTL/I4wbn7fQMu+/dWUM/Z1PXysCmEqN6uTqeGl0KjOy 46 | T3vUNXtWKhX+BGMLB4OnIOsHE5IXKhfto8ZG5hwZPCDFZo/E6A4h4iPamFAXHh9B 47 | BbSoe01xUrtCXFiBnk0ZP15dH2i/WcHYuqErhWpsBSTNCaDbO3kdFmOqUoeJrFrY 48 | SvXBfY68NEopXTODhUygefc2mXflkh9FD40C298dTeMLbW7fNPbOXXQr+Xbp31yJ 49 | anrILhp+iCJU44vTgZEFb5nLwed1PxTPyJonaMeZdU1IHuoLz2y3J3fhKxF4Bi69 50 | QR6B6EEL4og1UO/UMng= 51 | =c2S5 52 | -----END PGP PUBLIC KEY BLOCK----- 53 | -------------------------------------------------------------------------------- /students/dinggul.md: -------------------------------------------------------------------------------- 1 | - Name: Minjoon Park 2 | - ID : dinggul 3 | - Key : [dinggul.pub](dinggul.pub) 4 | -------------------------------------------------------------------------------- /students/dinggul.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/rGEBCADF7uEB3WnFa+rgxKaToOev24/zmnOgQCA6xkwL8Vr3f7gJftZ1 5 | U7KVP8t7NanKL7WMVK2p1hnX3JXP/8JAESpC4tyBGgh5pEfL//HXBrBJW61rx52Y 6 | YNKXcKg8tmykF8Uoq2IcCpzcG7/DY96UdZ5mq7EuzPlkg2R97MOBPX3o0D5K9T3Z 7 | PxVQyrEDsfItzEYIowSQIrE0yuXlF+DuyJ3vTbbFeJzy80VGi8dFXNSoUn0hyMSH 8 | 0qYw4qxfRNYKgwDJxsGUVsp7DuSrYc4RGjHZY7HaJ++VxrRyetLQOmrL9G/pAH+j 9 | HMp2ckOAJFjn0TvtAaBCIuyjiswzhaRfnRNDABEBAAG0KE1pbmpvb24gUGFyayAo 10 | eWF5KSA8ZGluZ2d1bEBrYWlzdC5hYy5rcj6JATgEEwECACIFAli/rGECGwMGCwkI 11 | BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEArX2xJGxItta+EH/ji/Wwtqox/heEdS 12 | irEND9i5GsLszXN1I5U8FLvud+PckjZMhFXywym+LSR7yuURuva5gHtESX6SuFJu 13 | 34KmKEg2lLSKR7Y5ap19X1KCDsB7OMDxScv1t4x2alXn4kbi79gNTggjBoBkQwiK 14 | TMkH5HSgKh+yWRJCIEuk6HA8qZX4aE850xPwber9mcW/XD9dev1xY2N3DyaJSY8d 15 | MZOSjLp8caTjXeMtmSn9woNXzlSDu7eihh7Q5GhWtsU0F16VHC45cVIX3/jyWiDm 16 | I9/wROPmsbS/i3KUsmnLvYZo/OCUHt4kh/w9/8JJUVCNnVR3/0Qi/kdw55Ouha8x 17 | Ab0IODa5AQ0EWL+sYQEIANBQ5cRUWZrWYD5q30EqY0v5BipoF2R2wko/+4Dki/Z4 18 | 4+PYm2cXVOQ8exd4h8oR5eIA8U/ZUCYiPjE+gmXyPWmMiCI9hApstl6vxu2rilTP 19 | R2BRs0ztco3up3+eGevLh3+TnGL0YUOy6qxLwxm1/vn1DAg/RPpxmjVoYvS5LOnh 20 | jao6+KZv3g3i9GdyjrsrnfV1gkyCmgXhGB3RnafqhsHjHC41isvQUIl28U83rby2 21 | DfZDYjeNtEwAjsIZ6ilq0lR3lbGkILdwwsf+W81MPHlwNrt62jgwg1aLdP9rmKTO 22 | z0B+KObc+fhDhXW/lDfwa7mT9ExWtaXlFIrDrI1QT1MAEQEAAYkBHwQYAQIACQUC 23 | WL+sYQIbDAAKCRAK19sSRsSLbYcgCAC5mvimtiYRw7hbOcAu24k/pRvh6+wxLrtx 24 | q/6fWAWsWEJYFemS4t3nOJgyf3eLb+rs+AOBuxKQ3BSxDV19yK7IR4/sbeGJcubK 25 | 8uRBeC1bLzmYvUQMJseHIHZE4xutg7umgKPNoXXEYXzzyJoocWqIIguxlj1ycFuO 26 | Hb6iSgIagcwXNKrgC7AEZ4LZHVak8+NPddGfVu3WfSj201utox21FxQsdHxX2OWb 27 | s+Fq7Dy+X2C+Y8bugRMBiUhGgsOgj6EfgFA3D8Knr95Flid2MtcvyC+k17mIYpLK 28 | p4ssaZrPUoM3oMBeJPUArIb+rWxaFZTUtSZYhhUQ9DMexidSR4vZ 29 | =peRu 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/donghwan17.md: -------------------------------------------------------------------------------- 1 | - Name: Donghwan Kwon 2 | - ID : donghwan17 3 | - Key : [donghwan17.pub](donghwan17.pub) 4 | -------------------------------------------------------------------------------- /students/donghwan17.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 50 | zOMMlN2GWHuZ 51 | =DEF/ 52 | -----END PGP PUBLIC KEY BLOCK----- 53 | -------------------------------------------------------------------------------- /students/ggoboogy.md: -------------------------------------------------------------------------------- 1 | - Name: Ji Hyeon Yoon 2 | - ID : ggoboogy 3 | - Key : [ggoboogy.pub](ggoboogy.pub) 4 | -------------------------------------------------------------------------------- /students/ggoboogy.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/peoBCADwHZvFvbaUpDdC+DA3eWSfI15I202EcM5Qh+WKAxzNxGRqDrbK 5 | WvSjJdUowVaTWtrkkwo+IZ7pPTbe0Yi/7LZjrmR3+ju74g1/I2gQ4Ni1Ivdsx3Oy 6 | yB30D9NJMPfDDNdtGik81ystV3iFC4/0+HJ66IPJkywdBHx4Q6d36U2bnfuAyD6L 7 | QU9KHXh6O+kit8e4u1xabbAd9+nwWoxYMbh20p7F5Lwl7CnC+588K5oqvyjN/jnH 8 | T9S+8k+YofqKpVr6gQn1o4a5IxAVIql4N7G4QQ2+PyK7G0KeZN7J111ES14P2XDT 9 | 6jZrREwD5zWraq/EUFr2qpbWjgoTbTLVIfL1ABEBAAG0P0ppIEh5ZW9uIFlvb24g 10 | KFBHUCBrZXlzIGZvciB0ZXN0aW5nKSA8amloeWVvbi55b29uQGthaXN0LmFjLmty 11 | PokBOAQTAQIAIgUCWL+l6gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ 12 | RjOHnU1zNiOv0Af/aGIhWKhjuqyMNsf+oGSnM0JF/dLSPPGFSF9IrLMf6NqIq8yt 13 | UbiCnUtnLeWiixDcF4hIa7y3bYp04l+A38gMGNSfb4rNMn3RpRKkAqfTk1xOzDkr 14 | Uw4gquBlYN+IGcqv3UFc0gLSgFhKk8nvdGYRxUGP1hh+xv29aWXYaHoxTPOr6tM6 15 | 8TgvC7nFUmkkCEabE0bT+uQMkt7zJ82/fIvoPYRDeZ5821D0vrNmGYQkmKiku+gt 16 | gnWuZ+f+A1amMOUXpwXOvXzklJ2dWEEcpzKzi1mmJ5/PeowxmK8ZxYFvI2LWJLOH 17 | KJbtnK5tRa3L+tzMykngVHYvf5AZq8Mq7BlJyLkBDQRYv6XqAQgAvcLPrNX/ADrG 18 | 2CFZ8ziItv6aPAGvhEK0lWCqYQDq5W/VRMS4+3kSBQJ+R8L6B4cc/4kcR3ZK073/ 19 | ELZJY8OYOv08oHJOBhJzfExe9j2bfJvuK3IIOc4/zTIh0fDETaSeswdX7ks+IEXW 20 | UrXz0FHB+kHBYRaFXUXXwE19xTB1DOraF1AQGj0u1fZ/IF1vhNM2UTSsldqVL03n 21 | IOaKlulGmba3VFav61Sng/HbkNC47ELMrCjv0xmuzbU54AcJ+WRW2a7GXfUrkOJs 22 | mr84uStFGj5ZDycz+rk0S1WwI42kR3Q7EOVL5k45gT17WNOAtdtd66T2jVmdVOdj 23 | SxY/2gXaMwARAQABiQEfBBgBAgAJBQJYv6XqAhsMAAoJEEYzh51NczYjFcEIAOo+ 24 | hIclQPKX9X8yXraRgw1ZXFYuIQsnMp3XZ01WIJe93/5qNnAAUkEfwu6GltMH0VgU 25 | BInW2uYAy+BTL4m4GkrV0iiw9z4oRf8HS5Y4ObaVAektTS6x0ANR/0lUVxKgPU0b 26 | s2YTW396I/6H6s3RDKbGAtgPTBWeWW+/2vCOaxxDQBdonFpdunjEonoSzHxSDTSc 27 | h1FRTxcE5FE3vaN2egBWh1rCvwGqA187NoQaFW4W6egZLjRHs/54PSbHBwOVDPP6 28 | yKThMMKFOAivef1K+g+JooZCT1Zefqd2QvhQQZ1srELgJrhqgPobVolKrZCHIxJT 29 | DboRdV7/REtj+Q+wqp0= 30 | =Nb+c 31 | -----END PGP PUBLIC KEY BLOCK----- 32 | -------------------------------------------------------------------------------- /students/ian0371.md: -------------------------------------------------------------------------------- 1 | - Name: ChiHyun Song 2 | - ID : ian0371 3 | - Key : [ian0371.pub](ian0371.pub) 4 | 5 | -------------------------------------------------------------------------------- /students/ian0371.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 86 | O3q6s/JuQmOErcxT2g== 87 | =MnrS 88 | -----END PGP PUBLIC KEY BLOCK----- 89 | -------------------------------------------------------------------------------- /students/jaemoon-sim.md: -------------------------------------------------------------------------------- 1 | - Name: Jaemoon Sim 2 | - ID : jaemoon-sim 3 | - Key : [jaemoon-sim.pub](jaemoon-sim.pub) 4 | -------------------------------------------------------------------------------- /students/jaemoon-sim.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/qSABCAD7NJzsVfDoIl91I29+alWX7foIo13hleVuF/OxSUJmS4vFmIpC 5 | Xu9d613mGPJZGTL05jnYTKXfG6iEc5oBPn7/UqCDVkxXfWTbqhA/zWF72MjRGR2Q 6 | v459tVzfjMKgImg3sOjBR7kolBdC2OF+ZzNWyv87fhJdoGEJOLkbdMoKNve9gvda 7 | C3uUI9SobxdZ2Kgow34Q5GCdqprDEzW6UaFM+CgzOUSUcc16dGf4WIUXe5ybG3Vt 8 | vlMlxJzsmbZz0i87pGKuT+Pb35iCFT9HTfbwt0mla3FSiVhgZ5NVICMzhVTLbtAt 9 | VyXIwTAw3VVH8HKuWAY1w0iyDaHSGefOt5MVABEBAAG0IEphZW1vb24gU2ltIDxq 10 | ZXR0aWphbUBnbWFpbC5jb20+iQE4BBMBAgAiBQJYv6kgAhsDBgsJCAcDAgYVCAIJ 11 | CgsEFgIDAQIeAQIXgAAKCRDtJ3ozNqDpG5aiCACjut+SJnopFt4Bxurqp9CNaRvo 12 | dgXMECDBQ93lAXjCZxwvXdTKZosZHfdTuX4uMGrte4ocmoUmpEHziOH//V/pQIrG 13 | kyO45y7Qu/diyGOAbbXWeNgmcLrCWMAYnqY/mMZjV4B2Jxuc1zQbQWmJMjfglOeW 14 | Z+IyVv+BtStSz4491cJvnUSSj4iIlb728kwgCDYwtvLmfrgWA0Wy7Z52kS3WVw6v 15 | S+BA+DYcRjOWpSxBPGqxrtRRDZoFHHR3OCQEcf9gV7rbIAebNwvZ6SrUyB8Vvw7D 16 | uYG/lLnIvi4HC2jdRw7yID+33NIpAtUzJC14MFmtukhNmZTNakx6uYpeGRXjuQEN 17 | BFi/qSABCADsSwS0NUexe0mPV7LrOzmBExH+lBW95SqKURATVBRJUxD7cPtqFkVA 18 | 5WAdx27CG4tb5DlIx8H+7Y5yXdiMHYWJLKg9FphIpN+1/iw6gvOFbA30gpJpwsv3 19 | KgzeRGI57zlvQGFoYHLsuav5bVgyZ7ix/QRmCuYogaIhC8/dGMpG7Mh4+pqXnfil 20 | Mwb23bc3p6XaVN6I0aB+wkSTkpkLajjKe27QACbVic3dmRR0QQ018i/mLRGpu2Ow 21 | UXpAvEdLrGPp94pLBgN5AQ+fhreNBSZXrOS1XcTMvb57xm7n1klQhFzqpHSsHPEd 22 | xrt/Mh+cR6Mqcnx51mSIAkonrVw53GWnABEBAAGJAR8EGAECAAkFAli/qSACGwwA 23 | CgkQ7Sd6Mzag6RsR1wgA804M843VQg3+PDsFsfUWU5+rJ+6Wll70o3uQcHg2vGbe 24 | pkDL1WkEE8X78QkYh9YWhEZTWzX+Vrud6BecAOFH3r6HOqHFUtRFks7RndeBmRb7 25 | xV0sFAOB+rtK4VtYjb82QYkZx/nX/qnJvN5l2xKMf9e/Mlh5vRgse6wCKIMFYOyc 26 | bhHZ8VAvA8/CqIPLYxeSkCo8CUcprl8jXbWM3alcDSFJfOORqm3xApyRpgqqUzBz 27 | QwuluVJChulH+ObuErHReNGLlSa+EbBUbTzu7alP4Pyu15LwTqlk7mgWIM5u2WOx 28 | aDnEKuG+5HK8PHk64Li2yDo1ZVK9UB+LjAc+qM3kJw== 29 | =jOVi 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/james010kim.md: -------------------------------------------------------------------------------- 1 | - Name: Jangha Kim 2 | - ID : james010kim 3 | - Key : [james010kim.pub](james010kim.pub) 4 | -------------------------------------------------------------------------------- /students/james010kim.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | mQENBFi/sikBCADDdOdVTmgaFafssoX6fchV2jeV2bQY0zE+2g5sqFP6LCWQcBVB 4 | hicoa0rQe2NtO+RI4LuZcfZMbVQUCxKjcSvF8f1yZydgLD/wG4VwOWgm8nD1B720 5 | nhIVB4i8EO1ReIwkYuOORPg91UoSUNF1Gy4Z61/kAzORX/IiIIKcss5j9Sh7ach8 6 | t4ycfOtmDqu9cvQ4hife1e4exDF4WmlzhDm6vVVvPd8yo3X2CRmTmQuTduFp7HyS 7 | 3kV701JdzljqMW7uJHP8l4s/zdWMPBi0p6jezzH29baGaKapXUIs6d2XNd/lt4fK 8 | /np3KzgXxCcamJH7jJJUcx2WQQQJQdQPP7hHABEBAAG0H0phbmdoYSBLaW0gPGph 9 | bmdoYUBrYWlzdC5hYy5rcj6JAU4EEwEIADgWIQQNdm59y4IiquUNadaMWlEoRBy5 10 | kgUCWL+yKQIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRCMWlEoRBy5kkJN 11 | CAC566XzeTn9Y5k3H4OZxR1uI5+yfoz7/ZeQGjGUt+eq9g+vnk1FZ+l85UTDmI0Z 12 | 5pHzQBnEHCBFqXCePn2jCK5S+JAslo3z0KPpHpb7pXfMzdoS8eChnA2dffT6r/9E 13 | FU2qaN0J98qfj6ZQUN85WZQFAsCcPuTG7RJIpwsW0vh4smAc1kevxQTt4drOJVef 14 | 1gun9HL+5otxg2GvhgaUVQtuoIclsaJG8mgCjhnm0fHSS31Hg5w8gdE7C3CWTQj5 15 | 7M46wt1aw9sYcPRPwqNV+ndvcZVfprFeSui2YMvxedF1+4OGf+emcJU1TFSspnTq 16 | tiWniImUSeBue/X3j8CoieJFiQEzBBABCAAdFiEE7s93NQUPmjD3FkSi+qPg7TgB 17 | sssFAli/4b0ACgkQ+qPg7TgBssvm9gf/XilN4LtRNsEDvL9XAL1bWnMzEzvL3ttT 18 | QXXHVvJ87kAPUZMG0z5nWKg2TYs2sehAr+Olp23jhM0DzgEcEnz21SsLsHcU0ern 19 | 6l+H1teBpdYs8nILEyOUnLo/N2HXPX4VJx5ys57I0MgY/JHuk3aF2PRRQlUPYgmH 20 | bY3PjV31Oi6FbTUhyM84hwVI8cZCQLEGoWnlDABMmLhWV3kTxnsDCoaxZthc7a6i 21 | VQ2qzjnKaoS2n+DWvjWKLTjKBi2AVf4Jl1vDerFJHm3Ex4TOdQ/3yPInXEah5+Pw 22 | 588MmLPovUeZI/zGsPwUJhuF9vkMxtd9OrvzY01Wh+jaqeVCt4WaIrkBDQRYv7Ip 23 | AQgA0URs+SKegjie2Xarwexo/Z6olw4o6P05wY/hc/k6rCANt3CDzG3NwUajGrPm 24 | pT7Puu8KFVfPfDlOg87KI7VF1+TGbmmvlAvZBelnj0nT7TgPEyAGmoKcSAzpdlXt 25 | ZCxs+oBFqNWIBk3l0gZFrjcAiIFs4/tCP7AZTLgUiPG87ISEP8nXTzvkVt0YDdX8 26 | nASqsM8BvCO8vMASeRWhZZMJ2Vh99oaWQom2vU8isJnNID9Hzlr43/y8sbNnMtlu 27 | 2+km8vlvQ4DS7U0lvyWwf+ZaC+wvFTxGuIi6QTp/27ejWEArlEtPmbRh2/3fsoKu 28 | TjxUETvZhLD+vrSEhSOpuCdPkQARAQABiQE2BBgBCAAgFiEEDXZufcuCIqrlDWnW 29 | jFpRKEQcuZIFAli/sikCGwwACgkQjFpRKEQcuZJjgQf+I79yh39eW0+Z1SVdj+DM 30 | OjcwflaC7rlkUaUXGzCuJIOYBPIzF0X6zaQ/3TI8YnyUdr7NceegizvthSSVZA/+ 31 | YTaShAPg5/bXiaS7F/DV8X3aOoXQpAuIFB3DszKmPRN8cRNZk2rj4IUJOipLkuWS 32 | YgIhZ3ls/Yn7HUzq1Nmo0oJcKfRXxUND1ToZMFnyDvj/KbYTM4mLXfCdlXcdp84Q 33 | YaaDmR6BurSMjfk5FkJVb6HaHxLWFtJEPhg7pcU/xUHYKQiu0nAE8s/tFoYeij6J 34 | NOiKv7HJOYMk0cOmAGtd9DT4H2GLGOTn7+zyxKUTHwsPkdnN27J43hSOjYgzrRSp 35 | Tg== 36 | =wB84 37 | -----END PGP PUBLIC KEY BLOCK----- 38 | -------------------------------------------------------------------------------- /students/jcassou.md: -------------------------------------------------------------------------------- 1 | - Name: Jean CASSOU-MOUNAT 2 | - ID : jcassou 3 | - Key : [JCASSOU.pub](jcassou.pub) 4 | -------------------------------------------------------------------------------- /students/jcassou.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/q3sBCAC7Sb2kgTsKO5ww1eYOUv2I8eRv9q0vzdeEUekHVMT1qwj1Kzup 5 | midXzPI18vcPjas1CA0IaqM0HBZOV0GZ6Onwg96LmcpMt2dnvkq6mC4LssE6xBxf 6 | LODMaNSwxZS3CuuBP4SRQDr7oRx7tM4afEYdQcy1zps22bGI9jowjjWDQy0Yi3ck 7 | fwbgZGwHb2i1NgqtpJphrTMwkKBDieekAhYL0UT5fn9Ucw0V9G4b9O5Pp/PDYn+p 8 | LwNx7ri7tF2BLBuASuOzlhY8IAztP2645lbkMEeThb3i1CIVKphZjYCKSS5ACPSk 9 | kalUbqKsNwq5/HCBLHlYUqQJrLfgQbInQmcJABEBAAG0O0plYW4gQ2Fzc291LU1v 10 | dW5hdCAoTm9uZSkgPGplYW4uY2Fzc291LW1vdW5hdEBpbnNhLWx5b24uZnI+iQE4 11 | BBMBAgAiBQJYv6t7AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRArNn2U 12 | QL2uJ42+B/4h8hfAPWQe8wK5s7CtgD1vcfImS8VewlwvMaMjav1ZZSvcmoAe+oEx 13 | VceSRQGcNwLt3xmlrJbuYaOkvcDrcnCcd34CC55Zhra7Gl3iWvGw6zXcPK4I99Q2 14 | k+ejA/1kxpkYGgTvsD9t2HGX9H3+4DV0by7bFT2X7O0BW796ZxE8DiRw1lR+dmrz 15 | yB2NIHs8ofir+u++xxrc0GgdAEnRb71RMaiWLb5NKDjgUGAGr66iDVw0mAjDqdKj 16 | XtqiRWAmodplELIqD7qrij/ysB4TR3iZHwlvdKN9kn07mzhnINmLP1y02Aoa+vQl 17 | brh+V6OpzlG90nPd3yij9F6DzRRhz7qGuQENBFi/q3sBCAC5e1cseA334f14nRnv 18 | jtqzzANEB3DNEPPJ3RF2vEVbFvPHLK9O6vW6XywcjELyqTDrpEv76d9bK7LH9zM1 19 | Mg9MdRgxV5s9JRzzSGyWh6LYbRY0uB0aQwx+yuc4DRB7dhL4TgvU8rVUMu6Uad0S 20 | iFecngC5kZMtT8A0WrvXOgBaYV/xblEfU3cbenGwf49Bs/WeMXf/jMPgLzFp0944 21 | C7qkTAwuVmLmZAF8wX7zenCnlkV7XP2jiLu2WitMdre9SRxRwIhJorUDWcsix5q/ 22 | shDPwxlyhTi95aPlohoQ7ahEKJKF0nJQ5MS0tfTm2Kp4Ae8wq62pBtXPRhHZOWDi 23 | n5IHABEBAAGJAR8EGAECAAkFAli/q3sCGwwACgkQKzZ9lEC9rifHdAf9Em0LgkFL 24 | onKK/Nuw/J2D27bC7RRCy4jP8S/581tNHYXFRh6tUGlqluKhm8Zar3IfhiCPFSE0 25 | 0ftAXHR3UywCg1YlFTKJyCIFpRr3RK6yRxvJV+96DjDu2YTLvlkQpx+wceihkvG+ 26 | 56FIJMZvVUJ25twIIfeOUthzvhLVPYA60+sVdGqD9uek9PpfzyGlKCFHpYSiKJcq 27 | a8vKZLOMw/AxtWdS/0OSFT7DkiuyX1Yapi5i0aXsj/xWFDk+gYDpU2tuCYHB2vo4 28 | vw5dfUs5zaiHSiSenqnXbWcV2BDuoUw+TQkS3mSa8lRmiGcwIHRQ+HK/yRh0ifhK 29 | hIlfJPtc5Y9Rxw== 30 | =4U3O 31 | -----END PGP PUBLIC KEY BLOCK----- 32 | 33 | -------------------------------------------------------------------------------- /students/jchoi2022.md: -------------------------------------------------------------------------------- 1 | - Name: Jaeseung Choi 2 | - ID : jchoi2022 3 | - Key : [jchoi2022.pub](jchoi2022.pub) 4 | -------------------------------------------------------------------------------- /students/jchoi2022.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/pv0BCADA7ItH+Grqbaz5pEdkx5AgPRU/rvpldpkKS6b3OLWNDpgHkCbD 5 | YYGSH5lfITzwxJyl/3AlYsnKR/80J5ODxId0WJk1LTTPPregYQiWk6tVvrrvEmG/ 6 | vi5nWur77WZe5CEEMcDbR+pY7UkE553AYc9rWD0nZy0aR3yZ2pe7pGCMidckY4bk 7 | 0jMQmk0Hv+9Kd6NGgFUvt9KMnuDkVncZxzHj1BdEZBoNLQ8q0vIOPflNvUbKT6bn 8 | JtuXEmTwX4J/ubwj6szYrlsey+9VB7rKN5NCMoGWEpt96ZKUZ1/53omW6V0OFvLP 9 | fiSM3sR50kml1GgXxrCNavE2QdOnohOJijzjABEBAAG0JUphZXNldW5nIENob2kg 10 | PGpzY2hvaS4yMDIyQGdtYWlsLmNvbT6JAT4EEwECACgFAli/pv0CGwMFCQAnjQAG 11 | CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEAGayiTxBPCqifgIAIpVnfRhISLZ 12 | NQkH45UmCOJdlWranNbRoNT9cn0WEYe0AYUkC/jserkcwkOHhO8moqnW/wm+H3Vd 13 | 3lAaxaRxFzg0BXyVnnE/zevWMWNdkH+B1yteornq5LQduGaP4Zv6lNIUApA8h8O4 14 | G3ebpOvYy6hwHFoq61PfFtbMrVhpqm7hyZiOVUAvxzo5Qy3MbZSTHudoU/+wcOe+ 15 | aTfinYon5uGs8t0QIYPfasYd/yXNlrdeAUsJraFPIp2DV2JlpKqvUdx6cotD39bi 16 | qeUxhRk0pmCfLOt9Cq5+RWs8nn8Y7Kvc3eJ/iHxBn64YaruldxRHineHo001/QjL 17 | czmzpLl6Q4O5AQ0EWL+m/QEIAMIdH73tC7xWRk278oVlVpKYciIPN+9aeUZqiVZk 18 | cIqQqa+d8KYVlwKJ1/xEccsii6ITrwhZtR7HGBNlTuQqx9egmPzyLXw1NYez0ABu 19 | P3sKkMhLAxj81CAggT3XAzY6/Q8OmhQBEI3mDn6T+05CFuRIuyWDb/Sx/RpWAgbz 20 | yH8Rjxye23RKrgudLx11NUj7Hb+e86bP2nIHDvXJcA/tx4a2iGc8Q6S96+KjorFE 21 | 575lv3Aodq3HsHFfnN7oL0BKpSticepzrAOByHnIIQQTFikr5jKu8+ADRyQPfvZl 22 | NB8jijb1XbkkPMIpkXOuX5QJcGgpoVQbgnsjkACbbm3zFU8AEQEAAYkBJQQYAQIA 23 | DwUCWL+m/QIbDAUJACeNAAAKCRABmsok8QTwqv3yB/9U+I0tgOMcTb32YsEJilQm 24 | 8+coryhhiKaLfSrki+PrQux+4Ztwt6OZ5vK4ZnmKY5p/z+Q2PLdF1y/AgG9bCv9t 25 | wYJqtZYPZWxAQgQlGuYBMHt4QmOrDPWIskQ5dJRdqwsE5f7SRq494A7fKQaVk3nY 26 | /V5mETfFlzgp/KkDnRbfNRCWXslfa7kmD7GHTs1NGLB3MFfoh2NLoKZ5dwiRph9i 27 | aKQRxlV4l0Kbl+IBHpClp+VKjuffxIZoatA7p/clbO7aTFP6iELGkESVhyb5ywbo 28 | UB9bC4mQTzjGk1EdqSz/WyncBbMKUKvbkP/x7kvcMxM1Gj8lYBEXSSofnLdok3NG 29 | =zfF8 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/jhong3842.md: -------------------------------------------------------------------------------- 1 | - Name : Jaehong Kim 2 | - ID : jhong3842 3 | - Key : [jhong3842.pub](jhong3842.pub) 4 | -------------------------------------------------------------------------------- /students/jhong3842.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 62 | MCwHNv7J6rRtbiqXYH1XjQ== 63 | =0PX2 64 | -----END PGP PUBLIC KEY BLOCK----- 65 | -------------------------------------------------------------------------------- /students/jmpark81.md: -------------------------------------------------------------------------------- 1 | - Name: Jaemin Park 2 | - ID : jmpark81 3 | - Key : [jmpark81.pub](jmpark81.pub) 4 | -------------------------------------------------------------------------------- /students/jmpark81.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 40 | p7Yq4qyenQk= 41 | =ouxj 42 | -----END PGP PUBLIC KEY BLOCK----- 43 | -------------------------------------------------------------------------------- /students/juanaevv.md: -------------------------------------------------------------------------------- 1 | - Name: YoungKwang Han 2 | - ID : juanaevv 3 | - Key : [juanaevv.pub](juanaevv.pub) 4 | -------------------------------------------------------------------------------- /students/juanaevv.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/u18BCADkkANyBckjghZQIKmNAALC4Wtnx4wpY2kG9gIM+Fdj5jvwIItc 5 | M4EcT2G6/VcPmfrei1V1oke7xwrsAtXh0/F3SdjCuZwlN0tBtenFQzGSRzELvNbA 6 | Jc8fYUT20WHy6l1dxdAggHszxYrYGnFWCczwFYNO5ZQmT5/Lw0iBBCvJaebge3Mz 7 | Pi/8FuDJt4ZHniSF1+gjS8l7OZM2Qrf89277Ja1tWZkIg45A0SxcBEdCLhoJvhtu 8 | QaeZSktADMvS44ApYT51tHLAl4GJQWKvcluaikuRcYLIrrWigd28mfh49TOOQLWC 9 | ZmIP71gU8tSNHrWPApDpZeeKmH+VJhWSy8UXABEBAAG0IllvdW5nS3dhbmcgSGFu 10 | IDxqdWFuYWV2dkBuYXRlLmNvbT6JATgEEwECACIFAli/u18CGwMGCwkIBwMCBhUI 11 | AgkKCwQWAgMBAh4BAheAAAoJEKLBC8Cpe5jjTbQH/25K9aOeNCOLKsdEZJMf/QTp 12 | bwaddryForfGFwMWieisgw9hJKRws8EUDwVi/hoGbTWf6Q03QGeX8+vC8fc1GwiR 13 | +hxHgdN32uciEzk8rxB5Ex9uCuug4UQ9LzrTJPFRbCHwXTheCSBEq0nrDZ/4cg2U 14 | 6qtxcsuueYjzrddRTapY1HUhXkrE0is9pAlZgG9NUs/vAUVPBN/7zfR72ZjXlTe4 15 | 3PwS84EXB8YGX89ONMzacU6QWS1xLa5bhpeFi4phyvIs7TXSg16PwMjJ93391QlA 16 | cvqozF9EayhCDGkDx8AxT6gvwHkp2r3Wvd6O+rLRZEEyIWhw0PQms8BIU0egYRC5 17 | AQ0EWL+7XwEIAM2FcZD9agG81mOgXtNpHk9mCcECYE9WCOezU1j98A7CiAhGOmA/ 18 | uPv9qEwDkLq3Mo6LkZkkY668iCobJBUd889gkGVi3O1QL2C9c68mbgOoXlq1UaHv 19 | y7w8iSdZJbBqIHAm8oHFrpKUHXaYVSJ/CT+79TS/qYc6LoMTbR1DRrdtGSI9IDJo 20 | 9iUkaDNscfkYXWOyz0baE5SWr3ezTjKh4iuLsezhVDLbyAvq54kf9KJXCoTjxwxc 21 | vJ6rdtSvdUbHO+HMokaWOqH3tQ4JKvfWb/+ax7Qi1AXi/Kcw5p3s22poxC7vw/Xr 22 | MseZb9AlXHNKjucS/4iwxSwtOOXLueYNgJ0AEQEAAYkBHwQYAQIACQUCWL+7XwIb 23 | DAAKCRCiwQvAqXuY451ACACFVrsy/1UKozZT0JQI0Wbl5LH1ALfphlxKpE0pSoWy 24 | 1Ay1dE54kRKzf+lUlUNxTXGBW877G59d6uklyRujypSVUdZkjmP5Kf9iTVIrUMdm 25 | 9z1Ckac5HUROEnctUS2xaBPlAVXaCna+YhNi7avqprL0eK6DkU0Vc4aam3rP4YqD 26 | FdY9aIWfMqrSdA6jG/Lnpnv9MhA2lTkffS4UG0JM2ye3CmIKGhwp1oX0b0xCL6oX 27 | I6duUZCUJ86o+lzqIjqG/CNFq2KMqJuBfNZl8AWJxSX7uRqjZ2M5Vg9cTc9zKZar 28 | wKVeE3fvfT9tUtnPH+8KyL4PB/15W5m74XciFHZTrNWC 29 | =yL0B 30 | -----END PGP PUBLIC KEY BLOCK----- -------------------------------------------------------------------------------- /students/kaistgun.md: -------------------------------------------------------------------------------- 1 | - Name : Gunwoo Kim 2 | - ID : KAISTGUN 3 | - Key : [kaistgun.pub](kaistgun.pub) 4 | -------------------------------------------------------------------------------- /students/kaistgun.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: SKS 1.1.5 3 | Comment: Hostname: pgp.mit.edu 4 | 5 | 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 38 | 7PHRKPj2S0KW3wqIefA= 39 | =uVQ0 40 | -----END PGP PUBLIC KEY BLOCK----- 41 | -------------------------------------------------------------------------------- /students/lbh0307.md: -------------------------------------------------------------------------------- 1 | - Name: Byeonghak Lee 2 | - ID : lbh0307 3 | - Key : [lbh0307.pub](lbh0307.pub) 4 | -------------------------------------------------------------------------------- /students/lbh0307.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFff6KIBCADCgR9pi3jtxNX/PUO8paqzuUuhJBOv/e10mL0e19Bgbxc/PTkC 5 | XXJgVbPkThI0yPb5eVMX87ncFoCgfMcv8eXp0Wot8ykIWOa7fIt9CaBk3prZs7Zg 6 | zOkJJf2XKHYuTdHRM9CjbVhVzyCepwv3q48djahXkvmUEbgcgyFRQO+8cuwZa+q0 7 | lLkmRmQ7vhm02jsguEdVGLsKnW6GT4rgN2GKyJqddY77TgQVfFzcFP+Dxh+qLH3p 8 | oPDmjtssV/I2r0ISK/jD96wQsax6+2NR9kC13kQTyAvfTBMYeJG2qvaJ9hz3dpkd 9 | XsDg53lZUA8CH821gUitOjziavBZeYgdZiR5ABEBAAG0IUJ5ZW9uZ2hhayBMZWUg 10 | PGxiaDAzMDdAZ21haWwuY29tPokBMgQQAQgAJgUCV9/oowYLCQgHAwIJEKwvha/7 11 | mOFeBBUIAgoDFgIBAhsDAh4BAABDpQf/XaNVSqBSdPCpRApMXsk4H3vIUaMUCCEP 12 | IE7o1DfY2zaxVyK1N4bM/hhSHMjAHnXwcq/zjSIQ2+m1yKPy2f0zVkElv6t5HinR 13 | v+krY7sEoA9xrDImJy80ObpK4MWkXjeUVIk7yP3jEn3UAxlsYY1jBWU2N7o2B6Ui 14 | L/+H/hMAmLckBTqfbrjWYwGcbCU82BDfiulHMWnDqlvNHY9hXk9mo2es5KuoulkN 15 | 1pli3u2NhCE8vJtnDi/M8BTiri9M1zFounkSqXr2S6cGSMp7EXD16tH0QDfXM+8S 16 | 3wgP9kLM/tyW03wnd7PyB8eG7v7FINjnykXjUmhxsV4IZXltgW3ygLkBDQRX3+ii 17 | AQgA1kiyyWPfag8n4VaxE2BauJoGcAYgXdnlpd34co1YGdryRidTXfbGuBuTdYED 18 | kfFzuaO8vqAiftaH01NTjy4FiKASSXh7gYfFf0wcXAmzX04y3LRlQvuNusDKf0fX 19 | dZg2Ouzx7DKWuyRIBB/CD/yCOFq9sWeiEApFCyPInRBDuCXebG1iUyTTOjOaY2aP 20 | +66IxuwJcBCd0t+H3sTBe0w5nS6GdMAzSdgVAjLuT/xAt6bm1EV72Us/S1M4F8/5 21 | bQbPhOJxC7pDjp3mhvRoBe7cwaD089cSNMJfyn3ALfuBo+/GlWtbTb/aP5PXSMAh 22 | blrvGYEgqMj6F8ibTK32+qDPqwARAQABiQEfBBgBCAATBQJX3+ijCRCsL4Wv+5jh 23 | XgIbDAAARzIIALBXn5DGcIAA98TtmiD2DlblJRexcb7tBHn0znhRqo8mcb1I9mo0 24 | /gAgd1VLJP+LKYDXJSegadDqzQRxqX4dx3rQvd/h7ZoQucfU1LHpeQzGhFeiTyP5 25 | BOfj8YuuGfERqN4Ws0WO50qMk5FHBGrL+JDm0FfKWwxF9/Fn4XL+7HcLGV/R6kkz 26 | 1kSbEysNNWigBwXjv+hoxdNZkeS0T1+2tC/vH9T6O3RLvhpKWMkOALOc1RDhNlrc 27 | 9eUC7r3kRQs1rfCQOo4cxoEYxBEN15hwxY0hRAVTrJsf4sDEoE68HoLWZCRZsy+9 28 | A2RTujDE48p0PwY4DkUOEcCcwW+d4IH85nE= 29 | =Ed1C 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/mfaerevaag.md: -------------------------------------------------------------------------------- 1 | - Name: Markus Faerevaag 2 | - ID : mfaerevaag 3 | - Key : [mfaerevaag.pub](mfaerevaag.pub) 4 | -------------------------------------------------------------------------------- /students/mfaerevaag.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | 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 49 | =5EF6 50 | -----END PGP PUBLIC KEY BLOCK----- 51 | -------------------------------------------------------------------------------- /students/mickan921.md: -------------------------------------------------------------------------------- 1 | - Name: Jungsuk Oh 2 | - ID : mickan921 3 | - Key : [mickan921.pub](https://github.com/mickan921/2017-Spring/blob/master/mickan921.pub) -------------------------------------------------------------------------------- /students/mickan921.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/pS0BCADXqJcWsaArLXI1bDEi3cfiJUnGTTmwlEvCquNH4OaZSN4a/lDa 5 | f46HgapY7mERY0N68zsIxBLW3AMERz+wCiML0Zj1VLm64HlljjRHrcbCC4bB0IPr 6 | Ud0Vou+8D0/oegk2QXbjbGqT7GSDxRHSCBxIS0mI+MxRy0CBgNc0m0TlBZhv+tOY 7 | /sEOpNSREV+tQLFEb9Kl3hLsiuBkUKlZDpTg0ouZkpxJY0/Cztykr8QNPxaW/wsn 8 | jA0buAwl3toaJ8JtxEio6schIx33TKEOBbO38px20kUK2r3uJBBtW4Cu45ymZvxU 9 | ePO2Z7tTp6rnjkSfDDEFJhCUSABJs+OC40rnABEBAAG0IEp1bmdzdWsgT2ggPGpz 10 | b2g5MjFAa2Fpc3QuYWMua3I+iQE+BBMBAgAoBQJYv6UtAhsDBQkB4TOABgsJCAcD 11 | AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDzhgj73PArhDvwCACh77jV2/ToprrYakhn 12 | I4y1/iTkAFJxL/f689kRHMz6MTbc9Rp8HB6SkxFBhMqn8qoj1OSIHxwHCzDAhRi6 13 | 21x0vkMGeKEfl+J7GJqrydW1+LhOh88/C9QM3E/ng+pwA7beD6ntpRZbyxtd+AUB 14 | DxFjzN8gyUezYTDdku4GjvMi98OOQUru9kEeRBN1WUGmMYlwOEzdTXWpEnRhVnBb 15 | kDXk5TgTJZh1KsWBDGZXnShF+T4shxU+kaeSvhEAs1VZ+e/rZs2GbcJ9GmqTN2G/ 16 | ERHaMpK7fCv+Tq0xput+USU7Q+VSeTaWZ43twsFsvNcK1lw/B12bkpVxIK8xj8pU 17 | +Y0fuQENBFi/pS0BCADPjLVcwW5K/qF36RssEiOJ1h7++APf/d2h/GRdVB2lQNGe 18 | TQxYcafQOpEY3ZhQyz0Di721GL58MijA26TQDCVUeb2ytHMvEroKELrkeHSDzWD5 19 | i6Jonbd5+0OIPq1ywfgL871B2JqACwJxpQovcCJjKmk0qzc5xZzQ8c1IzBHtUkpt 20 | swJAenCaCNFFfzmAwnOByhDlWmqdPRvdtamPGvwkKvdigg4hTDD/FuroetT8xz2d 21 | t5KNpSQbKf4jDs1nUsbGUgBV4ziFT0D3o9eRwwNwozdGlW01IGqYiL8I72znioAn 22 | uExGCI16v8lbDiOcbiClxckmeaGlJs++D5Xgy1cxABEBAAGJASUEGAECAA8FAli/ 23 | pS0CGwwFCQHhM4AACgkQ84YI+9zwK4T/MwgAgDR2ImJQPWv8w6+NA6LXbM7OBPe8 24 | oimif48jwQRUMo/rDhhX5D0ZJCrzp2e7PCtqlBtK2Byory8X69sXDacSrs3hFrmw 25 | SU1G4NmzC8Xsr/Kz5e60/DnTmwh3KxnEc0DNA0uOfJvHZPQ037L0AmTn17/LfT66 26 | 74MNmOaQVmUDYuxe6AuXABXyzlc5NuZ6tuLDPn2cwiyawn+G86Q3VBdGyu92Lncx 27 | A+NPGeeIcO1L5o+JIkhs0/X5/JJef3sEwhYcPs0cb7p4xNLXAs5P3UjTBWPFRZF+ 28 | Od1H8ClxU8ExFPsIiKcco6RwMnKBX2A2o/0atlhxaIFK35Qrq1dV1LyJtQ== 29 | =CpkX 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/mikkang.md: -------------------------------------------------------------------------------- 1 | - Name: Mun Beom Kim 2 | - ID : mikkang 3 | - Key : [mikkang.pub](mikkang.pub) 4 | -------------------------------------------------------------------------------- /students/mikkang.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFi/s9cBCADSU4ErrRP+Su1RMb2Ltl53fqURgZ//B5IdmOsoZ+QLYDyPy+n+ 5 | RWSeol3e5TLba90LeJG8GxPP+ytRD4GQ9KYYZljvdb1vbSA6u7VEdZ82n7L3cUBu 6 | VWI6xCyD3HbsQPBt9BGftVE3BaQhqKgGvSt74KWsCn/P0AGa+LellNRNQa8wYuF1 7 | VoN+JBCQ/hqcyUZmy3jYMgu3ejW8q7ym74G+3ZFw4LLSy394wS/zfnypaQPaNI4v 8 | hzrOkPGx3vxwk1CLp/FkD9beliEw0H4FwrwKexpw8W49zrvWKiCrAihqPCUvTZ97 9 | EmpqHcqkLzvq97ZQayOcfhI0GbwgNySBc+8PABEBAAG0Ik11biBCZW9tIEtpbSA8 10 | a21iMTEwOUBrYWlzdC5hYy5rcj6JATgEEwECACIFAli/s9cCGwMGCwkIBwMCBhUI 11 | AgkKCwQWAgMBAh4BAheAAAoJEMHwnxVAGZPScp8H/AlTg7sp5MiEMEt/RKf8SfMK 12 | JyfA+mIKrIaM/HyD9geJIAJDTX6rsIudDoAkw3dKV1YTx8l5yocZFInJjn/zturK 13 | ezGesNad91E7pw5VRsG59xvKHNw3O3Ae3Cr4/hUB9Vkfo+P3LvKGDAXbZn09m8pn 14 | JNxpxPumuCEfwibpxz2M009aSLksMsppgUKWb1uvC1oWMkzeTsQUF5Bz2aVRmUjU 15 | S7ozoXiKKQ7OB2Qt63MRZkblsfHEvHzAJX7/X5+DMPQqC5LR5UoiAKttZKudWIeF 16 | Lq637Dg7JIgWngbsu0DeVUULTyBgMPShK2YkKfeAqhLmBDHGQ6stjOjb+8cvv2+5 17 | AQ0EWL+z1wEIAOMAa0gyUTA8OXnJzBW1dV1v82FYGIXJUgii7P2UMA/9AjYZCegF 18 | LE47HwyxLxFS965mWqtb2CQ5ewAfPLJ42UA0AVqU3HtWvmOakequWV75DmwFdiLH 19 | EDfigi/9UetU1p58NlhsC0dv9y5mn+nKxwBn6/Gy3HpkfvRcEkdMtGvzD1GL0cew 20 | 9evXYQ7dWHA/s7G9kxJd90zTn3PDLamRjLvQmlecD5mzQC3kcYyCJyWM3lIerW2Z 21 | hSORl4/7DKLIysdGaEEqX6+nB0mzLCMl8lcKzhgTqV7j0uOt/aCOjM3ZKH2yzZto 22 | e2qxRaAEP4JLudBSfASlz3EPitM6Z90cy+cAEQEAAYkBHwQYAQIACQUCWL+z1wIb 23 | DAAKCRDB8J8VQBmT0ou9B/96FT8ie7qIZoM9G2mcyMJI2EMObRwWdefob5crYjzq 24 | 7Nish8j98Q3hGVbTKhCg6SyzOfoVxirfO0mbLvGITVL7Q1LSFCX4EwTbcr37qDCc 25 | Xg17hH4RGKil0gQ56P+6dV6QNqaYrsCkGN0wqYQeopZ9ROw4FmEsjdcV1UweOptb 26 | MCfoN+Hjx9/MRU2oMay2P/cJimfHhlI+b6or5Xt8nVUyK2UuFuX049WqtfMhIhH4 27 | Gh9TFXm3ENnaonhUM/hqNKdlfUQ7XWV1u7a6dmhTXmvuM2juMxUjhZC9Zr/kvokg 28 | mBgIS2EHArm5lqAzcSUaaM1pHg2QEII9XwnDumpde+WS 29 | =3Oxu 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/nohkwak.md: -------------------------------------------------------------------------------- 1 | - Name: Nohyun Kwak 2 | - ID : nohkwak 3 | - Key : [nohkwak.pub](nohkwak.pub) 4 | -------------------------------------------------------------------------------- /students/nohkwak.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 50 | =MXM1 51 | -----END PGP PUBLIC KEY BLOCK----- 52 | -------------------------------------------------------------------------------- /students/pr0v3rbs.md: -------------------------------------------------------------------------------- 1 | - Name: MinGeun Kim 2 | - ID : pr0v3rbs 3 | - Key : [pr0v3rbs.pub](pr0v3rbs.pub) 4 | -------------------------------------------------------------------------------- /students/pr0v3rbs.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 41 | =Em2x 42 | -----END PGP PUBLIC KEY BLOCK----- 43 | -------------------------------------------------------------------------------- /students/sbahn1992.md: -------------------------------------------------------------------------------- 1 | - name: Sungbum Ahn 2 | - ID : sbahn1992 3 | - Key : [sbahn1992.pub](sbahn1992.pub) 4 | 5 | -------------------------------------------------------------------------------- /students/sbahn1992.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | mQENBFi/s88BCADU0ZVBOB4sugUcEYZv1aqqunRJwP2ADoI4lZ0pa4wdlmd3MBVN 4 | RpqxeKWZsIDUwagyIJeYsCLp88OqFM9Rog6ytjOrnGSfyl2Eaz7Xk/S2dl5HS6n1 5 | zRDbBPpzgV4EZTF5owj7cfNk2lZB3uMm0wrGVgFZ6sas7N4J7lht3mJZQJ/uxxYm 6 | ZPmkecThbYBZDl75sT4ZcQmgLG4YJb6EUMMq3zjE2Kb+eeOzAEgJW8CGBN/qFyOP 7 | 7+grn/YrvXFwXEzFy5RAcRO0yw0K2yD7D5p5EHAaoA0B0WdmbegWxNmngp7/xpA8 8 | nSYhBVqP2EVlghVFbVhpPdvqySvxB201Fs83ABEBAAG0IHN1bmdidW1haG4gPHNi 9 | YWhuMTk5MkBnbWFpbC5jb20+iQE3BBMBCAAhBQJYv7PPAhsDBQsJCAcCBhUICQoL 10 | AgQWAgMBAh4BAheAAAoJEJEzTa5EshEA+7sH/iPWWbdb94tDAdiLqHMczlaxKUW5 11 | tWPCQeiudLo9m69pN+6fa+pLCyvpdXZe5ECrVsedbx/Ol52YcNdIOeUjgXsWODTT 12 | MlhuFt2pgPFStOU7mIylSWZ1PRrHbxO7+OpZmq3LvaE6hqWO9Oouo2YJ+d+izwIE 13 | EbGczaGTENfa0EB3Eu/CnSTVbeKt2se5F1Dm2S6g07iWiqySkAZxBGMJaa5gBsbc 14 | Pu8G/EF+I5m7+jFz7iWC/ZWxF5/ZzdpdtO6t0l3la14+SD2QT2Fd0Sm5F+25Uhv9 15 | wS1+WrEjivVsJY1XtjsfZA7tCH9QWXOpvfZ+qwG5NqE5Wr+ih39oYm00sKi5AQ0E 16 | WL+zzwEIAJjvVYuHZtnWcW5HuMj6QtQeQLKFG8GAW+Os/ZQR6v/hjp/cSIlUFJov 17 | NxrT+mqDwxX68IyoGsQTXW6G0PM0YWChaxeSA7Cv2nTOZuqyW63FdDhdCE0cdPwv 18 | 0eVFyly4pPRf2iU0zDZyC97t/e2S0Pv4h0g50QphgaTmKUwqp9qWrB5io32kGFWg 19 | yRgNT8/pTY4wlqalc9JLeAXkL9P0Wwn8FNJkiOfG+YaPUn5LoQA2cp+vSdBmTDNy 20 | zr6EViTxXVYsYosPwZbgbSWo8C9KNEImdKRoU+eiId5KeWU8TE11YR12wu4HWG1r 21 | aK4lZeZJ++GU6A7G+odndW5z1bsLsbUAEQEAAYkBHwQYAQgACQUCWL+zzwIbDAAK 22 | CRCRM02uRLIRAOEXCACQfBidjfaK7C8aiR0lny3dT2lL69gTfcImdFY26AEkmluH 23 | CchBQ54XNtwtoW8dlPA5Fe2hBMo7HBHtmEm++1YjCPfjXyGyaayKU1rPTKvDBo58 24 | gHHQr1o26DPcaPrhFhXZ564cpAkF8wwhNrAnoHXJ1VIBCxt2npPqL5hiFjw1K4u8 25 | RQdcTI0vvYMksvZmlnEQk8dZgkerzj/DCiuvujpKghwC2u+XAn41zWnKOrArRvt2 26 | ZbZ+3/pAr8MkvYC3JP/S24luB3ceHflBy6aVJBgLVPUQzp04yhyhE9QeT4BQ6viP 27 | FqW5I42qyDn9Y2qEbqBEJwhjCTsTrZgxliSgsRpU 28 | =ftFt 29 | -----END PGP PUBLIC KEY BLOCK----- 30 | -------------------------------------------------------------------------------- /students/seongil-wi.md: -------------------------------------------------------------------------------- 1 | - Name: Seongil-wi 2 | - ID : seongil-wi 3 | - Key : [seongil-wi.pub](seongil-wi.pub) 4 | -------------------------------------------------------------------------------- /students/seongil.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 50 | =8vjs 51 | -----END PGP PUBLIC KEY BLOCK----- 52 | -------------------------------------------------------------------------------- /students/seungwonwoo.md: -------------------------------------------------------------------------------- 1 | - Name: Seungwon Woo 2 | - ID : seungwonwoo 3 | - Key : [seungwonwoo.pub](seungwonwoo.pub) -------------------------------------------------------------------------------- /students/seungwonwoo.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFjCXc0BCADXQFtlSoELaTe+DMvzan0bG5ZCzx2jDTw89CbNAcG03eEzytLk 5 | H+1mXyyhFU7Yqljj8m470Sr8Lugro2bszIk4ccoykrpStgA7YeqFaZQh5LxNfDkJ 6 | SGUL6ta3tp22AoIGf21PlkOfi5V6Gx/WZelU3K/HB1ArP79Tf3Cac8XkTDJkiaaI 7 | f+B/1luT52zZ+eVIMOoNUFSHa1erqR0ZiZuIu8UEOsuqj8w18hleEtojdi5pV9Nc 8 | Np7WuJw9ozXj+MXtWoJpGGFjostThf7yncZUTNc3AWZz8C8702XqfqjywPl4BiU7 9 | +/atgWl55NsBsggzqWZJZw/ZJVrE7D8fVmclABEBAAG0JlNldW5nd29uIFdvbyA8 10 | c2V1bmd3b253b29Aa2Fpc3QuYWMua3I+iQE4BBMBAgAiBQJYwl3NAhsDBgsJCAcD 11 | AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDvK/5Ha+IKngHGB/wLjLXJI3eY22lMTmJN 12 | bb2DwYK5pwvISgcwxUcJ7pSWKWt50S32p+0N8GQ4P5c4nCp6jTc9NMY2uy6ZApAz 13 | U8jMv8ChL10MXGKr+p8VjbJ5bOV8Sm11Irymj/OH8y2B+GbCyXv7l3lkZWtsdEVl 14 | HY5D50LZTUDjQOxMkhuiExNp21NhR/RrZggaVm5vgJke+zFsVtkh3+DKY8ZjsS2Q 15 | odPX1Hu7Z0pcl9kt/Ee40YbweDsXhcn8VdOno1NNjYuLgNH/BL9lrYCUHPzVP+nH 16 | beCWDqDiS7fYQq1eMKUOBWjT5SlJQrpmxeZShFK6/hqBNt8pLy4u36XAIZh9XjLg 17 | uIjEuQENBFjCXc0BCADlZ7JZXeXmZufPa+e/9qdyfrZIL/wGUoiwebErS64/Rdhl 18 | iRHJ3rN30v2QZw+HZzTh5QRJKWefBQWQzj7DobyWYwtCze6B8nseluVr72oFyph3 19 | K82igMuoF7Qzicg4tXCVUC6UhIIhHMIMvCs0kDfEXY8tGZa1RGlcEZBvwecV2QhM 20 | Bj15kLD/Aa8zgGultxiUw/0DQ+jGusjzocJdIK2IqmJZkIpswOQ/jMC2f7z1/bXN 21 | n/SWSFAidw1i11oCS19hGLaF4vQP4bwjOogYix/iim6SgTUSBy20RNObcXq4eZJG 22 | 6cNuEDUgLGPXN0rBAn5ezMdM7yabY1dDKq0NXfwzABEBAAGJAR8EGAECAAkFAljC 23 | Xc0CGwwACgkQ7yv+R2viCp59fwf/fbYQ2qZDfUHKEoHIU9TdjmOAR82v4e4suRQ5 24 | jrb0jHZWcA7CoNXNJZ266CL+O/DHMaxH/cYhtZsL69hFQDur9RQeeNPGGlWH1m1S 25 | WN+lLIdk3v+rg4/yOJJUmFRyH6/r7fs3ppKEk3QmzByNzv1sBvZgNLEgxG7YoCLM 26 | zwyj92wyjhZfEh9UqLIX6PbkBi2QzymgglKVlggJrdLxynGrZS4boh4rf4ZliLmp 27 | AJh/RCbq+8Ys8sZaxFTINR1V7HU+FnW9eE6YjcuATni2VYW2nkd03SafQrnlcYMT 28 | iBECimLGnU8WfFfngYdWycqFsHJUFB8WuJ9oQUssXpx43pKwwA== 29 | =yjAL 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /students/sig2dot.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # sig2dot v0.29 (c) Darxus@ChaosReigns.com, released under the GPL 4 | # Download from: http://www.chaosreigns.com/code/sig2dot/ 5 | # sig2dot v0.35 (c) 2005 Christoph Berg 6 | # Download from: http://ftp.debian.org/debian/pool/main/s/sig2dot/ 7 | # 8 | # Parses output of "gpg --list-sigs" into a format 9 | # suitable for rendering into a graph by graphviz 10 | # (http://www.research.att.com/sw/tools/graphviz/) like so: 11 | # 12 | # $ gpg --list-sigs --keyring ./phillylinux.gpg | ./sig2dot.pl > phillylinux.dot 13 | # $ neato -Tps phillylinux.dot > phillylinux.ps 14 | # $ convert phillylinux.ps phillylinux.jpg 15 | # 16 | # Commandline options: 17 | # 18 | # -b 19 | # Black and white / do not colorize. 20 | # 21 | # -d 22 | # Render graph as it appeared on (ignores more recent 23 | # signatures). Date must be in the format "YYYY-MM-DD". 24 | # Will also ignore keys that have since been revoked. 25 | # 26 | # -a 27 | # Render all keys, even if they're not signed by any other key. 28 | # 29 | # -u <"string"> 30 | # Support localized output of GnuPG for unknown user IDs. For 31 | # example, German users have to write (with sh quotation marks!) 32 | # "[User-ID nicht gefunden]" if they use GnuPG with German 33 | # messages. Default is "[User id not found]". 34 | # 35 | # -r <"string"> 36 | # Support localized output of GnuPG for revoked keys. For 37 | # example, French users have to write "révoqué" if they use 38 | # GnuPG with French messages. Default is "[revoked". 39 | # 40 | # -s stats.html 41 | # Produces statistics file with number of signatures per node 42 | # 43 | # -h print help 44 | # -v print version 45 | # -q be quiet 46 | # 47 | # Changes: 48 | # 49 | # v0.9 2000-09-14 19:20 strip trailing whitespace from $id more cleanly 50 | # v0.10 2000-09-14 19:33 skip revoked keys at the request of Peter Palfrader 51 | # v0.11 Nov 22 21:38 use ID for node name instead of username for uniqueness 52 | # v0.12 Dec 15 16:20 use names instead of IDs again in stats.html 53 | # v0.13 Jun 19 03:15 red is proportional to signatures 54 | # v0.14 Jun 19 03:25 blue is proportional to other keys signed 55 | # v0.15 Jun 20 17:16 fixed blue, green is proportional to ratio 56 | # v0.16 Jun 20 18:55 uniqed %signedby 57 | # v0.17 Jan 10 19:10 Use overlap=scale instead of fixed edge lengths. Requires new version of graphviz. 58 | # v0.18 Jan 23 11:53 stats.html is now valid html (v.01 transitional) 59 | # v0.23 May 3 18:52 bunch of new stuff, including -b flag (black & white), and fixes devision by zero error 60 | # v0.24 May 3 18:59 add black outline to nodes, prettier (changed node attribute "color" to "fillcolor") 61 | # v0.25 May 3 19:06 cleaned up anti- devision by zero code a little 62 | # v0.26 May 4 00:08 strip all non-digit characters from $renderdate 63 | # v0.27 May 10 00:23:49 2002 use {}'s to write 1 line per public key instead of one line per signature (much shorter) 64 | # v0.28 Feb 13 2003 Change regex to handle option trust digit 65 | # 66 | # v0.29 Feb 18 2003 Add -s option to optionally produce statistics file 67 | # 68 | # v0.30 Feb 18 2003 Make --list-sigs regex more robust 69 | # Marco Bodrato 70 | # v0.31 Jul 28 2003 Add -u option for localized output of GnuPG 71 | # Marcus Frings 72 | # further changes are documented in debian/changelog 73 | 74 | use strict; 75 | 76 | my $version = "0.35"; 77 | 78 | my $chartchar = "*"; 79 | my $renderdate = ""; 80 | my ($stats, $color, $all, $not_found, $revokestr); 81 | 82 | use Getopt::Std; 83 | my %opt; 84 | getopts('d:u:r:s:bahqv', \%opt); 85 | 86 | sub version { 87 | print < 91 | EOT 92 | } 93 | 94 | if ($opt{h}) { 95 | version(); 96 | print < sigs.dot 98 | -a Graph all keys, even if they do not have a signature 99 | -b Black and white / do not colorize. 100 | -d YYYY-MM-DD Render graph as it appeared on date. 101 | -h Print this help and exit. 102 | -q Be quiet. 103 | -r sting key-is-revoked string (default: "[revoked"). 104 | -s stats.html Produces statistics file with number of signatures per node. 105 | -u string user-id-not-found string (default: "[user id not found]"). 106 | -v Print version and exit. 107 | EOT 108 | exit 0; 109 | } 110 | if ($opt{v}) { 111 | version(); 112 | exit 0; 113 | } 114 | 115 | if ($opt{d}) { 116 | $renderdate = $opt{d}; 117 | print STDERR "Printing from date: $renderdate.\n"; 118 | $renderdate =~ s/\D+//g; 119 | } 120 | if ($opt{s}) { 121 | $stats = $opt{s}; 122 | print STDERR "Print statistics to $stats.\n"; 123 | } 124 | if ($opt{b}) 125 | { 126 | $color = 0; 127 | print STDERR "Black and White.\n" unless $opt{q}; 128 | } else { 129 | $color = 1; 130 | print STDERR "Color.\n" unless $opt{q}; 131 | } 132 | if ($opt{a}) { 133 | $all = 1; 134 | } else { 135 | $all = 0; 136 | } 137 | 138 | if ($opt{u}) { 139 | $not_found = lc $opt{u}; 140 | } else { 141 | $not_found = "[user id not found]"; # this changed from gpg 1.2 -> 1.4 142 | } 143 | 144 | if ($opt{r}) { 145 | $revokestr = lc $opt{r}; 146 | } else { 147 | $revokestr = "[revoked"; # this changed from gpg 1.2 -> 1.4 148 | } 149 | 150 | my ($owner, %name, %revlist, %sigstmp, %signedbytmp, @names, %revs); 151 | 152 | while (my $line = <>) 153 | { 154 | chomp $line; 155 | 156 | # gpg 1.2 157 | #pub 1024D/807CAC25 2003-08-01 Michael Ablassmeier (abi) 158 | #sig B3B2A12C 2004-01-28 [User id not found] 159 | #sig 3 9456ADE2 2004-02-07 Michael Schiansky 160 | # gpg 1.4: 161 | #pub 1024D/807CAC25 2003-08-01 162 | #uid Michael Ablassmeier (abi) 163 | #sig B3B2A12C 2004-01-28 [User ID not found] 164 | #sig 3 9456ADE2 2004-02-07 Michael Schiansky 165 | 166 | # type id date name 167 | if ($line =~ m#([\w]+)[ !\?][ \dLNPRX]{0,8} +([^ ]+) +([^ ]+)(?: +"?([^<"]*))?#) 168 | # differences: 169 | # " " -> "[ !\?]" (to use 'gpg --check-sigs|sig2dot.mio|springgraph|display') 170 | # "[ \d]" -> "[ \dLRXP]" (signature attributes) 171 | # "[^<]+" -> "[^<]*" (to recognise "pub" lines whitout a name) 172 | # if ($line =~ m#([\w]+) [ \d]? +([^ ]+) +([^ ]+) +([^<]+)#) 173 | # if ($line =~ m#([\w]+) +([^ ]+) +([^ ]+) +([^<]+)#) 174 | 175 | { 176 | my $type = $1; 177 | my $id = $2; 178 | my $date = $3; 179 | my $name = $4 || ""; 180 | 181 | $date =~ tr/-//d; 182 | if ($type eq "pub" or $renderdate eq "" or $date <= $renderdate) 183 | { 184 | print STDERR "Using: $line\n" unless $opt{q}; 185 | # strip trailing whitespace more cleanly: 186 | $name =~ s/\s+$//g; 187 | 188 | #Remove re: http://bugs.debian.org/202484 189 | #$name =~ s/[^a-zA-Z \.0-9]/_/g; # handle non-7bit names 190 | 191 | if ($type eq "pub") 192 | { 193 | $id = (split('/',$id))[1]; 194 | $owner = $id; 195 | } 196 | 197 | # remove comment field 198 | $name{$id} = (split ' \(', $name)[0] if $name; # gpg 1.4 fixup 199 | 200 | # skip revoked keys 201 | if (index($name, $revokestr) >= 0) { 202 | $revlist{$id} = 1; 203 | next; 204 | } 205 | 206 | if ($type eq "uid") { 207 | $name{$owner} = $id; # gpg 1.4 fixup 208 | } 209 | 210 | # unless (defined @{$sigs{$owner}}) 211 | # { 212 | # @{$sigs{$owner}} = (); 213 | # } 214 | if ($type eq "sig" and lc $name ne $not_found) 215 | { 216 | if ($id ne $owner) { 217 | push (@{$sigstmp{$owner}},$id); 218 | push (@{$signedbytmp{$id}},$owner); 219 | } 220 | if ($all or $id ne $owner) { 221 | push (@names,$id,$owner); 222 | } 223 | } 224 | if ($type eq "rev" and lc $name ne $not_found) 225 | { 226 | if ($id ne $owner) { 227 | push (@{$revs{$owner}},$id); 228 | #push (@{$revokedby{$id}},$owner); 229 | } 230 | } 231 | } else { 232 | print STDERR "Skipping due to date: $line\n"; 233 | } 234 | } else { 235 | print STDERR "Skipping due to regex: $line\n" if $line ne ""; 236 | } 237 | } 238 | 239 | my (%sigs, %signedby); 240 | 241 | for my $id (sort {$sigstmp{$a} <=> $sigstmp{$b}} keys %sigstmp) { 242 | next if (defined $revlist{$id}); 243 | foreach my $owner (@{$signedbytmp{$id}}) { 244 | next if (defined $revlist{$owner}); 245 | my $revoke = 0; 246 | foreach my $revid (@{$revs{$owner}}) { 247 | if ($revid eq $id) { 248 | $revoke = 1; 249 | } 250 | } 251 | #$res = $revlist{$id}; 252 | if (($revoke == 0)) { 253 | push (@{$sigs{$owner}},$id); 254 | push (@{$signedby{$id}},$owner); 255 | } 256 | } 257 | } 258 | 259 | print "digraph \"debian-keyring\" {\noverlap=scale\nsplines=true\nsep=.1\n"; 260 | 261 | my %saw; 262 | @saw{@names} = (); 263 | @names = keys %saw; 264 | undef %saw; 265 | 266 | my $maxsigcount = 0; 267 | my (%sigcount); 268 | 269 | for my $owner (sort {$sigs{$a} <=> $sigs{$b}} keys %sigs) 270 | { 271 | undef %saw; 272 | @saw{@{$sigs{$owner}}} = (); 273 | @{$sigs{$owner}} = keys %saw; 274 | undef %saw; 275 | undef %saw; 276 | $signedby{$owner} ||= []; 277 | @saw{@{$signedby{$owner}}} = (); 278 | @{$signedby{$owner}} = keys %saw; 279 | undef %saw; 280 | 281 | $sigcount{$owner} = scalar(@{$sigs{$owner}}); 282 | if ($sigcount{$owner} > $maxsigcount) 283 | { 284 | $maxsigcount = $sigcount{$owner}; 285 | } 286 | } 287 | 288 | my %signedbycount; 289 | my ($maxsignedbycount, $maxratio) = (0, 0); 290 | 291 | for my $owner (sort {$signedby{$a} <=> $signedby{$b}} keys %signedby) 292 | { 293 | $signedbycount{$owner} = scalar(@{$signedby{$owner}}); 294 | if ($signedbycount{$owner} > $maxsignedbycount) 295 | { 296 | $maxsignedbycount = $signedbycount{$owner}; 297 | } 298 | if ($sigcount{$owner} and $sigcount{$owner} > 0) { 299 | if ($signedbycount{$owner} / $sigcount{$owner} > $maxratio) 300 | { 301 | $maxratio = $signedbycount{$owner} / $sigcount{$owner}; 302 | } 303 | } 304 | } 305 | print "//$maxratio\n"; 306 | 307 | if ($stats) { 308 | open (STATS,">$stats"); 309 | print STATS "\nKeyring Statistics\n"; 310 | 311 | for my $owner (sort {$sigcount{$b} <=> $sigcount{$a}} keys %sigs) 312 | { 313 | print STATS "
$name{$owner}$sigcount{$owner}\"".\n"; 314 | } 315 | 316 | print STATS "
\n"; 317 | close STATS; 318 | } 319 | 320 | print "node [style=filled]\n"; 321 | for my $id (@names) 322 | { 323 | if ((not exists $sigcount{$id}) and (not exists $signedbycount{$id}) and not $all) { 324 | next; 325 | } 326 | if ($color) 327 | { 328 | my ($red, $green, $blue) = (0, 1/3, 1/3); 329 | if ($sigcount{$id}) { 330 | $red = $sigcount{$id} / $maxsigcount; 331 | } 332 | if ($sigcount{$id} && $maxratio != 0) 333 | { 334 | $green = ($signedbycount{$id} / $sigcount{$id} / $maxratio * .75) * 2/3 + 1/3; 335 | } 336 | if ($signedbycount{$id} and $maxsignedbycount != 0) { 337 | $blue = ($signedbycount{$id} / $maxsignedbycount) * 2/3 + 1/3; 338 | } 339 | 340 | my ($hue,$saturation,$value) = rgb2hsv($red,$green,$blue); 341 | printf "//%d %d $red,$green,$blue\n", $sigcount{$id} || 0, $signedbycount{$id} || 0; 342 | print "\"$id\" [fillcolor=\"$hue,$saturation,$value\",label=\"$name{$id}\"]\n"; 343 | } else { 344 | print "\"$id\" [label=\"$name{$id}\"]\n"; 345 | } 346 | } 347 | #print "node [style=solid]\n"; 348 | 349 | for my $owner (sort keys %sigs) 350 | { 351 | print "{ "; 352 | for my $id (@{$sigs{$owner}}) 353 | { 354 | print "\"$id\" "; 355 | } 356 | print "} -> \"$owner\"\n"; 357 | } 358 | 359 | print "}\n"; 360 | 361 | # Converts rgb to hsv. All numbers are within range 0 to 1 362 | # from http://twiki.org/cgi-bin/view/Codev/WebMap 363 | sub rgb2hsv { 364 | my ($r, $g ,$b) = @_; 365 | my $max = maxof($r, maxof($g, $b)); 366 | my $min = minof($r, minof($g, $b)); 367 | my $v = $max; 368 | my ($s, $h); 369 | 370 | if ($max > 0.0) { 371 | $s = ($max - $min) / $max; 372 | } else { 373 | $s = 0; 374 | } 375 | if ($s > 0.0) { 376 | my ($rc, $gc, $bc, $diff); 377 | $diff = $max - $min; 378 | $rc = ($max - $r) / $diff; 379 | $gc = ($max - $g) / $diff; 380 | $bc = ($max - $b) / $diff; 381 | if ($r == $max) { 382 | $h = ($bc - $gc) / 6.0; 383 | } elsif ($g == $max) { 384 | $h = (2.0 + $rc - $bc) / 6.0; 385 | } else { 386 | $h = (4.0 + $gc - $rc) / 6.0; 387 | } 388 | } else { 389 | $h = 0.0; 390 | } 391 | if ($h < 0.0) { 392 | $h += 1.0; 393 | } 394 | return ($h, $s, $v); 395 | } 396 | sub maxof { 397 | my ($a, $b) = @_; 398 | 399 | return $a>$b?$a:$b; 400 | } 401 | sub minof { 402 | my ($a, $b) = @_; 403 | 404 | return $a<$b?$a:$b; 405 | } 406 | 407 | # vim:sw=2: 408 | -------------------------------------------------------------------------------- /students/soomin-kim.md: -------------------------------------------------------------------------------- 1 | - Name: Soomin Kim 2 | - ID : soomin-kim 3 | - Key : [soomin-kim.pub](soomin-kim.pub) 4 | -------------------------------------------------------------------------------- /students/soomin-kim.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQENBFjFU5MBCADTDs5Bya0ndmYsOSzbMUIBrvX5FWMawD0udEaefLWM7d3nPXHa 5 | res3AuWSklRio5l2n0CePrF/FBaMPq88S+7EguCKH9QWjeL1se4vmAPNDkAJSHAT 6 | W8PqkIZPwzvdyziVzikdagzuuVH4xuj/hbS4rQcmoovbJUrS2HZE1I3G1Nhatjse 7 | 8WEwratCYLkZR/JLAyQFtmPS5GPVMi427uCAkLHY2YAdL8+fwtZyXeK/pecs4TFa 8 | yGMT0ruMIQveFLeMmFGD86Sf98ywzBx5kzGyHW8cUcMxv2wnofkNfc15/CkDHP01 9 | xR5L/jXja4xtwck1OJqf6qTjZcnIhIhZMp3jABEBAAG0IFNvb21pbiBLaW0gPHNv 10 | b21pbmtAa2Fpc3QuYWMua3I+iQE+BBMBAgAoBQJYxVOTAhsDBQkB4TOABgsJCAcD 11 | AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAx6tvcd6zOuAjQB/0aBHYFF3pY2b8zvzJy 12 | tssKKA+KV+kigt6Pcj2l8BfIW1NPc1OU46buiq63c6n3OnrxHTXXDoliWmETKuhj 13 | jjPwVkPLH782QGdL81o8HeRQpgMW2q416/4Lvhp2zfTcMiOEIE3UFRYrRNnT7zDB 14 | o0PUGiBoDJShmEBT+vvAiyTsbqhRgIF725RauXwQNWuGGLy5uy6Fpvd6TQ792AHE 15 | pqG2udoM7Qy3xqbUxIOaVyx3OX4dxiOmT9Enm1Xpr44kHMK9jluOY+JH/hG5AI0l 16 | W0hCfrx4iiF1TrLptlNV7/oOGhtsvaI5tXktbo463lir0ZUggYNuFFxUL/B3RnMT 17 | 4FbruQENBFjFU5MBCADSBqmOFEY6gn58iKjL3fxPS7vEegQ+AGFCXEgImYR2prLO 18 | oG0Ym1/yM410rmMCAcpblUB39Yxv5hoAPvaK6m6WToUJAoIUqarL45u4KngI5AoC 19 | w7IyvhZtMxKmfTPPaD0/mQlnH3MUj1jwI4DHewE0yZhTZsPegepF2rye2et5m9Xj 20 | g7RtViWdeoYaRgQkuAQqEf+dyBqiGmFMpp7P5kjuTeDHR8R10kEfGIyIrEeL8B93 21 | LRDsIWautqHAOuyhB7yjipMEy1jcNphikCsYS0t9uAU1rgotHPhO+nuo206wyP99 22 | dQCpfJdC9vrRKneSX3n+flv+/4+HsfNMMVWW32FlABEBAAGJASUEGAECAA8FAljF 23 | U5MCGwwFCQHhM4AACgkQMerb3HeszrgQ/Af9GMg2B1BK5adoi1NMcTC0ErXeMqBz 24 | IaoV/3D5U6IpR2RYo+s/ks7QeuY/+ccZV5LIEqWtQl0DRBO9/fwRaIPbaYLEJfi/ 25 | QyF+v/Wsh/6TClnFj6UKy59YVv1XO9LrcwcpSKDSIlWArqnzCDzd32JQAqEb455c 26 | AG3POpjGjGIGMqDnLZD86lSDFd5gQZcyrKL6q4I1FrjbsbIqf4UHpsKJ36me744E 27 | xnRN+f29JFFH/Xf53XzQiQyM6+kiA5/ADQqW0426AhqId4UDTsKYHtUai2t7QxV6 28 | ADkHLfh83wiWH/yA9OHiouJRKxwRuNqHZOaW/86duuaAZ10iqOi7lZ1iPg== 29 | =jC/O 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /teams/README.md: -------------------------------------------------------------------------------- 1 | # Teams 2 | 3 | Put :crown:(```:crown:```) to the right of each team leader's id. 4 | 5 | ### Team 1 6 | - ian0371 7 | - asdfljh 8 | - jmpark81 9 | - ggoboogy 10 | - james010kim :crown: 11 | 12 | ### Team 2 13 | - dinggul :crown: 14 | - SungbumAhn 15 | - mfaerevaag 16 | - nohkwak 17 | - mickan921 18 | 19 | ### Team 3 20 | - Hyeongcheol-An :crown: 21 | - seongil-wi 22 | - lbh0307 23 | - pr0v3rbs 24 | - jhong3842 25 | 26 | ### Team 4 27 | - jaemoon-sim 28 | - jcassou 29 | - seungwonwoo :crown: 30 | - KAISTGUN 31 | - juanaevv 32 | 33 | ### Team 5 34 | - bjgwak 35 | - JeongOhKye :crown: 36 | - blukat29 37 | - alinghi 38 | - donghwan17 39 | - mikkang 40 | -------------------------------------------------------------------------------- /teams/engineering.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage[svgnames,x11names]{xcolor} 5 | \usepackage{hyperref} 6 | \hypersetup{ 7 | breaklinks, 8 | colorlinks, 9 | linkcolor={blue!50!black}, 10 | citecolor={blue!50!black}, 11 | urlcolor={blue!50!black} 12 | } 13 | \usepackage{amsthm} 14 | \usepackage[numbers,sort&compress]{natbib} 15 | \usepackage{listings} 16 | \usepackage{xspace} 17 | 18 | \newcommand*{\Modone}{Bank\xspace}% 19 | \newcommand*{\modone}{bank\xspace}% 20 | \newcommand*{\Modtwo}{Shopping Mall\xspace}% 21 | \newcommand*{\modtwo}{shopping mall\xspace}% 22 | \newcommand*{\Modthree}{Network Operator\xspace}% 23 | \newcommand*{\modthree}{network operator\xspace}% 24 | \newcommand*{\Modfour}{Notary\xspace}% 25 | \newcommand*{\modfour}{notary\xspace}% 26 | \newcommand*{\Modfive}{Government\xspace}% 27 | \newcommand*{\modfive}{government\xspace}% 28 | 29 | \theoremstyle{definition} 30 | \newtheorem{exercise}{Exercise} 31 | 32 | \begin{document} 33 | %%% Header starts 34 | \noindent{\large\textbf{IS-521 Activity}\hfill 35 | \textbf{Team-based Software Engineering} \\ 36 | {\phantom{} \hfill Due Date: May 24, 2017 (before midnight)} \\ 37 | %%% Header ends 38 | 39 | \section{Activity Overview} 40 | 41 | This is a team-based engineering activity. There are 6 teams in total 42 | (5 teams for students and 1 team for TAs), and each team has one 43 | public repository. Every repository will be in public, so we recommend 44 | everyone to submit Pull Requests (PRs) to other teams. 45 | 46 | \subsection{General Rule} 47 | 48 | \begin{enumerate} 49 | 50 | \item \textbf{Email is not allowed}. Use GitHub to discuss: create 51 | an issue if needed, and send PRs to the repositories. 52 | 53 | \item Each team should set \textbf{milestones} on GitHub. Read the 54 | article if you are not sure how to use milestones on 55 | GitHub~\cite{githubissue}. 56 | 57 | \item Make documents everywhere in markdown, e.g., README.md. 58 | 59 | \item There should be a top-level makefile that builds and installs 60 | everything. For example, anyone should be able to configure your 61 | module in a fresh new VM, provided in this course, by invoking 62 | only the following command: 63 | \begin{verbatim}git clone && cd && make\end{verbatim} 64 | 65 | \item Every team needs to provide a set of test cases for SLA (see 66 | \S\ref{ss:sla}). 67 | 68 | \end{enumerate} 69 | 70 | \subsection{Coding Guideline} 71 | 72 | We will give you enough freedom, but please follow the three things: 73 | \begin{enumerate} 74 | 75 | \item Use maximum 80 characters per line. 76 | \item Do not use TAB. Use space chars instead. 77 | \item Extensively comment your code. 78 | 79 | \end{enumerate} 80 | 81 | \subsection{Issue / Pull Request (PR) Guideline} 82 | 83 | Every student can submit PRs or issues to other teams, but the title 84 | of your PR should follow the guideline: 85 | % 86 | \begin{enumerate} 87 | % 88 | \item If you are creating a PR for your own team, you can use any 89 | title you want. 90 | % 91 | \item If you are creating a PR to another team, you should indicate 92 | in the title that you are from another team by adding a prefix: 93 | ``[CROSS-TEAM]''. 94 | % 95 | \end{enumerate} 96 | % 97 | Notice that we will \textbf{\emph{NOT}} give you extra points if you do not 98 | follow the above guideline. 99 | 100 | \subsection{About Grading} 101 | 102 | In this activity, every member in a team will get the same score, but 103 | you can get individual extra points by submitting pull requests (or 104 | issues). Not every PR will result in extra points though. Course 105 | staffs will carefully examine the quality of your PRs to decide 106 | whether to give extra points. 107 | 108 | There are two major things we expect from this activity. First, we 109 | will see how team members make use of GitHub features such as issues, 110 | pull requests, and milestones. Second, we will also see if each team 111 | has good team work. For example, we may ask the following questions. 112 | Is the work load distributed well to each team member? Do people 113 | communicate often through GitHub? 114 | 115 | \subsection{Test Cases for Service Level Availability (SLA)} 116 | \label{ss:sla} 117 | 118 | In the final CTF event of this course, we will employ an SLA checker 119 | that periodically checks if every service is operating normally. This 120 | means that you cannot simply shutdown your services to defend against 121 | all possible attacks. When our SLA checker detects that one of your 122 | service is down, we will deduct your points during the CTF event. 123 | 124 | In this activity, you need to provide a set of test cases for each 125 | program you developed. When we execute the service with the test cases 126 | you provided, we should be able to cover most of the logic in your 127 | code. In other words, we expect to achieve high \emph{code coverage}. 128 | We recommend you to measure the code coverage with a tool such as 129 | gcov~\cite{gcov} and coverage.py~\cite{pycov}, although this is not a 130 | strong requirement. 131 | 132 | Each test case in this activity is an executable program (or a script) 133 | that can be executed by simply invoking: 134 | \begin{verbatim} 135 | ./progname 136 | \end{verbatim} 137 | The program takes in two command line arguments: the target IP and the 138 | port number. When executed, the program will connect to the target 139 | address and check if the target service is operating normally. If so, 140 | the program terminates with an exit code of 0. Otherwise, the program 141 | terminates with an exit code of 1. When the program cannot even 142 | establish a connection to the target address, it returns an exit code 143 | of 2. 144 | 145 | Team-3 is responsible for building a library for SLA checking. 146 | Therefore, each team should frequently check the repository of Team-3 147 | and give feedback to them. See \S\ref{ss:modthree} to see the details 148 | about their tasks. Teams who are building a web app should not rely on 149 | the team-3's library: you should provide your own SLA using 150 | \texttt{libcurl} or similar. 151 | 152 | \subsection{Flag Updater} \label{ss:flagupdater} 153 | 154 | Every team should develop their own flag updater program in this 155 | activity. The main reason why we need a flag updater is to dynamically 156 | change your flags during the CTF event. A flag updater runs as a 157 | daemon listening on port 42. It expects to get a JSON~\cite{json} 158 | message from the connected client. 159 | 160 | Figure~\ref{fig:flagupdater} describes the message format. There are 161 | three data fields: the ``signer'' field is a GitHub ID of the signer, 162 | the ``newflag'' field is a new string to be updated for the flag, and 163 | the ``signature'' field indicates a base64-encoded PGP signature. We 164 | generate the signature as follows. We first concatenate the GitHub ID 165 | of the signer with a colon `:' and the new flag. Thus, we get the 166 | following string: \texttt{GitHubID:1234567890ABCDEF}. Next we sign the 167 | concatenated string with the signer's private key. Finally, we 168 | base64-encode the signature. 169 | 170 | N.B. We will encrypt every message with the corresponding team's 171 | public key\footnotemark[1]. 172 | 173 | Your flag updater is application-specific, meaning that you should 174 | implement your own flag updater because the way you update your flag 175 | depends on your application. 176 | 177 | \begin{figure}[t] 178 | \begin{lstlisting}[basicstyle=\ttfamily] 179 | { 180 | "signer" : "TA's ID", 181 | "newflag": "1234567890ABCDEF", 182 | "signature" : "" 183 | } 184 | \end{lstlisting} 185 | \caption{An example of a flag updater message (before encryption).} 186 | \label{fig:flagupdater} 187 | \end{figure} 188 | 189 | \subsection{Authentication} \label{ss:auth} 190 | 191 | Since we have everyone's PGP public key, we will use a simple PGP-key 192 | based authentication in this activity. First, a server asks your 193 | github ID. When a user provides their ID, the server creates a large 194 | random number. The server should PGP sign and encrypt the number with 195 | its private key, and the user's public key\footnote{ 196 | % 197 | You can use one of the team member's key, or you can simply create a 198 | new PGP key pair for the service. 199 | % 200 | }. Then the server sends the encrypted data , and the user decrypts it 201 | with her/his private key to get the original random number. The user 202 | now encrypts the random number with the server's public key and send 203 | the encrypted message back to the server. Server can verify whether 204 | this user has successfully decrypted the message. 205 | 206 | Throughout this document, whenever we say that you have to implement 207 | an authentication system, it means you have to implement this 208 | PGP-based authentication. 209 | 210 | \section{Design} 211 | 212 | We build a networked system in this activity. The system has 5 major 213 | modules: (1) \modone, (2) \modtwo, (3) \modthree, (4) \modfour, and 214 | (5) \modfive. You can assume that every module runs in a separate VM. 215 | Each module is connected to each other within a network. Each team is 216 | responsible for building each different module: 217 | 218 | \begin{center} 219 | \begin{tabular}{ll} 220 | Team 1 & \Modone \\ 221 | Team 2 & \Modtwo \\ 222 | Team 3 & \Modthree \\ 223 | Team 4 & \Modfour \\ 224 | Team 5 & \Modfive \\ 225 | \end{tabular} 226 | \end{center} 227 | 228 | \subsection{\Modone (Team-1)} \label{ss:modone} 229 | 230 | Your goal here is to build a virtual banking system. The system 231 | process runs at port 1588. When a client connect to this port, it 232 | displays a menu that shows two options: register a new user or login. 233 | In registration menu, the client should first authenticate him or her 234 | with PGP key, as described in (\S\ref{ss:auth}). When the identity is 235 | authenticated, the client can send a username and a password to create 236 | a new user account. After the client successfully logins to the 237 | system, it shows the following menus. 238 | 239 | \begin{enumerate} 240 | \item Check balance 241 | \item Check transaction history 242 | \item Transfer 243 | \item Edit user info (this menu includes editing the detailed user 244 | information as well as removing the user account) 245 | \end{enumerate} 246 | 247 | You should make use of a relational database such as MySQL to store 248 | all the necessary information for your system. We expect you to design 249 | a schema for your database. When you design a schema, you should first 250 | consider all possible data types that you have to handle. You should 251 | try to be as realistic as possible. For example, you need to log every 252 | transaction along with time stamp in order to implement the second 253 | menu. You also need to gather information about your clients such as 254 | email address, cellphone number, etc. 255 | % 256 | In case you are not familiar with database design, refer to the 257 | following materials: \cite{dbdesign} and \cite{dbtutorial}. 258 | 259 | We assume that every student, but not every account, initially has 260 | 1,000 won. This means, when you first create your account with your 261 | identity, you will be automatically given 1,000 won. Later on, 262 | however, you should not get any more money even though you create a 263 | new account after removing an existing one. 264 | 265 | Finally, you need to implement a flag updater (see 266 | \S\ref{ss:flagupdater}). Your flag updater gets a JSON message, 267 | verifies the signature of the message, and updates the email address 268 | field of ``admin'' with the given flag string. 269 | 270 | To summarize: 271 | \begin{enumerate} 272 | 273 | \item Implement the \texttt{bank} program, which presents a 274 | text-based interface for banking operations. 275 | 276 | \item Design a realistic database schema for your system. 277 | 278 | \item Implement a PGP-based authentication (\S\ref{ss:auth}). 279 | 280 | \item Implement a flag updater. 281 | 282 | \item Write the document about all the menus in your banking system 283 | in \texttt{README.md}. 284 | 285 | \item Write test cases (SLA checkers) for your bank. 286 | 287 | \end{enumerate} 288 | 289 | \subsection{\Modtwo (Team-2)} 290 | 291 | Your task is mainly twofold: (1) implement a web-based online shopping 292 | mall, and (2) implement a flag updater for this module. 293 | 294 | You have to design and implement an online shopping mall. Since this 295 | is a web-based service, it runs on port 80 with HTTP protocol. It 296 | should provide at least the following menus: (1) ``list'' menu shows a 297 | list of items, (2) ``search'' menu allows a user to find an item, (3) 298 | ``shopping cart'', (4) ``view order'' menu allows a user to see the 299 | purchased item, (5) ``message'' menu allows a user to send a message 300 | to the admin, and (6) ``my page'' menu allows a user to see the 301 | personal information. You have to design your own database schema for 302 | this web application. Please refer to \S\ref{ss:modone} to see some 303 | advice and useful links about designing your database. 304 | 305 | In your system, each user should use the PGP-based authentication 306 | mechanism described in \S\ref{ss:auth}. 307 | 308 | There should be a detailed view page for each item. There should be a 309 | button on that page to buy the item, and another button to add the 310 | item to shopping cart. When you click the shopping cart menu, you 311 | should be able to see the list of added items on your shopping cart. 312 | 313 | In order to buy an item, a client should pay money via banking 314 | transaction. In specific, first the client should enter which account 315 | he or she will use to transfer money. Then you, as an admin, should 316 | create a temporary account on the bank (\S\ref{ss:modone}) with your 317 | own identity, and inform this temporary account to the user. Now you 318 | wait for one minute, expecting money transfer from the user's bank 319 | account previously entered. While the system is waiting for bank 320 | transaction, this order should appear as ``pending'' in ``view order'' 321 | menu. When you got correct amount of money transferred to your 322 | temporary account, you should delete the account (yes you just throw 323 | away the money for simplicity), and set the order status to be 324 | ``complete''. If the one minute timeout expires or the amount of money 325 | transferred is not enough, you simply cancel the order and delete the 326 | temporary account. Also, this order should not appear anymore in the 327 | ``view order'' menu. 328 | 329 | For the ``message'' menu, the messages to admin will be stored in 330 | your database. And you will see all of the messages in the ``my 331 | page'' menu when you sign in. 332 | 333 | You can put any kinds of products on your web page, but there should 334 | be a special item called ``CTF Flag''. This item has unlimited supply: 335 | people can buy as many as they want. The price of the item must be 336 | 1,000,000,000 won, so normal clients would not be able to buy it. If a 337 | client purchased this item, then the client should be able to see the 338 | content of the item from the ``view order'' menu. Of course the client 339 | cannot see the contents while the order status is ``pending''. When 340 | the order status becomes ``complete'', a ``view'' button should appear 341 | right next to the ordering status. When a client clicks the ``view'' 342 | button to see the contents, the web application should read a file 343 | located at \texttt{/var/ctf/shoppingmall.flag}, and display the flag. 344 | 345 | Finally, you need to implement a flag updater (see 346 | \S\ref{ss:flagupdater}). Your flag updater gets a JSON message, 347 | verifies the signature of the message, and updates content of the file 348 | located at \texttt{/var/ctf/shoppingmall.flag}. 349 | 350 | Note that since the shopping mall module will be communicating with 351 | bank system (\S\ref{ss:modone}), you should be aware of the bank 352 | system's detailed implementation. Therefore, Team-2 should frequently 353 | check the repository of Team-1. Or, the two teams can agree upon a 354 | specific protocol in advance (e.g. which string will be used by the 355 | bank system to display the menus), and follow it during the 356 | implementation. 357 | 358 | To summarize: 359 | \begin{enumerate} 360 | 361 | \item Implement an online shopping mall web application. 362 | 363 | \item Design a realistic database schema for your system. 364 | 365 | \item Put more than 10 items to make it look nice. One of the items 366 | should be a ``CTF Flag'', and the price of it should be 367 | 1,000,000,000 won. When the item is purchased, a client can see 368 | the content of the flag. 369 | 370 | \item Implement flag updater. 371 | 372 | \item Write the document about all the menus in your shopping mall 373 | system in \texttt{README.md}. 374 | 375 | \item Write test cases (SLA checkers) for your web app. 376 | \end{enumerate} 377 | 378 | \subsection{\Modthree (Team-3)} \label{ss:modthree} 379 | 380 | There are three main tasks here: (1) building a library for SLA, (2) 381 | building a SLA logger, and (3) implement a web app that visualizes an 382 | SLA log. 383 | 384 | First, you need to build an SLA checker library in C. Recall from 385 | \S\ref{ss:sla}, SLA checker is a program that takes as input a target 386 | address and a port number, and outputs an exit code of 0, 1, or 2 387 | depending on the service availability. The library needs to provide at 388 | least the following functionalities. 389 | 390 | \begin{enumerate} 391 | % 392 | \item \texttt{int openTCPSock(char *IP, unsigned short port)}\\ 393 | This function returns a TCP socket handle that can be used to 394 | communicate with the service running in the provided IP and port 395 | number. The function should return a negative value to indicate an 396 | error. It would be desirable to return different negative value 397 | for different error, to provide useful information to the library 398 | user. Describe the specification of this return value in your 399 | \texttt{README.md} file. 400 | % 401 | \item \texttt{int openUDPSock(char *IP, unsigned short port)}\\ 402 | This function is the same as \texttt{openTCPSock} except that it 403 | opens a UDP socket. 404 | % 405 | \item \texttt{void closeSock(int sock)}\\ 406 | This function closes the given socket handle. 407 | % 408 | \item \texttt{ssize\_t recvMsgUntil(int sock, const char* regex, 409 | void* buf, size\_t n)}\\ 410 | This function reads in maximum \texttt{n} bytes from the given 411 | socket. The received data is stored into a buffer pointed by 412 | \texttt{buf}. The function must return as soon as the data 413 | received so far matches the provided regular expression 414 | \texttt{regex}. The return value is the length of data received at 415 | the point of return. If an error occurred while receiving the 416 | data, return a negative integer value. Likewise, describe the 417 | return value's specification in \texttt{README.md} file. 418 | % 419 | \item \texttt{int sendMsg(int sock, const char* buf, size\_t n)}\\ 420 | This function sends a string to the connected socket. It returns a 421 | negative value when there is an error. You should document its 422 | specification in \texttt{README.md} file. 423 | % 424 | \item \texttt{int handshake(int sock, const char* ID, const char* 425 | privKeyPath, const char* passPath, const char* successMsg)}\\ 426 | This function performs PGP-based authentication described in 427 | \S\ref{ss:auth}. \texttt{ID} is the Github ID of the client. 428 | \texttt{privKeyPath} is a path to PGP private key file, and 429 | \texttt{passPath} is a path of the passphrase file for the private 430 | key. \texttt{successMsg} is the expected string from server if the 431 | authentication succeeded. Decide the return value for each 432 | possible situation, and document it in \texttt{README.md} file. 433 | % 434 | \end{enumerate} 435 | 436 | You also need to write a test case (a program) for testing a DNS 437 | server using your library. Imagine there is a DNS server in your own 438 | private network. Your goal is to check whether the DNS server is 439 | working or not. Your program should read in "./expect.csv" file which 440 | consists of two columns: the first column is a domain name to query 441 | (e.g. "bank.com"), and the second column is the IP expected as 442 | response (e.g. "10.0.0.1"). You can send a raw DNS packet to the 443 | server and parse the returned message. Write your test case and run it 444 | with your SLA checker to see if it works. 445 | 446 | Another thing to implement is a logger that periodically spawns a 447 | series of test cases provided by the user, and record the availability 448 | of a set of target services. The log is in a CSV 449 | format~\cite{csvwiki}. There are four columns in total in the log: (1) 450 | UNIX timestamp, (2) target IP address, (3) target port address, (4) 451 | status. The status field is represented with either ``up'' or 452 | ``down''. The usage of the logger should be: 453 | % 454 | \begin{verbatim} 455 | ./logger [ip addr] [port] [dir containing test cases] [logfile] 456 | \end{verbatim} 457 | % 458 | The third argument of the logger is a path to a directory that 459 | contains a list of test cases. The fourth argument is a path to the 460 | output log file. The logger uses a \texttt{seccomp} filter to sandbox 461 | the execution environment. You have to set your criteria, and make a 462 | document in your \texttt{README.md} file. Type \texttt{man seccomp} 463 | for more information. 464 | 465 | You also need to provide a web interface that shows a line graph where 466 | X-axis is time, and Y-axis is the availability of a service. The web 467 | application takes in a log file as input from a user, and shows the 468 | corresponding line graph. Each service corresponds to a line in the 469 | graph. This page should be only usable to its team members. To 470 | authenticate the identity of the team members, implement a PGP-based 471 | authentication described in \S\ref{ss:auth}. 472 | 473 | Finally, you need to implement a flag updater (see 474 | \S\ref{ss:flagupdater}). Your flag updater gets a JSON message, 475 | verifies the signature of the message, and updates content of the file 476 | located at \texttt{/var/ctf/sla.flag}. 477 | 478 | To summarize: 479 | \begin{enumerate} 480 | 481 | \item Implement SLA checker library. 482 | 483 | \item Implement SLA logger (with seccomp). 484 | 485 | \item Implement a web-based log visualizer. 486 | 487 | \item Implement flag updater. 488 | 489 | \item Write test cases (SLA checkers) for a DNS server and your log 490 | visualizer service. 491 | 492 | \item Write the document about your design and implementation in 493 | \texttt{README.md}. 494 | 495 | \end{enumerate} 496 | 497 | \subsection{\Modfour (Team-4)} \label{ss:notary} 498 | 499 | Your goal is twofold here: (1) build a notary program, and (2) build a 500 | launcher program that only executes a signed program by the notary. 501 | 502 | Notary runs at port 8000. It simply takes in a file as input from a 503 | client, and returns the file along with a signature of the file. Of 504 | course, only an authenticated user should be able to get a signature 505 | from the notary. To check the authenticity, it uses PGP keys that we 506 | used in the class. In particular, the notary program takes in one 507 | command line argument: a path to a directory that contains PGP public 508 | keys. It only accepts files that are signed by an owner of the public 509 | keys. 510 | % 511 | The notary program should log all the events to one or more files in 512 | the directory: \texttt{/var/log/notary/}. 513 | 514 | We do not specify the output format in detail, but it should be in 515 | JSON, and you should detail the format in your document (README.md). 516 | 517 | The second program to write is a launcher, which takes in a certified 518 | program from the notary, and executes it only when the program is 519 | certified. Since this can be potentially vulnerable, you want to 520 | create a chrooted environment for executing the program. The launcher 521 | takes in a JSON-based request at port 8001, but it only accepts 522 | packets coming from a local network. The JSON has the following form: 523 | 524 | \begin{lstlisting} 525 | { 526 | "name": "name of the program", 527 | "body": "base64 encoded program executable" 528 | } 529 | \end{lstlisting} 530 | 531 | To only accept packets from the local network, the launcher takes in 532 | two command line arguments that specifies the range of allowed IPv4 533 | addresses. For example, if 10.0.0.1 and 10.0.0.10 are given as command 534 | line arguments, then it means we can only accept network packets from 535 | the IP addresses from 10.0.0.1 to 10.0.0.10. Your launcher should 536 | analyze the IP layer packets to check where the messages are coming 537 | from. 538 | 539 | Additionally, your launcher should perform a system call tracing using 540 | the ptrace system call. In particular, you want to prevent a program 541 | to spawn an \texttt{execve} system call, because it may spawn an 542 | unwanted shell to an attacker. 543 | 544 | Finally, you need to implement a flag updater (see 545 | \S\ref{ss:flagupdater}). Your flag updater gets a JSON message, 546 | verifies the signature of the message, and updates content of the file 547 | located at \texttt{/var/ctf/notary.flag}. 548 | 549 | To summarize: 550 | \begin{enumerate} 551 | 552 | \item Implement a notary program. 553 | 554 | \item Write your format specification for returning messages from 555 | the notary program. 556 | 557 | \item Implement a launcher program. 558 | 559 | \item Implement flag updater. 560 | 561 | \item Write test cases (SLA checkers) for your notary and launcher. 562 | 563 | \item Write the document about your design and implementation in 564 | \texttt{README.md}. 565 | 566 | \end{enumerate} 567 | 568 | \subsection{\Modfive (Team-5)} 569 | 570 | You need to design two things here: a web service, and a bot that 571 | automatically browses the web. 572 | 573 | Government is a virtual object. Government runs its own homepage at 574 | port 80. The homepage has several static web pages as well as dynamic 575 | web pages. Static web pages include some information about the 576 | government. Dynamic web pages are basically to host a web-based 577 | bulletin board. Anyone should be able to create a user account and 578 | write a message to the board. All the information including the user 579 | account information and messages should be written in a database. Do 580 | \emph{not} use existing solutions such as zeroboard for this project. 581 | In the bulletin board, we use the PGP-based login mechanism described 582 | in \S\ref{ss:auth}. 583 | 584 | A logged in user should be able to view a bulletin board, and there 585 | should be at least six operations in the bulletin board: (1) ``list'' 586 | operation shows a list of postings, (2) ``write'' operation writes a 587 | new posting to the board, (3) ``read'' operation reads the contents of 588 | a specific posting, (4) ``delete'' operation removes a specific 589 | posting from the board, (5) ``edit'' operation edits the contents of a 590 | specific posting from the board, and (6) ``authenticate'' operation 591 | enables a user to notarize with the notary service 592 | (\S\ref{ss:notary}). 593 | 594 | Notice that there are two types of users for the bulletin board: (1) 595 | normal user, and (2) notarized user. Normal users cannot write a post 596 | that contains Javascript, whereas notarized users can. To get 597 | notarized by the notary service, a user needs to supply a signed JSON 598 | file from the notary. The JSON file should contain the user's ID and 599 | the user's public key. You have to design a web interface that a valid 600 | user can get notarized after login. 601 | 602 | You also need to design and implement a browsing bot. This bot 603 | launches a real web browser such as firefox and chrome. It parses the 604 | currently loaded web page, and clicks links of your interest. We 605 | expect your bot to read \emph{every} posting from the bulletin board. 606 | You can write such an application using WebDriver~\cite{webdriver}. 607 | The web browser used by the bot should have a cookie originated from 608 | the web site specified in a configuration file. The configuration file 609 | should contain the URL of a valid web site. Please describe the 610 | configuration file's path and format in README.md. The cookie contains 611 | a record, which has the name ``flag'', and the value of this record is 612 | a 32-byte random ASCII string. 613 | 614 | Finally, you need to implement a flag updater (see 615 | \S\ref{ss:flagupdater}). Your flag updater gets a JSON message, 616 | verifies the signature of the message, and updates content of the 617 | cookie. Specifically, it modify the ``flag'' value of the cookie. 618 | 619 | To summarize: 620 | \begin{enumerate} 621 | 622 | \item Implement a bulletin board web application. 623 | 624 | \item Implement a government homepage that has a bulletin board. 625 | 626 | \item Implement a bot with WebDriver. 627 | 628 | \item Implement flag updater. 629 | 630 | \item Write test cases (SLA checkers) for your web app. 631 | 632 | \item Write the document about your design and implementation in 633 | \texttt{README.md}. 634 | 635 | \end{enumerate} 636 | 637 | \bibliography{references} 638 | \bibliographystyle{plainnat} 639 | 640 | \end{document} 641 | -------------------------------------------------------------------------------- /teams/figs/network.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KAIST-IS521/2017-Spring/8e8154d25875a1043762eb73146dca33581774a2/teams/figs/network.pdf -------------------------------------------------------------------------------- /teams/pubs/README.md: -------------------------------------------------------------------------------- 1 | PUT your team's public key 2 | -------------------------------------------------------------------------------- /teams/references.bib: -------------------------------------------------------------------------------- 1 | @misc{githubissue, 2 | author = "GitHub", 3 | title = "Mastering Issues", 4 | howpublished = "\url{https://guides.github.com/features/issues/}" 5 | } 6 | 7 | @misc{koreanartists, 8 | author = "Wikipedia", 9 | title = "List of South Korean actors", 10 | howpublished = "\url{https://en.wikipedia.org/wiki/List_of_South_Korean_actors}" 11 | } 12 | 13 | @misc{blacklistnews, 14 | author = "Reuters", 15 | title = "South Korean artists sue impeached Park over cultural blacklist", 16 | howpublished = "\url{http://www.reuters.com/article/us-southkorea-politics-artists-idUSKBN15O0JM}" 17 | } 18 | 19 | @misc{json, 20 | author = "Wikipedia", 21 | title = "JSON", 22 | howpublished = "\url{https://en.wikipedia.org/wiki/JSON}" 23 | } 24 | 25 | @misc{pycov, 26 | author = "Ned Batchelder", 27 | title = "Coverage.py", 28 | howpublished = "\url{https://coverage.readthedocs.io}" 29 | } 30 | 31 | @misc{gcov, 32 | author = "Wikipedia", 33 | title = "Gcov", 34 | howpublished = "\url{https://en.wikipedia.org/wiki/Gcov}" 35 | } 36 | 37 | @misc{csvwiki, 38 | author = "Wikipedia", 39 | title = "Comma-separated values", 40 | howpublished = "\url{https://en.wikipedia.org/wiki/Comma-separated_values}" 41 | } 42 | 43 | @misc{dbdesign, 44 | author = "Shivprasad Koirala", 45 | title = "11 important database designing rules which I follow", 46 | howpublished = "\url{https://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo}" 47 | } 48 | 49 | @misc{dbtutorial, 50 | author = "Tekstenuitleg.net", 51 | title = "Database Design Tutorial", 52 | howpublished = "\url{http://en.tekstenuitleg.net/articles/software/database-design-tutorial/}" 53 | } 54 | 55 | @misc{webdriver, 56 | author = "Selenium", 57 | title = "Selenium WebDriver", 58 | howpublished = "\url{http://www.seleniumhq.org/docs/03_webdriver.jsp}" 59 | } 60 | 61 | @misc{docker, 62 | author = "Docker", 63 | title = "Docker", 64 | howpublished = "\url{https://www.docker.com/}" 65 | } 66 | 67 | @misc{dockertutorial, 68 | author = "Docker", 69 | title = "Get Started with Docker", 70 | howpublished = "\url{https://docs.docker.com/get-started/}" 71 | } 72 | -------------------------------------------------------------------------------- /teams/setup.tex: -------------------------------------------------------------------------------- 1 | \documentclass[a4paper, 11pt]{article} 2 | 3 | \usepackage{fullpage} 4 | \usepackage[svgnames,x11names]{xcolor} 5 | \usepackage{hyperref} 6 | \hypersetup{ 7 | breaklinks, 8 | colorlinks, 9 | linkcolor={blue!50!black}, 10 | citecolor={blue!50!black}, 11 | urlcolor={blue!50!black} 12 | } 13 | \usepackage{amsthm} 14 | \usepackage[numbers,sort&compress]{natbib} 15 | \usepackage{listings} 16 | \usepackage{xspace} 17 | \usepackage{graphicx} 18 | 19 | \newcommand*{\Modone}{Bank\xspace}% 20 | \newcommand*{\modone}{bank\xspace}% 21 | \newcommand*{\Modtwo}{Shopping Mall\xspace}% 22 | \newcommand*{\modtwo}{shopping mall\xspace}% 23 | \newcommand*{\Modthree}{Network Operator\xspace}% 24 | \newcommand*{\modthree}{network operator\xspace}% 25 | \newcommand*{\Modfour}{Notary\xspace}% 26 | \newcommand*{\modfour}{notary\xspace}% 27 | \newcommand*{\Modfive}{Government\xspace}% 28 | \newcommand*{\modfive}{government\xspace}% 29 | 30 | \theoremstyle{definition} 31 | \newtheorem{exercise}{Exercise} 32 | 33 | \begin{document} 34 | %%% Header starts 35 | \noindent{\large\textbf{IS-521 Activity}\hfill 36 | \textbf{Team-based Software Engineering (part 2)} \\ 37 | {\phantom{} \hfill Due Date: May 29, 2017 (before class)} \\ 38 | %%% Header ends 39 | 40 | \section{Activity Overview} 41 | 42 | In this activity, each team is given a server VM. Your goal is to 43 | setup the environment for running all the services developed in the 44 | previous activity. Each VM has total 8 NICs (from eth0 to eth7). You 45 | can ignore the eth0, but other NICs are bind to a specific IP address, 46 | which is described in \S\ref{ipaddrs}. Your final submission should be 47 | a single installation script that sets up your server without any user 48 | intervention. 49 | 50 | \section{Deliverable} 51 | 52 | We expect a single script (in any language) that installs every 53 | component of your server including bank, notary, visualizer, etc. Each 54 | team leader should demonstrate their server settings in the class. 55 | % 56 | Each team leader can create a private repository in GitHub to store 57 | the script. 58 | 59 | When you do this activity, you do have a root access on the VM, 60 | because you need to install required packages and change system 61 | configurations. However, in the final CTF, we are not giving you a 62 | root access, since we do not want you to patch (modify) your service 63 | binaries during the CTF. Remember, you can only use Snort for defenses 64 | in the final CTF. 65 | 66 | As an example, you may want to create a BASH script that starts with 67 | the following commands: 68 | \begin{verbatim} 69 | #!/bin/bash 70 | # Clone all the repos 71 | git clone git@github.com:KAIST-IS521/TeamOne.git TeamOne 72 | git clone git@github.com:KAIST-IS521/TeamTwo.git TeamTwo 73 | # omitted ... 74 | \end{verbatim} 75 | 76 | \section{List of VMs} \label{ipaddrs} 77 | 78 | We provide a single VM for each team. We will \emph{not} disclose the 79 | IP address here, but will let you know in the class. Below is the list 80 | of VMs. 81 | % 82 | \begin{enumerate} 83 | % 84 | \item Team 1's VM: Port 10000 85 | \item Team 2's VM: Port 20000 86 | \item Team 3's VM: Port 30000 87 | \item Team 4's VM: Port 40000 88 | \item Team 5's VM: Port 50000 89 | % 90 | \end{enumerate} 91 | 92 | \section{Setup} 93 | 94 | \subsection{Network} 95 | 96 | \begin{figure}[t] 97 | \centering 98 | \includegraphics[width=\linewidth]{figs/network} 99 | \caption{CTF Network.} 100 | \label{fig:net} 101 | \end{figure} 102 | 103 | Figure~\ref{fig:net} presents our network settings. Each team has its 104 | own private network, and runs every service developed in the previous 105 | activity. Each team can talk to each other only via the TA's router. 106 | The TA's router has 5 NICs installed that connect to each team's 107 | router. IP addresses of each component in the network follows the 108 | convention described below. 109 | 110 | \begin{enumerate} 111 | % 112 | \item Team \texttt{X}'s router is at \texttt{10.0.10X.2}. 113 | % 114 | \item Team \texttt{X}'s bank service is at \texttt{10.0.10X.101}. 115 | % 116 | \item Team \texttt{X}'s shopping mall service is at 117 | \texttt{10.0.10X.102}. 118 | % 119 | \item Team \texttt{X}'s network operator service is at 120 | \texttt{10.0.10X.103}. 121 | % 122 | \item Team \texttt{X}'s notary service is at \texttt{10.0.10X.104}. 123 | % 124 | \item Team \texttt{X}'s government service is at \texttt{10.0.10X.105}. 125 | % 126 | \item Team \texttt{X}'s DNS cache is at \texttt{10.0.10X.42}. 127 | % 128 | \end{enumerate} 129 | 130 | \subsection{Sandboxing} 131 | 132 | For security reason, you need to sandbox each service in a docker 133 | image~\cite{docker}. If you are new to docker, their 134 | tutorial~\cite{dockertutorial} is a good starting point. 135 | 136 | \subsection{DNS} 137 | 138 | Every service (i.e., docker) in your network should use your local DNS 139 | cache located at \texttt{10.0.10X.42}. This DNS cache should be set up 140 | with a program called \texttt{dnsmasq}. 141 | 142 | Your DNS cache should use \texttt{192.168.127.15} as its primary DNS 143 | server. Any service should be accessible via teams' domain names. For 144 | example, we should be able to access the team1's banking service with 145 | \texttt{bank.team1}. 146 | \begin{enumerate} 147 | \item Team \texttt{X}'s bank service: \texttt{bank.teamX}. 148 | \item Team \texttt{X}'s shopping mall service: \texttt{mall.teamX}. 149 | \item Team \texttt{X}'s government service: \texttt{gov.teamX}. 150 | \item Team \texttt{X}'s notary service: \texttt{notary.teamX}. 151 | \item Team \texttt{X}'s network operator service: \texttt{viz.teamX}. 152 | \end{enumerate} 153 | 154 | 155 | \section{Grading} 156 | 157 | Your team will get full points if your server works properly, i.e., 158 | all the services pass the SLA checks after running your installation 159 | script. 160 | 161 | We also recommend you to submit pull requests (PRs) to other teams. 162 | Again, we are going to give an individual extra points for a PR. As 163 | always, we will \emph{not} give extra points for every PR. 164 | 165 | \bibliography{references} 166 | \bibliographystyle{plainnat} 167 | 168 | \end{document} 169 | --------------------------------------------------------------------------------