def unpack(self, buf):
if len(buf) < self.pyr_len:
raise StorageError("Buffer too short")
self._magic, essidlen = struct.unpack(self.pyr_head, \
buf[:self.pyr_len])
if self._magic == 'PYR2':
self._delimiter = '\n'
elif self._magic == 'PYRT':
self._delimiter = '\00'
else:
raise StorageError("Not a PYRT- or PYR2-buffer.")
headfmt = "<%ssi16s" % (essidlen, )
headsize = struct.calcsize(headfmt)
header = buf[self.pyr_len:self.pyr_len + headsize]
if len(header) != headsize:
raise StorageError("Invalid header size")
header = struct.unpack(headfmt, header)
self.essid, self._numElems, self._digest = header
pmkoffset = self.pyr_len + headsize
pwoffset = pmkoffset + self._numElems * 32
self._pwbuffer = buf[pwoffset:]
self._pmkbuffer = buf[pmkoffset:pwoffset]
if len(self._pmkbuffer) % 32 != 0:
raise StorageError("pmkbuffer seems truncated")
评论列表
文章目录