127 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
127 lenVariableName, = struct.unpack(">H", self.__data.read(2)) |
128 # unsigned short, big-endian |
128 # unsigned short, big-endian |
129 variableName = self.__data.read(lenVariableName) |
129 variableName = self.__data.read(lenVariableName) |
130 variableName = variableName.decode("utf-8") |
130 variableName = variableName.decode("utf-8") |
131 variableType = self.__data.read(1) |
131 variableType = self.__data.read(1) |
132 if variableType == self.Number: |
132 if len(variableType): |
133 self.__parseNumber(variableName, self.__result) |
133 if variableType == self.Number: |
134 elif variableType == self.Boolean: |
134 self.__parseNumber(variableName, self.__result) |
135 self.__parseBoolean(variableName, self.__result) |
135 elif variableType == self.Boolean: |
136 elif variableType == self.String: |
136 self.__parseBoolean(variableName, self.__result) |
137 self.__parseString(variableName, self.__result) |
137 elif variableType == self.String: |
138 elif variableType == self.ObjObj: |
138 self.__parseString(variableName, self.__result) |
139 self.__parseObject(variableName, self.__result) |
139 elif variableType == self.ObjObj: |
140 elif variableType == self.ObjArr: |
140 self.__parseObject(variableName, self.__result) |
141 self.__parseArray(variableName, self.__result) |
141 elif variableType == self.ObjArr: |
142 elif variableType == self.ObjDate: |
142 self.__parseArray(variableName, self.__result) |
143 self.__parseDate(variableName, self.__result) |
143 elif variableType == self.ObjDate: |
144 elif variableType == self.ObjXml: |
144 self.__parseDate(variableName, self.__result) |
145 self.__parseXml(variableName, self.__result) |
145 elif variableType == self.ObjXml: |
146 elif variableType == self.ObjCc: |
146 self.__parseXml(variableName, self.__result) |
147 self.__parseOcc(variableName, self.__result) |
147 elif variableType == self.ObjCc: |
148 elif variableType == self.ObjM: |
148 self.__parseOcc(variableName, self.__result) |
149 self.__parseOjm(variableName, self.__result) |
149 elif variableType == self.ObjM: |
150 elif variableType == self.Null: |
150 self.__parseOjm(variableName, self.__result) |
151 self.__parseNull(variableName, self.__result) |
151 elif variableType == self.Null: |
152 elif variableType == self.Undef: |
152 self.__parseNull(variableName, self.__result) |
153 self.__parseUndefined(variableName, self.__result) |
153 elif variableType == self.Undef: |
154 else: |
154 self.__parseUndefined(variableName, self.__result) |
155 raise FlashCookieReaderError( |
155 else: |
156 "Unexpected Data Type: " + hex(ord(variableType))) |
156 raise FlashCookieReaderError( |
|
157 "Unexpected Data Type: " + hex(ord(variableType))) |
157 self.__data.read(1) # '\x00' |
158 self.__data.read(1) # '\x00' |
158 self.__data.close() |
159 self.__data.close() |
159 self.__parsed = True |
160 self.__parsed = True |
160 |
161 |
161 def __parseNumber(self, variableName, parent): |
162 def __parseNumber(self, variableName, parent): |