#include <TCPSpoof.h>
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) |
Sends fabricated TCP packets.
Definition at line 26 of file TCPSpoof.h.
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"); } }