code: def dumpfree(self):
          
          fmt = "L" if self.version > 15 else "H"
          hdrsize = 8 if self.version > 15 else 4
          pn = self.firstfree
          if pn == 0:
              print("no free pages")
              return
          while pn:
              self.fh.seek(pn * self.pagesize)
              data = self.fh.read(self.pagesize)
              if len(data) == 0:
                  print("could not read FREE data at page %06x" % pn)
                  break
              count, nextfree = struct.unpack_from("<" + (fmt * 2), data)
              freepages = list(struct.unpack_from("<" + (fmt * count), data, hdrsize))
              freepages.insert(0, pn)
              for pn in freepages:
                  self.fh.seek(pn * self.pagesize)
                  data = self.fh.read(self.pagesize)
                  print("%06x: free: %s" % (pn, hexdump(data[:64])))
              pn = nextfree
docs: list all free pages