https://elinux.org/api.php?action=feedcontributions&user=Parasby&feedformat=atomeLinux.org - User contributions [en]2024-03-28T17:21:15ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=ECE497_Project_WireShark&diff=301172ECE497 Project WireShark2013-11-14T19:21:22Z<p>Parasby: edited the sentences in the Highlights</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to monitor and analyze any network traffic on the beagle bone. Initially we wanted to port ''wireshark'' on to the bone, but after much expeirmentaiton and research, we decided to implement a different approach. We are currently able to monitor traffic on ''usb0'' and ''eth0'' on the beaglebone using ''tcpdump'' on the beaglebone and ''wireshark'' on the host computer. As a demonstration, we are able to see if anyone is accessing the beaglebone via port 3000 (''cloud9'' IDE). Almost everything is working and we were able to get this project working on multiple computers as well. What currently could be implemented is updating the ''wireparser'' to also look a reverse magic number instead of just the normal magic number (read more in Theory of Operation section). A lot of time in this project was spent trying to port ''wireshark'' to the beaglebone, but using the alternative solution we found was a lot more productive. By using tcpdump on the beaglebone and ''wireshark'' on the host computer our approach is optimal in terms of resource usage and performance.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
host$ '''sudo apt-get install wireshark'''<br />
host$ '''sudo apt-get install g++'''<br />
host$ '''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
host$ '''git clone git@github.com:manuelstephan/eLinuxProject.git wireShark'''<br />
host$ '''cd wireShark'''<br />
host$ '''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
host$ '''ssh root@192.168.7.2'''<br />
bealge$ '''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
beagle$ '''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
host$ '''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
host$ '''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
hoat$ '''./capture.sh eth0''' or host$ '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
To exit and stop everything,just do a '''CTRL+C''':<br />
host$ '''CTRL+C'''<br />
^Ccleaning up ....<br />
<br />
This will close and clean up everything so you should save the captures before doing '''CTRL+C'''<br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
The main highlight of the project is that we can monitor network traffic on the beaglebone.<br />
<br />
Here is a youtube video demo of monitoring activity on port 3000 (cloud 9 IDE) of the beaglebone:<br />
<br />
[http://www.youtube.com/watch?v=H3Eu8Ujmm-A&feature=youtu.be beaglebone network monitoring]<br />
<br />
In the youtube video we show what can be done with our project. Basically,we set up tcpdump on the beaglebone and ''wireshark'' on the host computer. We then monitor the traffic that is going through the ethernet interface of the beaglebone.Then we connect the beaglebone on port 3000 (Cloud 9 IDE) from a other computer. All the packets going back and fourth are displayed in by ''wireshark'' so we can see if somebody else is accessing the beaglebone via port 3000. As port 3000 is a big security hole on the beaglebone we think this video helps to make you aware of it.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
*Include the reversed magic number (''0xd4c3b2a1'') in the parser<br />
Currently the parser just looks for the magic number (''0xa1b2c3d4'') in the pcap captures and not the reverse magic number (''0xd4c3b2a1'')<br />
<br />
*Increase the parsing speed <br />
The parser keeps checking for the magic number even if it was already found. This results in additional cpu usage. <br />
It should be possible to change the parser and add a forward mode to it so it just forwards all data after the magic number was found. This could increase the speed of the parser significantly. <br />
<br />
*Evaluate the parser if it is able to process a lot of data. <br />
Currently we just used the parser to process the traffic created by loading a homepage. We did not monitor the traffic of a huge download yet. <br />
<br />
*Excluding the ssh traffic in ''wireshark'' when monitoring the traffic on the beaglebone.<br />
<br />
== Conclusions ==<br />
With our project, we made it possible to capture and analyze the network traffic on linux embedded devices using efficient tcpdump on the embedded device and capable wireshark with GUI on a host computer. The fact that we can monitor traffic on the beaglebone enables numerous issues arise with regards the the beaglebone security. Trying to figure out certain security measures on the beaglebone would be another follow up project that would prove useful to us all as the subject of network security can be expanded into embedded systems.<br />
<br />
== Special Thanks to: ==<br />
<br />
Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=301166ECE497 Project WireShark2013-11-14T19:11:05Z<p>Parasby: Added exit instructions</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to monitor and analyze any network traffic on the beagle bone. Initially we wanted to port ''wireshark'' on to the bone, but after much expeirmentaiton and research, we decided to implement a different approach. We are currently able to monitor traffic on ''usb0'' and ''eth0'' on the beaglebone using ''tcpdump'' on the beaglebone and ''wireshark'' on the host computer. As a demonstration, we are able to see if anyone is accessing the beaglebone via port 3000 (''cloud9'' IDE). Almost everything is working and we were able to get this project working on multiple computers as well. What currently could be implemented is updating the ''wireparser'' to also look a reverse magic number instead of just the normal magic number (read more in Theory of Operation section). A lot of time in this project was spent trying to port ''wireshark'' to the beaglebone, but using the alternative solution we found was a lot more productive. By using tcpdump on the beaglebone and ''wireshark'' on the host computer our approach is optimal in terms of resource usage and performance.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
host$ '''sudo apt-get install wireshark'''<br />
host$ '''sudo apt-get install g++'''<br />
host$ '''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
host$ '''git clone git@github.com:manuelstephan/eLinuxProject.git wireShark'''<br />
host$ '''cd wireShark'''<br />
host$ '''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
host$ '''ssh root@192.168.7.2'''<br />
bealge$ '''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
beagle$ '''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
host$ '''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
host$ '''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
hoat$ '''./capture.sh eth0''' or host$ '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
To exit and stop everything,just do a '''CTRL+C''':<br />
host$ '''CTRL+C'''<br />
^Ccleaning up ....<br />
<br />
This will close and clean up everything so you should save the captures before doing '''CTRL+C'''<br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
The main highlight of the project is that we can monitor network traffic on the beaglebone.<br />
<br />
Here is a youtube video demo of monitoring activity on port 3000 (cloud 9 IDE) of the beaglebone:<br />
<br />
[http://www.youtube.com/watch?v=H3Eu8Ujmm-A&feature=youtu.be beaglebone network monitoring]<br />
<br />
In the youtube video we show what can be done with our project. Basically we are setting up tcpdump on the beaglebone and ''wireshark'' on the host computer. We are able to monitor traffic that is going through the ethernet interface of the beaglebone. Therfore we are connecting the beaglebone on port 3000 (Cloud 9 IDE) from a other computer. All the packets going back and fourth are displayed in by ''wireshark''. So we can see if somebody else is accessing the beaglebone via port 3000. As port 3000 is a big security hole on the beaglebone we think this video helps to make you aware of it.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
*Include the reversed magic number (''0xd4c3b2a1'') in the parser<br />
Currently the parser just looks for the magic number (''0xa1b2c3d4'') in the pcap captures and not the reverse magic number (''0xd4c3b2a1'')<br />
<br />
*Increase the parsing speed <br />
The parser keeps checking for the magic number even if it was already found. This results in additional cpu usage. <br />
It should be possible to change the parser and add a forward mode to it so it just forwards all data after the magic number was found. This could increase the speed of the parser significantly. <br />
<br />
*Evaluate the parser if it is able to process a lot of data. <br />
Currently we just used the parser to process the traffic created by loading a homepage. We did not monitor the traffic of a huge download yet. <br />
<br />
*Excluding the ssh traffic in ''wireshark'' when monitoring the traffic on the beaglebone.<br />
<br />
== Conclusions ==<br />
With our project, we made it possible to capture and analyze the network traffic on linux embedded devices using efficient tcpdump on the embedded device and capable wireshark with GUI on a host computer. The fact that we can monitor traffic on the beaglebone enables numerous issues arise with regards the the beaglebone security. Trying to figure out certain security measures on the beaglebone would be another follow up project that would prove useful to us all as the subject of network security can be expanded into embedded systems.<br />
<br />
== Special Thanks to: ==<br />
<br />
Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=300458ECE497 Project WireShark2013-11-13T02:50:14Z<p>Parasby: Added youtube video demo</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to monitor and analyze any network traffic on the beagle bone. Initially we wanted to port ''wireshark'' on to the bone, but after much expeirmentaiton and research, we decided to implement a different approach. We are currently able to monitor traffic on ''usb0'' and ''eth0'' on the beaglebone using ''tcpdump'' on the beaglebone and ''wireshark'' on the host computer. As a demonstration, we are able to see if anyone is accessing the beaglebone via port 3000 (''cloud9'' IDE). Almost everything is working and we were able to get this project working on multiple computers as well. What currently could be implemented is updating the ''wireparser'' to also look a reverse magic number instead of just the normal magic number (read more in Theory of Operation section). A lot of time in this project was spent trying to port ''wireshark'' to the beaglebone, but using the alternative solution we found was a lot more productive. By using tcpdump on the beaglebone and ''wireshark'' on the host computer our approach is optimal in terms of resource usage and performance.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
host$ '''sudo apt-get install wireshark'''<br />
host$ '''sudo apt-get install g++'''<br />
host$ '''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
host$ '''git clone git@github.com:manuelstephan/eLinuxProject.git wireShark'''<br />
host$ '''cd wireShark'''<br />
host$ '''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
host$ '''ssh root@192.168.7.2'''<br />
bealge$ '''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
beagle$ '''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
host$ '''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
host$ '''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
hoat$ '''./capture.sh eth0''' or host$ '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
The main highlight of the project is that we can monitor network traffic on the beaglebone.<br />
<br />
Here is a youtube video demo of monitoring activity on port 3000 (cloud 9 IDE) of the beaglebone:<br />
<br />
[http://www.youtube.com/watch?v=H3Eu8Ujmm-A&feature=youtu.be beaglebone network monitoring]<br />
<br />
In the youtube video we show what can be done with our project. Basically we are setting up tcpdump on the beaglebone and ''wireshark'' on the host computer. We are able to monitor traffic that is going through the ethernet interface of the beaglebone. Therfore we are connecting the beaglebone on port 3000 (Cloud 9 IDE) from a other computer. All the packets going back and fourth are displayed in by ''wireshark''. So we can see if somebody else is accessing the beaglebone via port 3000. As port 3000 is a big security hole on the beaglebone we think this video helps to make you aware of it.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
*Include the reversed magic number (''0xd4c3b2a1'') in the parser<br />
Currently the parser just looks for the magic number (''0xa1b2c3d4'') in the pcap captures and not the reverse magic number (''0xd4c3b2a1'')<br />
<br />
*Increase the parsing speed <br />
The parser keeps checking for the magic number even if it was already found. This results in additional cpu usage. <br />
It should be possible to change the parser and add a forward mode to it so it just forwards all data after the magic number was found. This could increase the speed of the parser significantly. <br />
<br />
*Evaluate the parser if it is able to process a lot of data. <br />
Currently we just used the parser to process the traffic created by loading a homepage. We did not monitor the traffic of a huge download yet. <br />
<br />
*Excluding the ssh traffic in ''wireshark'' when monitoring the traffic on the beaglebone.<br />
<br />
== Conclusions ==<br />
With our project, we made it possible to capture and analyze the network traffic on linux embedded devices using efficient tcpdump on the embedded device and capable wireshark with GUI on a host computer. The fact that we can monitor traffic on the beaglebone enables numerous issues arise with regards the the beaglebone security. Trying to figure out certain security measures on the beaglebone would be another follow up project that would prove useful to us all as the subject of network security can be expanded into embedded systems.<br />
<br />
== Special Thanks to: ==<br />
<br />
Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=300374ECE497 Project WireShark2013-11-12T20:13:58Z<p>Parasby: Fixed conclusions</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to monitor and analyze any network traffic on the beagle bone. Initially we wanted to port ''wireshark'' on to the bone, but after much expeirmentaiton and research, we decided to implement a different approach. We are currently able to monitor traffic on ''usb0'' and ''eth0'' on the beaglebone using ''tcpdump'' on the beaglebone and ''wireshark'' on the host computer. As a demonstration, we are able to see if anyone is accessing the beaglebone via port 3000 (''cloud9'' IDE). Almost everything is working and we were able to get this project working on multiple computers as well. What currently could be implemented is updating the ''wireparser'' to also look a reverse magic number instead of just the normal magic number (read more in Theory of Operation section). A lot of time in this project was spent trying to port ''wireshark'' to the beaglebone, but using the alternative solution we found was a lot more productive. By using tcpdump on the beaglebone and ''wireshark'' on the host computer our approach is optimal in terms of resource usage and performance.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
host$ '''sudo apt-get install wireshark'''<br />
host$ '''sudo apt-get install g++'''<br />
host$ '''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
host$ '''git clone git@github.com:manuelstephan/eLinuxProject.git wireShark'''<br />
host$ '''cd wireShark'''<br />
host$ '''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
host$ '''ssh root@192.168.7.2'''<br />
bealge$ '''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
beagle$ '''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
host$ '''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
host$ '''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
hoat$ '''./capture.sh eth0''' or host$ '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
*Include the reversed magic number (''0xd4c3b2a1'') in the parser<br />
Currently the parser just looks for the magic number (''0xa1b2c3d4'') in the pcap captures and not the reverse magic number (''0xd4c3b2a1'')<br />
<br />
*Increase the parsing speed <br />
The parser keeps checking for the magic number even if it was already found. This results in additional cpu usage. <br />
It should be possible to change the parser and add a forward mode to it so it just forwards all data after the magic number was found. This could increase the speed of the parser significantly. <br />
<br />
*Evaluate the parser if it is able to process a lot of data. <br />
Currently we just used the parser to process the traffic created by loading a homepage. We did not monitor the traffic of a huge download yet. <br />
<br />
*Excluding the ssh traffic in ''wireshark'' when monitoring the traffic on the beaglebone.<br />
<br />
== Conclusions ==<br />
With our project, we made it possible to capture and analyze the network traffic on linux embedded devices using efficient tcpdump on the embedded device and capable wireshark with GUI on a host computer. The fact that we can monitor traffic on the beaglebone enables numerous issues arise with regards the the beaglebone security. Trying to figure out certain security measures on the beaglebone would be another follow up project that would prove useful to us all as the subject of network security can be expanded into embedded systems.<br />
<br />
== Special Thanks to: ==<br />
<br />
Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=300332ECE497 Project WireShark2013-11-12T19:56:22Z<p>Parasby: added magic numbers for clarity</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to monitor and analyze any network traffic on the beagle bone. Initially we wanted to port ''wireshark'' on to the bone, but after much expeirmentaiton and research, we decided to implement a different approach. We are currently able to monitor traffic on ''usb0'' and ''eth0'' on the beaglebone using ''tcpdump'' on the beaglebone and ''wireshark'' on the host computer. As a demonstration, we are able to see if anyone is accessing the beaglebone via port 3000 (''cloud9'' IDE). Almost everything is working and we were able to get this project working on multiple computers as well. What currently could be implemented is updating the ''wireparser'' to also look a reverse magic number instead of just the normal magic number (read more in Theory of Operation section). A lot of time in this project was spent trying to port ''wireshark'' to the beaglebone, but using the alternative solution we found was a lot more productive. By using tcpdump on the beaglebone and ''wireshark'' on the host computer our approach is optimal in terms of resource usage and performance.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
host$ '''sudo apt-get install wireshark'''<br />
host$ '''sudo apt-get install g++'''<br />
host$ '''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
host$ '''git clone git@github.com:manuelstephan/eLinuxProject.git wireShark'''<br />
host$ '''cd wireShark'''<br />
host$ '''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
host$ '''ssh root@192.168.7.2'''<br />
bealge$ '''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
beagle$ '''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
host$ '''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
host$ '''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
hoat$ '''./capture.sh eth0''' or host$ '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
*Include the reversed magic number (''0xd4c3b2a1'') in the parser<br />
Currently the parser just looks for the magic number (''0xa1b2c3d4'') in the pcap captures and not the reverse magic number (''0xd4c3b2a1'')<br />
<br />
*Increase the parsing speed <br />
The parser keeps checking for the magic number even if it was already found. This results in additional cpu usage. <br />
It should be possible to change the parser and add a forward mode to it so it just forwards all data after the magic number was found. This could increase the speed of the parser significantly. <br />
<br />
*Evaluate the parser if it is able to process a lot of data. <br />
Currently we just used the parser to process the traffic created by loading a homepage. We did not monitor the traffic of a huge download yet. <br />
<br />
*Excluding the ssh traffic in ''wireshark'' when monitoring the traffic on the beaglebone.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=300302ECE497 Project WireShark2013-11-12T19:52:05Z<p>Parasby: Edited Future Work</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to monitor and analyze any network traffic on the beagle bone. Initially we wanted to port ''wireshark'' on to the bone, but after much expeirmentaiton and research, we decided to implement a different approach. We are currently able to monitor traffic on ''usb0'' and ''eth0'' on the beaglebone using ''tcpdump'' on the beaglebone and ''wireshark'' on the host computer. As a demonstration, we are able to see if anyone is accessing the beaglebone via port 3000 (''cloud9'' IDE). Almost everything is working and we were able to get this project working on multiple computers as well. What currently could be implemented is updating the ''wireparser'' to also look a reverse magic number instead of just the normal magic number (read more in Theory of Operation section). A lot of time in this project was spent trying to port ''wireshark'' to the beaglebone, but using the alternative solution we found was a lot more productive. By using tcpdump on the beaglebone and ''wireshark'' on the host computer our approach is optimal in terms of resource usage and performance.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
host$ '''sudo apt-get install wireshark'''<br />
host$ '''sudo apt-get install g++'''<br />
host$ '''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
host$ '''git clone git@github.com:manuelstephan/eLinuxProject.git wireShark'''<br />
host$ '''cd wireShark'''<br />
host$ '''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
host$ '''ssh root@192.168.7.2'''<br />
bealge$ '''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
beagle$ '''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
host$ '''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
host$ '''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
host$ '''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
hoat$ '''./capture.sh eth0''' or host$ '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
*Include the reversed magic number in the parser<br />
Currently the parser just looks for the magic number in the pcap captures and not the reverse magic number<br />
<br />
*Increase the parsing speed <br />
The parser keeps chekcking for the magic number even if it was already found. This results in additional cpu usage. <br />
It should be possible to change the parser and add a forward mode to it so it just forwards all data after the magic number was found. This could increase the speed of the parser significantly. <br />
<br />
*Evaluate the parser if it is able to process a lot of data. <br />
Currently we just used the parser to process the traffic created by loading a homepage. We did not monitor the traffic of a huge download yet. <br />
<br />
*Excluding the ssh traffic in ''wireshark'' when monitoring the traffic on the beaglebone.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=299738ECE497 Project WireShark2013-11-11T20:59:19Z<p>Parasby: Updated Work Breakdown</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
'''''Major Tasks:'''''<br />
* Try to compile ''wireshark'' on the beaglebone - Manuel Stephan<br />
* Try to crosscompi ''wireshark'' via the host - Ben Paras<br />
* Consulted Patrick Vogelaar for ''wireshark'' usability - Manuel Stephan and Ben Paras<br />
* Formulate new method to monitor traffic on the beaglebone - Manuel Stephan and Ben Paras<br />
* Evaluate new method and determine what needs to be done for it to work - Manuel Stephan and Ben Paras<br />
* Figure out how to interface ''tcpdump'' and ''wireshark'' using ''named pipes'' - Ben Paras<br />
* Learn about ''.pcap'' format and how to parse it - Manuel Stephan <br />
* Write the ''wireparser'' to filter out the captures - Manuel Stephan<br />
* Test out the ''wiresparser'' by using gHex and whether or not it parsed correct and incorret .pcap formats. -Ben Paras <br />
* Clean up and separate ''wiresparser'' into components and create a Makefile for it - Ben Paras<br />
* Write '''capture.sh''' - Manuel Stephan <br />
* Test '''capture.sh''' - Ben Paras<br />
* Documentation 1 (Executive Summary, Theory of Operation, Future Work) - Manuel Stephan <br />
* Documentation 2 (Installation Instructions, User Instructions, Work Breakdown) - Ben Paras<br />
* Take a youtube demo video and upload - Manuel Stephan and Ben Paras<br />
* Documentation 3 (Highlights and Conclusions) - Manuel Stephan and Ben Paras<br />
<br />
The timeline below shows the tasks and major milestones and when they were accomplished: <br />
[[File:timeline.png|200px|framed|center|Timeline showing tasks and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=299732ECE497 Project WireShark2013-11-11T20:40:46Z<p>Parasby: Finished editing Theory of Operation</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it, and write it to ''/tmp/myfifo1'' from which ''wireshark'' will read from<br />
<br />
'''6)''' Any data through ''tcpdump'' should appear in the ''wireshark'' graphical interface<br />
<br />
'''7)''' Once finished with capture, '''CTRL+C''' to stop everything (''wireshark'' , ''wireparser'', and ''tcpdump'')<br />
<br />
All these steps are done in the '''capture.sh''' script that was made. See the graphic below for a visualization of the how the programs interact:<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
The graphic above represents what occurs in the whole process and is explained as follows:<br />
<br />
'''1)''' The packets captured by ''tcpdump'' on the beaglebone from the specified interfaced interface are forwarded over ssh to the 1st FIFO on the host computer<br />
<br />
'''2)''' The ''wireparser'' reads from the 1st FIFO and looks for the magic number ''0xa1b2c3d4''<br />
<br />
'''3)''' Everything before the magic number is filtered out and the rest of the data (including the magic number) is passed to the 2nd FIFO<br />
<br />
'''4)''' The 2nd FIFO now contains only data in the ''.pcacp'' format from which ''wireshark'' will read from <br />
<br />
'''5)''' Now ''wireshark'' has all the traffic data from the beaglebone and can now be analyzed using the GUI provided<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=299198ECE497 Project WireShark2013-11-08T20:21:28Z<p>Parasby: Added to Theory of Operation. Incomplete right now</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. The following is the file format of .pcacp files (courtesy of wiki.wireshark.org):<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
This format is supported by both ''wireshark'' and ''tcpdump''. The Global Header has a magic number that you need to look for in order to parse the traffic. <br />
typedef struct pcap_hdr_s {<br />
guint32 magic_number; /* magic number */<br />
guint16 version_major; /* major version number */<br />
guint16 version_minor; /* minor version number */<br />
gint32 thiszone; /* GMT to local correction */<br />
guint32 sigfigs; /* accuracy of timestamps */<br />
guint32 snaplen; /* max length of captured packets, in octets */<br />
guint32 network; /* data link type */<br />
} pcap_hdr_t;<br />
<br />
The magic number ( ''0xa1b2c3d4'' (identical) or ''0xd4c3b2a1'' (swapped) ) is always located at the beginning at the global header. <br />
<br />
<br />
* ''wireparser'' - This is a c++ program that looks for the magic number and throws away everything before the magic number. After if finds the magic number, the rest of the data is passed through. <br />
<br />
<br />
'''''Operation workflow:'''''<br />
<br />
'''1)''' Check for existing FIFOs and delete them if they do exist - existing FIFOs may have junk information <br />
<br />
'''2)''' Create 2 FIFOs in ''/tmp'' - ''myfifo0'' and ''myfifo1''<br />
<br />
'''3)''' Start ''tcpdump'' in the background on the beaglebone with the parameters to use pcap format, <br />
listen to a specified interface (usb0 or eht0), and then pipe it to ''/tmp/myfifo0''<br />
<br />
'''4)''' Start ''wireshark'' in the background on the host with the parameters to start the capture immediately, capture the interface (''/tmp/myfifo1'') <br />
<br />
'''5)''' Start the wireparser which will read from ''/tmp/myfifo0'' , filter it out, and write it to ''/tmp/myfifo1''. <br />
<br />
'''6)''' TO BE CONTINUED.....<br />
<br />
<br />
<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=File:PcapFormat.png&diff=299192File:PcapFormat.png2013-11-08T19:59:50Z<p>Parasby: </p>
<hr />
<div></div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=299186ECE497 Project WireShark2013-11-08T19:59:27Z<p>Parasby: /* Theory of Operation */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
'''''Components:'''''<br />
* ''[http://en.wikipedia.org/wiki/Named_pipe Named pipes]'' - These are basically [http://en.wikipedia.org/wiki/FIFO FIFO]s. Many processes can share data through the named pipe. <br />
<br />
* ''[http://www.tcpdump.org/ tcpdump]'' - A powerful commandline packet analyzer. It is very efficient to use on embedded systems due to its efficiency. The beaglebone also comes with this already installed. It is possible to forward tcpdump traffic over ssh. <br />
<br />
* ''[http://www.wireshark.org/ wireshark]'' - A packet analysis tool that comes with a GUI. This is very resource-consuming so it is not ideal to use this on an embedded system. The captures from wireshark also take up a lot of space so its a good idea to be running wireshark on a more powerful system such as your host computer. <br />
<br />
* ''[http://wiki.wireshark.org/Development/LibpcapFileFormat .pcap] '' - These are packet capture files. <br />
<br />
[[File:pcapFormat.png|framed|center|.pcacp file format.|100px]]<br />
<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298808ECE497 Project WireShark2013-11-07T19:34:40Z<p>Parasby: Minor addition to Highlights</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Things we can do:<br />
* Monitor traffic on the beagle though the USB cable to the host using Wireshark<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298550ECE497 Project WireShark2013-11-06T21:04:27Z<p>Parasby: minor update to user instructions</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. It should take a few seconds. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298544ECE497 Project WireShark2013-11-06T21:02:13Z<p>Parasby: Added information on user instructions</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit http://www.wireshark.org/docs for more tutorials on Wireshark.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=File:WiresharkBeagle.png&diff=298538File:WiresharkBeagle.png2013-11-06T21:00:45Z<p>Parasby: Parasby uploaded a new version of &quot;File:WiresharkBeagle.png&quot;</p>
<hr />
<div>Wireshark after seeing packets from the beaglebone</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298532ECE497 Project WireShark2013-11-06T21:00:23Z<p>Parasby: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. After that,<br />
follow this one step to get everything running. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
Now you can connect anything to either the usb0 or eth0 port of the beaglebone and monitor the traffic. <br />
<br />
For more information check out this youtube video tutorial on Wireshark:<br />
http://www.youtube.com/watch?v=UFAA_7lpkTE<br />
<br />
or visit www.wireshark.org/docs for more tutorials on wireshark.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=File:WiresharkBeagle.png&diff=298526File:WiresharkBeagle.png2013-11-06T20:53:56Z<p>Parasby: Wireshark after seeing packets from the beaglebone</p>
<hr />
<div>Wireshark after seeing packets from the beaglebone</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298520ECE497 Project WireShark2013-11-06T20:53:27Z<p>Parasby: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. Once they arrive, you should see something like this:<br />
<br />
[[File:WiresharkBeagle.png|framed|center|Wireshark once it sees packets.|100px]]<br />
<br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=File:Wiresharkempty.png&diff=298514File:Wiresharkempty.png2013-11-06T20:47:18Z<p>Parasby: Wireshark right as you open it</p>
<hr />
<div>Wireshark right as you open it</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298508ECE497 Project WireShark2013-11-06T20:46:46Z<p>Parasby: </p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
If you haven't already previously, make sure you run '''make''' in the eLinuxProject git directory<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
Now run the capture.sh script:<br />
'''./capture.sh eth0''' or '''./capture.sh usb0''' <br />
Capturing from eth0<br />
wireshark is installed on your system.<br />
mkfifo /tmp/myfifo0 was created .. <br />
mkfifo /tmp/myfifo1 was created .. <br />
Starting tcpdump ...<br />
Tcpdump running ...<br />
Starting wireshark ... <br />
Wireshark running ... <br />
Starting wireparser ... <br />
tcpdump: WARNING: eth0: no IPv4 address assigned<br />
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes<br />
<br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
This runs the script that sets up and runs everything. After this script is ran, wireshark should open up:<br />
<br />
<br />
[[File:Wiresharkempty.png|framed|center|Wireshark upon opening.|100px]]<br />
<br />
Now connect to the beaglebone's ethernet port and wait for the packets to arrive. Once they arrive, you should see something like this:<br />
<br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298502ECE497 Project WireShark2013-11-06T20:06:20Z<p>Parasby: Updated the page with ssh-id setup</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now you need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
If it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
It should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now you need an ssh-id on the beaglebone so you can log onto it without typing a password. The script that sets up and runs program needs it to work. Otherwise the process of typing in a password interferes with it. <br />
<br />
First do a '''ssh-keygen''':<br />
'''ssh-keygen'''<br />
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/home/bp/.ssh/id_rsa): wire <br />
Enter passphrase (empty for no passphrase): <br />
Enter same passphrase again: <br />
Your identification has been saved in wire.<br />
Your public key has been saved in wire.pub.<br />
The key fingerprint is:<br />
99:e4:9d:14:af:ec:e7:e7:39:9a:4d:e2:3c:31:16:ba bp@bp-HP-EliteBook-8530w<br />
The key's randomart image is:<br />
+--[ RSA 2048]----+<br />
| . |<br />
| o |<br />
| . . . |<br />
| o * o. |<br />
| S =. . |<br />
| .. + |<br />
| .ooo. |<br />
| E=.=o. |<br />
| *=+. |<br />
+-----------------+<br />
<br />
You should get something similar to above. Now copy the key to the beaglebone:<br />
'''ssh-copy-id root@192.168.7.2'''<br />
Now try logging into the machine, with "ssh 'root@192.168.7.2'", and check in:<br />
~/.ssh/authorized_keys<br />
to make sure we haven't added extra keys that you weren't expecting.<br />
<br />
From here just type '''exit'''<br />
<br />
Now everything is prepared for the actual operation. See User Instructions in the next section to learn how to do a live capture on the beaglebone via the host and wireshark. <br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
'''sudo ./capture.sh eth0''' or '''sudo ./capture.sh usb0''' <br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298496ECE497 Project WireShark2013-11-06T19:48:38Z<p>Parasby: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now we need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
if it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
it should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now everything is prepared for the actual operation. Run the '''capture.sh''' script to set up<br />
for capture:<br />
'''sudo ./capture.sh''' <br />
<br />
The script should set up everything for proper operation.<br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
<br />
== User Instructions ==<br />
Before you start, make sure the beaglebone is connected via USB to your host computer. <br />
<br />
====1) Run capture.sh (eth0 or usb0)====<br />
'''sudo ./capture.sh eth0''' or '''sudo ./capture.sh usb0''' <br />
'''capture.sh''' takes in an interface parameter (eth0 or usb0) according to what part of the beagle bone you are watching<br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298490ECE497 Project WireShark2013-11-06T19:29:55Z<p>Parasby: minior typo edit on 'which tcpdump'</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now we need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump''' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
if it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
it should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now everything is prepared for the actual operation. Run the '''capture.sh''' script to set up<br />
for capture:<br />
'''sudo ./capture.sh''' <br />
<br />
The script should set up everything for proper operation.<br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
<br />
== User Instructions ==<br />
Now the graphical interface of wireshark should pop up and you sholuld see the traffic flowing through the network of the beagle. .... <br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298484ECE497 Project WireShark2013-11-06T18:33:56Z<p>Parasby: Installation Instructions makeover. Updated information and formatted for ease of reading</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugration and Setup:''''' <br />
<br />
Now we need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump'' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
if it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
it should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now everything is prepared for the actual operation. Run the '''capture.sh''' script to set up<br />
for capture:<br />
'''sudo ./capture.sh''' <br />
<br />
The script should set up everything for proper operation.<br />
<br />
Here is a link to the github page from where the '''git clone''' operation above is running on:<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
<br />
== User Instructions ==<br />
Now the graphical interface of wireshark should pop up and you sholuld see the traffic flowing through the network of the beagle. .... <br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=298478ECE497 Project WireShark2013-11-06T18:29:20Z<p>Parasby: /* Prerequisites */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
'''''Hardware requirements:''''' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
'''''Software requirements:'''''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
'''sudo apt-get install wireshark'''<br />
'''sudo apt-get install g++'''<br />
'''sudo apt-get install make'''<br />
<br />
'''''Getting the sources:''''' <br />
<br />
Do a '''git clone''' on our repository to get all the sources you need and do an '''ls''' to see them:<br />
<br />
'''git clone git@github.com:manuelstephan/eLinuxProject.git''' <br />
'''ls'''<br />
confused.pcap Makefile ooP.cpp README.md wireparser.cpp<br />
main.cpp Makefile~ original.pcap run.sh wireparser.hpp<br />
<br />
You should have a matching directory from above, if not, do a '''git pull'''<br />
<br />
To build the binary of the wireparser you just have to type '''make'''. No additional configuration is required. <br />
<br />
'''make'''<br />
g++ -c wireparser.cpp<br />
g++ -c main.cpp<br />
g++ -o wireparser wireparser.o main.o<br />
<br />
'''''Confiugrations:''''' <br />
<br />
Now we need '''tcpdump''' so ssh to your beaglebone and check if tcpdump is installed:<br />
'''ssh root@192.168.7.2'''<br />
'''which tcpdump'' <br />
/usr/sbin/tcpdump<br />
<br />
Make sure '''tcpdump''' exists and is configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
if it isn't installed, install it: <br />
'''opkg install tcpdump'''<br />
it should automatically configured to the path: ''/usr/sbin/tcpdump''<br />
<br />
Now everything is prepared for the actual operation. Run the '''capture.sh''' script to set up<br />
for capture:<br />
'''sudo ./capture.sh to set everything up''' <br />
<br />
The run script sets up everything for correct operation.<br />
<br />
<br />
<br />
now continue with user instructions.<br />
<br />
[https://github.com/manuelstephan/eLinuxProject https://github.com/manuelstephan/eLinuxProject]<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for you code.<br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
Now the graphical interface of wireshark should pop up and you sholuld see the traffic flowing through the network of the beagle. .... <br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=297986ECE497 Project WireShark2013-11-05T19:59:06Z<p>Parasby: /* Prerequisites */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
''Hardware requirements:'' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
''Software requirements:''<br />
* Wireshark <br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install wireshark'''<br />
|-<br />
|}<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install g++'''<br />
|-<br />
|}<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install make'''<br />
|-<br />
|}<br />
<br />
Getting the sources: <br />
<br />
do a git clone on our repository to get all the sources you need <br />
<br />
To build the binary of the wireparser you just have to type make. No additional configuration is required. <br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''make'''<br />
|-<br />
|}<br />
<br />
If you do a ls on your directory you should have following files in there. <br />
Now it is time to set up the beaglebone black for further ...<br />
<br />
ssh to your beaglebone and check if tcpdump is installed <br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''ssh root@192.168.7.2''' <br />
|-<br />
|}<br />
<br />
if not install it <br />
<br />
do this ssh identities ... <br />
<br />
Now everything is prepared for the actual operation. <br />
You can now type <br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo ./run.sh to set everything up''' <br />
|-<br />
|}<br />
<br />
The run script sets up everything for correct operation ... <br />
now continue with user instructions.<br />
<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for you code.<br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
Now the graphical interface of wireshark should pop up and you sholuld see the traffic flowing through the network of the beagle. .... <br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=297980ECE497 Project WireShark2013-11-05T19:58:52Z<p>Parasby: /* Prerequisites */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
''Hardware requirements:'' <br />
*Beagle Bone Black <br />
*Linux host computer running Ubuntu 12.04 LTS or later<br />
*USB cable <br />
*Ethernet Cable<br />
<br />
''Software requirements:''<br />
* Wireshark i<br />
* The g++ compiler <br />
* Make <br />
If you do not have these, you can get them with these commands: <br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install wireshark'''<br />
|-<br />
|}<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install g++'''<br />
|-<br />
|}<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install make'''<br />
|-<br />
|}<br />
<br />
Getting the sources: <br />
<br />
do a git clone on our repository to get all the sources you need <br />
<br />
To build the binary of the wireparser you just have to type make. No additional configuration is required. <br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''make'''<br />
|-<br />
|}<br />
<br />
If you do a ls on your directory you should have following files in there. <br />
Now it is time to set up the beaglebone black for further ...<br />
<br />
ssh to your beaglebone and check if tcpdump is installed <br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''ssh root@192.168.7.2''' <br />
|-<br />
|}<br />
<br />
if not install it <br />
<br />
do this ssh identities ... <br />
<br />
Now everything is prepared for the actual operation. <br />
You can now type <br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo ./run.sh to set everything up''' <br />
|-<br />
|}<br />
<br />
The run script sets up everything for correct operation ... <br />
now continue with user instructions.<br />
<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for you code.<br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
Now the graphical interface of wireshark should pop up and you sholuld see the traffic flowing through the network of the beagle. .... <br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=297974ECE497 Project WireShark2013-11-05T19:48:00Z<p>Parasby: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
As it was a problem to get wireshark compiled on the beaglebone after some skype sessions with Patrick Vogelaar, Graduate student in Advanced Communications at Napier in Edinburgh we thought of the problem in a different way. Instead of porting ressource consuming wireshark to the beaglebone we use tcpdump on the bone to just monitor the traffic. The traffic is tehn piped through ssh to the host computer and then analyzed by wireshark. So we get use the full capability of wireshark on a host computer and use lean tcpdump on the beaglebone. <br />
<br />
<br />
== Installation Instructions ==<br />
<br />
=== Prerequisites ===<br />
Hardware requirements: <br />
Beagle Bone Black <br />
Linux host computer, we used Ubuntu 12.04 LTS<br />
USB cable <br />
Ethernet Cable<br />
<br />
Software requirements:<br />
Wireshark installed on your host computer <br />
If you do not have wireshark get it with: <br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install wireshark'''<br />
|-<br />
|}<br />
<br />
The g++ compiler. It is a C++ compiler that is required for our wireparser that is written in C++. <br />
If you do not have it, you can get it with:<br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install g++'''<br />
|-<br />
|}<br />
<br />
Make is required. It creates the makefile that compiles and links the neccessary files to create a binary out of our source. <br />
If you do not have it, you can get it with: <br />
<br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo apt-get install make'''<br />
|-<br />
|}<br />
<br />
Getting the sources: <br />
<br />
do a git clone on our repository to get all the sources you need <br />
<br />
To build the binary of the wireparser you just have to type make. No additional configuration is required. <br />
<br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''make'''<br />
|-<br />
|}<br />
<br />
If you do a ls on your directory you should have following files in there. <br />
Now it is time to set up the beaglebone black for further ...<br />
<br />
ssh to your beaglebone and check if tcpdump is installed <br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''ssh root@192.168.7.2''' <br />
|-<br />
|}<br />
<br />
if not install it <br />
<br />
do this ssh identities ... <br />
<br />
Now everything is prepared for the actual operation. <br />
You can now type <br />
{| style="color:green; background-color:CDCDCD;" cellpadding="10" cellspacing="0" border="1"<br />
|-<br />
|'''sudo ./run.sh to set everything up''' <br />
|-<br />
|}<br />
<br />
The run script sets up everything for correct operation ... <br />
now continue with user instructions.<br />
<br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for you code.<br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
Now the graphical interface of wireshark should pop up and you sholuld see the traffic flowing through the network of the beagle. .... <br />
<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
<br />
[[File:SystemOverview.png|framed|center|Overview of the System.|100px]]<br />
<br />
This part is currently under construction ... so the information provided is not jet finalized ... <br />
<br />
The beaglebone black is attached to ethernet. Tcpdump is running on the beaglebone in a special mode and listens to eth0.<br />
The beaglebone is connected with a host via ssh over the usb interface. All data captured by tcpdump is forwarded over ssh to the host computer. The host computer provides 2 named pipes so called fifos. All the ssh traffic is piped to the first fifo. The wireparser reads out of the fifo and filters non pcap stuff out. Then the filtered packages are piper to fifo2. Wireshark is started in a special mode to read out of fifo 2 and provides a graphical interface for analysis of the packets. <br />
<br />
No matter that we are using very low ressource consuming tcpdump on the beaglebone we do have the capability for live captures and analysis of the networktraffic.<br />
<br />
== Work Breakdown ==<br />
<br />
Job to do: <br />
Get wireshark running on the beagelbone black. <br />
<br />
<br />
Requirements Specification<br />
<br />
The user shall be able to monitor tcp/ip traffic on the beaglebone black.<br />
The user shall be able to use wiresharks large capabilities to filter and analyze datapackets.<br />
<br />
The user should be able to use a graphical interface. <br />
<br />
<br />
Major tasks:<br />
Evaluation of the portability of wireshark to the beaglebone black. <br />
<br />
Cross compile approach.<br />
<br />
Thinking of the problem in a different way. Evaluating if the traffic can be monitored in a other way. <br />
<br />
Find out how to filter out ssh relikts.<br />
<br />
Writing the parser. <br />
<br />
Testing the parser. <br />
<br />
Find out how named pipes work.<br />
Putting it all together<br />
Write a makefile to compile the sources. <br />
<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
<br />
[[File:timeline.png|200px|framed|center|Timeline and major milestones of the project.]]<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
<br />
== Special Thanks to: ==<br />
<br />
B.Eng Patrick Vogelaar, Graduate Student in Advanced Communications at Napier University in Edinburgh for giving us the idea to use named pipes and our current setup to solve this problem. <br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_23_Configuring_the_Kernel&diff=293300EBC Exercise 23 Configuring the Kernel2013-10-21T19:11:26Z<p>Parasby: Fixed path from linux-dev to linux-dev/tools and edited links with Dr. Yoder</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:BeagleBoard]]<br />
{{YoderHead}}<br />
{{EBC3.8}}These instructions are for the 3.8 kernel. See [[EBC Exercise 23 Configuring the Kernel - bitbake]] for the 3.2 kernel.<br />
<br />
In a previous exercises ([[EBC Exercise 08a Cross-Compiling]] and [[EBC Exercise 08 Installing Development Tools]]) you learned how to get and compile the kernel. Here we'll look at configuring it.<br />
<br />
== Finding the kernel sources ==<br />
<br />
First set up the environment and go to the kernel directory<br />
<br />
host$ '''source ~/crossCompileEnv.sh''' (set up in [[EBC Exercise 08a Cross-Compiling]])<br />
host$ '''cd ~/BeagleBoard/linux-dev/KERNEL'''<br />
<br />
== Getting kernel make help ==<br />
Once there try some of the make commands. Help is a good place to start.<br />
<br />
host$ '''make help | less'''<br />
Cleaning targets:<br />
clean - Remove most generated files but keep the config and<br />
enough build support to build external modules<br />
mrproper - Remove all generated files + config + various backup files<br />
distclean - mrproper + remove editor backup and patch files<br />
<br />
Configuration targets:<br />
config - Update current config utilising a line-oriented program<br />
menuconfig - Update current config utilising a menu based program<br />
xconfig - Update current config utilising a QT based front-end<br />
gconfig - Update current config utilising a GTK based front-end<br />
...<br />
This produces a list of common make targets. <br />
<br />
== Finding and installing support software ==<br />
<br />
There are several ways to configure the kernel. '''make config''' will prompt you line-by-line for each of the settings, very tedious, not recommended. Try<br />
<br />
host$ '''make menuconfig'''<br />
*** Unable to find the ncurses libraries or the<br />
*** required header files.<br />
*** 'make menuconfig' requires the ncurses libraries.<br />
*** <br />
*** Install ncurses (ncurses-devel) and try again.<br />
*** <br />
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1<br />
make: *** [menuconfig] Error 2<br />
If you get the error above, you need to install the ncurses library. [[ECE497_Tips_and_Tricks#On_the_host | Here]] are notes on how to discover what to install and installing it.<br />
<br />
NOTE FOR UBUNTU USERS: 'sudo apt-get install libncurses5-dev' without quotes will install ncurses<br />
<br />
== Configuring the kernel ==<br />
<br />
Try the various interfaces for configuring the kernel.<br />
<br />
host$ '''make menuconfig'''<br />
host$ '''make xconfig'''<br />
host$ '''make gconfig'''<br />
<br />
I had to run the following to get these to work.<br />
host$ '''sudo apt-get install libncurses5-dev'''<br />
host$ '''sudo apt-get install qt3-dev-tools'''<br />
host$ '''sudo apt-get install libglade2-dev'''<br />
<br />
== Making and Installing the kernel ==<br />
Once you have the kernel configured it's easy to make and install it on the bone.<br />
host$ '''cd linux-dev'''<br />
host$ '''tools/rebuild.sh'''<br />
'''rebuild.sh''' sets up some things and the does a make on the kernel. It handles things like using the right cross compiler and the right number of cores. You'll be given a chance to configure, you can exit without saving if you don't want to change anything.<br />
<br />
After a while (depending on the number of cores) you will see.<br />
<br />
CHK include/generated/uapi/linux/version.h<br />
CHK include/generated/utsrelease.h<br />
make[1]: `include/generated/mach-types.h' is up to date.<br />
CALL scripts/checksyscalls.sh<br />
...<br />
LD [M] sound/usb/caiaq/snd-usb-caiaq.ko<br />
LD [M] sound/usb/misc/snd-ua101.ko<br />
LD [M] sound/usb/snd-usb-audio.ko<br />
LD [M] sound/usb/snd-usbmidi-lib.ko<br />
<br />
Now you are ready to install. Have your Bone running and on the network. On your host run:<br />
host$ '''cd linux-dev/tools'''<br />
host$ '''ln -s ''path to exercises''/kernel/beagle_install_kernel.sh .'''<br />
host$ '''ln -s ''path to exercises''/kernel/remote_install_kernel.sh .'''<br />
<br />
This will link two files from the git repository to files of the same name in the tools directory. Edit '''remote_install_kernel.sh''' and change '''BeagleAddr''' to the address of your beagle. Then run from '''linux-dev'''<br />
host$ '''tools/remote_install_kernel.sh'''<br />
Image Name: 3.8.13-bone26.1<br />
Created: Tue Sep 3 13:33:35 2013<br />
Image Type: ARM Linux Kernel Image (uncompressed)<br />
Data Size: 3340904 Bytes = 3262.60 kB = 3.19 MB<br />
Load Address: 80008000<br />
Entry Point: 80008000<br />
utsrelease.h 100% 38 0.0KB/s 00:00 <br />
beagle_install_kernel.sh 100% 3043 3.0KB/s 00:00 <br />
version.sh 100% 915 0.9KB/s 00:00 <br />
system.sh 100% 1446 1.4KB/s 00:00 <br />
3.8.13-bone26.1.config 100% 107KB 106.5KB/s 00:00 <br />
uImage-3.8.13-bone26.1 100% 3263KB 1.6MB/s 00:02 <br />
3.8.13-bone26.1-firmware.tar.gz 100% 1198KB 1.2MB/s 00:00 <br />
3.8.13-bone26.1-dtbs.tar.gz 100% 33KB 32.7KB/s 00:00 <br />
3.8.13-bone26.1.zImage 100% 3263KB 1.1MB/s 00:03 <br />
3.8.13-bone26.1-modules.tar.gz 100% 11MB 5.7MB/s 00:02 <br />
(If you get mkimage not found try running apt-get install uboot-mkimage)<br />
<br />
<br />
This copies several files to your Bone. Then, on the Bone run:<br />
beagle$ '''cd linux-dev'''<br />
beagle$ '''tools/beagle_install_kernel.sh'''<br />
No manual entry for git-pull<br />
Installing 3.8.13-bone26.1-modules.tar.gz<br />
Installing 3.8.13-bone26.1-firmware.tar.gz<br />
`/home/root/linux-dev/deploy/tmp/BB-ADC-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/BB-ADC-00A0.dtbo'<br />
...<br />
`/home/root/linux-dev/deploy/tmp/cape-bone-weather-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-bone-weather-00A0.dtbo'<br />
`/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmi-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmi-00A0.dtbo'<br />
`/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmin-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmin-00A0.dtbo'<br />
<br />
This uncompresses and installs the modules and firmware. You are now ready to reboot.<br />
beagle$ '''reboot'''<br />
<br />
If you Bone boots up and you can reconnect to it, you can verify that you are running the new kernel by running:<br />
beagle$ '''uname -a'''<br />
<br />
== Recovering ==<br />
If your Beagle fails to boot, follow the [[EBC_Exercise_22_Recovering]] instructions to recover.<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_23_Configuring_the_Kernel&diff=292832EBC Exercise 23 Configuring the Kernel2013-10-18T15:45:20Z<p>Parasby: Edited minor typo ( beagle_install.sh --> beagle_install_kernel.sh</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:BeagleBoard]]<br />
{{YoderHead}}<br />
{{EBC3.8}}These instructions are for the 3.8 kernel. See [[EBC Exercise 23 Configuring the Kernel - bitbake]] for the 3.2 kernel.<br />
<br />
In a previous exercises ([[EBC Exercise 08a Cross-Compiling]] and [[EBC Exercise 08 Installing Development Tools]]) you learned how to get and compile the kernel. Here we'll look at configuring it.<br />
<br />
== Finding the kernel sources ==<br />
<br />
First set up the environment and go to the kernel directory<br />
<br />
host$ '''source ~/crossCompileEnv.sh''' (set up in [[EBC Exercise 08a Cross-Compiling]])<br />
host$ '''cd ~/BeagleBoard/linux-dev/KERNEL'''<br />
<br />
== Getting kernel make help ==<br />
Once there try some of the make commands. Help is a good place to start.<br />
<br />
host$ '''make help | less'''<br />
Cleaning targets:<br />
clean - Remove most generated files but keep the config and<br />
enough build support to build external modules<br />
mrproper - Remove all generated files + config + various backup files<br />
distclean - mrproper + remove editor backup and patch files<br />
<br />
Configuration targets:<br />
config - Update current config utilising a line-oriented program<br />
menuconfig - Update current config utilising a menu based program<br />
xconfig - Update current config utilising a QT based front-end<br />
gconfig - Update current config utilising a GTK based front-end<br />
...<br />
This produces a list of common make targets. <br />
<br />
== Finding and installing support software ==<br />
<br />
There are several ways to configure the kernel. '''make config''' will prompt you line-by-line for each of the settings, very tedious, not recommended. Try<br />
<br />
host$ '''make menuconfig'''<br />
*** Unable to find the ncurses libraries or the<br />
*** required header files.<br />
*** 'make menuconfig' requires the ncurses libraries.<br />
*** <br />
*** Install ncurses (ncurses-devel) and try again.<br />
*** <br />
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1<br />
make: *** [menuconfig] Error 2<br />
If you get the error above, you need to install the ncurses library. [[ECE497_Tips_and_Tricks#On_the_host | Here]] are notes on how to discover what to install and installing it.<br />
<br />
NOTE FOR UBUNTU USERS: 'sudo apt-get install libncurses5-dev' without quotes will install ncurses<br />
<br />
== Configuring the kernel ==<br />
<br />
Try the various interfaces for configuring the kernel.<br />
<br />
host$ '''make menuconfig'''<br />
host$ '''make xconfig'''<br />
host$ '''make gconfig'''<br />
<br />
I had to run the following to get these to work.<br />
host$ '''sudo apt-get install libncurses5-dev'''<br />
host$ '''sudo apt-get install qt3-dev-tools'''<br />
host$ '''sudo apt-get install libglade2-dev'''<br />
<br />
== Making and Installing the kernel ==<br />
Once you have the kernel configured it's easy to make and install it on the bone.<br />
host$ '''cd linux-dev'''<br />
host$ '''tools/rebuild.sh'''<br />
'''rebuild.sh''' sets up some things and the does a make on the kernel. It handles things like using the right cross compiler and the right number of cores. You'll be given a chance to configure, you can exit without saving if you don't want to change anything.<br />
<br />
After a while (depending on the number of cores) you will see.<br />
<br />
CHK include/generated/uapi/linux/version.h<br />
CHK include/generated/utsrelease.h<br />
make[1]: `include/generated/mach-types.h' is up to date.<br />
CALL scripts/checksyscalls.sh<br />
...<br />
LD [M] sound/usb/caiaq/snd-usb-caiaq.ko<br />
LD [M] sound/usb/misc/snd-ua101.ko<br />
LD [M] sound/usb/snd-usb-audio.ko<br />
LD [M] sound/usb/snd-usbmidi-lib.ko<br />
<br />
Now you are ready to install. Have your Bone running and on the network. On your host run:<br />
host$ '''cd linux-dev/tools'''<br />
host$ '''ln -s ../../kernel/beagle_install_kernel.sh ../../kernel/remote_install_kernel.sh .'''<br />
<br />
This will link in two files from the git repository that we'll use. Edit '''remote_install_kernel.sh''' and change '''BeagleAddr''' to the address of your beagle. Then run:<br />
host$ '''./remote_install_kernel.sh'''<br />
Image Name: 3.8.13-bone26.1<br />
Created: Tue Sep 3 13:33:35 2013<br />
Image Type: ARM Linux Kernel Image (uncompressed)<br />
Data Size: 3340904 Bytes = 3262.60 kB = 3.19 MB<br />
Load Address: 80008000<br />
Entry Point: 80008000<br />
utsrelease.h 100% 38 0.0KB/s 00:00 <br />
beagle_install_kernel.sh 100% 3043 3.0KB/s 00:00 <br />
version.sh 100% 915 0.9KB/s 00:00 <br />
system.sh 100% 1446 1.4KB/s 00:00 <br />
3.8.13-bone26.1.config 100% 107KB 106.5KB/s 00:00 <br />
uImage-3.8.13-bone26.1 100% 3263KB 1.6MB/s 00:02 <br />
3.8.13-bone26.1-firmware.tar.gz 100% 1198KB 1.2MB/s 00:00 <br />
3.8.13-bone26.1-dtbs.tar.gz 100% 33KB 32.7KB/s 00:00 <br />
3.8.13-bone26.1.zImage 100% 3263KB 1.1MB/s 00:03 <br />
3.8.13-bone26.1-modules.tar.gz 100% 11MB 5.7MB/s 00:02 <br />
<br />
This copies several files to your Bone. Then, on the Bone run:<br />
beagle$ '''cd linux-dev'''<br />
beagle$ '''tools/beagle_install_kernel.sh'''<br />
No manual entry for git-pull<br />
Installing 3.8.13-bone26.1-modules.tar.gz<br />
Installing 3.8.13-bone26.1-firmware.tar.gz<br />
`/home/root/linux-dev/deploy/tmp/BB-ADC-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/BB-ADC-00A0.dtbo'<br />
...<br />
`/home/root/linux-dev/deploy/tmp/cape-bone-weather-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-bone-weather-00A0.dtbo'<br />
`/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmi-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmi-00A0.dtbo'<br />
`/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmin-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmin-00A0.dtbo'<br />
<br />
This uncompresses and installs the modules and firmware. You are now ready to reboot.<br />
beagle$ '''reboot'''<br />
<br />
If you Bone boots up and you can reconnect to it, you can verify that you are running the new kernel by running:<br />
beagle$ '''uname -a'''<br />
<br />
== Recovering ==<br />
If your Beagle fails to boot, follow the [[EBC_Exercise_22_Recovering]] instructions to recover.<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_23_Configuring_the_Kernel&diff=292826EBC Exercise 23 Configuring the Kernel2013-10-18T15:44:14Z<p>Parasby: Fixed path for linking beagle_install_kernel.sh and remote_install_kernel.sh</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:BeagleBoard]]<br />
{{YoderHead}}<br />
{{EBC3.8}}These instructions are for the 3.8 kernel. See [[EBC Exercise 23 Configuring the Kernel - bitbake]] for the 3.2 kernel.<br />
<br />
In a previous exercises ([[EBC Exercise 08a Cross-Compiling]] and [[EBC Exercise 08 Installing Development Tools]]) you learned how to get and compile the kernel. Here we'll look at configuring it.<br />
<br />
== Finding the kernel sources ==<br />
<br />
First set up the environment and go to the kernel directory<br />
<br />
host$ '''source ~/crossCompileEnv.sh''' (set up in [[EBC Exercise 08a Cross-Compiling]])<br />
host$ '''cd ~/BeagleBoard/linux-dev/KERNEL'''<br />
<br />
== Getting kernel make help ==<br />
Once there try some of the make commands. Help is a good place to start.<br />
<br />
host$ '''make help | less'''<br />
Cleaning targets:<br />
clean - Remove most generated files but keep the config and<br />
enough build support to build external modules<br />
mrproper - Remove all generated files + config + various backup files<br />
distclean - mrproper + remove editor backup and patch files<br />
<br />
Configuration targets:<br />
config - Update current config utilising a line-oriented program<br />
menuconfig - Update current config utilising a menu based program<br />
xconfig - Update current config utilising a QT based front-end<br />
gconfig - Update current config utilising a GTK based front-end<br />
...<br />
This produces a list of common make targets. <br />
<br />
== Finding and installing support software ==<br />
<br />
There are several ways to configure the kernel. '''make config''' will prompt you line-by-line for each of the settings, very tedious, not recommended. Try<br />
<br />
host$ '''make menuconfig'''<br />
*** Unable to find the ncurses libraries or the<br />
*** required header files.<br />
*** 'make menuconfig' requires the ncurses libraries.<br />
*** <br />
*** Install ncurses (ncurses-devel) and try again.<br />
*** <br />
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1<br />
make: *** [menuconfig] Error 2<br />
If you get the error above, you need to install the ncurses library. [[ECE497_Tips_and_Tricks#On_the_host | Here]] are notes on how to discover what to install and installing it.<br />
<br />
NOTE FOR UBUNTU USERS: 'sudo apt-get install libncurses5-dev' without quotes will install ncurses<br />
<br />
== Configuring the kernel ==<br />
<br />
Try the various interfaces for configuring the kernel.<br />
<br />
host$ '''make menuconfig'''<br />
host$ '''make xconfig'''<br />
host$ '''make gconfig'''<br />
<br />
I had to run the following to get these to work.<br />
host$ '''sudo apt-get install libncurses5-dev'''<br />
host$ '''sudo apt-get install qt3-dev-tools'''<br />
host$ '''sudo apt-get install libglade2-dev'''<br />
<br />
== Making and Installing the kernel ==<br />
Once you have the kernel configured it's easy to make and install it on the bone.<br />
host$ '''cd linux-dev'''<br />
host$ '''tools/rebuild.sh'''<br />
'''rebuild.sh''' sets up some things and the does a make on the kernel. It handles things like using the right cross compiler and the right number of cores. You'll be given a chance to configure, you can exit without saving if you don't want to change anything.<br />
<br />
After a while (depending on the number of cores) you will see.<br />
<br />
CHK include/generated/uapi/linux/version.h<br />
CHK include/generated/utsrelease.h<br />
make[1]: `include/generated/mach-types.h' is up to date.<br />
CALL scripts/checksyscalls.sh<br />
...<br />
LD [M] sound/usb/caiaq/snd-usb-caiaq.ko<br />
LD [M] sound/usb/misc/snd-ua101.ko<br />
LD [M] sound/usb/snd-usb-audio.ko<br />
LD [M] sound/usb/snd-usbmidi-lib.ko<br />
<br />
Now you are ready to install. Have your Bone running and on the network. On your host run:<br />
host$ '''cd linux-dev/tools'''<br />
host$ '''ln -s ../../kernel/beagle_install_kernel.sh ../../kernel/remote_install_kernel.sh .'''<br />
<br />
This will link in two files from the git repository that we'll use. Edit '''remote_install_kernel.sh''' and change '''BeagleAddr''' to the address of your beagle. Then run:<br />
host$ '''./remote_install_kernel.sh'''<br />
Image Name: 3.8.13-bone26.1<br />
Created: Tue Sep 3 13:33:35 2013<br />
Image Type: ARM Linux Kernel Image (uncompressed)<br />
Data Size: 3340904 Bytes = 3262.60 kB = 3.19 MB<br />
Load Address: 80008000<br />
Entry Point: 80008000<br />
utsrelease.h 100% 38 0.0KB/s 00:00 <br />
beagle_install_kernel.sh 100% 3043 3.0KB/s 00:00 <br />
version.sh 100% 915 0.9KB/s 00:00 <br />
system.sh 100% 1446 1.4KB/s 00:00 <br />
3.8.13-bone26.1.config 100% 107KB 106.5KB/s 00:00 <br />
uImage-3.8.13-bone26.1 100% 3263KB 1.6MB/s 00:02 <br />
3.8.13-bone26.1-firmware.tar.gz 100% 1198KB 1.2MB/s 00:00 <br />
3.8.13-bone26.1-dtbs.tar.gz 100% 33KB 32.7KB/s 00:00 <br />
3.8.13-bone26.1.zImage 100% 3263KB 1.1MB/s 00:03 <br />
3.8.13-bone26.1-modules.tar.gz 100% 11MB 5.7MB/s 00:02 <br />
<br />
This copies several files to your Bone. Then, on the Bone run:<br />
beagle$ '''cd linux-dev'''<br />
beagle$ '''tools/beagle_install.sh'''<br />
No manual entry for git-pull<br />
Installing 3.8.13-bone26.1-modules.tar.gz<br />
Installing 3.8.13-bone26.1-firmware.tar.gz<br />
`/home/root/linux-dev/deploy/tmp/BB-ADC-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/BB-ADC-00A0.dtbo'<br />
...<br />
`/home/root/linux-dev/deploy/tmp/cape-bone-weather-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-bone-weather-00A0.dtbo'<br />
`/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmi-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmi-00A0.dtbo'<br />
`/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmin-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmin-00A0.dtbo'<br />
<br />
This uncompresses and installs the modules and firmware. You are now ready to reboot.<br />
beagle$ '''reboot'''<br />
<br />
If you Bone boots up and you can reconnect to it, you can verify that you are running the new kernel by running:<br />
beagle$ '''uname -a'''<br />
<br />
== Recovering ==<br />
If your Beagle fails to boot, follow the [[EBC_Exercise_22_Recovering]] instructions to recover.<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=ECE497_Project_WireShark&diff=291668ECE497 Project WireShark2013-10-12T07:22:32Z<p>Parasby: Added Wireshark project page</p>
<hr />
<div>[[Category:ECE497 |Project]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Parasby| Ben Paras]], [[User:Manuel | Manuel Stephan]] <br />
<br />
== Grading Template ==<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
We want to try to port WireShark and see what we could get working on the BeagleBone. <br />
<br />
We were able to put the source code on the bone and run the autogen.sh script. <br />
We launched the configure script and multiple dependencies were discovered and we're trying<br />
to figure out ways to resolve those dependencies.<br />
<br />
So far WireShark itself isn't working due to the lack of dependency resolution.<br />
<br />
The level of depth of this project varies at it really depends on how fast we can get it ported <br />
and what else we could do if time is permitting. We're running into quite a few issues<br />
despite some quick progress. We'll see what happens over time. <br />
<br />
<br />
== Packaging ==<br />
<br />
If you have hardware, consider [http://cpprojects.blogspot.com/2013/07/small-build-big-execuition.html Small Build, Big Execuition] for ideas on the final packaging.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for you code.<br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=291662EBC Contributions and Project Status2013-10-12T07:14:34Z<p>Parasby: </p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Music Server | Music Server]]<br />
| [https://github.com/Guiltygate/beaglebone-classwork classwork]<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Fendrirj/ECE497 classwork]<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Makeshift Drums | Makeshift Drums]]<br />
| [https://github.com/elswicwj/ECE497.git classwork]<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/muglump/BeagleBoneHomework BeagleBoneRepo]<br />
| <br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/skorinm/Homework Homework]<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/yuxuanzeng classwork]<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/mcdonamp/497Homework 497Homework]<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/kowalsif/Beagle BeagleCode]<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/houj/Homework.git Classwork]<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/rockybulwinkle/beaglebone/ Classwork]<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/FreeTymeKiyan/EmbeddedLinux.git FreeTymeKiyan]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Music Server | Music Server]]<br />
| [https://github.com/cooperdl/Classwork Classwork]<br />
|-<br />
| [[User:Alvareap | Alex Alvarez]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/alvareap/classwork classwork ]<br />
|-<br />
| [[User:Alvareap | Zhen Wei]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/weizhen1883/homework.git HomeWork]<br />
|-<br />
|-<br />
| [[User:Manuel | Manuel Stephan]]<br />
| [[Special:Contributions/Manuel | contrib]]<br />
| [[ECE497 Project WireShark | WireShark]]<br />
| [https://github.com/manuelstephan/homework Homework]<br />
|-<br />
|-<br />
| [[User:Parasby| Ben Paras]]<br />
| [[Special:Contributions/Parasby | contrib]]<br />
| [[ECE497 Project WireShark| WireShark]]<br />
| [https://github.com/parasby2014/ECE497---Embedded-Linux ECE497HW]<br />
|-<br />
|-<br />
| [[User:Axiixc| James Savage]]<br />
| [[Special:Contributions/Axiixc | contrib]]<br />
| [[ECE497 Project Makeshift Drums | Makeshift Drums]]<br />
| [https://github.com/axiixc/ece497 axiixc/ece497]<br />
|-<br />
|-<br />
| [[User:Tpurviance| Taylor Purviance]]<br />
| [[Special:Contributions/Tpurviance | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/tpurviance/E32bL Homework]<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=291656EBC Contributions and Project Status2013-10-12T07:09:05Z<p>Parasby: Added WireShark project</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Music Server | Music Server]]<br />
| [https://github.com/Guiltygate/beaglebone-classwork classwork]<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Fendrirj/ECE497 classwork]<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Makeshift Drums | Makeshift Drums]]<br />
| [https://github.com/elswicwj/ECE497.git classwork]<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/muglump/BeagleBoneHomework BeagleBoneRepo]<br />
| <br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/skorinm/Homework Homework]<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/yuxuanzeng classwork]<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/mcdonamp/497Homework 497Homework]<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/kowalsif/Beagle BeagleCode]<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/houj/Homework.git Classwork]<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/rockybulwinkle/beaglebone/ Classwork]<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/FreeTymeKiyan/EmbeddedLinux.git FreeTymeKiyan]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Music Server | Music Server]]<br />
| [https://github.com/cooperdl/Classwork Classwork]<br />
|-<br />
| [[User:Alvareap | Alex Alvarez]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/alvareap/classwork classwork ]<br />
|-<br />
| [[User:Alvareap | Zhen Wei]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/weizhen1883/homework.git HomeWork]<br />
|-<br />
|-<br />
| [[User:Manuel | Manuel Stephan]]<br />
| [[Special:Contributions/Manuel | contrib]]<br />
| [[ECE497 Project Template| WireShark]]<br />
| [https://github.com/manuelstephan/homework Homework]<br />
|-<br />
|-<br />
| [[User:Parasby| Ben Paras]]<br />
| [[Special:Contributions/Parasby | contrib]]<br />
| [[ECE497 Project Template| WireShark]]<br />
| [https://github.com/parasby2014/ECE497---Embedded-Linux ECE497HW]<br />
|-<br />
|-<br />
| [[User:Axiixc| James Savage]]<br />
| [[Special:Contributions/Axiixc | contrib]]<br />
| [[ECE497 Project Makeshift Drums | Makeshift Drums]]<br />
| [https://github.com/axiixc/ece497 axiixc/ece497]<br />
|-<br />
|-<br />
| [[User:Tpurviance| Taylor Purviance]]<br />
| [[Special:Contributions/Tpurviance | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/tpurviance/E32bL Homework]<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_21b_systemd&diff=291644EBC Exercise 21b systemd2013-10-12T03:55:04Z<p>Parasby: Added to section about modifying boneServer.service</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
Traditionally user space initialization has been done using '''init.d''', however recently many distributions have been switching to [http://en.wikipedia.org/wiki/Systemd systemd] <br />
<br />
[http://www.freedesktop.org/wiki/Software/systemd/ systemd] is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides aggressive '''parallelization''' capabilities, uses socket and D-Bus activation for starting services, offers '''on-demand''' starting of daemons, keeps track of processes using Linux control groups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic.<br />
<br />
Here we'll see how to use systemd as an administration and how to create a simple service.<br />
<br />
== Administration ==<br />
There are a few simple commands that show what's running under systemd and how to stop and start them. The examples here were inspired by the [http://0pointer.de/blog/projects/socket-activated-containers.html twenty part series] on systemd administration and the [https://www.linux.com/learn/tutorials/524577-here-we-go-again-another-linux-init-intro-to-systemd/ three part intro by Carla Schroder]<br />
<br />
To see what's running, run<br />
beagle$ '''systemctl'''<br />
UNIT LOAD ACTIVE SUB DESCRIPTION<br />
proc-sys...t_misc.automount loaded active waiting Arbitrary Executable File Fo<br />
sys-devi...tty-ttyO0.device loaded active plugged /sys/devices/ocp.2/44e09000.<br />
sys-devi...ty-ttyGS0.device loaded active plugged /sys/devices/ocp.2/47400000.<br />
sys-devi...-net-eth0.device loaded active plugged /sys/devices/ocp.2/4a100000.<br />
sys-devi...blk0boot0.device loaded active plugged /sys/devices/ocp.2/mmc.10/mm<br />
sys-devi...blk0boot1.device loaded active plugged /sys/devices/ocp.2/mmc.10/mm<br />
sys-devi...mmcblk0p1.device loaded active plugged /sys/devices/ocp.2/mmc.10/mm<br />
sys-devi...mmcblk0p2.device loaded active plugged /sys/devices/ocp.2/mmc.10/mm<br />
sys-devi...k-mmcblk0.device loaded active plugged /sys/devices/ocp.2/mmc.10/mm<br />
sys-devi...tty-ttyS0.device loaded active plugged /sys/devices/platform/serial<br />
sys-devi...tty-ttyS1.device loaded active plugged /sys/devices/platform/serial<br />
sys-devi...tty-ttyS2.device loaded active plugged /sys/devices/platform/serial<br />
sys-devi...tty-ttyS3.device loaded active plugged /sys/devices/platform/serial<br />
sys-module-fuse.device loaded active plugged /sys/module/fuse<br />
sys-subs...ices-eth0.device loaded active plugged /sys/subsystem/net/devices/e<br />
-.mount loaded active mounted /<br />
dev-mqueue.mount loaded active mounted POSIX Message Queue File Sys<br />
sys-fs-f...onnections.mount loaded active mounted FUSE Control File System<br />
sys-kernel-debug.mount loaded active mounted Debug File System<br />
tmp.mount loaded active mounted /tmp<br />
systemd-...ord-console.path loaded active waiting Dispatch Password Requests t<br />
systemd-...ssword-wall.path loaded active waiting Forward Password Requests to<br />
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack<br />
bonescript-autorun.service loaded active running Bonescript autorun<br />
bonescript.service loaded active running Bonescript server<br />
and so on. Look through the list and see what you recognize. If you make your window bigger you will see more information.<br />
Here's how to find more details about a given process.<br />
beagle$ '''systemctl status bonescript.service'''<br />
bonescript.service - Bonescript server<br />
Loaded: loaded (/lib/systemd/system/bonescript.service; static)<br />
Active: active (running) since Tue 2013-10-08 15:30:10 EDT; 1 day 20h ago<br />
Main PID: 346 (node)<br />
CGroup: name=systemd:/system/bonescript.service<br />
`-346 /usr/bin/node server.js<br />
<br />
Oct 08 15:30:10 yoder-black-bone systemd[1]: Started Bonescript server.<br />
Oct 08 15:30:16 yoder-black-bone bonescript[346]: [35B blob data]<br />
Oct 08 15:30:16 yoder-black-bone bonescript[346]: - - - [Tue, 08 Oct 2013 19:...<br />
Oct 08 15:30:17 yoder-black-bone bonescript[346]: - - - [Tue, 08 Oct 2013 19:...<br />
Oct 08 15:30:17 yoder-black-bone bonescript[346]: - - - [Tue, 08 Oct 2013 19:...<br />
<br />
=== Stopping and Starting ===<br />
You can stop a process with<br />
beagle$ '''systemctl | grep cloud'''<br />
cloud9.service loaded active running Cloud9 IDE<br />
beagle$ '''systemctl status cloud9'''<br />
cloud9.service - Cloud9 IDE<br />
Loaded: loaded (/lib/systemd/system/cloud9.service; enabled)<br />
Active: active (running) since Fri 2000-01-07 17:46:06 EST; 13 years 9 months ago<br />
Main PID: 130 (node4)<br />
CGroup: name=systemd:/system/cloud9.service<br />
`-130 /usr/bin/node4 /usr/share/cloud9/bin/cloud9.js -l 0.0...<br />
<br />
Oct 08 15:30:15 yoder-black-bone node4[130]: publish state{"type":"state","p...}<br />
Oct 10 10:51:10 yoder-black-bone node4[130]: uncaught exception:<br />
Oct 10 10:51:10 yoder-black-bone node4[130]: Error: ENOENT, No such file or ...'<br />
Oct 10 10:51:10 yoder-black-bone node4[130]: at Object.statSync (fs.js:400:18)<br />
Oct 10 10:51:10 yoder-black-bone node4[130]: at /usr/share/cloud9/server/clo...7<br />
Oct 10 10:51:10 yoder-black-bone node4[130]: at Array.forEach (native)<br />
Oct 10 10:51:10 yoder-black-bone node4[130]: at StatWatcher.<anonymous> (/us...)<br />
beagle$ '''systemctl stop cloud9'''<br />
Now try accessing cloud9 from a web browser (192.168.7.2:3000). It isn't there. You can start it with<br />
beagle$ '''systemctl start cloud9'''<br />
beagle$ '''systemctl status cloud9'''<br />
cloud9.service - Cloud9 IDE<br />
Loaded: loaded (/lib/systemd/system/cloud9.service; enabled)<br />
Active: active (running) since Thu 2013-10-10 11:53:25 EDT; 14s ago<br />
Main PID: 1470 (node4)<br />
CGroup: name=systemd:/system/cloud9.service<br />
`-1470 /usr/bin/node4 /usr/share/cloud9/bin/cloud9.js -l 0....<br />
<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: .){2ooooonnnnvnvnvvvvvIIIIIIll...`<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: -{2oooonnnnnvvvvvvvlIIlllllil=...-<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: . -."11oonnvvvnvvIIlIlliliiiii....<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: . -+~!lvvnvIvIIllliiiii|i|||i|....<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: . ..--~++++++++~+~+~+~+-+-+~+~....<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: . . . . .... . . .... .. ... ....<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: Ajax.org Cloud9 IDE<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: version 0.6<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: Project root is: /var/lib/cloud9<br />
Oct 10 11:53:29 yoder-black-bone node4[1470]: Point your browser to http://l...0<br />
Notice the log messages have changed. <br />
<br />
=== Autostart at boot time ===<br />
You can use '''enable''' and '''disable''' to make a service start (or not start) at boot time.<br />
beagle$ '''systemctl disable cloud9'''<br />
rm '/etc/systemd/system/multi-user.target.wants/cloud9.service'<br />
beagle$ '''systemctl enable cloud9'''<br />
ln -s '/lib/systemd/system/cloud9.service' '/etc/systemd/system/multi-user.target.wants/cloud9.service'<br />
Watch out though, if some other service needs the service you disabled, it will start anyway. <br />
<br />
=== Stopping no matter what ===<br />
If you want to stop a service NO MATTER WHAT.<br />
beagle$ '''ln -s /dev/null /etc/systemd/system/servicename.service'''<br />
beagle$ '''systemctl daemon-reload'''<br />
systemd first looks in <code>/etc/systemd/system</code> and then looks in <code>/lib/systemd/system</code>. The command above places an empty file in /etc/systemd/system, so the real file in /lib/systemd/system is never seen.<br />
<br />
== Running your own service ==<br />
If you check in '''exercises/realtime''' you find '''boneServer.js''' a server for some demos. You run it with:<br />
beagle$ '''cd exercises/realtime'''<br />
beagle$ '''./boneServer.js'''<br />
Listening on 8080<br />
info - socket.io started<br />
Now point a browser to 192.168.7.2:8080. You'll see a list of demos served up by '''boneServer.js'''. Suppose you want the boneServer to automatically start every time the the Beagle boots. Here is how to do it.<br />
<br />
We need to create a service file and the quickest way is to find one that does similar things.<br />
beagle$ '''systemctl | grep bone'''<br />
bonescript-autorun.service loaded active running Bonescript autorun<br />
bonescript.service loaded active running Bonescript server<br />
bonescript.socket loaded active running bonescript.socket<br />
I see a couple of bonescript servers that look promising.<br />
beagle$ '''systemctl status bonescript'''<br />
bonescript.service - Bonescript server<br />
Loaded: loaded (/lib/systemd/system/bonescript.service; static)<br />
Active: active (running) since Sun 2000-01-09 15:07:55 EST; 13 years 9 months ago<br />
Main PID: 357 (node)<br />
CGroup: name=systemd:/system/bonescript.service<br />
`-357 /usr/bin/node server.js<br />
<br />
Jan 09 15:07:55 yoder-black-bone systemd[1]: Starting Bonescript server...<br />
Jan 09 15:08:04 yoder-black-bone bonescript[357]: [35B blob data]<br />
Jan 09 15:08:05 yoder-black-bone bonescript[357]: - - - [Sun, 09 Jan 2000 20:...<br />
Looks like the file is in '''/lib/systemd/system/bonescript.service''' copy it to a handy place and take a look.<br />
beagle$ '''cp /lib/systemd/system/bonescript.service boneServer.service'''<br />
beagle$ '''cat boneServer.service'''<br />
[Unit]<br />
Description=Bonescript server<br />
<br />
[Service]<br />
WorkingDirectory=/usr/lib/node_modules/bonescript<br />
ExecStart=/usr/bin/node server.js<br />
SyslogIdentifier=bonescript<br />
<br />
'''[Install]'''<br />
'''WantedBy=multi-user.target'''<br />
I copied the last two line from /lib/systemd/system/cloud9.service since they are needed to start at boot time. Modify the file so it will work for your server. Make sure to modify 'Description' as well or your service will confuse itself with the original bonescript.service. <br />
<br />
There is one other thing you have to add to the file. When node.js runs it needs to know where to find its modules. There is an environment variable that says where<br />
beagle$ '''echo $NODE_PATH'''<br />
/usr/lib/node_modules<br />
You need to add a line to the service file that set this environment variable. Look at the other files in /lib/systemd/system to see how this is done. (Hint: '''grep Env *''').<br />
<br />
Once your BoneServer.service file is ready, copy it to the right place<br />
beagle$ '''cp boneServer.service /lib/systemd/system'''<br />
and start the server<br />
beagle$ '''systemctl start boneServer'''<br />
Point your browser to 192.168.7.2:8080 and see if it works.<br />
<br />
To make it work after rebooting<br />
beagle$ '''systemctl enable boneServer'''<br />
ln -s '/lib/systemd/system/boneServer.service' '/etc/systemd/system/multi-user.target.wants/boneServer.service'<br />
Notice it copies your file to another place. Try rebooting and see if it works.<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_14_gdb_Debugging&diff=288476EBC Exercise 14 gdb Debugging2013-09-25T19:33:46Z<p>Parasby: /* A gdb Tutorial */</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:EmbeddedBeagleClass]]<br />
<br />
As the code becomes more complex, more powerful debugging tools are needed. The GNU Project debugger (gdb) is the granddaddy of all debuggers. In this exercise you will learn how to install and use it on the Beagle. In a later exercise you will learn how to install it on your host and debug the Beagle remotely.<br />
<br />
== gdb ==<br />
<br />
gdb, the [http://www.gnu.org/software/gdb/ GNU Project debugger], allows you to see what is going on ''inside'' another program while it executes -- or what another program was doing at the moment it crashed.<br />
<br />
gdb can do four main kinds of things to help you catch bugs in the act:<br />
<br />
* Start your program, specifying anything that might affect its behavior.<br />
* Make your program stop on specified conditions.<br />
* Examine what has happened, when your program has stopped.<br />
* Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another.<br />
<br />
The program being debugged can be written in Ada, C, C++, Objective-C, Pascal (and many other languages). Those programs might be executing on the same machine as GDB (native) or on another machine (remote). GDB can run on most popular UNIX and Microsoft Windows variants.<br />
<br />
For our lab we'll be using a C program and do local execution on the Beagle.<br />
<br />
=== Installing gdb ===<br />
<br />
On your Beagle run:<br />
<br />
beagle$ '''opkg update'''<br />
beagle$ '''opkg install gdb'''<br />
<br />
=== A gdb Tutorial ===<br />
<br />
There are a number of gdb tutorials out there. I like [http://rsquared.sdf.org/gdb/ Using GNU's GDB Debugger By Peter Jay Salzman]. <br />
<br />
* Read Chapter 1, the Intro<br />
* Do the examples in Chapters 2 (skip the spinning cube example in 2.8 unless you are interested in openGL) Hint: the commands to uncompress a .tar.bz2 file are: <br />
beagle$ '''bunzip2 file.tar.bz2'''<br />
beagle$ '''tar xvf file.tar'''<br />
* Do Chapter 3 examples <br />
* Look over Breakpoints in Chapter 4<br />
<br />
([http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html RMS's gdb Debugger Tutorial] may be another good reference.)<br />
<br />
Chapter 3 has you download a Makefile that will fail because it can't find '''ctags'''. Either comment out that line, or follow the directions below to install ctags.<br />
<br />
=== Remote debugging with gdb ===<br />
You can run a gdb server on the bone and control it from a gdb session on your host. [[EBC Exercise 28 Remote gdb and more]] has details on how this is done.<br />
<br />
=== ctags on the host ===<br />
<br />
Here's what I did to get ctags running in gedit on the host.<br />
<br />
host$ '''sudo apt-get install exuberant-ctags'''<br />
<br />
gedit has a ctags plugin. Details are [http://sourceforge.net/projects/symbol-browser/ here]. Download from [http://sourceforge.net/projects/symbol-browser/files/symbol-browser-bin/ here]. Installation details are [http://www.micahcarrick.com/gedit-symbol-browser-plugin.html#2 here].<br />
<br />
You also need to load '''libgnomeprintui'''. Go to '''System:Administration:Synaptic Package Manager''' and search for libgnomeprintui and select it. Click Apply.<br />
<br />
NOTE FOR Newest Ubuntu Releases!<br />
Synaptic Package Manager is not natively installed, do the following commands:<br />
<br />
host$ '''sudo apt-get install synaptic'''<br />
<br />
Then you can install the above file. <br />
<br />
Now you can use ctags. Go a directory with some .c and .h files and run:<br />
<br />
host$ '''ctags *.c *.h'''<br />
host$ '''gedit *.c *.h'''<br />
<br />
This will create a file called '''tags''' that tells where each symbol is defined. Enable the ctags plugin by going to '''Edit:Preferences'''. Click the '''Plugins''' tag and scroll down to '''Symbol Browser''' and check it. You can click the '''Configure Plugin''' button to apply some options.<br />
<br />
To make the symbols visible, select ''' View:Side Pane''' in gedit. Click the symbol [[File:SymbolBrowser.png]] at the bottom of the side pane. You will now see all the symbols. Click on one to go to its definition.</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_12_I2C&diff=287744EBC Exercise 12 I2C2013-09-22T02:38:39Z<p>Parasby: Updated location of 'tools'</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:EmbeddedBeagleClass]]<br />
{{YoderHead}}<br />
{{EBC3.8}}This page is for the 3.8 kernel. See [[EBC Exercise 12 I2C - xM]] for the 3.2 kernel.<br />
<br />
[http://en.wikipedia.org/wiki/I%C2%B2C I²C] is a "two-wire interface" standard that is used to attach low-speed peripherals to an embedded system. In this exercise we will wire up a couple of I²C temperature sensors ([http://www.ti.com/product/tmp101 TC74]) and learn how to read their values.<br />
<br />
== The Hardware ==<br />
=== bone ===<br />
The AM3359 on the BeagleBone has three I²C controllers (Section 21 of the [http://www.ti.com/product/am3359 TRM]). You can see which ones are configured at boot time by running the following on the Beagle:<br />
<br />
beagle$ '''dmesg | grep i2c'''<br />
[ 0.153495] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz<br />
[ 0.165269] omap_i2c 44e0b000.i2c: unable to select pin group<br />
[ 0.166036] omap_i2c 4819c000.i2c: bus 1 rev0.11 at 100 kHz<br />
[ 0.168388] omap_i2c 4819c000.i2c: unable to select pin group<br />
[ 0.418600] i2c /dev entries driver<br />
<br />
Here we see two buses, one running at 400 kHz and the other at 100 kHz. Table 11 from the SRM shows buses 1 and 2 are brought out to the P9 Expansion Header, however what the table starts numbering with 1 and the software starts with 0, so these are really buses 0 and 1. We'll use 1 (called 2 in the table).<br />
<br />
You can see what's on the i2c buses with<br />
beagle$ '''i2cdetect -y -r 0'''<br />
0 1 2 3 4 5 6 7 8 9 a b c d e f<br />
00: -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
20: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- <br />
30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- <br />
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
70: UU -- -- -- -- -- -- -- <br />
beagle$ '''i2cdetect -y -r 1'''<br />
0 1 2 3 4 5 6 7 8 9 a b c d e f<br />
00: -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- 4f <br />
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- <br />
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
70: 70 -- -- -- -- -- -- -- <br />
I have something at addresses 0x48, 0x4f and 0x70 on bus 1.<br />
<br />
[[File:HeaderP9.jpg|.jpg|800px]]<br />
<br />
These signals are 3.3V and the TMP101 runs on 2.7 to 5.5V so we are in luck.<br />
<br />
I²C is a two-wire bus. The two wires are<br />
# Serial Clock (SCL), is an input to the TMP101 and is used to clock data into and out of the TMP101.<br />
# Serial Data (SDA), is bidirectional and carries the data to and from the TMP101.<br />
<br />
The only other two pins on the TMP101 that you need to use are the Power Supply (Vdd) and Ground, unless you want to use OS/ALERT, in which case you need to add a pull up resistor to Vdd, and then run another wire to a GPIO in order to properly trigger an interrupt.<br />
<br />
[[File:Bone gpio.JPG|300px]]<br />
[[File:BoneGPIO.png|300px]]<br />
<br />
Wire up the TMP101 to the Beagle by attaching the Vdd to the 3.3V '''+''' bus, the GND to the '''-''' bus and SDA to SDA (pin 20) and SCL to SCL (pin 19). '''You will also need to attach two pull-up resistors'''. Get two 4.7K&Omega; resistors. Attach one between SDA and Vdd. Attach the other between SCL and Vdd.<br />
<br />
Your TMP101 should be labeled with '''T101'''. If you have another TMP101 you can wire it in parallel with the first be sure to wire the '''ADD0''' pin differently. That is, attach SDA to SDA and SCL to SCL, etc. No need for additional pull up resistors.<br />
<br />
== The Software ==<br />
<br />
Do this, to be sure you have all you needed installed:<br />
<br />
beagle$ '''opkg update'''<br />
beagle$ '''opkg install i2c-tools'''<br />
beagle$ '''opkg install i2c-tools-dev'''<br />
<br />
=== From the Shell ===<br />
<br />
The Beagle brings out I²C bus 1 to the Expansion Header. You can see what devices are on the bus by using the [http://www.lm-sensors.org/wiki/man/i2cdetect i2cdetect] command. On your Beagle try:<br />
<br />
beagle$ '''i2cdetect -y -r 1'''<br />
0 1 2 3 4 5 6 7 8 9 a b c d e f<br />
00: -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- <br />
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
40: -- -- -- -- -- -- -- -- 48 48 4a -- -- -- -- -- <br />
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- <br />
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br />
70: -- -- -- -- -- -- -- -- <br />
<br />
What you see is a list of all the devices found on the bus. I've attached three TMP101's, and wired their '''ADD0''' line differently. Their address are <code>1001 000</code>, <code>1001 010</code> and <code>1001 010</code> respectively. Converting to hex you get <code>0x48</code>, <code>0x49</code> and <code>0x4a</code>. You can see the three appear in the ic2detect.<br />
<br />
Each TMP101 has four registers. Check the TMP101 manual for details. We're interested in the TEMP register. You can read it with:<br />
<br />
beagle$ '''i2cget -y 1 0x48 0'''<br />
0x1b<br />
<br />
The '''-y''' says don't ask me, just do it. '''1''' says use bus 1. '''0x48''' is the device address and '''0''' is the register number. The value returned is the temperature in degrees C. <br />
# Convert the hex temperature to decimal. Is the value reasonable?<br />
# Write a script to run ic2get in a loop and watch the temperature. Hold the device between your fingers. Does the temp go up?<br />
<br />
=== From C ===<br />
<br />
Another approach to using I²C on the Beagle is from a C program. You can open <code>/dev/i2c-1</code> and do <code>ioctl</code> calls on it to read and write data.<br />
<br />
Pull the exercises<br />
beagle$ '''cd exercises'''<br />
beagle$ '''git pull'''<br />
beagle$ '''cd i2c'''<br />
<br />
Compile and run '''myi2cget.c'''. <br />
<br />
beagle$ '''gcc myi2cget.c -o myi2cget'''<br />
beagle$ '''./myi2cget'''<br />
Usage: ./myi2cget <i2c-bus> <i2c-address> <register><br />
beagle$ '''./myi2cget 1 72 0'''<br />
0x1b (27)<br />
<br />
It takes many of the arguments as '''i2cget''', but none of the flags. It's very stripped down version of i2cget. Note that 72 is the decimal representation of 0x48. myi2cget requires the use of decimal numbers, while the "traiditional" i2cget can use either decimal or hex representations.<br />
<br />
The '''tools''' directory under '''/exercises/i2c/ic2-tools-3.1.0''' contains the original '''i2cget''' code. It came from [http://www.lm-sensors.org/wiki/man/i2cget here].<br />
<br />
== <span style="color:green">Challenge</span>==<br />
<br />
# Look over '''myi2cget'''.<br />
## Find the '''open''' which opens the device.<br />
## Find the '''ioctl''' call that sets the address. What other values can be used instead of <code>I2C_SLAVE</code>? Hint: Look in the include files for the definition of I2C_SLAVE.<br />
## Find the '''ioctl''' call reads the register. Hint: There are a couple of wrappers hiding it. Find where '''i2c_smbus_read_byte_data''' is defined and then keep going until you find ioctl. I2C_SLAVE is used by the previous ioctl to set the slave address. What's used at the 2nd argument to ioctl to read a byte? <br />
# Challenge 1: Write a C program that will print the current temperature every time the USER button is pressed. Print the temp in F.<br />
# Challenge 2: Modify your program to update the temperature every second if the USER button isn't pressed.<br />
<br />
== References ==<br />
<br />
# [http://www.byteparadigm.com/applications/introduction-to-i2c-and-spi-protocols/ Introduction to i2c and SPI]<br />
# [http://www.ti.com/product/tmp101 TMP101] I2C Temperature Sensor information.<br />
# I got a lot information from [[Interfacing with I2C Devices]].<br />
# [http://www.jumpnowtek.com/index.php?option=com_content&view=article&id=69&Itemid=78 This] appears to have some nice I2C information for the Gumstix. It should also work for the Beagle.<br />
# [http://romillycocking.blogspot.com/2011/11/i2c-on-beagleboard-xm.html i2c via Python]<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=286388EBC Contributions and Project Status2013-09-16T08:43:55Z<p>Parasby: removed me (Ben Paras)</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Parasby | Taylor Purviance]]<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Guiltygate/beaglebone-classwork classwork]<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Fendrirj/ECE497 classwork]<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/elswicwj/ECE497.git classwork]<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/mcdonamp/497Homework 497Homework]<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/houj/Homework.git Classwork]<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/FreeTymeKiyan FreeTymeKiyan]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/cooperdl/Classwork Classwork]<br />
|-<br />
| [[User:Alvareap | Alex Alvarez]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/alvareap/classwork classwork ]<br />
|-<br />
| [[User:Alvareap | Zhen Wei]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
|-<br />
| [[User:Manuel | Manuel Stephan]]<br />
| [[Special:Contributions/Manuel | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/manuelstephan/homework Homework]<br />
|-<br />
|-<br />
| [[User:Parasby| Ben Paras]]<br />
| [[Special:Contributions/Parasby | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/parasby2014/ECE497---Embedded-Linux ECE497HW]<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=286382EBC Contributions and Project Status2013-09-16T08:43:37Z<p>Parasby: Added me (Ben Paras)</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Parasby | Ben Paras]]<br />
# [[Special:Contributions/Parasby | Taylor Purviance]]<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Guiltygate/beaglebone-classwork classwork]<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/Fendrirj/ECE497 classwork]<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/elswicwj/ECE497.git classwork]<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/mcdonamp/497Homework 497Homework]<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/houj/Homework.git Classwork]<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/FreeTymeKiyan FreeTymeKiyan]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/cooperdl/Classwork Classwork]<br />
|-<br />
| [[User:Alvareap | Alex Alvarez]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/alvareap/classwork classwork ]<br />
|-<br />
| [[User:Alvareap | Zhen Wei]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
|-<br />
| [[User:Manuel | Manuel Stephan]]<br />
| [[Special:Contributions/Manuel | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/manuelstephan/homework Homework]<br />
|-<br />
|-<br />
| [[User:Parasby| Ben Paras]]<br />
| [[Special:Contributions/Parasby | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| [https://github.com/parasby2014/ECE497---Embedded-Linux ECE497HW]<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=User:Parasby&diff=285470User:Parasby2013-09-10T18:46:43Z<p>Parasby: edited Category: ECE497 to sort on wiki</p>
<hr />
<div>Rose-Hulman Institute of Technology<br />
Master of Electrical and Computer Engineering, Class of 2014<br />
<br />
[[Category:ECE497 |Uparasby]]</div>Parasbyhttps://elinux.org/index.php?title=EBC_Exercise_02_Out-of-the-Box,_Bone&diff=284234EBC Exercise 02 Out-of-the-Box, Bone2013-09-06T17:05:46Z<p>Parasby: Added update when pinging google doesn't work for Windows 7</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
{{EBC3.8}}'''These instructions are for the 3.8 kernel.''' [[EBC Exercise 02 Out-of-the-Box, Bone 3.2 Kernel]] has instructions for the 3.2 kernel.<br />
<br />
== Getting Started ==<br />
We'll be running the 3.8 kernel, check out these [http://beagleboard.org/Getting%20Started instructions] for getting started. Then come back here to get your network set up.<br />
<br />
== Internet Connection ==<br />
<br />
One of the slickest features of the Bone is its ability to access the Internet through the USB (tether) connection. You should have already used it following the instructions above. Below shows how to set up your host and Bone so the bone can access the internet through your host.<br />
<br />
=== Linux ===<br />
==== ifconfig ====<br />
Run:<br />
<br />
host$ '''ifconfig'''<br />
eth0 Link encap:Ethernet HWaddr 00:18:8b:72:b8:c2 <br />
inet addr:137.112.41.109 Bcast:137.112.41.255 Mask:255.255.255.0<br />
inet6 addr: fe80::218:8bff:fe72:b8c2/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:8481193 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:1871287 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000 <br />
RX bytes:3172154531 (3.1 GB) TX bytes:203188180 (203.1 MB)<br />
Interrupt:19 <br />
<br />
eth4 Link encap:Ethernet HWaddr d4:94:a1:39:ff:ff <br />
inet addr:192.168.7.1 Bcast:192.168.7.3 Mask:255.255.255.252<br />
inet6 addr: fe80::d694:a1ff:fe39:ffff/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:8 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000 <br />
RX bytes:2775 (2.7 KB) TX bytes:1234 (1.2 KB)<br />
<br />
lo Link encap:Local Loopback <br />
inet addr:127.0.0.1 Mask:255.0.0.0<br />
inet6 addr: ::1/128 Scope:Host<br />
UP LOOPBACK RUNNING MTU:16436 Metric:1<br />
RX packets:37315 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:37315 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0 <br />
RX bytes:3665320 (3.6 MB) TX bytes:3665320 (3.6 MB)<br />
<br />
==== ssh ====<br />
You'll see a new network has appeared, '''eth4''' in my case. The IP address of your host is '''192.168.7.1'''. There's a good chance the Bone is at '''192.168.7.''2'''''. Try connecting to it.<br />
host$ '''ssh -X root@192.168.7.2'''<br />
beagle$ <br />
You are now logged into the Bone through the network. This is much faster than the serial port (.115M vs. 100M) and supports many interesting network operations. The only problem is, the Beagle doesn't know how to access the Internet through the host. Get back to the host computer by entering RETURN ~ ^Z. That is, hit RETURN, then ~ (it's up there near the ESC key) and then Ctrl-Z. This gets you back to your host, but leaves the ssh connection running. <br />
<br />
==== host.ipForward.sh ====<br />
Copy the following lines into a file call '''host.ipForward.sh'''<br />
<br />
<pre><br />
#!/bin/bash<br />
# These are the commands to run on the host to setup IP masquerading so the Beagle<br />
# can access the Internet through the USB connection.<br />
# Inspired by http://thoughtshubham.blogspot.com/2010/03/internet-over-usb-otg-on-beagleboard.html<br />
<br />
if [ $# -eq 0 ] ; then<br />
echo "Usage: $0 interface (such as eth0 or wlan0)"<br />
exit 1<br />
fi<br />
<br />
interface=$1<br />
hostAddr=192.168.7.1<br />
beagleAddr=192.168.7.2<br />
ip_forward=/proc/sys/net/ipv4/ip_forward<br />
<br />
if [ `cat $ip_forward` == 0 ]<br />
then<br />
echo "You need to set IP forwarding. Edit /etc/sysctl.conf using:"<br />
echo "$ sudo gedit /etc/sysctl.conf"<br />
echo "and uncomment the line \"net.ipv4.ip_forward=1\""<br />
echo "to enable forwarding of packets. Then run the following:"<br />
echo "$ sudo sysctl -p"<br />
exit 1<br />
else<br />
echo "IP forwarding is set on host."<br />
fi<br />
# Setup IP masquerading on the host<br />
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o $interface -j MASQUERADE<br />
<br />
# Check to see what nameservers the host is using and copy these to the same<br />
# file on the Beagle<br />
# This makes it so you can connect to the Beagle without using your password.<br />
ssh-copy-id root@$beagleAddr<br />
# Save the /etc/resolv.conf on the Beagle in case we mess things up.<br />
ssh root@$beagleAddr "mv -n /etc/resolv.conf /etc/resolv.conf.orig"<br />
# Copy the resolv.conf file to the Beagle. Now the Beagle will use the<br />
# same name servers as the host.<br />
cat - << EOF > /tmp/resolv.conf<br />
# This is installed by host.ipForward.sh on the host<br />
# Mark A. Yoder, 25-Aug-2013<br />
search rose-hulman.edu dhcp.rose-hulman.edu wlan.rose-hulman.edu<br />
<br />
EOF<br />
<br />
# Use the campus name servers if on compus, otherwise use the Google name servers<br />
if ifconfig | grep "addr:137.112."; then<br />
cat - << EOF >> /tmp/resolv.conf<br />
nameserver 137.112.18.59<br />
nameserver 137.112.5.28<br />
nameserver 137.112.4.196<br />
EOF<br />
else<br />
cat - << EOF >> /tmp/resolv.conf<br />
nameserver 8.8.8.8<br />
nameserver 8.8.4.4<br />
EOF<br />
fi<br />
scp /tmp/resolv.conf root@$beagleAddr:/etc<br />
# Tell the beagle to use the host as the gateway.<br />
ssh root@$beagleAddr "/sbin/route add default gw $hostAddr"<br />
</pre><br />
<br />
==== Running host.ipForward.sh ====<br />
Now run:<br />
host$ '''chmod +x host.ipForward.sh'''<br />
host$ '''./host.ipForward.sh ''eth0'''''<br />
This will give you instructions on how to set up your host and will remotely set up your Beagle.<br />
Note: If you are using a wireless connection you should use<br />
<br />
host$ '''./host.ipForward.sh ''wlan0'''''<br />
<br />
Once ./host.ipForward.sh has been run you can:<br />
host$ '''fg'''<br />
ssh -X root@192.168.7.2<br />
(Hit RETURN)<br />
beagle$ '''ping google.com'''<br />
<br />
You should see Google responding. Hit Ctrl-C to stop.<br />
<br />
Congratulations! Your Beagle is now on the network through your host computer.<br />
<br />
=== OSX ===<br />
I haven't checked these instructions this year. Please report your results and update if needed.<br />
<br />
# go to '''System Preferences''' and select '''Network'''<br />
# You should see '''RNDIS/...Gadget'''. This is the network connection to the Beagle. Select it<br />
# Wait for the IP address '''192.168.7.1''' to appear<br />
# Click '''Show All''' and select '''Sharing'''<br />
# Select '''Internet Sharing'''<br />
# Select '''RNDIS/Ethernet Gadget'''<br />
<br />
In a terminal window connect to the serial port<br />
<br />
host$ '''screen /dev/ttyusb*B 115200'''<br />
beagle$ '''udhcpc -i usb0'''<br />
beagle$ '''ping google.com'''<br />
<br />
This is all nicely shown [http://www.youtube.com/watch?v=Cf9hnscbSK8&feature=youtu.be here] in this silent YouTube movie.<br />
<br />
Congratulations, you now have a connection from your BeagleBone to the Internet.<br />
<br />
=== Windows 7 ===<br />
I haven't checked these either. Please report results and update if needed.<br />
<br />
There are several ways of running ssh on Windows 7. Below are a couple of tools that you can use.<br />
<br />
==== Environment Setup ====<br />
<br />
You can either run ssh from a bash terminal (i.e. '''C:\Program Files\Git\Git Bash''' or '''C:\cygwin\Cygwin.bat'''), or you can add the bin directories to your path and run from the Windows command prompt (i.e. add '''C:\Program Files\Git\bin''' or '''C:\cygwin\bin''' to your path).<br />
<br />
Note: Be careful adding multiple bin directories to your path<br />
<br />
First time setup<br />
# Run '''regedit'''<br />
# Navigate to '''Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters'''<br />
# Change '''IPEnableRouter''' from 0 to 1<br />
# Close '''regedit'''<br />
# Run '''services'''<br />
# Make sure the following are set to '''Automatic''' and are started<br />
## Routing and Remote Access<br />
## Internet Connection Sharing (ICS)<br />
<br />
==== Connecting to the Internet ====<br />
<br />
After ejecting<br />
# Navigate to '''Control Panel\Network and Internet\Network and Sharing Center\Change adapter settings'''<br />
# Right click your wired/wireless internet connection and go to '''Properties'''<br />
# Go to the '''Sharing''' tab<br />
# Check the box to '''Allow other network users to connect through this computer's Internet connection'''<br />
# Select your bone's local area connection for the '''Home networking connection''' (if you cannot choose the local area connection, turn your internet connection sharing off and then back on)<br />
<br />
Open a command prompt or bash terminal and run the following:<br />
<br />
host$ '''ping 192.168.7.2'''<br />
<br />
If this ping times out then disable and re-enable your bone's local area connection and try again. Once it works run the following:<br />
<br />
host$ '''ssh root@192.168.7.2'''<br />
<br />
Login as root and run the following:<br />
<br />
beagle$ '''echo "nameserver 8.8.8.8" > /etc/resolv.conf'''<br />
beagle$ '''echo "nameserver 8.8.8.4" >> /etc/resolv.conf'''<br />
beagle$ '''/sbin/route add default gw 192.168.7.1'''<br />
beagle$ '''ping google.com'''<br />
<br />
If 'ping:unknown host google.com' occurs, run this instead:<br />
<br />
beagle$ '''echo "nameserver 137.112.4.196" > /etc/resolv.conf'''<br />
beagle$ '''/sbin/route add default gw 192.168.7.1'''<br />
beagle$ '''ping google.com'''<br />
<br />
Congratulations, you now have a connection from your BeagleBone through your Linux host to the Internet.<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Editing_a_Wiki&diff=283976EBC Editing a Wiki2013-09-06T00:48:22Z<p>Parasby: Fixed spacing</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Here is a wiki you can practice editing. Before you can edit it you will have to create an login. Pick something that will make it easy for me to identify you as part of my class. Then just add your name and date on the end of the table.<br />
<br />
You can get help here: [[Help:Contents]].<br />
<br />
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheatsheet].<br />
<br />
== Fall 2013 ==<br />
<br />
{|<br />
|-<br />
| [[user:amesen | Eric Ames]]<br />
| 13-June-2013<br />
|-<br />
| [[user:fendrirj | Robert Fendricks]]<br />
| 5-September-2013<br />
|-<br />
| [[user:elswicwj | Will Elswick]]<br />
| 5-September-2013<br />
|-<br />
| [[user:savrdada | David Savrda]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Parasby | Ben Paras]]<br />
| 6-September-2013<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 18-July-2012<br />
|-<br />
| [[user:atniptw | Tom Atnip]]<br />
| 20-July-2012<br />
|-<br />
| [[user:Xinyu1991 | Xinyu Cheng]]<br />
| 31-August-2012<br />
|-<br />
| [[user:bssachin45 | B S Sachin]]<br />
| 25-July-2012<br />
|-<br />
| [[user:ruff | Ruffin White]]<br />
| 16-August-2012<br />
|-<br />
| [[user:Popenhjc | James Popenhagen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:mmoravec | Matthew Moravec]]<br />
| 30-August-2012<br />
|-<br />
| [[user:ngop | Peter Ngo]]<br />
| 30-August-2012<br />
|-<br />
| [[user:duganje | Josh Dugan]]<br />
| 30-August-2012<br />
|-<br />
| [[user:hansenrl | Ross Hansen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:jungeml | Michael Junge]]<br />
| 05-September-2012<br />
|- <br />
| [[User:shinnsm|Stephen Shinn]]<br />
| 30-August-2012<br />
|-<br />
| [[User:draneaw|Alex Drane]]<br />
| 30-August-2012<br />
|-<br />
| [[User:larmorgs|Greg Larmore]]<br />
| 31-August-2012<br />
|-<br />
| [[User:jessebrannon|Jesse Brannon]]<br />
| 31-August-2012<br />
|-<br />
| [[User:lix|Xia Li]]<br />
| 31-August-2012<br />
|-<br />
| [[User:whiteer|Elias White]]<br />
| 31-August-2012<br />
|-<br />
| [[User:Astroricks|Yue Zhang]]<br />
| 31-August-2012<br />
|-<br />
| [[User:millerap|Andrew Miller]]<br />
| 31-August-2012<br />
|-<br />
| [[user:Geislekj | Kevin Geisler]]<br />
| 1-September-2012<br />
|-<br />
| [[user:chris.good | Christopher A Good]]<br />
| 3-September-2012<br />
|-<br />
| [[user:Lobdeljt | John Lobdell]]<br />
| 5-November-2012<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuming | Yuming Cao]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuhasmj | Michael Yuhas]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yifei | Yifei Li]]<br />
| 22-Nov-2011<br />
|-<br />
| [[user:Ziyi Zhang | Ziyi Zhang]]<br />
| 24-Nov-2011<br />
|-<br />
|[[user: mac | Jack Ma]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:Zitnikdj | David Zitnik]]<br />
| 25-Nov-2011<br />
|-<br />
| [[user:Harrisgw | Greg Harrison]]<br />
| 26-Nov-2011<br />
|-<br />
| [[user:Yanj | Mona J Yan]]<br />
| 27-Nov-2011<br />
|-<br />
| [[user:Gemini91 | Guanqun Wang]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:vsn1985 | Narayanan VS]]<br />
| 28-Nov-2011<br />
|}<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=EBC_Editing_a_Wiki&diff=283970EBC Editing a Wiki2013-09-06T00:47:47Z<p>Parasby: Added me</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Here is a wiki you can practice editing. Before you can edit it you will have to create an login. Pick something that will make it easy for me to identify you as part of my class. Then just add your name and date on the end of the table.<br />
<br />
You can get help here: [[Help:Contents]].<br />
<br />
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheatsheet].<br />
<br />
== Fall 2013 ==<br />
<br />
{|<br />
|-<br />
| [[user:amesen | Eric Ames]]<br />
| 13-June-2013<br />
|-<br />
| [[user:fendrirj | Robert Fendricks]]<br />
| 5-September-2013<br />
|-<br />
| [[user:elswicwj | Will Elswick]]<br />
| 5-September-2013<br />
|-<br />
| [[user:savrdada | David Savrda]]<br />
| 5-September-2013<br />
|<br />
| [[user:Parasby | Ben Paras]]<br />
| 6-September-2013<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 18-July-2012<br />
|-<br />
| [[user:atniptw | Tom Atnip]]<br />
| 20-July-2012<br />
|-<br />
| [[user:Xinyu1991 | Xinyu Cheng]]<br />
| 31-August-2012<br />
|-<br />
| [[user:bssachin45 | B S Sachin]]<br />
| 25-July-2012<br />
|-<br />
| [[user:ruff | Ruffin White]]<br />
| 16-August-2012<br />
|-<br />
| [[user:Popenhjc | James Popenhagen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:mmoravec | Matthew Moravec]]<br />
| 30-August-2012<br />
|-<br />
| [[user:ngop | Peter Ngo]]<br />
| 30-August-2012<br />
|-<br />
| [[user:duganje | Josh Dugan]]<br />
| 30-August-2012<br />
|-<br />
| [[user:hansenrl | Ross Hansen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:jungeml | Michael Junge]]<br />
| 05-September-2012<br />
|- <br />
| [[User:shinnsm|Stephen Shinn]]<br />
| 30-August-2012<br />
|-<br />
| [[User:draneaw|Alex Drane]]<br />
| 30-August-2012<br />
|-<br />
| [[User:larmorgs|Greg Larmore]]<br />
| 31-August-2012<br />
|-<br />
| [[User:jessebrannon|Jesse Brannon]]<br />
| 31-August-2012<br />
|-<br />
| [[User:lix|Xia Li]]<br />
| 31-August-2012<br />
|-<br />
| [[User:whiteer|Elias White]]<br />
| 31-August-2012<br />
|-<br />
| [[User:Astroricks|Yue Zhang]]<br />
| 31-August-2012<br />
|-<br />
| [[User:millerap|Andrew Miller]]<br />
| 31-August-2012<br />
|-<br />
| [[user:Geislekj | Kevin Geisler]]<br />
| 1-September-2012<br />
|-<br />
| [[user:chris.good | Christopher A Good]]<br />
| 3-September-2012<br />
|-<br />
| [[user:Lobdeljt | John Lobdell]]<br />
| 5-November-2012<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuming | Yuming Cao]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuhasmj | Michael Yuhas]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yifei | Yifei Li]]<br />
| 22-Nov-2011<br />
|-<br />
| [[user:Ziyi Zhang | Ziyi Zhang]]<br />
| 24-Nov-2011<br />
|-<br />
|[[user: mac | Jack Ma]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:Zitnikdj | David Zitnik]]<br />
| 25-Nov-2011<br />
|-<br />
| [[user:Harrisgw | Greg Harrison]]<br />
| 26-Nov-2011<br />
|-<br />
| [[user:Yanj | Mona J Yan]]<br />
| 27-Nov-2011<br />
|-<br />
| [[user:Gemini91 | Guanqun Wang]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:vsn1985 | Narayanan VS]]<br />
| 28-Nov-2011<br />
|}<br />
<br />
{{YoderFoot}}</div>Parasbyhttps://elinux.org/index.php?title=User:Parasby&diff=283940User:Parasby2013-09-06T00:46:21Z<p>Parasby: Added Category:ECE497</p>
<hr />
<div>Rose-Hulman Institute of Technology<br />
Master of Electrical and Computer Engineering, Class of 2014<br />
<br />
[[Category:ECE497]]</div>Parasbyhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=283934EBC Contributions and Project Status2013-09-06T00:43:13Z<p>Parasby: Added Contributions for Fall 2013</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Parasby | Ben Paras]]<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project Template | TBD]]<br />
| TBD<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Parasby