我需要一段c ++代码,用于模拟AODV网络以及进行重放攻击的恶意节点。我需要将它嵌入我的OMNet ++项目中。
我尝试在OMNet ++中更改示例项目中的原始代码,但我回到了起点。
找到帮助会很棒。
我无法在字符中包含相当长的示例代码,如果您需要查看我的试用版,请告诉我在哪里可以分享我的项目。
答案 0 :(得分:1)
由于OPs问题缺少一些细节,我将在Wikipedia article's example之后为重播攻击提供模拟解决方案:
假设Alice想要向Bob证明她的身份。鲍勃要求她 密码作为身份证明,爱丽丝尽职尽责 (可能在像哈希函数之类的某些转换之后);与此同时, Eve正在窃听对话并保留密码(或 哈希)。在交换结束后,夏娃(冒充爱丽丝) 连接鲍勃;当被要求提供身份证明时,Eve会发送给Alice的 从最后一个会话读取的密码(或哈希),这是Bob接受的 准许进入夏娃。
我会创建一个新数据包(扩展UDPPacket)以通过向UDPPacket添加源和目标字段来满足您的特定应用目标:
cplusplus {{
#include "<directory_path_for_the_udp_packet_goes_here>/UDPPacket_m.h" // inheriting the parent class
}}
class ExtendedUDPPacket; // you can call it whatever you want
message ExtendedUDPPacket extends UDPPacket
{
string sourceNode; // name of the sender
string destinationNode; // name of the receiver
}
现在让我们看看给定示例中的3个不同角色:
如果我们认为每个节点都有一个保存其名称的特定ID,我们可以为每个角色执行以下操作:
艾丽斯:
void MalAODVRouter::handleMessage(cMessage *msg)
{
ExtendedUDPPacket *eUDPmsg = dynamic_cast<UDPPacket *>(msg);
if (this->myID == eUDPmsg->getDestinationNode()) // myID is "Alice"
{
ExtendedUDPPacket *ExtendedUDPPacket= new UDPPacket();
ExtendedUDPPacket->setSourceAddress(myID.c_str());
ExtendedUDPPacket->setDestinationAddress(std::string("Bob").c_str());
send(udpPacket, "ipOut");
}
}
EVE:
void MalAODVRouter::handleMessage(cMessage *msg)
{
ExtendedUDPPacket *eUDPmsg = dynamic_cast<UDPPacket *>(msg);
if (this->myID != eUDPmsg->getDestinationNode()) // myID is "Eve"
{
ExtendedUDPPacket *ExtendedUDPPacket= new UDPPacket();
ExtendedUDPPacket->setSourceAddress(std::string("Alice").c_str()); // fake the message
ExtendedUDPPacket->setDestinationAddress(std::string("Bob").c_str());
send(udpPacket, "ipOut");
}
}
BOB:
void MalAODVRouter::handleMessage(cMessage *msg)
{
ExtendedUDPPacket *eUDPmsg = dynamic_cast<UDPPacket *>(msg);
if (eUDPmsg->getSourceNode() == 'Alice')
{
ExtendedUDPPacket *ExtendedUDPPacket= new UDPPacket();
ExtendedUDPPacket->setSourceAddress(std::string("Bob").c_str());
ExtendedUDPPacket->setDestinationAddress(std::string("Alice").c_str());
send(udpPacket, "ipOut");
}
}
请记住这是一个模拟实现,您可以添加更智能的条件检查,以使应用程序更好。