Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TCPSpoof Class Reference

#include <TCPSpoof.h>

List of all members.


Detailed Description

Sends fabricated TCP packets.


Protected Member Functions

void sendToIP (TCPSegment *tcpseg, IPvXAddress src, IPvXAddress dest)
unsigned long initialSeqNum ()
void sendSpoofPacket ()
virtual void initialize ()
virtual void handleMessage (cMessage *msg)


Member Function Documentation

void TCPSpoof::handleMessage cMessage *  msg  )  [protected, virtual]
 

00029 {
00030     if (!msg->isSelfMessage())
00031         error("Does not process incoming messages");
00032 
00033     sendSpoofPacket();
00034     delete msg;
00035 }

void TCPSpoof::initialize  )  [protected, virtual]
 

00023 {
00024     simtime_t t = par("t").doubleValue();
00025     scheduleAt(t, new cMessage("timer"));
00026 }

unsigned long TCPSpoof::initialSeqNum  )  [protected]
 

00090 {
00091     // choose an initial send sequence number in the same way as TCP does
00092     return (unsigned long)(fmod(simTime()*250000.0, 1.0+(double)(unsigned)0xffffffffUL)) & 0xffffffffUL;
00093 }

void TCPSpoof::sendSpoofPacket  )  [protected]
 

00038 {
00039     TCPSegment *tcpseg = new TCPSegment("spoof");
00040 
00041     IPvXAddress srcAddr = IPAddressResolver().resolve(par("srcAddress"));
00042     IPvXAddress destAddr = IPAddressResolver().resolve(par("destAddress"));
00043     int srcPort = par("srcPort");
00044     int destPort = par("destPort");
00045     bool isSYN = par("isSYN");
00046     unsigned long seq = par("seqNo").longValue()==-1 ? initialSeqNum() : par("seqNo").longValue();
00047 
00048     // one can customize the following according to concrete needs
00049     tcpseg->setSrcPort(srcPort);
00050     tcpseg->setDestPort(destPort);
00051     tcpseg->setByteLength(TCP_HEADER_OCTETS);
00052     tcpseg->setSequenceNo(seq);
00053     //tcpseg->setAckNo(...);
00054     tcpseg->setSynBit(isSYN);
00055     tcpseg->setWindow(16384);
00056 
00057     sendToIP(tcpseg, srcAddr, destAddr);
00058 }

void TCPSpoof::sendToIP TCPSegment tcpseg,
IPvXAddress  src,
IPvXAddress  dest
[protected]
 

00061 {
00062     EV << "Sending: ";
00063     //printSegmentBrief(tcpseg);
00064 
00065     if (!dest.isIPv6())
00066     {
00067         // send over IPv4
00068         IPControlInfo *controlInfo = new IPControlInfo();
00069         controlInfo->setProtocol(IP_PROT_TCP);
00070         controlInfo->setSrcAddr(src.get4());
00071         controlInfo->setDestAddr(dest.get4());
00072         tcpseg->setControlInfo(controlInfo);
00073 
00074         send(tcpseg,"ipv4Out");
00075     }
00076     else
00077     {
00078         // send over IPv6
00079         IPv6ControlInfo *controlInfo = new IPv6ControlInfo();
00080         controlInfo->setProtocol(IP_PROT_TCP);
00081         controlInfo->setSrcAddr(src.get6());
00082         controlInfo->setDestAddr(dest.get6());
00083         tcpseg->setControlInfo(controlInfo);
00084 
00085         send(tcpseg,"ipv6Out");
00086     }
00087 }


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:31 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0