Batch-Satti
Se você ainda não é um membro cadastre-se!

Existem centenas de scripts para quem é membro.

As categorias para os membros cadastrados são:

BATCH-SCRIPTS COMPLETO.
(Espaço onde são postados os scripts que tenham funcionalidade completa)
BADCONS VIRUS E TROJANS .
(Espaço onde são postados scripts e técnicas em vírus trojans e worm baseados em scripts )
SOMENTE PARA MEMBROS.
(Espaço destinado aos membros discutirem ou tirarem duvidas)
TUTORIAIS E EXPLICAÇÕES.
(Aqui são colocadas as explicações de comandos e técnicas para confecção de scripts )

EXISTEM MUITAS OUTRAS CATEGORIAS MÁS ESSAS SÃO AS PRINCIPAIS !

ENTRE E PARTICIPE !!!!!!!
MENSAGENS AOS MEMBROS :
TIVEMOS QUE AUTORIZAR PROPAGANDAS NO FORUM E TALVEZ O FIREFOX E OUTROS NAVEGADORES NÃO FUNCIONEM
UTILIZEM O INTERNET EXPLORER OU ATUALIZEM PARA O FIREFOX 4.0 BETA

ASS. BOSS-HEAD


Pesquisa personalizada

Gravar um Arquivo em um local especifico do HDD

Ir em baixo

Gravar um Arquivo em um local especifico do HDD

Mensagem por goncalvesk em Seg Ago 16, 2010 1:28 pm

Boa Tarde a todos,

estou tentado gravar um dado em um setor especifido do HDD, por exemplo, que gravar algo no começo, outro no meio e um no fim do disco, e verificar se já existe algo nesse ponto, caso exista, somar +1 ou algo do tipo

Alguem conhece algum script que consiga fazer isso??


obrigado

goncalvesk

Idade : 36

Voltar ao Topo Ir em baixo

Re: Gravar um Arquivo em um local especifico do HDD

Mensagem por C-Com em Dom Ago 22, 2010 11:09 am

O jeito seria usar Assembler integrado. Dá pra fazer isso sim, o problema maior é o risco. Primeiro porque é preciso identificar o tipo de tabela de alocação do disco pra se fazer a escrita corretamente e exige rigor absoluto. Um erro maior poderia até inutilizar o HD (ou o que quer que/onde seja)...
avatar
C-Com


Voltar ao Topo Ir em baixo

Re: Gravar um Arquivo em um local especifico do HDD

Mensagem por C-Com em Ter Ago 24, 2010 7:44 pm

Eu fiz um script, porém não me responsabilizo por uso incorreto. A responsabilidade é total de quem se interessar em utilizá-lo. Foi testado? Sim, foi (em disquetes, sim, você leu ISSO mesmo, eu ainda TENHO UM DRIVER de dis-que-tches). Então eu recomendo um bocado de atenção na hora de usá-lo em HDs, Pendrive, etc.

[Você precisa estar registrado e conectado para ver este link.]

Código:

@echo off

if not exist "%1" goto sintax
if "%2"=="" goto sintax
if "%3"=="" goto sintax
if "%4"=="" goto sintax

setlocal enabledelayedexpansion

for /f %%f in ("nconvert.bat") do set hscript=%%~$PATH:f

if "%hscript%"=="" (
        echo Script de conversÆo "nconvert.bat" nÆo encontrado!
        echo Registre o diret¢rio do script na vari vel path ou
        echo copie-o para uma pasta do sistema.
   goto quit
   )

set filedump=%~s1
set filesize=%~z1

call "%hscript%" %filesize% 0123456789ABCDEF
set filesize=!nconvert!

set /a ncmp=%~3
if %ncmp% equ 0 (
   
   goto sintax
   
   ) else (
   
   call "%hscript%" %ncmp% 0123456789ABCDEF
   set blckfrst=!nconvert!
   )

set /a ncmp=%~4
if %ncmp% equ 0 (
   
   goto sintax
   
   ) else (
   
   call "%hscript%" %ncmp% 0123456789ABCDEF
   set blckend=!nconvert!
   )

set drvupper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
set drvlower=abcdefghijklmnopqrstuvwxyz

for /l %%l in (0,1,25) do (
   if "%2"=="!drvupper:~%%l,1!" set nndriver=%%l
   if "%2"=="!drvlower:~%%l,1!" set nndriver=%%l
   )

if "%filedump%"==""  goto sintax
if "%nndriver%"==""  goto sintax
if "%filesize%"==""  goto sintax
if "%filesize%"=="0" goto sintax
if "%blckend%"=="0"  goto sintax
if "%blckfrst%"=="0" goto sintax
if "%blckend%"==""  goto sintax
if "%blckfrst%"==""  goto sintax


echo.
echo ------------
echo Informa‡äes:
echo ------------
echo.
echo O arquivo original se chama "%filedump%"
echo A letra da unidade ‚ "%2", o n£mero ‚ "%nndriver%"
echo O tamanho do arquivo original ‚ de "%filesize%" (hex) bytes
echo.
echo "%blckfrst%" (hex) ser  o primeiro setor do disco a ser escrito e
echo a partir dele serÆo escritos "%blckend%" (hex) setores.
echo.
echo As informa‡äes acima estÆo corretas? Escolha um op‡Æo e pressione enter
echo [S] = sim [N] = NÆo
echo.
set /p chooseopt=

if "%chooseopt%"=="S" goto proceed
if "%chooseopt%"=="s" goto proceed
goto quit

:proceed
(
echo n %filedump%
echo l
echo rcx
echo %filesize%
echo w cs:100 %nndriver% %blckfrst% %blckend%
echo q
)|debug
goto quit


:sintax
echo.
echo -------------------------------------------------------
echo blockwrite [arquivo] [unidade] [1o Sstor] [qtd setores]
echo -------------------------------------------------------
echo.
echo Escreve uma informa‡Æo a partir de um arquivo [arquivo] em setor(es)
echo espec¡fico(s) [qtd setores] do disco [unidade], partindo do setor [1o setor]
echo.
echo ESTE SCRIPT  ABSOLUTAMENTE SEM GARANTIA. A RESPONSABILIDADE DE USO 
echo TOTAL DAQUELE QUE SE DISPåE A USµ-LO.
echo.


:quit
endlocal



Sintaxe:
blockwrite [arquivo original] [unidade] [1 setor] [qt setores]

blockwrite = É o script.

[arquivo] = O arquivo original

[unidade] = Unidade DESTINO onde você quer reescrever o arquivo original

[1o setor] = Número (EM BYTES!) do primeiro setor onde será feita a gravação.

Provavelmente eu não vou precisar dizer o cuidado que é necessário aqui... Escrever nos primeiros setores de um HD por exemplo pode até danificar o MBR. Ou pior, porque o MBR é recuperável e dá até pra mudá-lo de lugar com uma gambiarra e evitar um estrago maior (ou alguns vírus), mas poderia por exemplo, corromper arquivos importantes ou danificar a tabela de alocação do HD.

É importante ressalvar (pra não haver risco) que gravações no disco são feitas por setores e não por bytes. Então, pra você especificar um endereço de setor e "pular fora" de partes importante do disco você PRECISA saber qual é o tamanho da unidade de alocação do disco (cluster) que você está escrevendo. Cada cículo concêntrico (o HD é um disco) de setores é uma TRILHA e um grupo de trilhas (ou setores!) é um CLUSTER

Usa o comando "chkdsk" (win 2k/XP) e vai aparecer uma mensagem mais ou menos assim:

"4096 bytes em cada unidade de alocação"

Então o tamanho do cluster usado na última formatação daquela unidade é de 4096 bytes!

[qt setores] = (EM BYTES!) Quantidade de setores que serão usados a partir do [1o setor]

Observações importantes:

1 - Você só vai usar se concordar que sabe o que está fazendo e que o script não tem garantia nenhuma do autor.

2 - Você VAI precisar desse script aqui (pra converter o valor de bytes para hexadecimal):
[Você precisa estar registrado e conectado para ver este link.]

3 - Não há "arquivo destino". (Porque?) Porque estamos fazendo uma escrita DIRETA em setores do disco! Um arquivo é muito mais do que "um conjunto" de bytes. Então, você tem que saber muito bem o que está fazendo (sei que falei várias vezes, mas é necessário de verdade)

4 - Não é possível utilizar arquivos muito extensos (em tamanho) pois o debug é utilizado no WindowsNT/2k/XP apenas por questão de compatibilidade com programas antigos, o que remete ao uso da antiga memória alta, e por padrão, não é ativado o uso da memória estendida!

Pode ser que aconteça uma mensagem mais ou menos assim:

"Memória insuficiente" ou algo do tipo "EMMS" "XMMS" "não encontrado"... (não lembro de cabeça agora)

Então, se você REALMENTE precisar escrever parte de um arquivo que exceda o limite de memória, recomendo que edite-o em um programa qualquer que possa "cortá-lo" (apenas a parte que quer).

5 - Pode ser que esta mensagem apareça:

[Você precisa estar registrado e conectado para ver esta imagem.]

Não sei ainda exatamente o porquê de "para o qual não há suporte". Vou dar uma estudada nisso qd tiver + tempo. Todas as vezes que apareceu esta msg eu fechei (não prossegui) pq eu não sei ainda o que é!!!
avatar
C-Com


Voltar ao Topo Ir em baixo

Re: Gravar um Arquivo em um local especifico do HDD

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum