Sponsored Content
Top Forums Shell Programming and Scripting Extract sequences of bytes from binary for differents blocks Post 302845007 by wisecracker on Tuesday 20th of August 2013 02:36:12 PM
Old 08-20-2013
This is a starter Python 3.3.x code to extract the blocks using a user function...

This should be more than enough to get you going with your binary manipulation.

Once each block is placed into its respective _variable_ it is seriously easy to extract sub-blocks of data from each major block extracted from the binary file...
Code:
# BinarySearch.py
# DEMO to extract binary data...
# Written in such a way as to be easily understood.
# NOTE:- There are more Pythonic ways to do this...

import os
import sys

# The _variable_ used to test with...
block_one=b"?"
block_two=b"?"
subscript_begin=0

# Set to a _temporary_ directory. NOTE:- 4 different platforms shown...
# Change to suit your platform and path
if sys.platform=="linux2": os.chdir("/tmp/")
if sys.platform=="darwin": os.chdir("/Users/barrywalker/")
if sys.platform=="win32": os.chdir("C:\\Windows\\Temp\\")
if sys.platform=="amiga": os.chdir("T:")

# A basic "bin_extract()" function to extract binary data from a binary file...
def bin_extract(subscript_start=0, subscript_end=0, filename="?", char_start=b"\x00\xFF", char_end=b"\xFF\x00"):
	bin_var=b""
	toggle=0
	binfile=open(filename, "rb")
	for position in range(subscript_start, subscript_end, 1):
		binfile.seek(position)
		if binfile.read(2)==char_start:
			bin_var=bin_var+char_start[1:2]
			toggle=1
		if toggle>=1: bin_var=bin_var+binfile.read(1)
		if binfile.read(2)==char_end:
			bin_var=bin_var+char_end[0:1]
			toggle=0
			break
	binfile.close()
	return(bin_var, position)

# Test...
# ******** Do the first iteration and find the first block... *******
block_one, subscript_begin=bin_extract(0, 816, "BinaryFile", b"\xFF\x32", b"\xFF\x34")
print(block_one)
print(subscript_begin)
# When successful..........
# Just extract the required data from the _variable_ "new_binary" using standard simple Python methods
# and when finished with set new values to the function for the next block run using "subscript_begin"
# + or - 2 as the next "subscript_start" in the function, something like below...
block_two, subscript_begin=bin_extract((subscript_begin+2), 816, "BinaryFile", b"\xFF\x32", b"\xFF\x34")
print(block_two)
print(subscript_begin)
# DEMO end...

Hope this helps.
CYA.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove first N bytes and last N bytes from a binary file on AIX.

Hi all, Does anybody know or guide me on how to remove the first N bytes and the last N bytes from a binary file? Is there any AWK or SED or any command that I can use to achieve this? Your help is greatly appreciated!! Best Regards, Naveen. (1 Reply)
Discussion started by: naveendronavall
1 Replies

2. UNIX for Advanced & Expert Users

Deal with binary sequences

Hello, I have come across the necessity for me to deal with binary sequences and I had a few questions. 1- Does any UNIX scripting language provide any tool or command for converting text data to binary sequences? Example of binary sequence: "0x97 0x93 0x85 0x40 0xd5 0xd6 0xd7" 2- If I want... (2 Replies)
Discussion started by: Indalecio
2 Replies

3. Shell Programming and Scripting

Extract sequence blocks

Hi, I have an one-line file consisting of a sequence of 660 letters. I would like to extract 9-letter blocks iteratively: ASDFGHJKLQWERTYUIOPZXCVBNM first block: ASDFGHJKL 1nd block: SDFGHJKLQ What I have so far only gives me the first block, can anyone please explain why? cat... (7 Replies)
Discussion started by: solli
7 Replies

4. Shell Programming and Scripting

extract blocks of text from a file

Hi, This is part of a large text file I need to separate out. I'd like some help to build a shell script that will extract the text between sets of dashed lines, write that to a new file using the whole or part of the first text string as the new file name, then move on to the next one and... (7 Replies)
Discussion started by: cajunfries
7 Replies

5. Linux

Why does ext3 allocate 8 blocks for files that are few bytes long

The title is clear: why does ext3 allocate 8 blocks for files that are few bytes long? If I create a file named "test", put a few chars in it, and then I run: stat test I get that "Blocks: 8" I searched in the web and found that ext does that, it allocates 8 blocks even if It doesn't need... (4 Replies)
Discussion started by: Tavo
4 Replies

6. UNIX for Dummies Questions & Answers

X bytes of 0, Y bytes of random data, Z bytes of 5, T bytes of 1. ??

Hello guys. I really hope someone will help me with this one.. So, I have to write this script who: - creates a file home/student/vmdisk of 10 mb - formats that file to ext3 - mounts that partition to /mnt/partition - creates a file /mnt/partition/data. In this file, there will... (1 Reply)
Discussion started by: razolo13
1 Replies

7. Shell Programming and Scripting

Extract sequences based on the list

Hi, I have a file with more than 28000 records and it looks like below.. >mm10_refflat_ABCD range=chr1:1234567-2345678 tgtgcacactacacatgactagtacatgactagac....so on >mm10_refflat_BCD range=chr1:3234567-4545678... tgtgcacactacacatgactagtatgtgcacactacacatgactagta . . . . . so on ... (2 Replies)
Discussion started by: Diya123
2 Replies

8. Shell Programming and Scripting

Extract length wise sequences from fastq file

I have a fastq file from small RNA sequencing with sequence lengths between 15 - 30. I wanted to filter sequence lengths between 21-25 and write to another fastq file. how can i do that? (4 Replies)
Discussion started by: empyrean
4 Replies

9. Shell Programming and Scripting

Extract the part of sequences from a file

I have a text file, input.fasta contains some protein sequences. input.fasta is shown below. >P02649 MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQT LSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQA RLGADMEDVCGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVY... (8 Replies)
Discussion started by: rahim42
8 Replies

10. Shell Programming and Scripting

Blocks of text in a file - extract when matches...

I sat down yesterday to write this script and have just realised that my methodology is broken........ In essense I have..... ----------------------------------------------------------------- (This line really is in the file) Service ID: 12345 ... (7 Replies)
Discussion started by: Bashingaway
7 Replies
SDL_AudioCVT(3) 						 SDL API Reference						   SDL_AudioCVT(3)

NAME
SDL_AudioCVT - Audio Conversion Structure STRUCTURE DEFINITION
typedef struct{ int needed; Uint16 src_format; Uint16 dest_format; double rate_incr; Uint8 *buf; int len; int len_cvt; int len_mult; double len_ratio; void (*filters[10])(struct SDL_AudioCVT *cvt, Uint16 format); int filter_index; } SDL_AudioCVT; STRUCTURE DATA
needed Set to one if the conversion is possible src_format Audio format of the source dest_format Audio format of the destination rate_incr Rate conversion increment buf Audio buffer len Length of the original audio buffer in bytes len_cvt Length of converted audio buffer in bytes (calculated) len_mult buf must be len*len_mult bytes in size(calculated) len_ratio Final audio size is len*len_ratio filters[10](..) Pointers to functions needed for this conversion filter_index Current conversion function DESCRIPTION
The SDL_AudioCVT is used to convert audio data between different formats. A SDL_AudioCVT structure is created with the SDL_BuildAudioCVT function, while the actual conversion is done by the SDL_ConvertAudio function. Many of the fields in the SDL_AudioCVT structure should be considered private and their function will not be discussed here. Uint8 *buf int len int len_mult double len_ratio SEE ALSO
SDL_BuildAudioCVT, SDL_ConvertAudio, SDL_AudioSpec SDL
Tue 11 Sep 2001, 22:58 SDL_AudioCVT(3)
All times are GMT -4. The time now is 06:27 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy