Linux에서 바이너리 데이터를 처리하는 방법

Linux에서 바이너리 데이터를 처리하는 방법

내 서버 중 하나가 나에게 데이터를 제공합니다 Content-Type: application/binary. 즉, 내가 얻은 데이터가 외계인 데이터처럼 보입니다.

이제 이 데이터를 순수 데이터로 변환해야 하는데 이를 수행할 수 있는 방법이 없습니다. 명령줄을 사용하여 이 작업을 수행하려고 합니다.

구글링 끝에 방법을 찾았습니다. 데이터에서 처음 10자와 마지막 8자를 제거한 다음 사용해야 합니다 gunzip. 그러면 원시 데이터를 가져오겠습니다. 하지만 이 문자를 제거하려고 하면 바이너리 출력이기 때문에 10+8개 문자 이상이 제거됩니다.

데이터는 실제로 echo올바르게 인쇄될 수 없습니다. 그렇다면 바이너리 데이터를 처리하는 방법을 아는 사람이 있나요?

답변1

당신이 무엇을 요구하고 있는지 명확하지 않습니다. 파일 형식은 무엇입니까? 압축파일? 파일? 압축 아카이브 명령은 무엇입니까?

file yourfilename

출력으로 주어졌나요? 바이너리 데이터이므로 옥텍트, 비트를 제거하시겠습니까?

dd 바이너리를 제거하려면 다음 명령 사용을 고려해야 합니다.

dd if=input.bin of=output.bin bs=1 skip=X count=Y

여기서 X는 처음부터 제거할 바이트 수이고 Y는 파일이 끝나기 전에 처리할 바이트 수입니다.

100바이트 크기의 이진 파일이 있고 처음 10바이트와 마지막 5바이트를 제거하여 85바이트 출력을 생성한다고 가정합니다. X의 값은 10이고 Y의 값은 85(=100-10-5)입니다. 간단한 "ls" 또는 "wc -c" 명령을 사용하여 파일 크기를 확인할 수 있습니다.

행운을 빌어요

답변2

다음 문자는 무시해도 되고 경고만 나올 수도 있으니 문제는 절반쯤 해결된 것이므로 처음 10개를 살펴보겠습니다.

이제 이 문제는 dd를 사용하여 해결할 수 있습니다. 우리가 해야 할 일은 10바이트 블록을 건너뛰도록 지시하는 것뿐입니다.wget -o - http://example.com/sample-data |dd ibs=10 skip=1 of=data.zip; unzip data.zip

관련 정보