Еј Хабр.
Би сакал да ви презентирам мал проект за
Направив проект за скриено складирање на информации во датотечниот систем (понатаму ФС).
Ова може да се користи за кражба на доверливи информации за едукативни цели.
Како прототип беше избран многу стар Linux FS
Реализация
Размислувања за имплементација
Ако е добро да се „открие“ стандардот ext2, тогаш можете да го замените дека во FS постои т.н.
Ако складирате скриени информации без шифрирање, тогаш, дури и покрај неговата нејасност во FS, тие сепак ќе бидат премногу забележливи, особено ако програмерот знае што да бара. Затоа, беше одлучено да се шифрираат сите блокови од изворната датотека. Избрав блок шифра
За да се одвојат потребните блокови од сите други при читањето, беше одлучено да се додаде посебен маркер на секој блок на почетокот на блокот. Овој токен беше шифриран во зависност од бројот на блокот во изворната датотека. Овој трик веднаш овозможи не само да се најдат потребните блокови, туку и да се препознае нивниот правилен редослед.
Општ принцип на работа на системот.
Алгоритам за снимање
Точките:
- Прво напишете некои информации во изворниот датотечен систем;
- Избришете ја оваа информација (не мора сите);
- Датотеката што треба да се скрие е поделена на блокови со еднаква должина, додавајќи маркер;
- Шифрирајте ги овие блокови;
- Ставете ги шифрираните блокови во празни блокови FS.
За љубителите на блок дијаграми
Подолу е блок-дијаграм на алгоритмот за снимање. Алгоритмот прима четири датотеки како влез:
-Слика на датотечен систем што може да се модифицира;
-Датотека предмет на стеганографија;
-Датотека со клуч за шифрирање за AES;
-Датотека со маркер.
Вреди да се забележи веднаш дека овој алгоритам има еден недостаток: откако ќе ја запишете датотеката во FS, не мора да напишете нешто ново во FS, бидејќи секоја нова информација може да заврши во блоковите што сме ги доделиле на нашата зипувана датотека, иако ова исто така отвора можност за „брзо покривање на нашите траги“.
Но, сосема е очигледно како ова може да се поправи: неопходно е да се преработи алгоритмот за пишување блокови во FS. Ова е разбирлива, но неверојатно одземачка задача.
За доказ за владеење не го спроведов ова.
Како резултат на тоа, следните промени ќе бидат направени во FS; вака изгледа FS пред стеганографијата (претходно беше снимена аудио датотека).
И вака изгледа FS со веќе зимувани информации.
Алгоритам за читање
Точките:
- Со познавање на клучот и начинот на конструирање маркери, составете ги првите N маркери, со гаранција дека N помножено со должината на блокот на датотечниот систем е поголем од должината на зипираната датотека;
- Пребарајте блокови во FS кои започнуваат со маркери;
- Дешифрирајте ги примените блокови и одделете ги маркерите;
- Соберете ги добиените блокови во правилен редослед и добијте ја изворната датотека.
За љубителите на блок дијаграми
Подолу е блок-дијаграм на алгоритмот за снимање. Алгоритмот прима три датотеки како влез:
-Слика на датотечен систем;
-Датотека со клуч за шифрирање за AES;
-Датотека со маркер.
По извршувањето на програмата, се појавува датотеката Read, која ќе биде датотеката извлечена од стеганографираниот датотечен систем; ако клучот или маркерот биле погрешно наведени, тогаш датотеката Read ќе биде празна.
(за љубителите на убавината, можете да ја испреплетувате не само датотеката, туку и „заглавие“ што содржи мета-информации: име на датотека, права, последно изменето време, итн.)
Автоматизација на стартување
За погодност, баш скриптите беа напишани за да се автоматизира стартувањето на Linux (тестирано на Ubuntu 16.04.3 LTS).
Ајде да го разгледаме лансирањето чекор по чекор.
Рекорд:
- sudo Copy_Flash.sh „DEVICE“ - земете ја FS сликата од DEVICE (блиц);
- ./Write.sh „FILE“ „KEY“ „MARKER“ – креирајте виртуелна средина, преземете ги потребните библиотеки и стартувајте ја скриптата за пишување;
- sudo ./Write_Flash.sh „DEVICE“ – напишете го изменетиот FS повторно во DEVICE.
Читање:
- sudo Copy_Flash.sh „DEVICE“ - земете ја FS сликата од DEVICE (блиц);
- ./Read.sh „KEY“ „MARKER“ - креирајте виртуелна средина, преземете ги потребните библиотеки и стартувајте го прескокнувањето за читање;
- Во тековниот директориум, отворете ја датотеката Читај - ова се зипираните информации.
Заклучок
Овој стеганографски метод веројатно има потреба од подобрување, дополнително тестирање и проширување на попопуларни датотечни системи, како на пр
Но, целта на оваа работа беше да се покаже принципот со кој е можно да се изврши скриено складирање на информации во датотечниот систем.
Со помош на такви алгоритми, можете бестрашно да складирате информации, а ако, ако го знаете клучот, е можно да се хакира таков систем не со брутална сила (туку со многу долг алгоритам), тогаш без да го знаете клучот, ова системот ми се чини дека е апсолутно стабилен, сепак, ова може да послужи како причина за посебна статија.
Целиот код е имплементиран во верзијата 3.5.2 на Python.
(Да, да, знам дека за продукциската верзија треба да напишете нешто „брзо“, на пример C 😉)
Во оваа имплементација, големината на влезната датотека за стеганографија не треба да надминува 1000 kB.
Сакам да изразам благодарност до корисникот
Извор: www.habr.com