7
votes

BASH / UNIX Toolchain Binary Traitement / Tranchement

J'ai un flux binaire sur l'entrée standard, il est sous forme de format fixe, un flux de paquets continus, chaque paquet a une en-tête avec une longueur x et un corps avec une longueur Y.

donc si x = 2 y = 6, c'est quelque chose comme 00Abcdef01ghijkl02mnopqr03stuvwx , mais il est binaire et l'en-tête et les données peuvent contenir tout

Je veux me débarrasser des données d'en-tête afin que la sortie ressemble à ceci: abcdefghijklmnopqrstuvwx . .

Y a-t-il des commandes dans la boîte à outils UNIX qui me permettent de faire cela? Et en général y a-t-il des outils pour la gestion des données binaires? Le seul outil que je pouvais penser est od / hexdump mais comment convertissez-vous le résultat en binaire?


1 commentaires

Ces paquets de réseau sont-ils? Qu'en est-il de tcpdump?


5 Réponses :


4
votes

Utilisez xxd code> qui passe à et à partir d'un hexdump.

xxd -c X+Y -ps | cut -c 2X+1- | xxd -r -p


1 commentaires

Donc, l'idée était ok .. xxd , jamais entendu parler de cela. Merci! Remarque: la coupe provient de 2x + 1 .



1
votes

Perl est un joli outil UNIX standard. Tuyer à Perl. Si son octet de longueur fixe aligné une simple opération de substrité devrait fonctionner. Voici un échantillon Perl qui devrait fonctionner.

#!/usr/bin/env perl

use strict;
use warnings;

my $buf;
my $len = 8;
my $off = 2;
while(sysread(STDIN,$buf,$len) != 0 ){
  print substr($buf,$off);
}

exit 0;


1 commentaires

Vrai, mais au moins son configurable;)



0
votes

Il y a aussi BBE - Binary Block Editor , qui est un type de binaire sed pour la manipulation de données binaires la manière UNIX.

http://bbe-.sourceforge.net


0 commentaires

1
votes

En tant que doublure, j'écrirais: xxx pré>

exemple: p> xxx pré>

produit p>

0000000   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p
0000020   q   r   s   t   u   v   w  \n   a   b   c   d   e   f   g   h
0000040   i  \n   k   l   m   n   o   p   q   r
0000052


2 commentaires

mange de nouvelles lignes echo -e "\ n00abcdef01 .." . une idée?


@YI_H, Ouais, aller avec Bot403's "SysRead" Réponse .



0
votes

L'éditeur de flux binaire est un outil écrit en Java pour la manipulation des flux. Il peut être utilisé à partir de Java ainsi que de la ligne de commande. https://sourceforge.net/projects/bistreeameditor/

Disclaimer: je suis l'auteur de Cet outil.

Contrairement à des outils à base de nouvelles lignes telles que SED, il permet une traverser personnalisée et un stockage de données via la traversée et la mémoire tampon. Les données binaires peuvent être traitées comme des charges d'octets et des opérations de chaîne / des correspondances autorisées. Il peut écrire à plusieurs sorties et utiliser différents codages. En raison de cette flexibilité, la ligne de commande a actuellement beaucoup de paramètres, qui doit être simplifiée.

Le fichier bse.zip doit être téléchargé et utilisé. Pour l'exemple ci-dessus, nous aurions simplement besoin de faire un substrateur (2) sur l'entrée de LEN 8. La ligne de commande complète est xxx


0 commentaires