Exercises for the course IC00AJ74 Cyber Security III: Software and Hardware Security at the University of Oulu.
This course handles key concepts and principles in software and hardware security. Especially in the topics of
- Software testing including fuzzing and fuzzing integration
- Memory errors and vulnerabilities
- Return-oriented programming exploits and shellcoding
- Malware analysis and reverse engineering
- Hardware glitching and side-channel attacks
- Hardware testing with physical interfaces and close-range wireless methods
- Remote attestation and Hardware Security Modules (HSMs)
The course is organized by Oulu University Secure Programming Group (OUSPG)
The course has seven laboratory exercises, and seven mandatory lectures.
Lectures are handling topics from a high perspective and they are not generally going technically deep. Lecture exams (in case of a missed lecture) are mostly based on the lectures.
Laboratory exercises are thought of as independent packages: containing theory and exercises and going technologically very deep.
To pass this course with grade 1, you have to attend all lectures (or replace them with their Exams).
To get a better grade, you have to do some laboratory exercises. You can somewhat decide what grade you will earn on this course because you can (hopefully!) see from the beginning how much work is required for each grade. All laboratory tasks are optional and total points from those will determine your grade.
As described earlier, you have to attend all lectures (or do their respective exams) to pass the course. You can have higher grades by doing lab work.
You can get up to 5 points in each lab (A total of 35 points). The grade is determined based on those points. For example, with 12 points you get grade 2.
Total Points | Total Grade |
---|---|
12+ | 2 |
18+ | 3 |
24+ | 4 |
30+ | 5 |
- Enroll in the course
- Find the course's Moodle page from the University's Moodle
- Find a link where you can receive and create a private repository containing all the return template folders. You are expected to answer for given templates and store your actual work in this repository.
- Create a GitHub account, if you don't have one already, and create this private repository from the link.
- You can see the deadlines in Moodle. There might be exceptions for ChipWhisperer and FlipperZero (Week 6 & 7)
- Complete as many tasks as you wish and update your repository accordingly. Check the grading table found in each lab instructions on what you have to complete to earn the grade of your choosing
- Push your changes to your repository before the deadline, and return the link to your repository to the corresponding return box of the lab in Moodle.
Check the cheat sheet if you need a refresher on how to use Git. Some basic commands below:
git add </path/filename>
git commit -m "<message>"
git push
The course requires extensive use of a Linux-based operating system. You can use anything you want, but then you might need to figure out how to install some tools by yourself. See more general information in here.
We will provide custom Arch Linux as pre-tested solution. See Moodle workspace for download links.
More information about the Arch Linux is available here.
Any information, guidelines, tutorials, examples, or code pieces here are for teaching purposes, under MIT license, unless otherwise declared.