Enquanto procurava informações interessantes sobre esteganografia, deparei-me com um artigo interessante sobre
esteganografia no sistema de arquivos e, depois de um tempo, me levou à idéia de criar esteganografia no sistema de arquivos de discos ópticos.
Provavelmente hoje em dia, quase não há pessoas que usariam drives na vida cotidiana, porque foram substituídos por uma opção mais digna na forma de
drives flash .
Pensando um pouco, decidi que ainda é possível encontrar alguns discos, por exemplo, dentro do sistema de arquivos, você pode ocultar algumas informações secretas e depois transferi-las para outra, para que ninguém suspeite de nada.
É isso que faremos, a saber: usaremos a biblioteca python, que nos ajudará a codificar informações de um arquivo de texto e depois as esconderá nas entranhas do nosso disco.

Mas antes de começarmos, vamos dar uma olhada em algumas das pequenas coisas e também definir o conceito de um disco óptico.
O que é um disco óptico?
Disco óptico (Eng. Disco óptico) - o nome coletivo da mídia de armazenamento feita na forma de discos, cuja leitura é realizada usando radiação óptica (laser).

Cada disco em um computador é apresentado em um formato específico na forma de uma
imagem que contém todas as informações e estrutura do disco e é usado para trabalhar com informações sem suporte óptico, bem como para arquivar dados em mídia sólida
O formato padrão para discos ópticos é
iso9660 , mas
ainda háLembre-se de que a imagem contém menos informações que o CD original. O disco contém informações de serviço, que podem, em particular, ser usadas para
proteger contra cópias. Vamos trabalhar com a ISO9660.
Olhar interno
E agora, vamos olhar para a estrutura do iso9660 por dentro, você pode encontrar informações detalhadas
aqui ,
aqui e
aqui , e para aqueles que sabem inglês também
aqui . Por mim mesmo, vou apenas dizer que ele consiste principalmente em 2 descritores:
Registro de Inicialização e
Descritor de Volume Primário (PVD) , você pode abrir qualquer iso no
010editor e ver por si mesmo.

O Boot Record pode ser usado por sistemas que precisam inicializar muitos tipos de dados antes de disponibilizar um disco, embora a ISO 9660 não indique quais informações no Boot Record ou como usá-las.
O PVD é o ponto de partida na identificação do
iso9660, fica assim:


Para os amantes de esquemas:

Você encontrará mais informações
aqui.E nós estamos seguindo em frente.
Inicialização na estrutura ISO
Trabalharemos com o diretório raiz, nele criaremos nossos próprios diretórios e adicionaremos os arquivos necessários.
Para isso, usaremos a biblioteca
pycdlib , você pode se familiarizar com ela no link a
seguir .
Vamos continuar escrevendo o programa, mas quem não quiser ir passo a passo, você encontrará o código-fonte no link para o
meu repositório no github:
Preparar arquivos com texto
Agora precisamos preparar nossos arquivos, que serão inseridos na estrutura do nosso iso.
O curso da ação é o seguinte:
- Pegamos o texto de origem em certos arquivos e o lemos em variáveis - nada nos impede de extrair muito texto, mas, para demonstração, tomei apenas algumas frases em cada arquivo - continuaremos manipulando essas variáveis
- Depois de considerarmos as frases, precisamos codificar o conteúdo, codificaremos usando base64
- Escrevemos o conteúdo codificado em novos arquivos chamados UP e DOWN . Os arquivos são assim chamados porque eu decidi reorganizar de modo que 1 parte do 1º arquivo e 1 parte do 2º arquivo (ou seja, as partes superiores) sejam escritas em UP e em DOWN 2 parte do 1º arquivo e 2 parte do 2º arquivo ( ou seja, partes inferiores)
with open('/home/ul/stegist1.txt','rb') as stegist1:
Ocultação
É hora de passar para a própria biblioteca pycdlib sobre a qual falei no começo. Não é difícil trabalhar com ele: criamos um objeto através do qual adicionamos vários arquivos e diretórios dentro dele.
iso=pycdlib.PyCdlib()
Como podemos ver, nosso texto foi escrito com sucesso

Quero notar que podemos criar em um determinado caminho, por exemplo
/ A , um arquivo ou uma pasta.
Se primeiro especificarmos a criação de um diretório em
/ A e depois especificarmos a criação de um arquivo em
/ A, uma mensagem de erro será exibida, não é o mesmo que colocar o arquivo em uma pasta.
Extensões para o sistema de arquivos ISO9660
Existem 2
extensões principais para o sistema de arquivos iso:
RockRidge e Joilet .
Rockidge
Essa é uma extensão do sistema de arquivos ISO 9660 projetada para armazenar atributos de arquivo usados nos sistemas operacionais POSIX (ou seja, compatíveis com Unix).
As extensões Rock Ridge são gravadas no sistema de arquivos ISO 9660 para que o disco óptico Rock Ridge possa ser lido por um software projetado para funcionar com a ISO 9660.
Mais detalhesRock Ridge pode armazenar as seguintes informações adicionais sobre o conteúdo do disco:
- nomes longos de arquivos (até 255 caracteres);
- menos restrições no uso de caracteres nos nomes de arquivos;
- estrutura de diretórios de aninhamento arbitrário.
- para cada arquivo, os atributos são gravados:
- permissões de arquivo, incluindo campos uid e gid;
- número de links físicos para o arquivo;
- tempos de criação, modificação, acesso, alteração de atributos, etc.
- arquivos especiais suportados:
- arquivos esparsos;
- links simbólicos;
- arquivos de dispositivo
- arquivos de soquete
- Arquivos FIFO.
Esses dados são registrados em diretórios especiais, cujos nomes geralmente estão ocultos.
Joilet
Esta é uma extensão do sistema de arquivos ISO 9660 projetada para facilitar as restrições de nome de arquivo impostas pela ISO 9660. A especificação foi desenvolvida pela Microsoft e é suportada por todas as versões do Microsoft Windows desde o Windows 95 e Windows NT 4.0.
Por padrão, é usado em todas as mídias de CD-ROM com dados liberados após 1995.
Mais detalhesJoliet apresenta um conjunto adicional de nomes de arquivos. Os nomes têm até 64 caracteres Unicode e são armazenados na codificação UCS-2. Para seu armazenamento, é usado um cabeçalho adicional especial (Descritor de Volume Suplementar, SVD), que é incondicionalmente ignorado pelos programas compatíveis com ISO 9660, garantindo compatibilidade com versões anteriores.
A maioria das plataformas de software existentes, incluindo Microsoft Windows, Linux, Mac OS X e FreeBSD, são capazes de ler mídia de armazenamento com a extensão do sistema de arquivos Joliet, que permite a troca de arquivos entre esses sistemas operacionais, mesmo quando se usa alfabetos não latinos (como árabe, japonês, cirílico) o que não era possível com a ISO 9660 usual.
De fato, há também uma extensão 3 para o sistema de arquivos iso, chamado
Romeo .
Esta é uma extensão da ISO 9660 para MS Windows 95, não há informações suficientes na Internet e, provavelmente, essa extensão não é usada em nenhum outro lugar.
Você pode encontrar
ainda mais informações sobre extensões e sistemas de arquivos para CD / DVD
aqui , e agora vamos voltar ao nosso programa.
O código resultante para codificar informações de um arquivo e colocar arquivos com informações codificadas no iso se parece com isso:
E lembro que o código completo também está disponível no link para o
githubAgora vamos para a parte final - escreva nossa iso resultante em disco
Você pode gravar o que quiser, vou usar o
Nero 7Vamos usar o
CD-RCD-ROM, CD-R e CD-RWEles diferem em que o CD-ROM é um disco somente leitura, nada pode ser gravado lá. CD-R e CD-RW são discos graváveis. CD-R permite gravar uma vez em um disco, CD-RW - repetidamente.
Mas e o DVD?A principal diferença do CD-R / RW é a quantidade de dados que podem ser gravados em um DVD-ROM de 4,7 GB versus 650.700 MB. Alguns formatos de DVD suportam até 13 e até 17 GB
Mais informações sobre o disco Como podemos ver, o programa foi gravado com sucesso no disco.

Agora podemos transferi-lo em disco para as pessoas que queremos.
Decodificação
Por que faríamos tudo isso se a informação não pode ser decodificada de volta, certo?
Se você estiver interessado no método, pode escrever um programa que extrairá e decodificará os arquivos anexados, será exatamente o que o seu pessoal usará.
E isso é tudo. Minha tarefa era demonstrar uma das maneiras possíveis de ocultar informações, usando discos que, ao que parece, caíram no esquecimento.

Ficarei feliz em ver suas sugestões, adições, correções e outros comentários.
PS: Quero expressar um agradecimento especial a
@PavelMSTU pelas consultas e chutes motivacionais.