Skip to content

Commit

Permalink
Merge pull request #36 from yestinj/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
yestinj authored Jun 13, 2017
2 parents 51aa209 + 4ea3e71 commit 3aed4ea
Show file tree
Hide file tree
Showing 64 changed files with 11,953 additions and 12,138 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
*.DS_Store
src/.obj/
src/.ui/
src/Makefile
src/inetvis
src/inetvis.pro.user
.moc/
qrc_icons.cpp
recorded/*
src/recorded/*
96 changes: 64 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,56 +4,88 @@ Source repository for the Internet Visualizer (inetvis) tool.

This project is based off of the original work by JP van Riel and Barry Irwin of Rhodes University. Their original work can be found here: www.cs.ru.ac.za/research/g02v2468/inetvis.html

# Running InetVis
# Notes

This project was originally written in Qt3 and compiled to 32-bit code, it has since been ported to Qt5,
and been updated to compile a 64-bit binary.

The instructions below have all been tested on the current version of Ubuntu, 17.04 64-bit.

At this time InetVis only works under 32-bit flavours of Ubuntu and requires a few older libraries to be installed for correct operation.
# Installing InetVis (from release archive)

In order to get InetVis running in your own VM please consider the following guidelines:
A compiled version of InetVis is available under the releases section of https://github.com/yestinj/inetvis.

In order to install and run the software please do the following:

1. Download the latest release archive from the releases page.
2. Extract the archive which will be called something like `inetvis-2.0.0.tgz`
3. Change into the extracted directory, something like `inetvis-2.0.0`
4. Run the `install_inetvis.sh` shell script to install the software.
1. This script will: install the software to `/opt/inetvis-<version>`
2. Create a symlink directory `/opt/inetvis` for convenience
3. Copy across the relevant files to the new directory under `/opt`.
4. Place an icon file in `/usr/share/icons/hicolor/48x48/apps/`
5. Place a `desktop` file in `/usr/share/applications`, allowing inetvis to be found in the menu on Ubuntu systems.
6. Create a symlink at `/usr/local/bin/inetvis` pointing to the main binary.
7. Set the `cap_net_raw`, and `cap_net_admin=eip` capabilities on the inetvis binary allowing for monitoring packets on local host without running as root.
5. If the script completes successfully inetvis should now be in your path, and also be in the menu system of your distribution.

# Running InetVis

1. Install your choice of 32-bit Linux in a VM (Tested with Ubuntu 14.04.5 LTS 32-bit desktop edition)
* You may choose to install the i386 architecture under your current 64-bit distrubition, however this has not been tested.
2. Be sure to update your system fully after installation
* `sudo apt-get update` and `sudo apt-get upgrade`, finally `sudo apt-get dist-upgrade`
3. Install all of the basic requirements as mentioned in the manual (doc/inetvisdoc.html)
* `sudo apt-get install build-essential g++ libc6 libstdc++6 libc6-dev make libpcap-dev libgl1-mesa-dev libqt4-dev libqt4-dev qt4-dev-tools libqt4-qt3support`
* Note: Some of the above dependencies are only required for building and not running, but I haven't sorted out which is which yet. To be safe rather install them all.
4. Install the older 'missing' libraries which aren't there by default
1. `sudo apt-get install libpq5` - libpg.so.5
2. libmysqlclient_r.so.15
1. The version we need is no longer in the Ubuntu repos, and needs to be downloaded and installed manually.
2. `sudo apt-get install mysql-common`
3. `wget -O libmysqlclient15off_5.1.30really5.0.75-0ubuntu10.5_i386.deb http://automation.binarysage.net/\?dl_id\=6`
4. `dpkg -i libmysqlclient15off_5.1.30really5.0.75-0ubuntu10.5_i386.deb`
3. `sudo apt-get install libsqlite0` - libsqlite.so.0
5. That should be it!
To run InetVis do the following:

To run InetVis either download the latest binary from the Releases page, or clone the source code and run the `inetvis` binary from the root of the repository.
1. Download the latest InetVis release archive from the releases page.
* Alternatively clone the repository, and follow the build procedure above
2. Install the requirements (if necessary):
* `sudo apt-get install build-essential g++ libc6 libstdc++6 libc6-dev make libpcap-dev libgl1-mesa-dev libqt4-dev libqt4-dev qt4-dev-tools`
* Note: These are also the build requirements, installing them may not be necessary for simply running the application.

`./inetvis`
If you installed InetVis as per the instructions, you should simply be able
to run the `inetvis` command from your command line or menu system.

If you would like to monitor your own host for network events, instead of replaying capture files, please ensure that you use `sudo`:
If you have built the binary yourself, please run it using manually using `./inetvis` from the src directory.

`sudo ./inetvis`
You will need to run your built binary as root should you wish to monitor local host.

Have fun! :-)

# Uninstalling InetVis

A convenience script is included in the release archive, namely `uninstall_inetvis.sh`, which can be used to completely remove inetvis from your system at any time.

# Building InetVis

Building InetVis is relatively straight forward but comes with the same caveats as running it. Currently only 32-bit flavours of Linux, Ubuntu, are supported.
In order to build InetVis in your own VM please consider the following guidelines:

Building InetVis is relatively straight forward. Begin by installing the following dependencies:

1. Update your system:
* `sudo apt-get update` and `sudo apt-get upgrade`, finally `sudo apt-get dist-upgrade`
2. Install the following dependencies:
* `sudo apt-get install build-essential g++ libc6 libstdc++6 libc6-dev make libpcap-dev libgl1-mesa-dev libqt4-dev libqt4-dev qt4-dev-tools`

Before getting started please follow all of the instructions in **Running InetVis** to ensure that you have all of the relevant dependencies installed.
Once the dependencies are installed, clone this repository if you haven't already.

Next you either need to set the environment variable `QT_SELECT=qt4`, wherever you prefe, or you need to run the `qmake` command below with the `-qt=qt4` option. This ensures that the project is built using Qt4, and not Qt5 which will likely be the default.
1. Clone the github repo into the `inetvis` directory:
* git clone [email protected]:yestinj/inetvis.git
2. Change into the `inetvis` directory, and then change to `src`.
3. Checkout whichever branch you want to build, i.e. master or develop.
* `git checkout develop`

Once your system is up and running do the following to build InetVis:
Finally, build the `inetvis` binary:

1. `cd src`
2. `qmake`
3. `make`
1. `qmake`
2. `make`

This should result in a new `inetvis` binary being generated within the source directory.

# Development

# Notes
Development is currently done using Qt Creator.

QT Creator allows for simple editing of source code, as well as graphical form editing, and can be
installed in Debian flavours of Linux by installing the `qtcreator` package.

# Versioning

This software will make use of Semantic Versioning 2.0.0 (http://semver.org/) once reaching the v1.0.0 release phase.
This software uses Semantic Versioning 2.0.0 (http://semver.org/) as of release v2.0.0.
10 changes: 5 additions & 5 deletions doc/inetvisdoc.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>InetVis 0.9.5 Manual</title>
<title>InetVis 2.0.1 Manual</title>

<style type="text/css">
/*<![CDATA[*/
Expand Down Expand Up @@ -33,15 +33,15 @@
</head>

<body>
<h1><img src="images/icon.gif" alt="InetVis Icon" border="0" />InetVis 0.9.5 Manual</h1>
<h1><img src="images/icon.gif" alt="InetVis Icon" border="0" />InetVis 2.0.1 Manual</h1>

<p class="center">documentation and help</p>
<br />

<hr />
<!--========================================================================-->

<p class="right"><small><em>Last revision:</em> 2007-11-21</small></p>
<p class="right"><small><em>Last revision:</em> 2017-06-12</small></p>

<h2>Contents</h2>

Expand Down Expand Up @@ -110,8 +110,8 @@ <h2><a id="1." name="1.">1. Description</a></h2>

<p><u>InetVis - <strong>I</strong>nter<strong>net</strong> <strong>Vis</strong>ualization</u></p>

<p>version: 0.9.5<br />
<small>release date: 2007/11/21</small></p>
<p>version: 2.0.1<br />
<small>release date: 2017/06/12</small></p>

<p>InetVis is a 3-D scatter-plot visualization for network traffic. It&#39;s more or less like a media player, but for network traffic. At the moment its just an academic toy for reviewing packet capture files, but may be useful in other endeavours. For example, InetVis has been used to verify and critique the accuracy of scan detection algorithms in the Snort IDS and Bro IDS.</p>

Expand Down
Binary file removed inetvis
Binary file not shown.
File renamed without changes.
File renamed without changes.
52 changes: 0 additions & 52 deletions src/README.txt

This file was deleted.

101 changes: 52 additions & 49 deletions src/aboutdialog.ui
Original file line number Diff line number Diff line change
@@ -1,49 +1,51 @@
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>AboutDialog</class>
<widget class="QDialog">
<property name="name">
<cstring>AboutDialog</cstring>
</property>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0" stdsetdef="1">
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>AboutDialog</class>
<widget class="QDialog" name="AboutDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>526</width>
<height>335</height>
</rect>
<rect>
<x>0</x>
<y>0</y>
<width>526</width>
<height>335</height>
</rect>
</property>
<property name="caption">
<string>About InetVis</string>
<property name="windowTitle">
<string>About InetVis</string>
</property>
<vbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="QTextBrowser">
<property name="name">
<cstring>textBrowser1</cstring>
</property>
<property name="text">
<string>&lt;h2&gt;InetVis - &lt;b&gt;I&lt;/b&gt;nter&lt;b&gt;net&lt;/b&gt; &lt;b&gt;Vis&lt;/b&gt;ualization&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;Version&lt;/i&gt;: 0.9.5-qt4&lt;br&gt;&lt;small&gt;&lt;i&gt;Release date&lt;/i&gt;: 2007/11/21&lt;/small&gt;&lt;br&gt;&lt;/p&gt;
<layout class="QVBoxLayout">
<item>
<widget class="QTextBrowser" name="textBrowser1">
<property name="text">
<string>&lt;h2&gt;InetVis - &lt;b&gt;I&lt;/b&gt;nter&lt;b&gt;net&lt;/b&gt; &lt;b&gt;Vis&lt;/b&gt;ualization&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;Version&lt;/i&gt;: 2.0.1&lt;br&gt;&lt;small&gt;&lt;i&gt;Release date&lt;/i&gt;: 2017/06/12&lt;/small&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;About&lt;/h3&gt;
&lt;p&gt;Computer Science Honours Project - 2005&lt;br&gt;
Computer Science Masters Project - 2006/7&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Author&lt;/i&gt;: Jean-Pierre van Riel&lt;br&gt;
Computer Science Masters Project - 2006/7&lt;br&gt;
Computer Science Masters Project - 2017&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Original Author&lt;/i&gt;: Jean-Pierre van Riel (2005 - 2007)&lt;br&gt;
&lt;i&gt;Current Author&lt;/i&gt;: Yestin Johnson (2017)&lt;br&gt;
&lt;i&gt;Supervisor&lt;/i&gt;: Barry Irwin&lt;br&gt;
&lt;i&gt;Institute&lt;/i&gt;: Rhodes University, Grahamstown, 6140, Eastern Cape, South Africa&lt;br&gt;
&lt;i&gt;website: &lt;/i&gt;&lt;u&gt;http://research.ict.ru.ac.za/G02V2468/&lt;/u&gt;&lt;br&gt;
&lt;i&gt;email &lt;/i&gt;&lt;u&gt;[email protected]&lt;/u&gt;&lt;/p&gt;
&lt;h3&gt;Aknowledgment&lt;/h3&gt;
&lt;p&gt;Based on the "The Spinning Cube of Potential Doom", by Stephen Lau:&lt;br&gt;
&lt;i&gt;Website: &lt;/i&gt;&lt;u&gt;http://research.ict.ru.ac.za/G02V2468/&lt;/u&gt;&lt;br&gt;
&lt;i&gt;Github: &lt;/i&gt;&lt;u&gt;https://github.com/yestinj/inetvis&lt;/u&gt;&lt;br&gt;

&lt;i&gt;Email &lt;/i&gt;&lt;u&gt;[email protected]&lt;/u&gt;&lt;br&gt;
&lt;i&gt;Email &lt;/i&gt;&lt;u&gt;[email protected]&lt;/u&gt;&lt;/p&gt;
&lt;h3&gt;Acknowledgment&lt;/h3&gt;

&lt;p&gt;Based on the &quot;The Spinning Cube of Potential Doom&quot;, by Stephen Lau:&lt;br&gt;
&lt;u&gt;www.nersc.gov/security/TheSpinningCube.html&lt;/u&gt;&lt;/p&gt;&lt;p&gt;Special thanks to Barry Irwin (project supervisor), and Shaun Bangay (Graphics honours course lecture of 2005). Their instruction and input has made this project possible.&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;h3&gt;GPL License, Version 2&lt;/h3&gt;

&lt;p&gt;InetVis - Internet Visualisation for network traffic analysis.&lt;br&gt;
Copyright (C) 2005 - 2007, Jean-Pierre van Riel&lt;/p&gt;
Copyright (C) 2005 - 2017, Jean-Pierre van Riel&lt;/p&gt;

&lt;p&gt;This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Expand Down Expand Up @@ -111,8 +113,8 @@ met:&lt;/p&gt;
the names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&lt;p&gt;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS
IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
Expand Down Expand Up @@ -143,9 +145,9 @@ met:&lt;/p&gt;
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.&lt;/li&gt;
&lt;li&gt;All advertising materials mentioning features or use of this software
must display the following acknowledgement: "This product includes
must display the following acknowledgement: &quot;This product includes
software developed by the University of California, Berkeley and its
contributors."&lt;/li&gt;
contributors.&quot;&lt;/li&gt;
&lt;li&gt;Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.&lt;/li&gt;
Expand Down Expand Up @@ -191,9 +193,9 @@ this list of conditions and the following disclaimer.&lt;/li&gt;
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.&lt;/li&gt;
&lt;li&gt;All advertising materials mentioning features or use of this software must
display the following acknowledgement: "This product includes software
display the following acknowledgement: &quot;This product includes software
developed by the Kungliga Tekniska Hogskolan and its
contributors."&lt;/li&gt;
contributors.&quot;&lt;/li&gt;
&lt;li&gt;Neither the name of the University nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.&lt;/li&gt;
Expand Down Expand Up @@ -223,8 +225,8 @@ this list of conditions and the following disclaimer.&lt;/li&gt;
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.&lt;/li&gt;
&lt;li&gt;All advertising materials mentioning features or use of this software must
display the following acknowledgement: "This product includes software
developed by Yen Yen Lim and North Dakota State University"&lt;/li&gt;
display the following acknowledgement: &quot;This product includes software
developed by Yen Yen Lim and North Dakota State University&quot;&lt;/li&gt;
&lt;li&gt;The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.&lt;/li&gt;
&lt;/ol&gt;
Expand All @@ -248,7 +250,7 @@ notice and this permission notice appear in all copies, and that the name of
Digital Equipment Corporation not be used in advertising or publicity
pertaining to distribution of the document or software without specific,
written prior permission.&lt;/p&gt;
&lt;p&gt;THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
&lt;p&gt;THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION
BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
Expand Down Expand Up @@ -312,7 +314,7 @@ list of conditions and the following disclaimer.&lt;/li&gt;
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTOR "AS IS"
&lt;p&gt;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTOR &quot;AS IS&quot;
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
Expand All @@ -334,11 +336,12 @@ distribution of the program without specific prior permission, and notice be
given in supporting documentation that copying and distribution is by
permission of Carnegie Mellon and Stanford University. Carnegie Mellon makes
no representations about the suitability of this software for any purpose. It
is provided "as is" without express or implied warranty.&lt;/p&gt;</string>
</property>
is provided &quot;as is&quot; without express or implied warranty.&lt;/p&gt;</string>
</property>
</widget>
</vbox>
</widget>
<pixmapinproject/>
<layoutdefaults spacing="6" margin="11"/>
</UI>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
</ui>
5 changes: 5 additions & 0 deletions src/aboutdialogwidget.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#include "aboutdialogwidget.h"

AboutDialogWidget::AboutDialogWidget(QWidget *parent) : QDialog(parent) {
setupUi(this);
}
Loading

0 comments on commit 3aed4ea

Please sign in to comment.