Protected Member Functions

TCPSpoof Class Reference

#include <TCPSpoof.h>

List of all members.

Protected Member Functions

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

Detailed Description

Sends fabricated TCP packets.

Definition at line 26 of file TCPSpoof.h.


Member Function Documentation

unsigned long TCPSpoof::chooseInitialSeqNum (  )  [protected, virtual]

Definition at line 89 of file TCPSpoof.cc.

Referenced by sendSpoofPacket().

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

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

Definition at line 28 of file TCPSpoof.cc.

{
    if (!msg->isSelfMessage())
        error("Does not process incoming messages");

    sendSpoofPacket();
    delete msg;
}

void TCPSpoof::initialize (  )  [protected, virtual]

Definition at line 22 of file TCPSpoof.cc.

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

void TCPSpoof::sendSpoofPacket (  )  [protected, virtual]

Definition at line 37 of file TCPSpoof.cc.

Referenced by handleMessage().

{
    TCPSegment *tcpseg = new TCPSegment("spoof");

    IPvXAddress srcAddr = IPAddressResolver().resolve(par("srcAddress"));
    IPvXAddress destAddr = IPAddressResolver().resolve(par("destAddress"));
    int srcPort = par("srcPort");
    int destPort = par("destPort");
    bool isSYN = par("isSYN");
    unsigned long seq = par("seqNo").longValue()==-1 ? chooseInitialSeqNum() : par("seqNo").longValue();

    // one can customize the following according to concrete needs
    tcpseg->setSrcPort(srcPort);
    tcpseg->setDestPort(destPort);
    tcpseg->setByteLength(TCP_HEADER_OCTETS);
    tcpseg->setSequenceNo(seq);
    //tcpseg->setAckNo(...);
    tcpseg->setSynBit(isSYN);
    tcpseg->setWindow(16384);

    sendToIP(tcpseg, srcAddr, destAddr);
}

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

Definition at line 60 of file TCPSpoof.cc.

Referenced by sendSpoofPacket().

{
    EV << "Sending: ";
    //printSegmentBrief(tcpseg);

    if (!dest.isIPv6())
    {
        // send over IPv4
        IPControlInfo *controlInfo = new IPControlInfo();
        controlInfo->setProtocol(IP_PROT_TCP);
        controlInfo->setSrcAddr(src.get4());
        controlInfo->setDestAddr(dest.get4());
        tcpseg->setControlInfo(controlInfo);

        send(tcpseg,"ipv4Out");
    }
    else
    {
        // send over IPv6
        IPv6ControlInfo *controlInfo = new IPv6ControlInfo();
        controlInfo->setProtocol(IP_PROT_TCP);
        controlInfo->setSrcAddr(src.get6());
        controlInfo->setDestAddr(dest.get6());
        tcpseg->setControlInfo(controlInfo);

        send(tcpseg,"ipv6Out");
    }
}


The documentation for this class was generated from the following files: