Как реализовать атаку с использованием протокола AODV в omnet ++?

Мне нужен фрагмент кода C ++, который имитирует сеть AODV с вредоносным узлом, который выполняет атаку воспроизведения. Мне нужно встроить это в мой проект OMNet ++.

Я пытался изменить исходный код в примере проекта в OMNet ++, но я вернулся к исходной точке.

Будет здорово найти помощь.

Я не могу включить пример кода, он довольно длинный в символах, если вы хотите увидеть мои испытания до сих пор, покажите мне, где я могу поделиться своим проектом.

0

Решение

Поскольку в вопросе ОП не хватает некоторых деталей, я предложу имитационное решение после Пример статьи из Википедии для Повторите атаку:

Предположим, Алиса хочет доказать свою личность Бобу. Боб просит ее
пароль как удостоверение личности, которое Алиса покорно предоставляет
(возможно, после некоторого преобразования, такого как хеш-функция); Между тем,
Ева подслушивает разговор и хранит пароль (или
хэш). После того, как обмен закончен, Ева (выдавая себя за Алису)
подключается к Бобу; когда ее спрашивают о личности, Ева отправляет Алису
пароль (или хэш), прочитанный с последнего сеанса, который Боб принимает таким образом
предоставляя доступ к Еве.


Я бы создал новый пакет (расширяющий 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 разные роли в данном примере:

  1. Алиса: необходимо пройти проверку подлинности
  2. Боб: аутентификатор
  3. Ева: подслушиватель

Если мы считаем, что у каждого узла есть определенный идентификатор, который содержит его имя, мы можем сделать следующее для каждой роли:

АЛИСА:

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

ЕВА:

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

БОБ:

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

Имейте в виду, что это фиктивная реализация, вы можете добавить более умные условные проверки, чтобы приложение работало лучше.

1

Другие решения


По вопросам рекламы [email protected]