Wireshark using the Nokia LCD

Purpose: To use the Nokia LCD to display various network information such as source IP address, destination IP address, protocol name, and packet length from captured Packets. NokiaLCD library and regular mbed library have been used to create this program.

Components:

  • Ethernet Breakout board
  • Nokia micro LCD (6610)

/media/uploads/ichoudhury6/_scaled_20130305_135232.jpg

/media/uploads/ichoudhury6/_scaled_20130305_135336.jpg

/media/uploads/ichoudhury6/_scaled_20130305_135438.jpg

/media/uploads/ichoudhury6/_scaled_20130305_135449.jpg

Wireshark

#include "mbed.h"
#include <string>
#include "NokiaLCD.h"

NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type


DigitalOut myled(LED1);

Ethernet eth;

//Determine the protocol from the protocol number
string Protocol(int num){
string s;
switch(num){
    case 17 : 
    s="UDP";
    break;
    case 1 : 
    s="ICMP";
    break;
    case 6 : 
    s="TCP";
    break;
    case 89 : 
    s="OSPF";
    break;
    case 2 : 
    s="IGMP";
    break;
    case 103 : 
    s="PIM";
    break;
    default :
    s="None";
    }



return s;

}
 
int main() {
    int number=0;
    int type;
    char ver, prot;
    char hlen;
    char servtype;
    short tot_len,ident;
    string k;
    myled=1;
    int loc = 1;
    char buf[0x600];  //Set the buffer for incoming packets
    
    int* length=(int *)(buf+12);   //Find the packet length
 
    while(1) {
        myled=!myled;
       
        int size = eth.receive();    //Determine the packet size

        //If the packet size is zero then execute the loop
        if(size > 0) {
            loc=1;
            eth.read(buf, size);
            type=(buf[12]<<8|buf[13]);
            ver= buf[14]>>4;
            hlen=buf[14]&0xF;
            servtype=buf[15];
            tot_len=(buf[16]<<8|buf[17]);
            ident=(buf[18]<<8|buf[19]);
            prot=buf[23];
            
            
            //Check for IPv4. Filter out the rest
            if(type==0x800){
            lcd.background(0x0000FF);   //Set the background color
            lcd.cls();
            lcd.locate(0,1);

            //print stuff
            lcd.printf("Wireshark on Nokia");
            loc+=2;
            lcd.locate(0, loc);
            number++;
            lcd.printf("Number:%i",number);
            loc+=1;
            lcd.locate(0, loc);
            lcd.printf("Source:  ");
            loc++;
            lcd.locate(0, loc);
            lcd.printf("%d.%d.%d.%d", buf[26], buf[27], buf[28], buf[29]);  //Print the source IP address from the buffer
            loc+=2;
            lcd.locate(0, loc);
            lcd.printf("Destination: ");
            
            loc++;
            lcd.locate(0, loc);
            lcd.printf("%d.%d.%d.%d", buf[30], buf[31], buf[32], buf[33]);    //Print the destination IP address from the buffer
            loc++;
            lcd.locate(0, loc);
             k=Protocol(prot);
            lcd.printf("Protocol %s",k);
            loc+=2;
            lcd.locate(0, loc);
            lcd.printf("Length:%i",size);
            
                     
                    
        }else{

        //Else print no connection
         printf("No Connection");}
 
        wait(1);
    }
}
}

Import programWireshark

Wireshark for Nokia LCD


Please log in to post comments.