• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Буфер клавиатуры

  • Автор темы CHELLL
  • Дата начала
C

CHELLL

смысл программы, такой "вывод флагов нажатых клавиш", текст вот:
Код:
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
void main()
{
char far *a;
int far *start,far *end;

a=(char far *)MK_FP(0x40,0x17);
start=(int far *)MK_FP(0x40,0x1A);
end=(int far *)MK_FP(0x40,0x1C);
*start=0x1E;
*end=0x1E;
int t;
outportb(0x60,0xf3);
outportb(0x60,0x7D);
for(;;)
{
delay(300);
clrscr();
for(int i=7;i>=0;i--)
{
t=(*a>>i)&1;
cout<<t;
}
if((*a>>0)&1) cout<<"\nR Shift= 1";
else cout<<"\nR Shift= 0";
if((*a>>1)&1) cout<<"\nL Shift= 1";
else cout<<"\nL Shift= 0";
if((*a>>6)&1) cout<<"\nCL=1";
else cout<<"\nCL=0";
if(*start!=*end)
{
cout<<"\nDly vihoda nazhat' q";
cout<<"\nV bufere est':\n";
for(int i=*start;i<*end;i+=2)
{
char buf=peek(0x40,i);
cout<<buf;
if(buf=='q') exit(1);
}
if(*end-*start==30)
{
cout<<"\nBufer zapolnen\n";
break;
}

}
}
}
проблема втом что преподавателю не нравится обрание с буферомв этих строках:
*start=0x1E;
*end=0x1E;
, как можно по другому сделать так что бы буфер заполнялся с начала или нужно что то исправить в тексте программы ещё. Без этих строк, буфер начинает заполняться с произвольного момента и пи в вводе символов он заплняется и не реагирует на выход
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!