Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С под Linux

Войти
Регистрация
Восстановить пароль
 
failoob
0 / 0 / 0
Регистрация: 19.12.2016
Сообщений: 2
#1

Шифрование данных модуля диска в оперативной памяти - C Linux

19.12.2016, 00:36. Просмотров 333. Ответов 1
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане. Решил я попробовать запустить модуль RAM диска на ОС Linux. Исходный код здесь: ТУТ. Все работает, все команды выполняются. Но я захотел добавить к этому шифрование, то есть сделать так, чтобы данные отправляемые мной - шифровались. И тут то я и столкнулся с бедой, в языке программирования Си не силен и не могу понять, как же все таки произвести шифрование.

Вот код файла ram_device.c, здесь я нашел 2 функции, как я понял по названию отвечающие за запись и чтение файлов. Так же я догадался, что переменная buffer - это и есть передаваемые данные, и по сути нет ничего сложного, применить обычный XOR, но почему то он не работает, не шифруются у меня данные. XOR я делал таким образом: *buffer=*buffer^1; и таким *buffer=*buffer^*buffer; кроме того пробовал сдвигать бит *buffer=*buffer<<1; но ничего не выходит.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <linux/types.h>
#include <linux/vmalloc.h>
#include <linux/string.h>
#include <linux/errno.h>
 
#include "ram_device.h"
#include "partition.h"
 
#define RB_DEVICE_SIZE 1024 /* sectors */
/* So, total device size = 1024 * 512 bytes = 512 KiB */
 
/* Array where the disk stores its data */
static u8 *dev_data;
 
 
int ramdevice_init(void)
{
    dev_data = vmalloc(RB_DEVICE_SIZE * RB_SECTOR_SIZE);
    if (dev_data == NULL)
        return -ENOMEM;
    /* Setup its partition table */
    
    copy_mbr_n_br(dev_data);
    return RB_DEVICE_SIZE;
}
 
void ramdevice_cleanup(void)
{
    vfree(dev_data);
}
 
void ramdevice_write(sector_t sector_off, u8 *buffer, unsigned int sectors)
{
       //*buffer=*buffer^1; 
      //*buffer=*buffer^*buffer;
      //*buffer=*buffer<<1;     
    memcpy(dev_data + sector_off * RB_SECTOR_SIZE, buffer, sectors * RB_SECTOR_SIZE);
}
void ramdevice_read(sector_t sector_off, u8 *buffer, unsigned int sectors)
{
    memcpy(buffer, dev_data + sector_off * RB_SECTOR_SIZE, sectors * RB_SECTOR_SIZE);
}
У меня два вопроса, как все таки осуществить шифрование, и что значит эта запись
C
1
u8 *buffer
Зная как обращаться с этим типом данным я возможно что-то и смог сделать, но судя по всему из-за этого не знания я и хожу вокруг да около.
Так же функции записи и чтения встречаются в файле ram_block.c
C
1
2
3
4
5
6
7
8
9
10
11
12
        if (dir == WRITE) /* Write to the device */
        {
            //*buffer=*buffer^1; 
                       //*buffer=*buffer^*buffer;
                      //*buffer=*buffer<<1;     
            ramdevice_write(start_sector + sector_offset, buffer, sectors);
        }
        else /* Read from the device */
        {
 
            ramdevice_read(start_sector + sector_offset, buffer, sectors);
        }
Здесь я так понимаю происходит вызов этих функций и передача в них параметров. Соответственно возникает вопрос, шифровать здесь перед передачей параметров или шифровать в самом теле функции.
Буду очень рад вашей помощи и подсказкам. В Си я новичек, поэтому прошу не закидывать палками, если что не так.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2016, 00:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шифрование данных модуля диска в оперативной памяти (C Linux):

Распределение оперативной памяти. - C Linux
На языке си нужно написать программу демонстрирующая распределение памяти. Программа должна в начале работы запросить блок памяти у...

Добавление нового модуля оперативной памяти - Оперативная память
Всем привет, столкнулся с проблемой после добавления нового модуля оперативной памяти: компьютер перезагружается несколько раз, нет...

Чёрный экран при замене модуля оперативной памяти - Оперативная память
Решил увеличить оперативку на своем ноутбуке с 4 Гб до 8 Гб. Купил новый модуль, поставил, включил и всё. Дальше черного экрана не...

При подключение модуля оперативной памяти компьютер не стартует - Оперативная память
Здравствуйте! При подключение второго модуля оперативной памяти(Kingston HyperX FURY Blue Series 4 гб) компьютер не загружается. Первый...

Создание временного диска в оперативной памяти - Visual Basic .NET
Здравствуйте, коллеги. Вопрос на засыпку: возможно ли средствами VB.NET создать временный диск / каталог в оперативке? Что...

Будут ли стабильно работать два модуля оперативной памяти с одинаковыми характеристиками но с разными чипами? - Оперативная память
Ситуация такая: купил в одном магазине оперативную память A-data 4gb 1600mhz cl11, позже решил купить такую же но в другом магазине. Когда...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nimazzzy
Заблокирован
19.12.2016, 00:56 #2
Тебе нужно покурить про указатели.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2016, 00:56
Привет! Вот еще темы с ответами:

Реклама и ошибки в браузерах. Загрузка оперативной памяти и жесткого диска - Удаление вирусов
Прошу помощи, проверял малаваром (очень много нашел), утилиткой др.веб (много чего нашел) , авастом (ничего не нашел) - не рискнул что либо...

Сбор и анализ данных в оперативной памяти - C++
Подскажите пожалуйста, какие вы знаете способы сбора данных из оперативной памяти(абсолютно любые способы) и соответственно что нить об...

Измерение скорости копирование данных в оперативной памяти! - C++
Там вроде надо два массива содавать я пробовал ничего не вышло((

Создание файла в оперативной памяти. Показ данных из TMemoryStream. - C++ Builder
Всем привет! Подскажите пожалуйста кто знает как можно создать файл сразу в оперативной памяти и затем запустить этот файл? т.е мне надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru