Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need help with this project. Project #1 (Due Date: 10/20/2017) C++ Objectives:

ID: 3597466 • Letter: I

Question

I need help with this project.

Project #1 (Due Date: 10/20/2017) C++ Objectives: In this homework, we will explore some of the basics of C++ programming. In particular, we will practice working with: multiple data type variable declarations, input with cin, output with cout, formatting, arithmetic operations, Boolean logic, while/do-while loops/for loops, if-else, nested if-else and/or switch branching Tasks: You will calculate the grade of a student based on the marks. Total marks of a student are calculated as follows Total marks = Lab marks*25% + Project marks*25% + Exam marks* 50% 3 Projects are assigned to the student and you need to consider the maximum of all the marks as the Project marks. Each project is evaluated to 100 marks Student will be having 5 labs. You need to calculate the average of all labs as lab marks. Each lab is evaluated to 100 marks Students will write 2 exams. You need to calculate the weighted mean of those marks using the below formula. Each exam is evaluated to 100 marks Weighted means (2"maximum marks + minimum marks)/3) 1. 2. 3. Grade should be assigned based on the following criteria If Total marks>90 Total marks between 80 and 89, grade-B, Comments-Good Total marks between 70 and 79, grade-C, Comments- Needs to improve Total marks between 60 and 69, grade-D, Comments- Warning of probation Total marks

Explanation / Answer

void raw_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

{                                                                                                                                           {

        u_int length = h->len;

        u_int caplen = h->caplen;

        /* At this point we start extracting data from the packet, with the var idx keeping up with where we are in the packet */

        // Print total packet size

        printf(" Packet Length %d bytes", h->len);

                // Decode Ethernet (Layer 2) Header Info

                        int idx;                         // counter variable for indexing through packet

                        char eth_destination[6]; // var to store the ethernet destination address

                        char eth_source[6];      // var to store the ethernet source address

                        short eth_type;                  // var to store the ethernet type value

                        char eth_payload[10];    // string array to store payload description

                        char eth_bcast[6] = "0xFF";

                        // Extract Ethernet Destination Address (1st 6 bytes)

                        for ( idx = 0; idx < 6; idx++)

                        {

                                eth_destination[idx] = p[idx];

                        }

                        // Extract Ethernet Source Address (2nd 6 bytes)

                        for ( idx = 6; idx < 12; idx++)

                        {

                                eth_source[idx-6] = p[idx];

                        }

                        // Combine two byte Ethernet Type/Length field into one value

                        eth_type = p[12] * 256 + p[13];

                        // Check the packet type and increment related counter

                        if ( eth_type >= 0x600) {

                                switch ( eth_type )

                                {

                                        case 0x800: // Check to see if the type indicates that the packet is IP

                                                ctrIP++;

                                                strcpy(eth_payload, "IP");

                                                break;

                                        case 0x806: // Check to see if the type indicates that the packet is ARP

                                                ctrARP++;

                                                strcpy(eth_payload, "ARP");

                                                break;

                                        default:

                                                break;

                                }

                        }

                        // Check to see if the destination was a broadcast packet and increment related counter

                        /*

                        if ((eth_destination[0] == 0xFF ) && (eth_destination[1] == 0xFF ) && (eth_destination[2] == 0xFF ) && (eth_destination[3] == 0xFF ) && (eth_destination[4] == 0xFF ) && (eth_destination[5] == 0xFF )) {

                                ctrBCAST++;

                        }

                        */

                        // Print Ethernet (Layer 2) Header Info

                                printf("Layer Field Value ");

                                printf("ETHERNET Destination %02x:%02x:%02x:%02x:%02x:%02x ", eth_destination[0],eth_destination[1],eth_destination[2],eth_destination[3],eth_destination[4],eth_destination[5]);

                                printf(" Source %02x:%02x:%02x:%02x:%02x:%02x ", eth_source[0],eth_source[1],eth_source[2],eth_source[3],eth_source[4],eth_source[5]);

                                printf(" Type 0x%02x ", eth_type);

                                printf(" Payload %s ", eth_payload);

                // All packets will have ethernet info (decoded and printed above).

                // At this point we have to determine what kind of data is at the next layer up (layer 3) and decode/print the data accordingly.

                // This is done based on the eth_type variable.

                if ( eth_type >= 0x600) {

                        switch ( eth_type )

                        {

                                case 0x800: // IP Packet

                                        // insert code to decode and print IP (should this be a separate sub-routine?

                                        break;

                                case 0x806: // ARP Packet

                                        // insert code to decode and print ARP

                                        break;

                                default:

                                        break;

                        }

                }

                exit(0);

}