You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Plugins/Processing/README.md
+35-18Lines changed: 35 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,28 +6,43 @@
6
6
Для использования пользовательского плагина пост-обработки данных необходимо выполнить следующие действия:
7
7
1. написать плагин;
8
8
2. добавить плагин в конфиг-файл для запуска `Crusher` (опционально);
9
-
3. запустить `Crusher`: с конфиг-файлом или с опцией `--post-processing`.
9
+
3. запустить `Crusher`: с конфиг-файлом или с опцией `--processing`.
10
10
11
-
### 1. Написание плагина
11
+
### 1. Написание плагина processing модуля
12
12
Плагин представляет из себя `.py` файл со следующими необходимыми компонентами:
13
13
* функция инициализации `initialization()`;
14
-
* класс пост-обработки.
14
+
* класс обработки данных в дальнейщем processing.
15
15
16
16
#### Функция `initialization()`
17
-
Функция `initialization()` возвращает класс пост-обработки, реализованный в плагине.
17
+
Функция `initialization()` возвращает класс , реализованный в плагине.
18
18
19
19
Пример функции `initialization()`:
20
20
21
21
```python
22
22
definitialization():
23
-
returnPostProcess
23
+
returnProcessing
24
24
```
25
25
26
-
#### Класс пост-обработки
26
+
#### Класс модуля processing
27
27
Имя класса должно соответствовать тому, что возвращает функция `initialization`.
28
28
29
-
##### Метод пост-обработки
30
-
В классе необходимо релизовать метод `post_processing`, который принимает в качестве аргумента массив байт (`bytearray`) - буфер, который передаёт ядро `Crusher` для мутаций, и возвращает также массив байт.
29
+
##### Метод пред-обработки модуля processing
30
+
31
+
В классе можно релизовать метод `pre_processing`, который принимает в качестве аргумента массив байт (`bytearray`) -
32
+
буфер с начальными входными данными, который передаёт ядро `Crusher` для мутаций, и возвращает также массив байт.
33
+
34
+
Данный метод должен обязательно содержать следующий код (для правильной его инициализации в `Crusher`):
35
+
```python
36
+
defpre_processing(self, data=None):
37
+
if data isNone:
38
+
return42
39
+
```
40
+
41
+
Предполагается, что в остальной части тела метода проводятся манипуляции над `data` и возвращается новый массив байт.
42
+
Однако, использование `data` не является обязательным.
43
+
44
+
##### Метод пост-обработки модуля processing
45
+
В классе можно релизовать метод `post_processing`, который принимает в качестве аргумента массив байт (`bytearray`) - буфер, который передаёт ядро `Crusher` для мутаций, и возвращает также массив байт.
31
46
32
47
Данный метод должен обязательно содержать следующий код (для правильной его инициализации в `Crusher`):
Предполагается, что в остальной части тела метода проводятся манипуляции над `data` и возвращается новый массив байт.
40
55
Однако, использование `data` не является обязательным.
41
56
42
-
### 2. Добавление пост-обработчика в конфиг-файл для `Crusher`
57
+
### 2. Добавление модуля processing в конфиг-файл для `Crusher`
43
58
Конфиг-файл для `Crusher` (наряду с аргументами командной строки) позволяет более тонко настраивать его работу. Используется формат `JSON`.
44
59
45
-
Для использования нового скрипта пост-обработки при фаззинге нужно добавить полный путь к нему в поле `"post-processing"` в конфиг-файле.
60
+
Для использования нового модуля processing при фаззинге нужно добавить полный путь к нему в поле `"processing"` в конфиг-файле.
46
61
47
62
Важно помнить, что в директориях `queue` внутри директории с результатами работы фаззера будут храниться данные до пост-обработки.
48
-
Т.е. для воспроизведения, например, запусков с некоторыми тесткейсами из `queue`, над данными из соответствующих директорий нужно произвести преобразования из метода `post_processing` и только после этого подать на вход приложению.
49
-
Дело в том, что после пост-обработки размер файла может заметно вырасти, например, после добавления множества заголовков. Чтобы избежать нерационального использования дискового пространства, файлы в `queue` записываются без пост-обработки.
63
+
Т.е. для воспроизведения, например, запусков с некоторыми тесткейсами из `queue`, над данными из соответствующих директорий
64
+
нужно произвести преобразования из метода `post_processing` и только после этого подать на вход приложению.
65
+
Дело в том, что после пост-обработки размер файла может заметно вырасти, например, после добавления множества заголовков.
66
+
Чтобы избежать нерационального использования дискового пространства, файлы в `queue` записываются без пост-обработки.
50
67
51
68
При этом в директориях `crashes` и `hangs` записаны файлы уже после пост-обработки, на которых можно воспроизвести креши/зависания приложения без дополнительных преобразований.
52
69
Крешей и зависаний обычно на порядки меньше (если они вообще есть), чем путей, поэтому они занимают меньше места на диске.
0 commit comments