21

Debian package file signature

Magic number at the start of the file · !<arch>

21 3C 61 72 63 68 3E

A Debian .deb package is a Unix ar archive, so it starts with the ASCII magic !<arch>. Inside are a version file and two compressed tarballs holding the control data and the payload.

Hex signature
21 3C 61 72 63 68 3E
Offset
0 (start of file)
ASCII
!<arch>
Length
7 bytes

What this magic number means

A magic number is a short, fixed run of bytes at a known position that tells a program what a file really is, no matter what the filename says. If a file starts with the bytes 21 3C 61 72 63 68 3E (the text !<arch>), it is a Debian package file.

Formats that use the 21 3C 61 72 signature

These file types in our database carry this signature:

It is also seen in: AR, LIB.

How to check a file's signature

You can read the first bytes of any file yourself. The magic bytes are shown in hex, the same way this page lists them.

Linux & macOS

  • xxd -l 16 example.deb
  • hexdump -C -n 16 example.deb
  • file example.deb

Windows (PowerShell)

  • Format-Hex -Path example.deb -Count 16

Python

  • open("example.deb","rb").read(7).hex()

In your browser

Frequently asked questions

What is the Debian package file signature?

Debian package files start with the hex bytes 21 3C 61 72 63 68 3E (!<arch> in ASCII). This magic number identifies the format regardless of the file's name or extension.

How do I check a file's magic number?

Open the file in a hex editor, or run a command such as xxd -l 16 example.deb on Linux or macOS, or Format-Hex -Path example.deb -Count 16 in Windows PowerShell, and read the first bytes.

Can a file fake the Debian package signature?

Renaming a file does not change its bytes, so the extension can lie but the signature usually cannot. A genuine Debian package file has these exact bytes; a file with the wrong bytes is not really Debian package, whatever its name says.

Related signatures

Sources