elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Solucionado]¿Como cortar un cacho del final de un archivo?
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado]¿Como cortar un cacho del final de un archivo?  (Leído 9,563 veces)
sr_corsario

Desconectado Desconectado

Mensajes: 19


Ver Perfil
[Solucionado]¿Como cortar un cacho del final de un archivo?
« en: 27 Septiembre 2009, 18:34 pm »

Buenas.

He estado mirando el foro para ver si había algo parecido a mi problemilla pero no lo he encontrado...

El hilo que mas se parecía es: http://foro.elhacker.net/scripting/ayuda_cortar_una_parte_de_un_txt-t252780.0.html%3Bmsg1224379 que es "cortar una parte de un txt."


Mi caso es el siguiente:

-Bastantes archivos "file.bin" (por ponerle un nombre, este siempre es el mismo) en diferentes carpetas

-Cada archivo tiene un tamaño diferente

-Es un "Bin"

-Los últimos 131.072bytes de cada archivo son idénticos.

Lo que me gustaría es un bat que me cortase esos últimos bytes del archivo.

He estado buscando programas que cortan archivos... pero como mucho he conseguido el fcut que si que me lo hace, pero le tengo que dar manualmente la posición donde corta y como cada vez es diferente ...


Gracias
Sr Corsario



« Última modificación: 13 Octubre 2009, 20:31 pm por sr_corsario » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #1 en: 27 Septiembre 2009, 18:42 pm »

Pues podríamos hacer un script para cortarlo, sabiendo donde hay que cortar.  :-\


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
sr_corsario

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #2 en: 27 Septiembre 2009, 18:48 pm »

Gracias por responder tan rápido.

Supongo que de alguna manera se ha de poder hacer... o buscando la cadena de bytes del inicio del corte (que sería en hex supongo) o no se... , o buscar el tamaño etc etc... nu se...

Edit:Decir que el comando findstr me dice "La linea xxxxx es demasiado larga" supongo que alguna limitación tendrá... o que al ser un bin no lo soporta, ni idea.

Gracias

« Última modificación: 27 Septiembre 2009, 18:56 pm por sr_corsario » En línea

xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #3 en: 27 Septiembre 2009, 20:33 pm »

En que lenguaje? ::)
En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #4 en: 27 Septiembre 2009, 20:44 pm »

En que lenguaje? ::)
en asm 16 bits lo kiere
En línea

xassiz_

Desconectado Desconectado

Mensajes: 273


Ich werde dich töten..


Ver Perfil WWW
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #5 en: 27 Septiembre 2009, 20:50 pm »

En que lenguaje? ::)
en asm 16 bits lo kiere

Ah okk! Que pena que no se asm.. pero que lo muevan de Scripting porque aqui puede ser Batch, VBScript, Perl, Python, etc..
En línea



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE
sr_corsario

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #6 en: 27 Septiembre 2009, 20:52 pm »

En que lenguaje? ::)
en asm 16 bits lo kiere

xD

Mmmmm... en que haga lo que necesito me es indiferente. Mejor si es un script/bat porque de esa manera yo ya podré seguir con otros pasos que necesito hacer.

Muchas gracias por el interés

En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #7 en: 28 Septiembre 2009, 00:34 am »

Pudes hacerlo con python:
Código
  1. os.path.getsize
para obtener el tamaño del archivo y de ahi restar los bytes que quieres sacar, hacer un
Código
  1. read(n bytes)
desde el inicio del archivo hasta el resultado de la resta y escribirlo en otro archivo que seria el nuevo bin y renombrar al original como backup.
En VB6 es igual de sencillo con:
Código
  1. Open archivo For Binary As #numero
  2. Get
  3. Put
  4. LOF(numero)
  5. 'datos como Byte, Long y demas
  6.  
y haces el mismo procedimiento o puedes utilizar otro lenguaje mas rapido como c  o en caso de c++ podrias utilizar:
Código
  1. ios::binary, ios::out, ios::in
Supongo que en Vb Script tb pueda hacerse, pero voz eliges.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
sr_corsario

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #8 en: 28 Septiembre 2009, 14:11 pm »

Gracias por las respuestas.

Yo no tengo ni idea de programar nada... solo alguna noción básica.

Podría alguien terminarmelo pleaseee  :rolleyes:


Aps otra cosa... igual estaba confundido con lo de la extensión de la archivo. Es bin pero no se como van los datos en el...

Gracias

Edit:Los valores del archivo están en hex... eso supongo que influye en algo sorry
« Última modificación: 28 Septiembre 2009, 18:21 pm por sr_corsario » En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: [Ayuda] ¿Como cortar un cacho del final de un archivo "Bin"?
« Respuesta #9 en: 29 Septiembre 2009, 07:45 am »

Te puedo dar un poco de ayuda de pasada en python:
Código
  1. import os
  2. def cortar(nomOriginal, nomNuevo, tamArchivo, tamCortar):
  3.    with open(nomOriginal, 'r+b') as file1:
  4.        f1 = file1.read (tamArchivo-tamCortar)
  5.        file1.close()
  6.    with open(nomNuevo, 'w+b') as file2:
  7.        file2.write(f1)
  8.        file2.close()
  9.        print("Cortado Hecho y guardado en: " + nomNuevo)
  10.  
  11. direc = input('Ingrese Directorio: ')
  12. dirList = os.listdir(direc)
  13.  
  14. for fname in dirList:
  15.    if(fname.upper().endswith('.JPG')):
  16.        if(os.path.isfile(direc + fname)== True):
  17.            if(os.path.exists(direc + fname + '.bak')== False):
  18.                print ('Nombre de archivo: '+ fname)
  19.                leno = os.path.getsize(direc + fname)
  20.                print ("inciando cortado en: " + direc + fname)
  21.                os.rename(direc + fname,direc + fname + '.bak')
  22.                cortar(direc + fname + '.bak', direc + fname, leno, 1000)
  23.            else:
  24.                print ('Archivo: ' + direc + fname + ' ya fue cortado')
  25.  

El code es solo un inicio faltan muchas cosas, pero sirve para lo que buscas al iniciar pide el directorio donde buscara los archivos con la extension especificada, en el ejemplo puse *.jpg para que se pueda ver el cambio que realiza, en:
Código
  1. cortar(direc + fname + '.bak', direc + fname, leno, 1000)
el numero 1000 representa cuantos bytes del final de archivo quitara y escribira en un nuevo archivo con el nombre original, antes verifica si se trata de un archivo y si existe o no un archivo *.bak con su nombre, de ser asi no lo procesa porque lo toma como un archivo ya "cortado". Pruebalo en unas imagenes JPG que tengan un tamaño superior al numero que especifiques en "cortar" y veras los cambios al ejecutarlo, luego puedes utilizarlo para los *.bin que mencionas, tb seria que leas acerca de python un buen manual y asi completas lo que falta, las excepciones, depuracion de errores y demas, ademas de crear un buscador de archivos para que no tengas que especificar la ruta, eso lo haces con pocas lineas.
Necesitas python 3 para correrlo.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
EOF en archivo antes de su verdadero final
Programación C/C++
XafiloX 8 3,905 Último mensaje 3 Diciembre 2011, 13:59 pm
por XafiloX
Como escribir al final de una archivo ?
Programación C/C++
Julián2016 5 2,613 Último mensaje 25 Marzo 2017, 17:29 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines