#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");
}
}
1.7.1