• OK, so one of my coworkers opened a backup file from a 2005 server and a 2008 in a HEX editor server and found where there was a difference in the header of the file and it turns out that at position 3756 (0x0EAC) there is a two byte value that when converted to an integer is the internal database version. Here's some C# code to get it:

    FileStream f = new FileStream("C:\\SQLData\\MyBackupFile.bak", FileMode.Open);

    byte[] b = new byte[2];

    f.Seek(3756, SeekOrigin.Begin);

    b[0] = (byte)f.ReadByte();

    b[1] = (byte)f.ReadByte();

    Int16 dbVersion = BitConverter.ToInt16(b, 0);

    f.Close();