intercepta o arquivo grava

0

Isso pode não ser possível, mas ... Eu tenho um aplicativo de terceiros (murmúrio para os curiosos) que pode ser dito para abrir um arquivo para gravação (eu forneço o nome), e despejo de bytes nele até contado para Pare. Ele não abre o arquivo para anexar e, se o arquivo já existir, ele altera o nome e tenta novamente. Tudo bem, bom e razoavelmente normal. Ele pode escrever por horas (e ficará feliz em preencher o disco, que é o problema).

Eu quero interceptar tudo o que ele escreve e lê-lo de outro processo; de maneira ideal, nunca chegaria ao disco, mas aceitarei compromissos em alguns deles.

A solução óbvia, ler o arquivo como está escrito, truncar () o que eu li e ler novamente, não funcionará para mim, porque o arquivo não ficará menor quando eu truncar - resmungar não especifica o acréscimo , então ele continuará escrevendo de onde parou. Idealmente eu preciso de alguma maneira de enganá-lo em pensar que ele criou e está escrevendo um arquivo normal, enquanto na verdade ele está apenas falando tudo para mim. Eu não quero escrever meu próprio código de sistema de arquivos para isso (a menos que seja muito mais fácil do que parece).

Em última análise, eu quero pegar o som gravado, misturar tudo e alimentá-lo para / dev / random. Apenas apontando mumble para / dev / random não funciona porque / dev / random existe, então ele não irá usá-lo.

há um truque inteligente para isso? Se não há alguma maneira de escrever código userland que se parece com um diretório? Se tudo mais falhar, é bastante simples escrever um sistema de arquivos que possa fazer o que eu preciso?

    
por user15001 25.08.2018 / 02:17

1 resposta

1

Você pode usar LD_PRELOAD para fazer o Mumble carregar uma biblioteca que você especifica antes de todas as outras bibliotecas. Você pode escrever uma pequena biblioteca com open() / stat() / etc personalizada que, dependendo do nome do arquivo, passa a chamada para a biblioteca C padrão para um comportamento padrão ou faz algo especial para enganar o mumble.

    
por 25.08.2018 / 03:50