Pitney Bowes' MapInfo Sea Chart format

application/octet-stream

Safe

Magic Bytes

Offset: 0
21 0D 0A 43 52 52 2F 54 68 69 73 20 65 6C 65 63 74 72 6F 6E 69 63 20 63 68 61 72 74 20 77 61 73 20 70 72 6F 64 75 63 65 64 20 75 6E 64 65 72 20 74 68 65 20 61 75 74 68 6F 72 69 74 79 20 6F 66 20 55 53 41 2D 4E 4F 41 41 2F 4E 4F 53 2E 0D 0A

The MapInfo Sea Chart format is a raster-based geospatial file type developed by Pitney Bowes and MapTech for digital nautical navigation. It functions as a header for Raster Navigational Charts, enabling marine software and Geographic Information Systems to display hydrographic data and maritime boundaries. Although largely considered a legacy format replaced by modern vector standards, it poses minimal security risk because the files contain only static metadata and do not support executable code.

Extension

.bsb

MIME Type

application/octet-stream

Byte Offset

0

Risk Level

Safe

Validation Code

How to validate .bsb files in Python

Python
def is_bsb(file_path: str) -> bool:
    """Check if file is a valid BSB by magic bytes."""
    signature = bytes([0x21, 0x0D, 0x0A, 0x43, 0x52, 0x52, 0x2F, 0x54, 0x68, 0x69, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x72, 0x6F, 0x6E, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x55, 0x53, 0x41, 0x2D, 0x4E, 0x4F, 0x41, 0x41, 0x2F, 0x4E, 0x4F, 0x53, 0x2E, 0x0D, 0x0A])
    with open(file_path, "rb") as f:
        return f.read(80) == signature

How to validate .bsb files in Node.js

Node.js
function isBSB(buffer: Buffer): boolean {
  const signature = Buffer.from([0x21, 0x0D, 0x0A, 0x43, 0x52, 0x52, 0x2F, 0x54, 0x68, 0x69, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x72, 0x6F, 0x6E, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x55, 0x53, 0x41, 0x2D, 0x4E, 0x4F, 0x41, 0x41, 0x2F, 0x4E, 0x4F, 0x53, 0x2E, 0x0D, 0x0A]);
  return buffer.subarray(0, 80).equals(signature);
}
Go
func IsBSB(data []byte) bool {
    signature := []byte{0x21, 0x0D, 0x0A, 0x43, 0x52, 0x52, 0x2F, 0x54, 0x68, 0x69, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x72, 0x6F, 0x6E, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x55, 0x53, 0x41, 0x2D, 0x4E, 0x4F, 0x41, 0x41, 0x2F, 0x4E, 0x4F, 0x53, 0x2E, 0x0D, 0x0A}
    if len(data) < 80 {
        return false
    }
    return bytes.Equal(data[:80], signature)
}

API Endpoint

GET /api/v1/bsb
curl https://filesignature.org/api/v1/bsb

Related Formats