Pen drive e outras unidades [RESOLVIDO]

1. Pen drive e outras unidades [RESOLVIDO]

doom load
doomload

(usa Ubuntu)

Enviado em 01/11/2017 - 20:49h

Olá pessoal,

Eu quero saber se é possível ler em c um disco (pen drive, hd, qualquer unidade) desde o inicio da trilha até o fim, bit a bit? O objetivo é aprender um pouco sobre como recuperar arquivos apagados, eu procurei algum artigo que abordasse esse tema mas não achei nada a respeito, se alguém puder pelo menos dizer que caminho seguir.

Obrigado


  


2. Re: Pen drive e outras unidades

Patrick Costa da Silva
patrickpcs

(usa Nenhuma)

Enviado em 01/11/2017 - 22:47h

Quanto a ler em C não sei te dizer, mas segue alguns nomes relacionados a recuperação de dados em disco.
Pesquise sobre o comando dd.
Pesquise também a respeito do programa foremost.



3. Re: Pen drive e outras unidades [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/11/2017 - 02:44h

Será uma solução dependente do sistema operacional. Só por isso, então, não para dizer que dá para fazer “em C”, se considerarmos apenas a linguagem e a biblioteca padronizadas, se você não disser qual sistema operacional pretende usar.

No caso de sistemas UNIX-like, no entanto, geralmente dá, sim, para fazer com C padrão. Geralmente dispositivos de armazenamento são apresentados pelo sistema operacional como arquivos especiais dentro do diretório /dev/ (por exemplo, algo como /dev/sdb no Linux, ou /dev/rsd1//dev/sd1 num BSD). Desde que você possua permissão, pode abrir esses pseudoarquivos com fopen() e manipulá-los com fread(), fwrite(), fseek(), ftell() e fclose() (dependendo do SO, pode ser forçado a obedecer algumas restrições, como sempre fazer operações de I/O em blocos com tamanhos que coincidem com o tamanho do setor/bloco do dispositivo, geralmente 512 ou 4096 bytes, no caso de discos e pendrives, e 2048 bytes no caso de CDs e DVDs; por isso é mais seguro usar fread()/fwrite() do que I/O orientado a caráter, como fgetc() ou a linha, como fgets()).

Com essa característica de poder fazer I/O por meio do pseudoarquivo, você nem precisa de C. Dá para brincar de acesso de baixo nível com qualquer linguagem que permita abrir arquivos e fazer I/O orientado a blocos, tais como Perl, Python ou PHP.

Ter acesso é a parte mais fácil. Saber trabalhar com os dados presentes no disco (ou aqueles que você vai colocar ou modificar) é mais trabalhoso, e muito mais trabalhoso quanto mais genérico você quiser ser. Provavelmente você terá de lidar por conta própria com questões como saber se o dispositivo tem uma tabela de partição ou se foi usado inteiramente pelo SO, se o formato da tabela de partições é MBR, BSD disklabel, GPT ou algum outro, qual a estrutura e o sistema de arquivos em cada partição (FAT12, FAT16, FAT32, ExFAT/FAT64 (todos esse com ou sem vFAT), NTFS, HPFS, UFS, UFS2, ExtFS, ExtFS2, XFS, ZFS, JFS, ISO9660, UTF etc.), para conseguir saber o que pode constituir um arquivo, descobrir se ele continua íntegro (e.g. não foi apagado e parcialmente sobrescrito por pedação de algum outro arquivo) e poder navegar pelo seu conteúdo (porque seus blocos podem estar fragmentados e espalhados por diferentes regiões não-contíguas do disco) e para que suas eventuais modificações de conteúdo não corrompam os dados já gravados nem os deixe inconsistentes.


4. Re: Pen drive e outras unidades [RESOLVIDO]

doom load
doomload

(usa Ubuntu)

Enviado em 11/11/2017 - 21:42h

Obrigado vocês pelas respostas, deu uma clareada da complexidade que é trabalhar com isso, continuarei estudando, valeu.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts