Commit e712f8cab1d83cb726253379f6f189b99829dc57

Authored by decalage2
1 parent 608f55c0

olemap: moved display code to functions

Showing 1 changed file with 35 additions and 29 deletions
oletools/olemap.py
@@ -111,6 +111,38 @@ def sid_display(sid): @@ -111,6 +111,38 @@ def sid_display(sid):
111 return sid 111 return sid
112 112
113 113
  114 +def show_fat(ole):
  115 + print('FAT:')
  116 + t = tablestream.TableStream([8, 12, 8, 8], header_row=['Sector #', 'Type', 'Offset', 'Next #'])
  117 + for i in range(ole.nb_sect):
  118 + fat_value = ole.fat[i]
  119 + fat_type = FAT_TYPES.get(fat_value, '<Data>')
  120 + color_type = FAT_COLORS.get(fat_value, FAT_COLORS['default'])
  121 + # compute offset based on sector size:
  122 + offset = ole.sectorsize * (i + 1)
  123 + # print '%8X: %-12s offset=%08X next=%8X' % (i, fat_type, 0, fat_value)
  124 + t.write_row(['%8X' % i, fat_type, '%08X' % offset, '%8X' % fat_value],
  125 + colors=[None, color_type, None, None])
  126 + t.close()
  127 + print('')
  128 +
  129 +
  130 +def show_minifat(ole):
  131 + print('MiniFAT:')
  132 + # load MiniFAT if it wasn't already done:
  133 + ole.loadminifat()
  134 + t = tablestream.TableStream([8, 12, 8, 8], header_row=['Sector #', 'Type', 'Offset', 'Next #'])
  135 + for i in range(len(ole.minifat)):
  136 + fat_value = ole.minifat[i]
  137 + fat_type = FAT_TYPES.get(fat_value, 'Data')
  138 + color_type = FAT_COLORS.get(fat_value, FAT_COLORS['default'])
  139 + # TODO: compute offset
  140 + # print('%8X: %-12s offset=%08X next=%8X' % (i, fat_type, 0, fat_value))
  141 + t.write_row(['%8X' % i, fat_type, 'N/A', '%8X' % fat_value],
  142 + colors=[None, color_type, None, None])
  143 + t.close()
  144 + print('')
  145 +
114 # === MAIN =================================================================== 146 # === MAIN ===================================================================
115 147
116 def main(): 148 def main():
@@ -138,8 +170,6 @@ def main(): @@ -138,8 +170,6 @@ def main():
138 170
139 # print banner with version 171 # print banner with version
140 print(BANNER) 172 print(BANNER)
141 - # print banner with version  
142 - print('olemap %s - http://decalage.info/python/oletools' % __version__)  
143 173
144 for container, filename, data in xglob.iter_files(args, recursive=options.recursive, 174 for container, filename, data in xglob.iter_files(args, recursive=options.recursive,
145 zip_password=options.zip_password, zip_fname=options.zip_fname): 175 zip_password=options.zip_password, zip_fname=options.zip_fname):
@@ -156,33 +186,9 @@ def main(): @@ -156,33 +186,9 @@ def main():
156 else: 186 else:
157 # normal filename 187 # normal filename
158 ole = olefile.OleFileIO(filename) 188 ole = olefile.OleFileIO(filename)
159 - print('FAT:')  
160 - t = tablestream.TableStream([8, 12, 8, 8], header_row=['Sector #', 'Type', 'Offset', 'Next #'])  
161 - for i in range(ole.nb_sect):  
162 - fat_value = ole.fat[i]  
163 - fat_type = FAT_TYPES.get(fat_value, '<Data>')  
164 - color_type = FAT_COLORS.get(fat_value, FAT_COLORS['default'])  
165 - # compute offset based on sector size:  
166 - offset = ole.sectorsize * (i+1)  
167 - # print '%8X: %-12s offset=%08X next=%8X' % (i, fat_type, 0, fat_value)  
168 - t.write_row(['%8X' % i, fat_type, '%08X' % offset, '%8X' % fat_value],  
169 - colors=[None, color_type, None, None])  
170 - t.close()  
171 - print('')  
172 -  
173 - print('MiniFAT:')  
174 - # load MiniFAT if it wasn't already done:  
175 - ole.loadminifat()  
176 - t = tablestream.TableStream([8, 12, 8, 8], header_row=['Sector #', 'Type', 'Offset', 'Next #'])  
177 - for i in range(len(ole.minifat)):  
178 - fat_value = ole.minifat[i]  
179 - fat_type = FAT_TYPES.get(fat_value, 'Data')  
180 - color_type = FAT_COLORS.get(fat_value, FAT_COLORS['default'])  
181 - # TODO: compute offset  
182 - # print('%8X: %-12s offset=%08X next=%8X' % (i, fat_type, 0, fat_value))  
183 - t.write_row(['%8X' % i, fat_type, 'N/A', '%8X' % fat_value],  
184 - colors=[None, color_type, None, None])  
185 - t.close() 189 +
  190 + show_fat(ole)
  191 + show_minifat(ole)
186 192
187 ole.close() 193 ole.close()
188 194