<h5><center>The Islamic University of Gaza<br>Engineering Faculty<br>Department of Computer Engineering</center></h5> <h1 style='border: none'><center>Protocols, and Data Analyzing </center></h1> <h6>Author: Mohammad M. owda</h6> ---- ## Introduction This lab might all over the place, but its going to wrap up the data anlyzing section, today we will talk about the last week task, in going to solve it in the lab. after that we will talk about this week task. then i'll show you somthing cool about the magnatic cards, and how you can read a card. then i'll show you what do you need in order to get a full mark in the lab. --- ## Creating a protocol In order to create a protocol you just need to put the data in a specific way that shoud be known to the encoder and the decoder. E.g. |<center>data</center>|<center>type</center>|| | :------------- | :----------: | -----------: | |<center> header </center>| byte | always equal to '0xE5' | | <center> reserved </center>| | <center>0000</center> | |<center> ID indecator </center>| byte | always equal to I, '0x49' | |<center> ID </center> | string || |<center>field seperator</center>| byte | always equal to '0xFE'| | <center> reserved </center>| | <center>0000</center> | |<center> Course indecator </center>| byte | always equal to C, '0x43' | |<center> Course </center> | string || |<center>field seperator</center>| byte | always equal to '0xFE'| | <center> reserved </center>| | <center>0000</center> | |<center> Grade indecator </center>| byte | always equal to G, '0x47' | |<center> Grade </center> | string || |<center>field seperator</center>| byte | always equal to '0xFE'| this simple protocol could be codded in 5 lins as follows: ```python ID = input("Enter Student ID: ").encode('utf-8').hex() Course = input("Enter Course Name: ").encode('utf-8').hex() Grade = input("Enter Student Grade: ").encode('utf-8').hex() ret = "E5000049" + ID + "FE000043" + Course + "FE000047" + Grade + "FE" print(ret) ``` sample output: ~~~ E5000049313230313631303037FE00004345434f4d2034303031FE000047313030FE ~~~ --- ## Magnatic Cards The basic gist of the system is that there are many tiny magnets or magnetic particles (usually iron oxide) which are magnetized in a specific manner within a magstripe. Essentially you take the card (or think of it as many magnets) and put it next to a magnetic reader (card reader) which then reads the fields. These fields are then taken to good ol 1’s and 0’s and used within backend systems after a bit of decoding. The magnetic stripe on a card is actually made up of 3 different ‘stripes’ or tracks (usually – different types of cards will have a different number of tracks), right above each other. Each of these tracks can hold different amounts of data. ### Reading Most magstripes use whats known as F2F/Aiken Biphase/BMC encoding, which determines whether something is a 1 or a 0 by looking at the change within a particular ‘phase’ (the time taken for one cycle). The time for a phase is identified by a series of 0’s at the beginning of each track (essentially just allowing the reader to say okay i see them coming past at x ms). This is known as self-clocking and allows readers to read cards that are pushed through by a human rather than say that of a tape player where it is a fixed speed. the idea of taking about this was to make our own reader using a tape player, but i spent some time tring it with no luck, you can check [this](https://www.andrewmohawk.com/2012/05/29/magnetic-stripes-part-1/) blog for mode details. ---- ## How to get a full mark in the lab? Simply, Hack me! I got a D-link router that i already hacked before. ***the router now is behind K building, the SSID is `Hack me!`.*** ![](https://i.imgur.com/Zkg8JKL.png) In order to get a full mark you need to add:`تم الدعس <STUDENT_NAME> <STUDENT_ID>` in the login screen. The first student and only the first will get the full mark, other student how hack the router get a bonus. --- ## Lab task: unfortunately, while your program that you coded the previous lab was sending the data to the server a fault happened, you will get a message that has been retrieved from the memory, you have to anylze the message retrieve the data from it, and write a documentation for the protocol.