Запускаю скрипт,выдаёт 'NoneType' object has no attribute 'span'

Siyovush

Новичок
Пользователь
Апр 21, 2020
1
0
1
Сам код скрипта

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python

import zlib
import sys
import re
import binascii


if(len(sys.argv) < 2 or sys.argv[1] == "-h"):
print("usage: python DecompNewDell.py <biosupdate.exe>")
exit()


f = open(sys.argv[1], "rb")

string = f.read()

pat = re.compile(r'.{4}\xAA\xEE\xAA\x76\x1B\xEC\xBB\x20\xF1\xE6\x51.{1}\x78\x9C')


match = pat.search(string)

(start_match, end_match) = match.span()
compessed_len = string[start_match:start_match+4]

compessed_len = binascii.b2a_hex(compessed_len[::-1])
compessed_len = long(compessed_len, 16)
f.seek(start_match+16)
string = f.read(compessed_len)

o = zlib.decompress(string)

f2 = open(sys.argv[1] + "_decompressed.hdr", "wb")
f2.write(o)
f.close()
f2.close()
print("Decompressed data written to %s_decompressed.hdr" % sys.argv[1])
Выполняю с командной строки(файл находится рядом со скриптом и он .exe) и в итоге он бьёт тревогу на строке (start_match, end_match) = match.span()
1587482732663.png
 

Rud356

Модератор
Команда форума
Модератор
Апр 5, 2020
44
21
8
Он не нашел такого паттерна в строке, а ты дальше без проверки уже вызываешь какие-то методы у None объекта. К тому же ты считываешь бинарные данные, а не строковые и пытаешься искать в них что-то.
 
  • Мне нравится
Реакции: Student

Форум IT Специалистов