1. Homepage
  2. Programming
  3. CSE 469 Computer and Network Forensics - Homework 1: MBR and GPT Analysis

CSE 469 Computer and Network Forensics - Homework 1: MBR and GPT Analysis

Engage in a Conversation
ASUCSE 469Computer and Network ForensicsHaskell

Homework1- f23

 

Homework 1: MBR and GPT Analysis

  CourseNana.COM

  CourseNana.COM

For this project, you will write a program that analyzes the Master Boot Record (MBR) and GUID Partition Table (GPT) of forensic images. Sample raw images and resources for you to use while programming are available here. CourseNana.COM

      Download sample raw images and resources CourseNana.COM

We assume you use an x86-64 architecture-based computer for this project. Your program, which must be an executable called boot_info, must take as input the path to a raw image with option -f (files), like so: CourseNana.COM

./boot_info -f sample.raw CourseNana.COM

./boot_info -f sample.raw CourseNana.COM

Before opening the raw image to perform any analyses, your program should first calculate MD5 and SHA-256 hash values for the image (input .raw file). The hash values should be stored as MD5-[imagename.raw].txt and SHA-256-[imagename.raw].txt and should contain only the hash values (case-insensitive), not any other text. For example, if the name of raw image is Sparky.raw then your authentication module needs to generate MD5-Sparky.raw.txt and SHA-256-Sparky.raw.txt before opening the raw image. As long as the hash value uses upper- or lower-case letters, it doesn't matter since we will use an insensitive check when grading. You can check the correct hash value from the "hash_info" folder in the shared link. CourseNana.COM

Next, ensure that you open the image as read-only and identify the partitioning scheme, whether it is MBR or GPT. Then locate and extract the partition tables from the MBR and GPT. MBR type MUST generate the partition type including hex value and corresponding type, start sector address (LBA), and size of each partition in decimal as follows: CourseNana.COM

(07) HPFS/NTFS/exFAT , 2056320, 208845 CourseNana.COM

Note
For the partition types, You can download the common partition type here. CourseNana.COM

      Download the common partition type: csv    or     json CourseNana.COM

This is the one instance where I will allow students to share information for homework solutions: If a more digitally ingestible version (e.g., JSON) of the partition types were to be distributed among the class, I would accept its use as not violating the academic integrity policy. However, the usual rules apply for citations, etc. As usual, please feel free to ask clarifying questions on Discord. CourseNana.COM

For each partition your program discovers listed in the MBR, locate and read in the boot record of the partition (first sector) and output the hexadecimal values of the first 16 bytes of the boot record and the ASCII values of the bytes (if the value is not printable, print “.”), as follows: CourseNana.COM

Partition number: 1
First
16 bytes of boot record: 67 66 72 65 65 6D 61 6E 67 66 72 65 65 6D 61 6E
ASCII:                          g  f  r  e  e  m  a  n  g  f  r  e  e  m  a  n
CourseNana.COM

Note
The above is only illustrative. The given hex values are not valid in a regular boot record. CourseNana.COM

For GPT output,  in the same way,  boot_info should take a raw image file and calculate hash values. Also, search the hexadecimal values for the starting LBA and ending LBA addresses on the disk of each partition. CourseNana.COM

So, invoking your program will output data in the following format: (This is not the real value, your output must be different) CourseNana.COM

$./boot_info -f mbr_sample.raw
(07) HPFS/NTFS/exFAT , 2056320, 20884534
(07) HPFS/NTFS/exFAT , 2265165, 20884523
(07) HPFS/NTFS/exFAT , 2474010, 20884513
(07) HPFS/NTFS/exFAT , 2682855, 20884542
Partition number: 1
First 16 bytes of boot record: aa 66 72 65 65 6D 61 6E ea 66 72 65 65 6D 61 6a
CourseNana.COM

ASCII:                          .  f  r  e  e  m  a  n  .  f  r  e  e  m  a  j
Partition number: 2
First 16 bytes of boot record: bb 66 72 65 65 6D 61 6E be 66 72 63 60 6D 64 6b
CourseNana.COM

ASCII:                          .  f  r  e  e  m  a  n  .  f  r  c  `  m  d  k
Partition number: 3
First 16 bytes of boot record: cc 66 72 65 65 6D 61 6E ec 66 72 62 65 67 67 6c
CourseNana.COM

ASCII:                          .  f  r  e  e  m  a  n  .  f  r  b  e  g  g  l
Partition number: 4
First 16 bytes of boot record: dd 66 72 65 65 6D 61 6E ed 66 72 65 65 6D 69 62
CourseNana.COM

ASCII:                          .  f  r  e  e  m  a  n  .  f  r  e  e  m  i  b CourseNana.COM

  CourseNana.COM


$./boot_info -f gpt_sample.raw
Partition number: 1
Partition
Type GUID : 12345AF12345CA1109876554321AEDF9
Starting LBA
address in hex: 0x100
ending LBA
address in hex: 0x1234f
starting LBA
address in Decimal: 256
ending LBA
address in Decimal: 74575 CourseNana.COM

  CourseNana.COM

Partition number: 2
Partition
Type GUID : 12345AF12345CA1109876554321AEDF9
Starting LBA
address in hex: 0x100
ending LBA
address in hex: 0x1234f
starting LBA
address in Decimal: 256
ending LBA
address in Decimal: 74575

CourseNana.COM

//similarly, display all 5 values for all other partitions CourseNana.COM

//If a partition's GUID is all 0s (unused), you can skip it and check the next partition. CourseNana.COM

Note
It isn’t necessary for you to include partition entries if the partition type is 0x00 in MBR. For an explanation of this exclusion, please see the first entry in this table: https://en.wikipedia.org/wiki/Partition_type#List_of_partition_IDs CourseNana.COM

  CourseNana.COM

Implementation

Your program must work on Ubuntu 18.04 64-bit or later version with the default packages installed. You may find it helpful to set up a virtual machine to do your development. VirtualBox is a free and open-source VM system. CourseNana.COM

If you wish to use packages that are not installed on Ubuntu by default, please submit a file with your code named packages, with a list of packages that you would like installed before calling make. Each line of packages must be a valid package name, one package per line. The submission system will automatically install all the dependencies that the package lists. CourseNana.COM

For example, if you were going to write your assignment in Haskell, you could install the GHC compiler with the following package file: CourseNana.COM

ghc-dynamic CourseNana.COM

In order to test your program, you can use the auto-grader in Gradescope. Yon can access Gradescope on Canvas (left menu). CourseNana.COM

Submission Instructions

You will need to submit your source code, along with a Makefile and README. The Makefile must create your executable, called boot_info when the command make is run. Your README file must be plain text and should contain your name, ASU ID, and a description of how your program works. CourseNana.COM

How to make and writing Makefiles:  du/~newhall/unixhelp/howto_makefiles.html CourseNana.COM

Example of Makefile for python: CourseNana.COM

all: CourseNana.COM

         cp your_code.py boot_info CourseNana.COM

         chmod +x boot_info CourseNana.COM

clean: CourseNana.COM

         rm boot_info CourseNana.COM

  CourseNana.COM

Submission

Gradescope CourseNana.COM

  CourseNana.COM

Get in Touch with Our Experts

WeChat (微信) WeChat (微信)
Whatsapp WhatsApp
ASU代写,CSE 469代写,Computer and Network Forensics代写,Haskell代写,ASU代编,CSE 469代编,Computer and Network Forensics代编,Haskell代编,ASU代考,CSE 469代考,Computer and Network Forensics代考,Haskell代考,ASUhelp,CSE 469help,Computer and Network Forensicshelp,Haskellhelp,ASU作业代写,CSE 469作业代写,Computer and Network Forensics作业代写,Haskell作业代写,ASU编程代写,CSE 469编程代写,Computer and Network Forensics编程代写,Haskell编程代写,ASUprogramming help,CSE 469programming help,Computer and Network Forensicsprogramming help,Haskellprogramming help,ASUassignment help,CSE 469assignment help,Computer and Network Forensicsassignment help,Haskellassignment help,ASUsolution,CSE 469solution,Computer and Network Forensicssolution,Haskellsolution,