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

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

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

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

[c Linux] Эмуляция работы скремблера

  • Автор темы Rydj
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Rydj

Доброго времени суток. Народ не могли бы мне помочь дописать скремблер задача такая: написать программу эмулирующую работу скремблера, программа должна генерировать поток битов из
скремблера и использовать его (группируя по 8 бит) для шифрования байтов,
считанных со стандартного ввода, пока они имеются; зашифрованные данные
выводятся на стандартный вывод. Собственно со скремблером я вроде разобрался и написал, а вот дальше какой-то ступор.
C++:
	 #include <stdio.h>

int shift(int *s, int poly, int size)
{
int result =*s&1;
int a=0;
int b=*s&poly;
while (b) {
a+=b&1;
b>>=1;
}
*s>>=1;
*s|= (a&1)<<(size-1);
return result;
}

int main()
{
int s;
int i;
int m;
i = 1;
s = 742;
for (i = 1; i < 100; i++)
{
m = shift(&s, 742, 10);
printf("%d\n", m);
}
}
 
L

lazybiz

Объясни мне необразованному, что ты подразумеваешь под словом "скремблер" ? Просто какой-то метод шифрования?

... а вот дальше какой-то ступор.
А дальше у тебя не получается получить данные из стандартного потока ввода или что?
 
R

Rydj

В задании же написано что должен делать скремблер (написать программу эмулирующую работу скремблера, программа должна генерировать поток битов из
скремблера и использовать его (группируя по 8 бит) для шифрования байтов), где там написано что скремблер это "какой-то метод шифрования"? На вход скремблера мы подаём разрядность, полином и начальное содержимое регистра, далее он нам генерит поток битов и с помощью потока надо зашифровать байты. ПРоблема заключается в том как с помощью потока зашифровать байты?
 
L

lazybiz

где там написано что скремблер это "какой-то метод шифрования"?
А где у меня написано что это метод шифрования? Ты вопрос от не вопроса отличаешь?

как с помощью потока зашифровать байты?
Каким методом шифровать надо?
 
R

Rydj

на счёт метода не знаю, в задании говорится зашифровать с помощью потока больше никаких уточнений нету.
 
L

lazybiz

Ну тогда шифруй ксором. Это самый простой и обратимый способ шифрования. По типу:
C++:
a = b ^ с; // с - любая константа от 0 до 255 включительно (при с == 0 шифрования происходить не будет).
 
R

Rydj

ок спс, посоветовали на другом форуме вот так:
C++:
int shift8(int *s, int poly, int size)
{
int rv=0;
int i;
for(i=0;i<8;++i) rv=(rv<<1)|shift(s,poly,size);
}
int main()
{
int s;
int i;
int m;
s = 742;
while((i = getchar()) != EOF)
{
m = shift8(&s, 742, 10);
putchar(m^i);
}
}
Вот так да?
 
D

dreamer

Дык статья ж есть: В общем-то, lazybiz попал в точку ;)
 
L

lazybiz

dreamer
Спасибо конечно что поддержал но...

Rydj
... я что-то недопонимаю.. у тебя с шифрованием не получается или со крамблером!?? Скажи толком что тебе нужно. То что тебе посоветовали на другом форуме я тебе еще раньше посоветовал.
 
L

lazybiz

dreamer, кстати эта статья целиком и полностью описывает весь процесс.
Rydj, почитай. Что непонятно - спрашивай.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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