Packet Sniffer Project Document PDF Free
Packet Sniffer Project Document PDF Free
INTRODUCTION
1.1 ABSTRACT
This project is intended to develop a tool called Packet Sniffer. The Packet
Sniffer allows the computer to examine and analyze all the traffic passing by its
network connection. It decodes the network traffic and makes sense of it.
The output is appended into normal text file, so that the network administrator
can understand the network traffic and later analyze it.
1
1.2 ORGANIZATION PROFILE
2
2. SYSTEM STUDY
A Packet Sniffer is a program that can see all of the information passing over
the network it is connected to. A Packet Sniffer is a Wire-tapping device that plugs
into computer Networks and eavesdrop on the network traffic.
A packet sniffer (also known as a network analyzer or protocol analyzer or, for
particular types of networks, an Ethernet sniffer or wireless sniffer) is computer
software that can intercept and log traffic passing over a digital network or part of a
network. As data streams flow across the network, the sniffer captures each packet
and eventually decodes and analyzes its content.
Background:
Internet protocols were first developed in the mid-1970s, when the Defense
Advanced Research Projects Agency (DARPA) became interested in establishing a
packet-switched network that would facilitate communication between dissimilar
computer systems at research institutions. With the goal of heterogeneous
connectivity in mind, DARPA funded research by Stanford University and Bolt,
Beranek, and Newman (BBN). The result of this development effort was the Internet
protocol suite, completed in the late 1970s.
4
OSI model Internet protocol suite
Application NFS
FTP,
Presentation RPC
Telnet,
SNMP
Transport TCP, UDP
Network IP ICMP
ARP RARP
Data Link
Fig 1: Internet protocols span the complete range of OSI model layers.
IP Packet Format:
Source Address
Destination Address
Options (+padding)
Data (variable)
6
Fragment Offset — Indicates the position of the fragment's data relative to the
beginning of the data in the original datagram, which allows the destination IP
process to properly reconstruct the original datagram.
IP Addressing:
Each host on a TCP/IP network is assigned a unique 32-bit logical address that
is divided into two main parts: the network number and the host number. The network
number identifies a network and must be assigned by the Internet Network
Information Center (InterNIC) if the network is to be part of the Internet. An Internet
Service Provider (ISP) can obtain blocks of network addresses from the InterNIC and
can itself assign address space as necessary. The host number identifies a host on a
network and is assigned by the local network administrator.
7
IP Address Format:
The 32-bit IP address is grouped eight bits at a time, separated by dots, and
represented in decimal format (known as dotted decimal notation). Each bit in the
octet has a binary weight (128, 64, 32, 16, 8, 4, 2, 1). The minimum value for an octet
is 0, and the maximum value for an octet is 255. Figure.3 illustrates the basic format
of an IP address.
Network Host
IP Address Classes:
No. of bits 7 24
0 Networks Host Host Host
Class A
Class B 1 0 Network Network Host Host
14 16
Class C 1 1 0 Network Network Network Host
21 8
The class of address can be determined easily by examining the first octet of
the address and mapping that value to a class range in the following table. In an IP
address of 172.31.1.2, for example, the first octet is 172. Because 172 falls between
8
128 and 191, 172.31.1.2 is a Class B address. Figure 5 summarizes the range of
possible values for the first octet of each address class.
Fig 5: A range of possible values exists for the first octet of each address class.
Class A 1 D 126 0
IP Subnet Addressing:
Subnets are under local administration. As such, the outside world sees an
organization as a single network and has no detailed knowledge of the organization's
internal structure.
A given network address can be broken up into many sub networks. For
example, 172.16.1.0, 172.16.2.0, 172.16.3.0, and 172.16.4.0 are all subnets within
network 171.16.0.0. (All 0s in the host portion of an address specifies the entire
network.)
For two machines on a given network to communicate, they must know the
other machine's physical (or MAC) addresses. By broadcasting Address Resolution
9
Protocols (ARPs), a host can dynamically discover the MAC-layer address
corresponding to a particular IP network-layer address.
Internet Routing:
Routers within the Internet are organized hierarchically. Routers used for
information exchange within autonomous systems are called interior routers, which
use a variety of Interior Gateway Protocols (IGPs) to accomplish this purpose. The
Routing Information Protocol (RIP) is an example of an IGP.
10
IP Routing:
ICMP Messages:
11
When an ICMP destination-unreachable message is sent by a router, it means
that the router is unable to send the package to its final destination. The router then
discards the original packet. Two reasons exist for why a destination might be
unreachable. Most commonly, the source host has specified a nonexistent address.
Less frequently, the router does not have a route to the destination.
An ICMP Redirect message is sent by the router to the source host to stimulate
more efficient routing. The router still forwards the original packet to the destination.
ICMP redirects allow host routing tables to remain small because it is necessary to
know the address of only one router, even if that router does not provide the best path.
Even after receiving an ICMP Redirect message, some devices might continue using
the less-efficient route.
TCP offers efficient flow control, which means that, when sending
acknowledgments back to the source, the receiving TCP process indicates the highest
sequence number it can receive without overflowing its internal buffers.
Full-duplex operation means that TCP processes can both send and receive at the
same time.
13
Each host randomly chooses a sequence number used to track bytes within the
stream it is sending and receiving. Then, the three-way handshake proceeds in the
following manner:
The first host (Host A) initiates a connection by sending a packet with the
initial sequence number (X) and SYN bit set to indicate a connection request. The
second host (Host B) receives the SYN, records the sequence number X, and replies
by acknowledging the SYN (with an ACK = X + 1). Host B includes its own initial
sequence number (SEQ = Y). An ACK = 20 means the host has received bytes 0
through 19 and expects byte 20 next. This technique is called forward
acknowledgment. Host A then acknowledges all bytes Host B sent with a forward
acknowledgment indicating the next byte Host A expects to receive (ACK = Y + 1).
Data transfer then can begin.
By assigning each packet a sequence number, PAR enables hosts to track lost
or duplicate packets caused by network delays that result in premature retransmission.
The sequence numbers are sent back in the acknowledgments so that the
acknowledgments can be tracked.
PAR is an inefficient use of bandwidth, however, because a host must wait for
an acknowledgment before sending a new packet, and only one packet can be sent at a
time.
A TCP sliding window provides more efficient use of network bandwidth than
PAR because it enables hosts to send multiple bytes or packets before waiting for an
acknowledgment.
14
In TCP, the receiver specifies the current window size in every packet.
Because TCP provides a byte-stream connection, window sizes are expressed in bytes.
This means that a window is the number of data bytes that the sender is allowed to
send before waiting for an acknowledgment. Initial window sizes are indicated at
connection setup, but might vary throughout the data transfer to provide flow control.
A window size of zero, for instance, means "Send no data."
The receiver would respond with an ACK = 6, indicating that it has received
bytes 1 to 5 and is expecting byte 6 next. In the same packet, the receiver would
indicate that its window size is 5. The sender then would move the sliding window
five bytes to the right and transmit bytes 6 to 10. The receiver would respond with an
ACK = 11, indicating that it is expecting sequenced byte 11 next. In this packet, the
receiver might indicate that its window size is 0 (because, for example, its internal
buffers are full). At this point, the sender cannot send any more bytes until the
receiver sends another packet with a window size greater than 0.
Sequence number
Acknowledge number
Options (+padding) 15
Data (variable)
TCP Packet Field Descriptions:
Source Port and Destination Port — Identifies points at which upper-layer source
and destination processes receive TCP services.
Sequence Number — Usually specifies the number assigned to the first byte of data
in the current message. In the connection-establishment phase, this field also can be
used to identify an initial sequence number to be used in an upcoming transmission.
Acknowledgment Number — Contains the sequence number of the next byte of data
the sender of the packet expects to receive.
Data Offset — Indicates the number of 32-bit words in the TCP header.
Flags — Carries a variety of control information, including the SYN and ACK bits
used for connection establishment, and the FIN bit used for connection termination.
Window — Specifies the size of the sender's receive window (that is, the buffer space
available for incoming data).
Urgent Pointer — Points to the first urgent data byte in the packet.
16
User Datagram Protocol (UDP):
UDP is useful in situations where the reliability mechanisms of TCP are not
necessary, such as in cases where a higher-layer protocol might provide error and flow
control.
The UDP packet format contains four fields, as shown in Figure 7. These
include source and destination ports, length, and checksum fields.
Length checksum
17
Internet Protocols: Application Layer Protocols
Network File System (NFS), External Data Representation (XDR), and Remote
Procedure Call (RPC)—Work together to enable transparent access to remote
network resources
Domain Name System (DNS)—Translates the names of network nodes into network
addresses.
The list of the higher-layer protocols and the applications that they support is as
follows:
Application Protocols
On wired broadcast and wireless LANs, in order to capture traffic other than
unicast traffic sent to the machine running the sniffer software, multicast traffic sent to
a multicast group to which that machine is listening, and broadcast traffic, the
network adapter being used to capture the traffic must be put into promiscuous mode;
some sniffers support this, others don't. On wireless LANs, even if the adapter is in
promiscuous mode, packets not for the service set for which the adapter is configured
will usually be ignored; in order to see those packets, the adapter must be put into
monitor mode.
Uses of Sniffers:
Sniffing programs have been around for a long time in two forms. Commercial
packet sniffers are used to help maintain networks.
19
Typical uses of such programs include:
Automatic sniffing of clear-text passwords and usernames from the
network.
Conversion of data to human readable formats so that people can read the
traffic.
Fault analysis to discover problems in the network, such as why computer
A can’t talk to computer B.
Performance analysis to discover network bottlenecks.
Network intrusion detection in order to discover hackers/crackers.
Network traffic logging, to create logs that hacker's can't break into and
erase.
Monitor network usage.
Debug client/server communications.
Debug network protocol implementations.
Example Uses:
A packet sniffer for a token ring network could detect that the token has
been lost or the presence of too many tokens (verifying the protocol).
A packet sniffer could detect that messages are being sent to a network
adapter; if the network adapter did not report receiving the messages then
this would localize the failure to the adapter.
20
A packet sniffer could be used to diagnose operating system connectivity
issues like web, ftp, sql, active directory, etc.
A packet sniffer could be used to analyze data sent to and from secure
systems in order to understand and circumvent security measures, for the
purposes of penetration testing or illegal activities.
A packet sniffer can passively capture data going between a web visitor
and the web servers decode it at the HTTP and HTML level and create
web log files as a substitute for server logs and page tagging for web
analytics.
In present as there are many sniffers are available in the market. They can be
freely downloaded from the internet. Some sniffers uses winpcap, others use libpcap
according to the platform on which they are working. If the platform is windows then
they are using winpcap, and if the platform is UNIX then they are using libpcap.
Proposed system uses jpcap API in order to capture packets from the network.
Jpcap is a java library for capturing and sending network packets. Using Jpcap, you
can develop applications to capture packets from a network interface and
visualize/analyze them. Jpcap can capture Ethernet, IPv4, IPv6, ARP/RARP, TCP,
UDP, and ICMPv4 packets. Jpcap has been tested on Microsoft Windows
(98/2000/XP/Vista), Linux (Fedora, Mandriva, Ubuntu), Mac OS X (Darwin),
FreeBSD, and Solaris.
We can observe the old packets those were passed through the network in the
past. We can observe the DOS attacks.
21
3. SYSTEM ANALYSIS
This Project deals with a packet capture utility and Network monitoring. This
Project is useful to the Network Administrators to observe each and every incoming
packet for security enhancements. Irrespective of the Destination IP of incoming
packet the machine on which this project is running captures all packets .This Project
Keeps on differentiating the type of the entities which are there in Ethernet header.
The main program will have an infinite loop which keeps an eye on each and
every incoming packet. The moment it collects that packet it starts invoking
respective modules and those modules will internally redirects that information to
respective text files. The utilities used in this project are WinPcap and PacketX.
WinPcap:
22
In the field of computer network administration, pcap consists of an
application programming interface (API) for capturing network
traffic. Unix-like systems implement pcap in the libpcap library;
Windows uses a port of libpcap known as WinPcap.
Libpcap and WinPcap also support saving captured packets to a file, and
reading files containing saved packets; applications can be written, using libpcap or
WinPcap, to be able to capture network traffic and analyze it, or to read a saved
capture and analyze it, using the same analysis code. A capture file saved in the
format that libpcap and WinPcap use can be read by applications that understand that
format.
drivers for Windows 95/98/Me, and for the Windows NT family (Windows NT
4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista,
etc.), which use NDIS to read packets directly from a network adapter;
A port of libpcap that uses the API offered by the low-level library
implementations.
RAD development tools like Microsoft Visual Basic or Borland Delphi. For
scripting languages there are corresponding lightweight COM classes.
PacketXClass
AdapterCollection
Adapter
Packet
_IPktXPacketXEvents_OnPacketEventHandler
3.2 Modules:
Required to login and logout before and after access the Application for
Admin. Required username and password for security purpose just to identify them
selves.
24
This is for the Admin, member of the Application have access to the
management administration Form. Management Admin can provide the IP Addresses
or Domain Name (Example news.microsoft.com) to connect Network news transfer
Protocol server,
The ping utility is essentially a system administrator's tool that is used to see if
a computer is operating and if network connections are intact. Ping uses the Internet
Control Message Protocol (ICMP) Echo function which The ping utility verifies
connections to a remote computer or computers. You can use ping to test both the
computer name and the IP address. If the IP address is verified, but the computer
name is not, you may have a name resolution problem. In this case, make sure the
computer name you are querying is in either the local host file or in the DNS
database.
A packet is the unit of data that is routed between an origin and a destination on
the Internet or any other packet-switched network. When any file (e-mail message,
HTML file, Graphics Interchange Format file, Uniform Resource Locator request, and
so forth) is sent from one place to another on the Internet, the Transmission Control
Protocol (TCP) layer of TCP/IP divides the file into "chunks" of an efficient size for
routing. Each of these packets is separately numbered and includes the Internet
address of the destination. The individual packets for a given file may travel different
25
routes through the Internet. When they have all arrived, they are reassembled into the
original file (by the TCP layer at the receiving end).
The netstat command displays the protocol statistics and current TCP/IP
connections on the local system. Used without any switches, the netstat command
shows the active connections for all outbound TCP/IP connections. In addition,
several switches are available that change the type of information netstat displays.
Table 5 shows the various switches available for the netstat utility.
The traceroute application will print the route that packets take in order to
arrive at a network host. It works by trying to elicit an ICMP TIME_EXCEEDED
response from each gateway along the path to a particular host. For this reason, the
times, which are actually returned
in the traceroute readout, are not actually reflective of the times that it requires
packets from another protocol such as telnet, SMTP, or FTP to arrive at the
destination and gateways along the route.
Usage:
This is the requirements document for the project. The system to be developed
is for capturing the packets flowing in the network and analyzes them. The
information in the various headers of the packets is to be extracted and saved into the
output file.
26
Introduction:
Purpose:
To develop a tool that easily analyzes the network traffic flow on that
particular system and to show the information for the administrator in human readable
format.
Scope:
General Description:
In a computer network every system can see all the packets flowing in the
network, but can capture the packets that are addressed to that particular system only.
But the product must be able to make a copy of all the packets flowing in the network,
which are address to it and also not address to it. The packet copied must be stored in
a buffer. Each packet has headers in which information about the packet will be stored
in a specified format. This information must be extracted and if necessary covert into
human readable form and store it in the output files.
User Characteristics:
The user of the system will be the systems administrator who controls and
configures the network traffic through the server.
27
General Constraints:
The assumption is that the packets moving in the networking are coming from
only Ethernet and not from any other like FDDI, etc.
Inputs: Raw packets flowing in the network of the system on which the Packet
Sniffer is installed.
Functional Requirements:
Capture the packets in the network at the data link layer before they are passed
to the protocols implemented in the kernel.
Strip off the various headers in each packet and analyze the information in it.
Append the information in the headers of the packet into output file in a specified
format.
Performance Constraints:
The maximum size of the buffer to hold the packet is 2000 bytes. The speed of
the networks should not exceed 100Mbps if it exceeds this speed all the packets may
not be analyzed.
28
Operational feasibility:
In this test, the operational scope of the system is checked. The system under
consideration should have enough operational research. It is observed that proposed
system is very user friendly and since the system is built with enough help, even
persons with little knowledge of windows can find the system very easy.
Technical feasibility:
This test includes a study of function, performance and constraints that may
affect the ability to achieve an acceptable system. This test begins with an assessment
of the technical viability of the proposed system. One of the main factors to be
accessed is the need of various kinds of resources for the successful implementation
of the proposed system.
Economical feasibility:
Software Environment:
The system will run under .net Framework that is to be installed on the system.
Language : C# .NET
Hardware Environment:
Processor : Pentium IV
LAN : Enabled
Acceptance Criteria:
Before accepting the system, the developer will have to demonstrate how the
system works on the given data. The developer will have to show by suitable test
cases that all conditions are satisfied.
4. SYSTEM DESIGN
All Software products can be developed with the help of a Software Process
i.e. Software Life Cycle. This Software Process is nothing but a series of identifiable
stages that a software product undergoes during its lifetime. And this series basically
starts with a Feasibility Study Stage, Requirement Analysis and Specification, Design,
Coding, Testing and Maintenance. Each of these phases is called the Life Cycle
Phase. And this Software process is achieved, with the help of software life cycle
model (or process model). A Process Model is a descriptive and diagrammatical
model of a software Process. A process model identity all the activities required to
develop and maintain a software product, and establish a precedence ordering among
the different activities.
30
A process model defines entry and exit criteria for every phase. e.g. the
corresponding phase-entry criteria for the Software Requirement Specification phase
can be that the software Requirement Specification document has been completed,
internally reviewed, and approved by the customer. With such well-defined entry and
exit criteria for various phases, it becomes easier to manage and monitor the progress
of the project. Thus, we can say that life cycle models encourage development of
software in a systematic and disciplined manner. Due to the above fact, the developer
should adhere to well-defined life cycle model. Thus, a major advantage of adhering
to a well-defined life cycle model is that it helps to control and organize
systematically various activities of the product, which is taken to develop. When a life
cycle model is adhered to, the developer can easily tell at which stage (e.g. design,
code, testing) of development, the project currently is. If no life cycle model is
adhered to, it becomes very difficulty to chart the progress of the project and the
developer may face a problem known as the 99% complete syndrome. In this
syndrome, which appears when there is no definite way to access the progress of the
project, the optimistic developer feels that the project is 99% complete, even when the
project is far from its completion. Success or completion of project is heavily
dependent upon which type of life cycle model the developer is going to adhere. So a
life cycle model plays an important role in the successful completion of a project.
Basically five types of life cycle models are used, while developing a software
product.
Evolutionary Model
Prototyping Model.
Spiral Model.
During the development of the project Packet Sniffer, I followed the Classical
Waterfall Model. This model divides the life cycle of a software development process
into the phases, shown below:
31
Development phase = Feasibility Study + Requirement Analysis and
Specification + Design + Coding and Unit Testing + Integration and system testing.
Network Administrators have to maintain the network to meet the needs of the
users. For this they should have the information of the network traffic so that they can
fine tune their systems according to the traffic on the network and enhance the
performance of the servers to provide efficient and reliable facilities to the users. So
they want a utility that can monitor the traffic on their network. The parties involved
are:
To transmit data from host A to host B, the data has to travel via x,y, hosts in
the network. So every host will see all the packets, but in normal operation it will take
only the packets, which are addressed to it, and the packets are passed to the kernel
where further analysis of the packet takes place. So our problem now is to make a
copy of all the packets flowing in the network even though they are not addressed to
our host and pass them directly to our application program without passing them to
the kernel. The proposed system should not disturb the network traffic or modify any
of the packets. It should merely make a copy of the packets. Each packet must be
analyzed in detail. This information must be stored in output file so that the
administrator can later take printouts. Also time and date of arrival of the packet must
be found and stored in the output files.
The data flow diagrams for the current project are show in the following
figure. It is the data flow diagram for the entire process. It specifies the major
transform centers in the approach to be followed for producing the software. This is
32
the first step in the structured design method. In the project, the inputs are the packets
that are flowing in the network interface that is set to promiscuous mode. The output
is the information contained in the packets in human readable form, which is stored in
the output file.
The context diagram and data flow diagram of the proposed system are given
as follows:
Network Protocol
Packets Repor Administrato
interface
Analyzer ts r
card
Promiscuous
mode
Ip
header
Transport layer
header
33
The data flow diagrams for the current project are show in the following
figure. It is the data flow diagram for the entire process. It specifies the major
transform centers in the approach to be followed for producing the software. This is
the first step in the structured design method. In the project, the inputs are the packets
that are flowing in the network interface that is set to promiscuous mode. The output
is the information contained in the packets in human readable form, which is stored in
the output file.
Explanation:
In the diagram the input is obtained as packets from the network interface by
the ‘Get packets’ process. For that this process defines a packet socket and obtains the
raw packets from the network interface and stores them into a buffer. The buffer
containing the packets is passed to the ‘separate header’ process, which strips off
various headers of the packet and passes them to ‘analyze headers’ process where they
will be analyzed and the information is passed on to the ‘update output file’ process.
Here the output file will be updated with the latest information obtained from the later
processes.
The most abstract inputs are the stripped off headers and the most abstract
output is the information in the headers in human readable form.
MAIN
hdr’s
info
info
hdr’s
In the structure chart, there are three modules: - one for input, one for output
and another is called the central transform module which performs the basic
transformation for the system, taking the most abstract input and transforming it into
the most abstract output. The main module’s job is to invoke the subordinates.
Here, there is one input module, which returns the headers in the packet to the
main module. The main module passes these headers to the protocol analysis module,
which transforms them into human readable information. This information is passed
to the main module. The main module passes this information to the output module,
which updates the output files.
hdr
’s
Get Input
hdr
buf ’s
35
buf
In the input module, the network interface is turned into promiscuous mode so
that all the packets can be captured even though they are not intended to it. This is
done by defining an adapter object and reading all the packets into a buffer. Then each
packet is taken and the various headers are stripped off and sent to the main module.
hdr’ info
s
Protocol Analyzer
ip hdr
arp or rarp
hdr
ip ARP &RARP
36
Fig: Protocol Analysis Module
info
Output
ofstream ofstream
This module gets the information stored in the headers of the packets as input
from the main module. The output module is split into two sub-modules. The first
37
module updates the output files with the input obtained by the main module and
passes back the file pointers to the ’output’ module. These file streams are passed to
the ‘print reports’ module where the reports are printed.
Requirements
Architecture
Design
Source code
Project plans
Tests
Prototypes
Releases
38
Depending on the development culture, some of these artifacts are treated
more or less formally than others. Such artifacts are not only the deliverables of a
project, they are also critical in controlling, measuring, and communicating about a
system during its development and after its deployment.
The UML addresses the documentation of a system's architecture and all of its
details. The UML also provides a language for expressing requirements and for tests.
Finally, the UML provides a language for modeling the activities of project planning
and release management Applications
39
more experience in applying the UML, you can build on this conceptual model, using
more advanced features of the language.
Things
Relationships
Diagrams
Things are the abstractions that are first-class citizens in a model; relationships
tie these things together; diagrams group interesting collections of things.
Structural things
Behavioral things
Grouping things
Annotational things
These things are the basic object-oriented building blocks of the UML. You
use them to write well-formed models.
Structural Things:
Structural things are the nouns of UML models. These are the mostly static
parts of a model, representing elements that are either conceptual or physical. In all,
there are seven kinds of structural things.
First, a class is a description of a set of objects that share the same attributes,
operations, relationships, and semantics. A class implements one or more interfaces.
Graphically, a class is rendered as a rectangle, usually including its name, attributes,
and operations.
40
CLASS:
NewClass
window
origin
size
open()
close()
move()
INTERFACE:
NewInterfac
e
UseCase
Fifth, an active class is a class whose objects own one or more processes or
threads and therefore can initiate control activity. An active class is just like a class
except that its objects represent elements whose behavior is concurrent with other
elements. Graphically, an active class is rendered just like a class, but with heavy
lines, usually including its name, attributes, and operations.
COMPONENT:
42
NewComponent
Seventh, a node is a physical element that exists at run time and represents a
computational resource, generally having at least some memory and, often, processing
capability. A set of components may reside on a node and may also migrate from node
to node. Graphically, a node is rendered as a cube, usually including only its name.
Behavioral Things:
Behavioral things are the dynamic parts of UML models. These are the verbs
of a model, representing behavior over time and space. In all, there are two primary
kinds of behavioral things.
43
activities (the response to a transition). Graphically, a state is rendered as a rounded
rectangle, usually including its name and its sub states, if any.
STATE:
NewState
Grouping Things:
Grouping things are the organizational parts of UML models. These are the
boxes into which a model can be decomposed. In all, there is one primary kind of
grouping thing, namely, packages.
PACKAGE:
Packages are the basic grouping things with which you may organize a UML
model. There are also variations, such as frameworks, models, and subsystems (kinds
of packages).
Annotational Things:
44
Annotational things are the explanatory parts of UML models. These are the
comments you may apply to describe, illuminate, and remark about any element in a
model. There is one primary kind of annotational thing, called a note. A note is simply
a symbol for rendering constraints and comments attached to an element or a
collection of elements. Graphically, a note is rendered as a rectangle with a dog-eared
corner, together with a textual graphical comment.
NOTES:
This element is the one basic annotational thing you may include in a UML
model. You'll typically use notes to adorn your diagrams with constraints or
comments that are best expressed in informal or formal text. There are also variations
on this element, such as requirements (which specify some desired behavior from the
perspective of outside the model).
1. Dependency
2. Association
3. Generalization
4. Realization
These relationships are the basic relational building blocks of the UML. You
use them to write well-formed models.
ASSOCIATION:
Employer employee
GENERALIZATION:
REALIZATION:
These four elements are the basic relational things you may include in a UML
model. There are also variations on these four, such as refinement, trace, include, and
extend (for dependencies).
46
The five views of architecture are discussed in the following section.
47
These less-than-well-formed models are unavoidable as the details of a system
unfold and churn during the software development life cycle. The rules of the UML
encourage you—but do not force you—to address the most important analysis,
design, and implementation questions that push such models to become well-formed
over time.
A class diagram shows a set of classes, interfaces, and collaborations and their
relationships. These diagrams are the most common diagram found in modeling
object-oriented systems. Class diagrams address the static design view of a system.
Class diagrams that include active classes address the static process view of a system.
48
A use case diagram shows a set of use cases and actors (a special kind of class)
and their relationships. Use case diagrams address the static use case view of a
system. These diagrams are especially important in organizing and modeling the
behaviors of a system. Both sequence diagrams and collaboration diagrams are kinds
of interaction diagrams. Shows an interaction, consisting of a set of objects and their
relationships, including the messages that may be dispatched among them. Interaction
diagrams address the dynamic view of a system.
An activity diagram is a special kind of a state chart diagram that shows the
flow from activity to activity within a system. Activity diagrams address the dynamic
view of a system. They are especially important in modeling the function of a system
and emphasize the flow of control among objects.
49
An object diagram shows a set of objects and their relationships. Object
diagrams represent static snapshots of instances of the things found in class diagrams.
These diagrams address the static design view or static process view of a system as do
class diagrams, but from the perspective of real or prototypical cases.
This is not a closed list of diagrams. Tools may use the UML to provide other
kinds of diagrams, although these nine are by far the most common you will
encounter in practice.
Start Monitoring
Start Capture
Capture Packets
Display Graph
Save/Open Packets
Stop Capturing
50
Add/removeIP’s: Administrator can add or remove ip addresses from the
database to block or allow receiving packets from that
particular system on the domain.
Participant Administrator
actor:
Flow of events: 1. System Starts Monitoring.
Class diagram:
51
A class diagram describes the static structure of the symbols in your new
system. It is a graphical presentation of the static view that shows a collection of
declarative (static) model elements, such as classes, types, and their contents and
relationships.
PacketSniffer
tcp header
Dynamic graph
ip header
ethernet header surf
data
surfing()
get()
separate headers()
Surface
ascent
descent
ptnum
thread
usedstr
getminimumsize()
getprefferedsize()
getmaxsize()
surface()
Sequence diagram:
52
UML sequence diagrams model the flow of logic within your system in a
visual manner, enabling you both to document and validate your logic, and are
commonly used for both analysis and design purposes. Sequence diagrams are the
most popular UML artifacts for dynamic modeling, which focuses on identifying the
behavior within your system.
: administrator
press
invokes
generates
view
save/print
add/remove
53
A collaboration diagram is an interaction diagram that emphasizes the
structural organization of the objects that send and receive messages. Collaboration
diagrams are isomorphic, meaning that you can take one and transform it into the
other.
1: press
start capture
button
: administrator
6: add/remove
IP
Address
2: invokes
4: view
5: save/print
54
5.4.5 State chart Diagram:
open tool
5. SOFTWARE OVERVIEW
55
Front End Language:
C Sharp Language:
• Versioning support, so that your base and derived classes — templates that
define how an object performs — remain compatible as you develop them.
• Events, so that your program can notify clients of a class about something
that has happened to an object.
• Type safety and verification that increases reliability and ensures code
security.
• Garbage collection, so that your program can identify objects that your
program can no longer reach.
• Unsafe mode, where you can use pointers to manipulate memory outside
the garbage collector’s control, including methods and properties.
C# is built on the C++ language, so it behaves much like the language. Like
C++, C# lets you write enterprise applications, and C# contains many C++ features,
including statements and operators. C# also provides access to common Application
Program Interface (API) styles including Component Object Model (COM) and C-
style APIs.
56
C# Versus Visual Basic .NET:
The premise of the .NET Framework is that all languages are created equal. To
paraphrase George Orwell, however, some languages are more equal than others. C#
is an excellent language for .NET development. You will find it is an extremely
versatile, robust and well-designed language. It is also currently the language most
often used in articles and tutorials about .NET programming. It is likely that many VB
programmers will choose to learn C#, rather than upgrading their skills to VB .NET.
This would not be surprising because the transition from VB6 to VB .NET is,
arguably, nearly as difficult as from VB6 to C#—and, whether it's fair or not,
historically, C-family programmers have had higher earning potential than VB
programmers.
C# versus Java:
Microsoft includes Visual C++ and C# in Visual Studio .NET. On the surface,
C# has few differences from Visual C++. When you look carefully and start
programming, you will notice that C# differs in several important respects from
Visual C++:
• You can call overridden base class members from derived classes.
57
• C# has a different syntax for declaring C# arrays.
• Support of the new ref and out method parameters that are used instead
of pointers for passing parameters by reference.
Microsoft .NET:
Development tools:
Web services:
Devices:
Since Web Services are highly reusable across the Web, Microsoft plans to
provide a number of building-block services that application developers can use, for a
fee. An example of building –block service is Microsoft Passport, which allows you to
use a single username and password at all web sites that support Passport
authentication. On March 19, 2001, Microsoft announced another set of Web Services
with the codename Hailstorm. This product encompasses a set of building –block
59
services that support personalization, centered entirely on consistent user experiences.
Microsoft plans to add newer services, such as calendar, directory, and search
services. Third-party vendors are also creating new Web services of their own.
At the top layer of the .NET architecture is a brand new development tool
called Visual Studio.NET (VS.NET), which makes possible the rapid development of
Web Services and other applications. A successor of Microsoft Visual Studio 6.0,
VS.NET is an Integrated Development Environment (IDE) that supports four different
languages and features such as cross-language debugging and the XML Schema
Editor.
And at the center of .NET is the Microsoft .NET Framework—the main focus
of this book. The .NET Framework is a new development and runtime infrastructure
that will change the development of business applications on the Windows platform.
It includes the Common Language Runtime (CLR) and a common framework of
classes that can be used by all .NET languages.
Security:
60
Computer networks let programmers share Visual Studio .NET code including
C# programs across the network. This collaborative effort lets you and your
programming team creates C# programs much more quickly than one person alone.
The problem with collaborating over a network is that unauthorized users from within
or outside your network may try to gain access to your C# program code. Visual
Studio .NET provides built-in security features so you or the leader of your
programming team can determine who on your network gets access to your C#
program code and resources. You can also set different levels of security for different
people in case you want only certain people to have access to certain program code.
DLLs:
XML:
61
Windows operating system is no longer a stranger to people; it is a fast
growing fully fledged powerful operating system with enhanced networking features,
popular among home hobbyists and small network users. Connecting a Windows
operating system to the networks is much like advertising an open house to the public,
leaving your front door wide open and going on an extended vacation. Without
precautions unwanted intruders will enter in both cases, and it will happen sooner than
later.
6. SAMPLE CODING
62
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using Sniffer;
using System.Threading;
using System.Text;
namespace SnifferUI
{
public delegate void DoubleClickCallback();
/// <summary>
/// Summary description for SnifferUI.
/// </summary>
public class SnifferUI : System.Windows.Forms.Form
{
private Thread thrdTrv;
private Thread thrd;
private Thread thrdC;
bool isPaused = false;
int MouseX=0;
int MouseY=0;
int
totalCount=0,tcpCount=0,udpCount=0,icmpCount=0,otherCount=0;
int totalByte=0,tcpByte=0,udpByte=0,icmpByte=0,otherByte=0;
private treeViewFuncs objTVF;
private SnifferSocket Socket_ = null;
public Hashtable Counter_ =null;
63
public Hashtable IdentTable_ =null;
private Hashtable TabPageTable_ =null;
private Hashtable CurrentSniffing_=null;
private Hashtable ForCounter=null;
private string thisComputerIp ="";
64
private System.Windows.Forms.Timer timer1;
private MenuItem menuItem5;
private System.ComponentModel.IContainer components;
public SnifferUI()
{
InitializeComponent();
objTVF = new treeViewFuncs();
IdentTable_= new Hashtable();
Counter_=new Hashtable();
TabPageTable_ = new Hashtable();
CurrentSniffing_= new Hashtable();
ForCounter=new Hashtable();
lstwMain.FullRowSelect=true;
lstwMain.GridLines=true;
while (enterence)
{
if ( thisComputerIp != null )
{
// create SnifferSocket object
Socket_ = new SnifferSocket();
try
{
65
// call sniff method of SnifferSocket with this
ComputerIP as parameter
Socket_.Sniff(thisComputerIp);
Socket_.IPs.Add(thisComputerIp);
enterence=false;
}
catch(SnifferException e)
{
HandleSnifferError(e);
thisComputerIp=GetIPToSniff();
}
// call LoadOptions => links
LoadOptions();
}
else
{
thisComputerIp=GetIPToSniff();
}
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
66
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
67
this.DPort_ = new System.Windows.Forms.ColumnHeader();
this.Protocol_ = new System.Windows.Forms.ColumnHeader();
this.Process_ = new System.Windows.Forms.ColumnHeader();
this.ProcessId_ = new System.Windows.Forms.ColumnHeader();
this.CnmLstwMain = new System.Windows.Forms.ContextMenu();
this.miStartSniffing = new System.Windows.Forms.MenuItem();
this.miStopSniffing = new System.Windows.Forms.MenuItem();
this.miConCheck = new System.Windows.Forms.MenuItem();
this.midelete = new System.Windows.Forms.MenuItem();
this.mideleteall = new System.Windows.Forms.MenuItem();
this.imlMain = new
System.Windows.Forms.ImageList(this.components);
this.imltblTreeView = new
System.Windows.Forms.ImageList(this.components);
this.statusBar1 = new System.Windows.Forms.StatusBar();
this.Source = new System.Windows.Forms.ColumnHeader();
this.Destination = new System.Windows.Forms.ColumnHeader();
this.Identification = new System.Windows.Forms.ColumnHeader();
this.Protocal = new System.Windows.Forms.ColumnHeader();
this.tcSniffing = new System.Windows.Forms.TabControl();
68
this.pnlBottomRight.SuspendLayout();
this.pnlBottomRightSub.SuspendLayout();
this.pnlRichText.SuspendLayout();
this.pnlPacket.SuspendLayout();
this.pnlAscii.SuspendLayout();
this.pnlTV.SuspendLayout();
this.pnlBottomLeft.SuspendLayout();
this.pnlUp.SuspendLayout();
this.pnlUpRight.SuspendLayout();
this.pnlUpLeft.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// lstwMain
//
this.lstwMain.Columns.AddRange(new
System.Windows.Forms.ColumnHeader[] {
this.Count_,
this.Source_,
this.SourceName_,
this.SPort_,
this.Destination_,
this.DestName_,
this.DPort_,
this.Protocol_,
this.Process_,
this.ProcessId_});
this.lstwMain.ContextMenu = this.CnmLstwMain;
this.lstwMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstwMain.Location = new System.Drawing.Point(0, 0);
this.lstwMain.MultiSelect = false;
this.lstwMain.Name = "lstwMain";
this.lstwMain.Size = new System.Drawing.Size(904, 176);
69
this.lstwMain.SmallImageList = this.imlMain;
this.lstwMain.TabIndex = 5;
this.lstwMain.UseCompatibleStateImageBehavior = false;
this.lstwMain.View = System.Windows.Forms.View.Details;
this.lstwMain.SelectedIndexChanged += new
System.EventHandler(this.lstwMain_SelectedIndexChanged);
this.lstwMain.DoubleClick += new
System.EventHandler(this.lstwMain_DoubleClick);
this.lstwMain.ColumnClick += new
System.Windows.Forms.ColumnClickEventHandler(this.lstwMain_ColumnClick);
//
// Count_
//
this.Count_.Text = "Count";
this.Count_.Width = 56;
//
// Source_
//
this.Source_.Text = "Source";
this.Source_.Width = 94;
//
// SourceName_
//
this.SourceName_.Text = "Name";
this.SourceName_.Width = 68;
//
// SPort_
//
this.SPort_.Text = "Source Port";
this.SPort_.Width = 150;
//
// Destination_
//
70
this.Destination_.Text = "Destination";
this.Destination_.Width = 102;
//
// DestName_
//
this.DestName_.Text = "Name";
this.DestName_.Width = 64;
//
// DPort_
//
this.DPort_.Text = "Dest. Port";
this.DPort_.Width = 162;
//
// Protocol_
//
this.Protocol_.Text = "Protocol";
//
// Process_
//
this.Process_.Text = "Process";
this.Process_.Width = 74;
//
// ProcessId_
//
this.ProcessId_.Text = "PID";
this.ProcessId_.Width = 50;
//
// CnmLstwMain
//
this.CnmLstwMain.MenuItems.AddRange(new
System.Windows.Forms.MenuItem[] {
this.miStartSniffing,
this.miStopSniffing,
71
this.miConCheck,
this.midelete,
this.mideleteall});
//
// miStartSniffing
//
this.miStartSniffing.DefaultItem = true;
this.miStartSniffing.Index = 0;
this.miStartSniffing.Text = "Start Sniffing";
this.miStartSniffing.Click += new
System.EventHandler(this.miStartSniffing_Click);
//
// miStopSniffing
//
this.miStopSniffing.Index = 1;
this.miStopSniffing.Text = "Stop Sniffing";
this.miStopSniffing.Click += new
System.EventHandler(this.miStopSniffing_Click);
//
// miConCheck
//
this.miConCheck.Index = 2;
this.miConCheck.Text = "Check Connection";
this.miConCheck.Click += new
System.EventHandler(this.miConCheck_Click);
//
// midelete
//
this.midelete.Index = 3;
this.midelete.Text = "Delete";
this.midelete.Click += new System.EventHandler(this.midelete_Click);
//
// mideleteall
72
//
this.mideleteall.Index = 4;
this.mideleteall.Text = "Delete All";
this.mideleteall.Click += new System.EventHandler(this.mideleteall_Click);
//
// imlMain
//
this.imlMain.ImageStream = ((System.Windows.Forms.ImageListStreamer)
(resources.GetObject("imlMain.ImageStream")));
this.imlMain.TransparentColor = System.Drawing.Color.Transparent;
this.imlMain.Images.SetKeyName(0, "");
this.imlMain.Images.SetKeyName(1, "");
this.imlMain.Images.SetKeyName(2, "");
this.imlMain.Images.SetKeyName(3, "");
this.imlMain.Images.SetKeyName(4, "");
this.imlMain.Images.SetKeyName(5, "");
this.imlMain.Images.SetKeyName(6, "");
this.imlMain.Images.SetKeyName(7, "");
this.imlMain.Images.SetKeyName(8, "");
this.imlMain.Images.SetKeyName(9, "");
this.imlMain.Images.SetKeyName(10, "");
this.imlMain.Images.SetKeyName(11, "");
//
// imltblTreeView
//
this.imltblTreeView.ImageStream =
((System.Windows.Forms.ImageListStreamer)
(resources.GetObject("imltblTreeView.ImageStream")));
this.imltblTreeView.TransparentColor = System.Drawing.Color.Transparent;
this.imltblTreeView.Images.SetKeyName(0, "");
this.imltblTreeView.Images.SetKeyName(1, "");
this.imltblTreeView.Images.SetKeyName(2, "");
this.imltblTreeView.Images.SetKeyName(3, "");
73
this.imltblTreeView.Images.SetKeyName(4, "");
this.imltblTreeView.Images.SetKeyName(5, "");
this.imltblTreeView.Images.SetKeyName(6, "");
//
// statusBar1
//
this.statusBar1.Location = new System.Drawing.Point(0, 428);
this.statusBar1.Name = "statusBar1";
this.statusBar1.Size = new System.Drawing.Size(1190, 22);
this.statusBar1.TabIndex = 8;
//
// Source
//
this.Source.Text = "Source";
this.Source.Width = 98;
//
// Destination
//
this.Destination.Text = "Destination";
this.Destination.Width = 115;
//
// Identification
//
this.Identification.Text = "Identification";
this.Identification.Width = 111;
//
// Protocal
//
this.Protocal.Text = "Protocal";
this.Protocal.Width = 130;
//
// tcSniffing
//
74
this.tcSniffing.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcSniffing.Location = new System.Drawing.Point(0, 0);
this.tcSniffing.Name = "tcSniffing";
this.tcSniffing.SelectedIndex = 0;
this.tcSniffing.Size = new System.Drawing.Size(536, 191);
this.tcSniffing.TabIndex = 11;
//
// tcMain
//
this.tcMain.Controls.Add(this.tpSniffing);
this.tcMain.Controls.Add(this.tpCtrl);
this.tcMain.Controls.Add(this.tabPage1);
this.tcMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcMain.Location = new System.Drawing.Point(0, 0);
this.tcMain.Name = "tcMain";
this.tcMain.SelectedIndex = 0;
this.tcMain.Size = new System.Drawing.Size(544, 249);
this.tcMain.TabIndex = 12;
this.tcMain.SelectedIndexChanged += new
System.EventHandler(this.tcMain_SelectedIndexChanged);
//
// tpSniffing
//
this.tpSniffing.Controls.Add(this.pnlSniffing);
this.tpSniffing.Location = new System.Drawing.Point(4, 22);
this.tpSniffing.Name = "tpSniffing";
this.tpSniffing.Size = new System.Drawing.Size(536, 223);
this.tpSniffing.TabIndex = 0;
this.tpSniffing.Text = "Current Sniffing";
this.tpSniffing.UseVisualStyleBackColor = true;
//
// pnlSniffing
//
75
this.pnlSniffing.Controls.Add(this.pnlSubTab);
this.pnlSniffing.Controls.Add(this.pnlToolBarTab);
this.pnlSniffing.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlSniffing.Location = new System.Drawing.Point(0, 0);
this.pnlSniffing.Name = "pnlSniffing";
this.pnlSniffing.Size = new System.Drawing.Size(536, 223);
this.pnlSniffing.TabIndex = 0;
//
// pnlSubTab
//
this.pnlSubTab.Controls.Add(this.tcSniffing);
this.pnlSubTab.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlSubTab.Location = new System.Drawing.Point(0, 32);
this.pnlSubTab.Name = "pnlSubTab";
this.pnlSubTab.Size = new System.Drawing.Size(536, 191);
this.pnlSubTab.TabIndex = 14;
//
// pnlToolBarTab
//
this.pnlToolBarTab.Controls.Add(this.tlbSniffing);
this.pnlToolBarTab.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlToolBarTab.Location = new System.Drawing.Point(0, 0);
this.pnlToolBarTab.Name = "pnlToolBarTab";
this.pnlToolBarTab.Size = new System.Drawing.Size(536, 32);
this.pnlToolBarTab.TabIndex = 13;
}
7. TESTING
7.1 Introduction:
76
Testing is a process, which reveals errors in the program. It is the major
quality measure employed during software development. During testing, the program
is executed with a set of test cases and the output of the program for the test cases is
evaluated to determine if the program is performing as it is expected to perform.
Testing performs a critical role in quality assurance and for ensuring the
reliability of software. To accomplish the task of testing software, this is done under
two categories of test case design techniques.
This test focuses on the program control structure. Test cases are derived to
ensure that all the statements in the program have been executed at least once during
testing and that all logical conditions have been exercised.
In order to make sure that the system does not have errors, the different levels
of testing strategies that are applied at differing phases of software development are:
Unit Testing:
Unit Testing is done on individual modules as they are completed and become
executable. It is confined only to the designer's requirements. Unit Testing focuses on
77
verification of the smallest unit of software design module. Using the detailed design
description as a guide, important control paths are tested to uncover errors within the
boundary of the module .Unit testing is essentially for verification of the code
produced during the coding phase and hence the goal is to test the internal logic of the
module.
Integrating Testing:
System Testing:
System testing involves in-house testing of the entire system before delivery to
the user. Its aim is to satisfy the user the system meets all requirements of the client's
specifications.
Acceptance Testing:
78
7.3 Test-Cases (Unit test-plan and integrated test-plan):
No. Test case Title Description Expected The Result
Outcome requirement
in RS that is
being tested
1 Test the User saves the file File is saved RS4 Passed
functionality of and views it later
a file
downloaded
from internet
2 Test that GUI is User sees the traffic Successful RS1 Passed
able to show in graphical form. representation
network traffic of traffic.
3 Test the User views the Correct IP RS2 Passed
mapping of files destination IP address is
to the address attached to mapped to the
destination IP each file. file
address
4 Test the User opens the File is opened RS5 Passed
functionality of saved file for
a file viewing it.
downloaded
from internet
5 Test the User prints the file. The file is RS6 Passed
functionality of printed on the
a file default printer.
downloaded
from internet
6 Test the User chooses from The output is RS3 Passed
decoded the list to view displayed
information of packet information. correctly
the selected file.
Validation:
The system has been tested and implemented successfully and thus ensured
that all the requirements as listed in the software requirements specification are
completely fulfilled. In case of erroneous input corresponding error messages are
displayed.
79
8. SAMPLE SCREENS
80
81
82
83
84
85
86
87
9. CONCLUSION
88
In practice, there is not a typical network problem that can’t be discovered
and solved using packet sniffer technology. Sniffers can be used as the first method of
attack on a number of issues that vary from overloaded networks to unresponsive
switches to lost packets. As a number of networks and nodes continue to grow and as
network speeds accelerate, it becomes more and more difficult to monitor a LAN by
using traditional tools, such as RMON (Remote Monitoring) probes. Packet sniffers,
by contrast, monitor traffic on network right down to the Header information on each
series of data. This means that u can actually track data from starting point to its end
point. Packet sniffers can also be used to identify the types of packets on a network
and discover whether or not the specific packet has any errors.
10. BIBLIOGRAPHY
89
.Net: The Complete Reference
Elsevier Inc, Network programming .NET with C# and VB.NET
- Fiach Reid
O'Reilly - Programming C#
- Steve Sartain
Websites
-www.beesync.com
- www.cacetech.com
TCP/IP Protocol Suite - Behrouz A. Forouzan
90