#include <TCPSpoof.h>
Protected Member Functions | |
| void | sendToIP (TCPSegment *tcpseg, IPvXAddress src, IPvXAddress dest) |
| unsigned long | initialSeqNum () |
| void | sendSpoofPacket () |
| virtual void | initialize () |
| virtual void | handleMessage (cMessage *msg) |
|
|
00029 {
00030 if (!msg->isSelfMessage())
00031 error("Does not process incoming messages");
00032
00033 sendSpoofPacket();
00034 delete msg;
00035 }
|
|
|
00023 {
00024 simtime_t t = par("t").doubleValue();
00025 scheduleAt(t, new cMessage("timer"));
00026 }
|
|
|
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 }
|
|
|
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 }
|
|
||||||||||||||||
|
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 }
|
1.4.1