Replay attack
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<dos.h>
struct sender
{
int sender_key;
int session_key;
int receiver_name;
char msg[100];
int msg1[100];
}A;
struct receiver
{
int receiver_key;
int session_key;
int received_from_KDC;
int msg1[100];
char msg[100];
}B;
struct KDC
{
int sender_key;
int receiver_key;
int session_key;
int KDC_sender_msg;
int KDC_receiver_msg;
}KDC;
struct trudy
{
int msg1[100];
}T;
void main()
{
int i;
int x;
int request;
int gd,gm;
clrscr();
printf("\n\t\t\t replay attact");
A.sender_key=accept_key_A();
KDC.sender_key=A.sender_key;
B.receiver_key=accept_key_B();
KDC.receiver_key=B.receiver_key;
sound(100);
printf("\n Is sender A is ready to send request (1.Yes) :: ");
scanf("%d",&request);
nosound();
if(request==1)
{
printf("\n enter the message to be send :: ");
scanf("%s",&A.msg);
A.session_key=random_number();
KDC.KDC_sender_msg=A.session_key+A.sender_key;
KDC.session_key=KDC.KDC_sender_msg-A.sender_key;
KDC.KDC_receiver_msg=KDC.session_key+B.receiver_key;
B.received_from_KDC=KDC.KDC_receiver_msg;
B.session_key=B.received_from_KDC-B.receiver_key;//receiver got session key
//encode the message with ks by A
for(i=0;i<strlen(A.msg);i++)
{
A.msg1[i]=A.msg[i]+A.session_key;
}
for(i=0;i<calculate_array_size(A.msg1);i++)
{
B.msg1[i]=A.msg1[i];
T.msg1[i]=A.msg1[i];
}
for(i=0;i<2;i++)
{
printf("\n message from A is received .");
printf("\n");
sound(100);
delay(500);
nosound();
}
delay(500);
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"c:\\turboc3\\bgi");
outtextxy(103,150,"ALICE");
rectangle(100,100,150,250);//ALICE
outtextxy(303,125,"KDC");
rectangle(300,100,350,150);//KDC
outtextxy(503,150,"BOB");
rectangle(500,100,550,350);//BOB
outtextxy(170,110,"A,Ka[B,Ks]");
line(150,120,300,120);//line1
line(295,115,300,120);
line(295,125,300,120);
outtextxy(370,120,"Kb[A,Ks]");
line(350,130,500,130);//line2
line(495,125,500,130);
line(495,135,500,130);
outtextxy(170,190,"Ks[P]");
line(150,200,500,200);//line3
line(495,195,500,200);
line(495,205,500,200);
outtextxy(200,280,"TRUDY");
rectangle(200,250,250,350);
outtextxy(270,270,"Ks[P]");
line(250,280,500,280);//line4
line(495,275,500,280);
line(495,285,500,280);
outtextxy(270,305,"Ks[P]");
line(250,280+40,500,280+40);//line5
line(495,275+40,500,280+40);
line(495,285+40,500,280+40);
}
else
{
printf("\n action aborted!!!");
goto label1;
}
label1:
getch();
}
int accept_key_A()
{
int a;
printf("\n Enter the private key of A :: ");
scanf("%d",&a);
return(a);
}
int accept_key_B()
{
int b;
printf("\n Enter the private key of B :: ");
scanf("%d",&b);
return(b);
}
int random_number()
{
int a;
a=rand()%10;
return(a);
}
int calculate_array_size(int a[])
{
int c=-1;
int i;
for(i=0;;i++)
{
if(a[i]=='\0');
break;
}
return(c);
}
OUTPUT:
replay attack
Enter the private key of A :: 2
Enter the private key of B :: 3
Is sender A is ready to send request (1.Yes) :: 1
enter the message to be send :: pras
message from A is received .