This commit is contained in:
Andrea Bontempi 2015-03-16 23:09:58 +01:00
parent 42badd1402
commit e1a077e4f1
4 changed files with 35 additions and 9 deletions

View file

@ -31,6 +31,7 @@
#include <cstdlib>
#include <string>
#include <iomanip>
#include <assert.h>
#include <boost/asio.hpp>
#include <boost/program_options.hpp>
#include "tools.h"
@ -88,7 +89,8 @@ int main ( int argc, char **argv ) {
if ( pkg->isArp() ) {
shared_ptr<ARPpacket> pkg_arp = static_pointer_cast< ARPpacket > ( pkg );
shared_ptr<ARPpacket> pkg_arp = dynamic_pointer_cast< ARPpacket > ( pkg );
assert( pkg_arp != nullptr );
if ( pkg_arp->getOpCode() == 1 ) {
cout << " Who has " << pkg_arp->getTargetIp().to_string() << " ? Tell "<< pkg_arp->getSenderIp().to_string() << endl;
@ -103,7 +105,8 @@ int main ( int argc, char **argv ) {
} else if ( pkg->isIPv4() ) {
shared_ptr<IPv4packet> pkg_ipv4 = static_pointer_cast< IPv4packet > ( pkg );
shared_ptr<IPv4packet> pkg_ipv4 = dynamic_pointer_cast< IPv4packet > ( pkg );
assert( pkg_ipv4 != nullptr );
cout << " From " << pkg_ipv4->getSenderIp().to_string() << " to "<< pkg_ipv4->getTargetIp().to_string() << endl;
cout << " ProtocolType: 0x" << pkg_ipv4->getProtocolType() << " ("<< ipv4_type_decode ( pkg_ipv4->getProtocolType() ) << ")" << endl;
@ -128,8 +131,9 @@ int main ( int argc, char **argv ) {
if ( pkg_ipv4->isTCP() ) {
shared_ptr<TCPv4packet> pkg_tcpv4 = static_pointer_cast< TCPv4packet > ( pkg );
shared_ptr<TCPv4packet> pkg_tcpv4 = dynamic_pointer_cast< TCPv4packet > ( pkg );
assert( pkg_tcpv4 != nullptr );
cout << " From port " << std::dec << pkg_tcpv4->getSenderPort() << " to port " << pkg_tcpv4->getTargetPort() << endl;
if ( vm.count ( "tcp" ) ) {
@ -173,7 +177,8 @@ int main ( int argc, char **argv ) {
} else if ( pkg_ipv4->isUDP() ) {
shared_ptr<UDPv4packet> pkg_udpv4 = static_pointer_cast< UDPv4packet > ( pkg );
shared_ptr<UDPv4packet> pkg_udpv4 = dynamic_pointer_cast< UDPv4packet > ( pkg );
assert( pkg_udpv4 != nullptr );
cout << " From port " << std::dec << pkg_udpv4->getSenderPort() << " to port " << pkg_udpv4->getTargetPort() << endl;
@ -186,7 +191,8 @@ int main ( int argc, char **argv ) {
} else if ( pkg_ipv4->isICMP() ) {
shared_ptr<ICMPv4packet> pkg_icmpv4 = static_pointer_cast< ICMPv4packet > ( pkg );
shared_ptr<ICMPv4packet> pkg_icmpv4 = dynamic_pointer_cast< ICMPv4packet > ( pkg );
assert( pkg_icmpv4 != nullptr );
cout << " Message Type: " << pkg_icmpv4->getMessageType() << " (" << icmpv4_type_decode ( pkg_icmpv4->getMessageType() ) << ")" << endl;
cout << endl;

View file

@ -215,7 +215,7 @@ network::packet* network::IPv4packet::factory ( uint64_t timeEpoch_i, uint32_t t
break;
default:
p = new UnknownPacket ( timeEpoch_i, timeMillis_i, rawData_i );
p = new UnknownIPv4Packet ( timeEpoch_i, timeMillis_i, rawData_i );
break;
}
@ -460,10 +460,19 @@ std::string network::UDPv4packet::getPayLoad() {
/* UNKNOWN */
network::UnknownPacket::UnknownPacket ( uint64_t timeEpoch_i, uint32_t timeMillis_i, std::string rawData_i ) {
network::UnknownPacket::UnknownPacket (uint64_t timeEpoch_i, uint32_t timeMillis_i, std::string rawData_i) {
timeEpoch = timeEpoch_i;
timeMillis = timeMillis_i;
rawData = rawData_i;
pkgLength = rawData_i.length() / 2;
return;
}
network::UnknownIPv4Packet::UnknownIPv4Packet(uint64_t timeEpoch_i, uint32_t timeMillis_i, std::string rawData_i) {
timeEpoch = timeEpoch_i;
timeMillis = timeMillis_i;
rawData = rawData_i;
pkgLength = rawData_i.length() / 2;
return;
}

View file

@ -511,6 +511,15 @@ namespace network {
UnknownPacket(uint64_t timeEpoch_i, uint32_t timeMillis_i, std::string rawData_i);
};
/** Class for managing unknown IPv4packets */
class UnknownIPv4Packet : public IPv4packet {
public:
/** final constructor. */
UnknownIPv4Packet(uint64_t timeEpoch_i, uint32_t timeMillis_i, std::string rawData_i);
};
}

View file

@ -1,6 +1,7 @@
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "Packet check"
#include <commons/packet.h>
#include <iostream>
#include <boost/test/unit_test.hpp> //VERY IMPORTANT - include this last
BOOST_AUTO_TEST_CASE( cigarette ) {
@ -11,8 +12,9 @@ BOOST_AUTO_TEST_CASE( cigarette ) {
BOOST_CHECK( packet->isIPv4() );
std::shared_ptr<network::IPv4packet> pkg_ipv4 = std::static_pointer_cast<network::IPv4packet>( packet );
std::shared_ptr<network::IPv4packet> pkg_ipv4 = std::dynamic_pointer_cast<network::IPv4packet>( packet );
BOOST_REQUIRE( pkg_ipv4 != nullptr );
BOOST_CHECK( pkg_ipv4->getSenderIp().to_string() == "192.168.1.1" );
BOOST_CHECK( pkg_ipv4->getTargetIp().to_string() == "224.0.0.1" );