Commit 26b433902f143b04b86e4ec890d67a928c34dac9
1 parent
539454c9
olevba: backspace characters are displayed in red using colorclass (issue #358)
Showing
1 changed file
with
12 additions
and
1 deletions
oletools/olevba.py
| ... | ... | @@ -279,6 +279,12 @@ except ImportError: |
| 279 | 279 | + "see http://codespeak.net/lxml " \ |
| 280 | 280 | + "or http://effbot.org/zone/element-index.htm") |
| 281 | 281 | |
| 282 | +import colorclass | |
| 283 | + | |
| 284 | +# On Windows, colorclass needs to be enabled: | |
| 285 | +if os.name == 'nt': | |
| 286 | + colorclass.Windows.enable(auto_colors=True) | |
| 287 | + | |
| 282 | 288 | |
| 283 | 289 | # IMPORTANT: it should be possible to run oletools directly as scripts |
| 284 | 290 | # in any directory without installing them with pip or setup.py. |
| ... | ... | @@ -3236,8 +3242,13 @@ class VBA_Parser_CLI(VBA_Parser): |
| 3236 | 3242 | # check if the VBA code contains special characters such as backspace (issue #358) |
| 3237 | 3243 | if b'\x08' in vba_code_filtered: |
| 3238 | 3244 | log.warning('The VBA code contains special characters such as backspace, that may be used for obfuscation.') |
| 3245 | + if sys.stdout.isatty(): | |
| 3246 | + # if the standard output is the console, we'll display colors | |
| 3247 | + backspace = colorclass.Color(b'{autored}\\x08{/red}') | |
| 3248 | + else: | |
| 3249 | + backspace = b'\\x08' | |
| 3239 | 3250 | # replace backspace by "\x08" for display |
| 3240 | - vba_code_filtered = vba_code_filtered.replace(b'\x08', b'\\x08') | |
| 3251 | + vba_code_filtered = vba_code_filtered.replace(b'\x08', backspace) | |
| 3241 | 3252 | print(vba_code_filtered) |
| 3242 | 3253 | for (subfilename, stream_path, form_string) in self.extract_form_strings(): |
| 3243 | 3254 | print('-' * 79) | ... | ... |