Black Hole Attack in NS2
Black Hole Attack in Networking basically occurs when a node participates in data transmission act as forwarder .It receives data from the sender and replies it sent the data without sending it to receiver. it does not know any path , simply its goal to drop the packet data. In receive request function of .cc file there it directly reply the packet with highest sequence number to the source and the when data received it will drop these data at recv function of .cc file in the AODV.Procedure for Creating malicious node to present Blackhole attack in AODV.
step 1: Is for the tcl code, add this below line in your .tcl file
(tclfile)
#$ns_ at 0.0 “[$n2 set ragent_] malicious”
Below 2 would be at aodv.h in anywhere AODV class. add boolean variable BLACKHOLE in aodv.h
step 2 : (aodv.h)
bool BLACKHOLE;
in 3 add the BLACKHOLE as false in aodv constructor
step 3 : (aodv.cc)
aodv::aodv(nsaddr_t id) : Agent(PT_aodvplain)
{
bid = 1;
LIST_INIT(&nbhead);
LIST_INIT(&bihead);
BLACKHOLE=false;
logtarget = 0;
}
In 4, check malicious variable is set or not in tcl file.
step 4: (aodv.cc(AODV::command))
if(strncasecmp(argv[1], "id", 2) == 0) {
tcl.resultf("%d", index);
return TCL_OK;
}
if(strcmp(argv[1], "malicious") == 0) {
BLACKHOLE = true;
return TCL_OK;
}
Download & Install
step 5 : Is for adding blackhole behaviour in node which drop the data packet.
(aodv.cc(recv))
if(ch->ptype() == PT_aodvplain) {
ih->ttl_ -= 1;
recvaodvplain(p);
return;
}
if(BLACKHOLE)
{
//If destination address is itself
if ( (u_int32_t)ih->saddr() == index)
forward((aodv_rt_entry*) 0, p, NO_DELAY);
else
drop(p, DROP_RTR_ROUTE_LOOP);
}
else
{
/*
* Must be a packet that originating...
*/
if((ih->saddr() == index) && (ch->num_forwards() == 0)) {
/*
* Add the IP Header
*/
ch->size() += IP_HDR_LEN;
}
step 6: Is for replying a request packet, in request packet use the maximum 32 bit number as sequence number.
(aodv.cc(recvreqeust))
seqno = max(seqno, rq->rq_dst_seqno)+1;
if (seqno%2) seqno++;
if(BLACKHOLE) seqno= rq->rq_dst=rq->rq_src=4294967295;
step 7: Please paste the else if code as shown below
else if(BLACKHOLE)
{
sendReply(rq->rq_src, // IP Destination
1, // Hop Count
rq->rq_dst, // Dest IP Address
4294967295, // Highest Dest Sequence Num that is largest 32-bit integers from -2147483647 to +2147483647
MY_ROUTE_TIMEOUT, // Lifetime
rq->rq_timestamp); // timestamp
Packet::free(p);
}
/* Can't reply. So forward the Route Request */
/* Can't reply. So forward the Route Request */
else
{
ih->saddr() = index;
ih->daddr() = IP_BROADCAST;
rq->rq_hop_count += 1;
// Maximum sequence number seen en route
if (rt) rq->rq_dst_seqno = max(rt->rt_seqno, rq->rq_dst_seqno);
forward((aodvplain_rt_entry*) 0, p, DELAY);
}
credits to “http://elmurod.net/index.php/2009/10/24/adding-malicious-node-in-aodv/” and "http://narentada.com"
any one can help me, how to simulate FIFO and LIFO queue in ns2.
ReplyDeletei do not understand step 6 . could you plz explain that????
ReplyDeletePlease Compile and run ...
ReplyDelete$ns ./configure
$ns make clean
$ns make
then try to run . please ensure taking back up.
Now i came to know your problem. you already edited ur code with some other blog way ..you added hacker instead of malicious.follow only one thing.if u mix both result will be vain.
ReplyDeleteYou must add following code
----------------------------------- change mallicious to hacker
if(strcmp(argv[1], “hacker”) == 0) {
malicious = true;
return TCL_OK;
}
In the following place
if(argc == 2) {
Tcl& tcl = Tcl::instance();
if(strncasecmp(argv[1], “id”, 2) == 0) {
tcl.resultf(“%d”, index);
return TCL_OK;
}
// ABOVE CODE GOES HERE :
if(strcmp(argv[1], “hacker”) == 0) {
malicious = true;
return TCL_OK;
}
…
}
#$ns_ at 0.0 “[$n2 set ragent_] malicious”
ReplyDeletechange this line according to urs
$ns at 0.0 "[$(your node number) set ragent_] malicious"
blackhole implementation gives error message.
ReplyDelete/home/ubuntu/Desktop/error.png
Please post the screen shot of the error
DeleteBLACK HOLE varibale is defined twice in your files. please check it should be added only once in aodv.h file and should be used in aodv.cc .....
ReplyDeletePlease check the node number here in my example $n2 means second node. it may vary in ur file . please see to it.
ReplyDeleteSir,
ReplyDeletei forgot to mention that i'm using AOMDV protocol in my project..
hi neeta, can u please explain which program u r not able to run . please snsure that ur AOMDV s working and u r able to execute TCL file and generate trace files. For Black Hole attack plz usse AODV protocol, so that u can get more help online
DeleteI am sorry to reply u late as i am busy with my work . please try with some other source as of now . i ll get back with sol as soon as possible
ReplyDeleteHello sir, i have implemented the blackhole attack as you said but while running the tcl script i'm getting the following error:
ReplyDeleteDirection for pkt-flow not specified; Sending pkt up the stack on default.
Direction for pkt-flow not specified; Sending pkt up the stack on default.
Direction for pkt-flow not specified; Sending pkt up the stack on default.
Direction for pkt-flow not specified; Sending pkt up the stack on default.
Direction for pkt-flow not specified; Sending pkt up the stack on default.
check_pktTx:Invalid MAC Control subtype
plz help me to solve this problem...
Hello Sir, I have implemented blackhole attack in AODV protocol successfully.. Now I want to overcome this blackhole attack by making some modifications in AODV protocol. For that, i want to add a new routing table in the protocol. How can i do it?
ReplyDeletePlz suggest me...
The code added in Step-6 is dead code. It never gets executed. What actually happens is that complete communication ceases. This does not seem to be blackhole. Kindly check.
ReplyDeleteI want to know how to create co-operative black hole attack in aodv
ReplyDeleteHello Mr.Yuvraj! I want the code for blackhole attack on aodv protocol in tcl script. Please send me the code . Thanks and regards in advance.
ReplyDeletedid u get that code..?
Deleteif u have please send me at vishesh.gupta_mtcs17@gla.ac.in
Hello sir; there is a solution for this attack?
ReplyDeletehello Mr.Yuvraj! could help me to modify AOMDV To Simulate Black Hole Behavior in NS2?
ReplyDeletethank you
hello Anonymous! could help me to modify AOMDV To Simulate Black Hole Behavior in NS2?
Deletethank you
hello sir,
ReplyDeletekindly tell me how to detect and mitigate black hole attack in DSR protocol using ns2?
everyone give me IASAODV.cc
ReplyDeletethank everyone
could help me to modify AOMDV To Simulate Black Hole Behavior in NS2?
ReplyDeletethank you
Hello Sir, i'm presently working on black hole, i have an algorithm and i'm stuck for over 8 months, please i need your help sir, will appreciate your response.
ReplyDeleteThank you.
Hello Sir, I followed the steps as provided above, but i get the error below:
ReplyDeleteaodv/aodv.cc: In member function ‘virtual void AODV::recv(Packet*, Handler*)’:
aodv/aodv.cc:579:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if ( (u_int32_t)ih->saddr() == index)
^
aodv/aodv.cc:643:27: error: a function-definition is not allowed here before ‘{’ token
AODV::recvAODV(Packet *p) {
^
aodv/aodv.cc:1429:1: error: expected ‘}’ at end of input
}
^
make: *** [aodv/aodv.o] Error 1
Kindly assist.