buby 1.3.3-java → 1.5.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. data/README.rdoc +28 -14
  2. data/Rakefile +96 -6
  3. data/VERSION.yml +5 -0
  4. data/bin/buby +2 -0
  5. data/buby.gemspec +102 -17
  6. data/{java/src → ext/buby/burp}/BurpExtender.java +189 -29
  7. data/ext/burp_interfaces/burp/IBurpExtender.java +31 -0
  8. data/ext/burp_interfaces/burp/IBurpExtenderCallbacks.java +785 -0
  9. data/ext/burp_interfaces/burp/IContextMenuFactory.java +38 -0
  10. data/ext/burp_interfaces/burp/IContextMenuInvocation.java +156 -0
  11. data/ext/burp_interfaces/burp/ICookie.java +53 -0
  12. data/ext/burp_interfaces/burp/IExtensionHelpers.java +352 -0
  13. data/ext/burp_interfaces/burp/IExtensionStateListener.java +27 -0
  14. data/ext/burp_interfaces/burp/IHttpListener.java +37 -0
  15. data/ext/burp_interfaces/burp/IHttpRequestResponse.java +102 -0
  16. data/ext/burp_interfaces/burp/IHttpRequestResponsePersisted.java +26 -0
  17. data/ext/burp_interfaces/burp/IHttpRequestResponseWithMarkers.java +44 -0
  18. data/ext/burp_interfaces/burp/IHttpService.java +39 -0
  19. data/ext/burp_interfaces/burp/IInterceptedProxyMessage.java +116 -0
  20. data/ext/burp_interfaces/burp/IIntruderAttack.java +31 -0
  21. data/ext/burp_interfaces/burp/IIntruderPayloadGenerator.java +50 -0
  22. data/ext/burp_interfaces/burp/IIntruderPayloadGeneratorFactory.java +40 -0
  23. data/ext/burp_interfaces/burp/IIntruderPayloadProcessor.java +45 -0
  24. data/{java/src → ext/burp_interfaces}/burp/IMenuItemHandler.java +36 -40
  25. data/ext/burp_interfaces/burp/IMessageEditor.java +64 -0
  26. data/ext/burp_interfaces/burp/IMessageEditorController.java +49 -0
  27. data/ext/burp_interfaces/burp/IMessageEditorTab.java +102 -0
  28. data/ext/burp_interfaces/burp/IMessageEditorTabFactory.java +38 -0
  29. data/ext/burp_interfaces/burp/IParameter.java +104 -0
  30. data/ext/burp_interfaces/burp/IProxyListener.java +37 -0
  31. data/ext/burp_interfaces/burp/IRequestInfo.java +95 -0
  32. data/ext/burp_interfaces/burp/IResponseInfo.java +54 -0
  33. data/ext/burp_interfaces/burp/IScanIssue.java +120 -0
  34. data/ext/burp_interfaces/burp/IScanQueueItem.java +80 -0
  35. data/ext/burp_interfaces/burp/IScannerCheck.java +89 -0
  36. data/ext/burp_interfaces/burp/IScannerInsertionPoint.java +156 -0
  37. data/ext/burp_interfaces/burp/IScannerInsertionPointProvider.java +38 -0
  38. data/ext/burp_interfaces/burp/IScannerListener.java +30 -0
  39. data/ext/burp_interfaces/burp/IScopeChangeListener.java +25 -0
  40. data/ext/burp_interfaces/burp/ISessionHandlingAction.java +51 -0
  41. data/ext/burp_interfaces/burp/ITab.java +38 -0
  42. data/ext/burp_interfaces/burp/ITempFile.java +33 -0
  43. data/ext/burp_interfaces/burp/ITextEditor.java +90 -0
  44. data/lib/buby/burp_extender/console_frame.rb +33 -0
  45. data/lib/buby/burp_extender/console_pane.rb +26 -0
  46. data/lib/buby/burp_extender/console_tab.rb +15 -0
  47. data/lib/buby/burp_extender/context_menu.rb +29 -0
  48. data/lib/buby/burp_extender/context_menu_factory.rb +17 -0
  49. data/lib/buby/burp_extender/context_menu_item.rb +13 -0
  50. data/lib/buby/burp_extender/jcheck_box_menu_item.rb +12 -0
  51. data/lib/buby/burp_extender/jmenu.rb +11 -0
  52. data/lib/buby/burp_extender/jmenu_item.rb +12 -0
  53. data/lib/buby/burp_extender/menu.rb +11 -0
  54. data/lib/buby/burp_extender/menu_item.rb +12 -0
  55. data/lib/buby/burp_extender.rb +339 -0
  56. data/lib/buby/context_menu_factory.rb +35 -0
  57. data/lib/buby/cookie.rb +37 -0
  58. data/lib/buby/extender.rb +156 -0
  59. data/lib/buby/http_listener.rb +29 -0
  60. data/lib/buby/{extends → implants}/buby_array_wrapper.rb +0 -0
  61. data/lib/buby/implants/context_menu_invocation.rb +113 -0
  62. data/lib/buby/implants/cookie.rb +47 -0
  63. data/lib/buby/implants/extension_helpers.rb +286 -0
  64. data/lib/buby/{extends → implants}/http_request_response.rb +8 -1
  65. data/lib/buby/implants/intercepted_proxy_message.rb +53 -0
  66. data/lib/buby/implants/intruder_attack.rb +42 -0
  67. data/lib/buby/implants/jruby.rb +64 -0
  68. data/lib/buby/implants/message_editor.rb +70 -0
  69. data/lib/buby/implants/message_editor_controller.rb +60 -0
  70. data/lib/buby/implants/parameter.rb +84 -0
  71. data/lib/buby/implants/request_info.rb +47 -0
  72. data/lib/buby/implants/response_info.rb +44 -0
  73. data/lib/buby/{extends → implants}/scan_issue.rb +1 -2
  74. data/lib/buby/implants/scan_queue_item.rb +53 -0
  75. data/lib/buby/implants/scanner_insertion_point.rb +92 -0
  76. data/lib/buby/implants/temp_file.rb +43 -0
  77. data/lib/buby/implants/text_editor.rb +63 -0
  78. data/lib/buby/implants.rb +28 -0
  79. data/lib/buby/intruder_payload_generator.rb +60 -0
  80. data/lib/buby/intruder_payload_generator_factory.rb +32 -0
  81. data/lib/buby/intruder_payload_processor.rb +38 -0
  82. data/lib/buby/message_editor_controller.rb +41 -0
  83. data/lib/buby/message_editor_tab.rb +98 -0
  84. data/lib/buby/message_editor_tab_factory.rb +28 -0
  85. data/lib/buby/parameter/base.rb +40 -0
  86. data/lib/buby/parameter/body.rb +7 -0
  87. data/lib/buby/parameter/cookie.rb +7 -0
  88. data/lib/buby/parameter/url.rb +7 -0
  89. data/lib/buby/parameter.rb +15 -0
  90. data/lib/buby/proxy_listener.rb +26 -0
  91. data/lib/buby/scan_issue.rb +112 -0
  92. data/lib/buby/scanner_check.rb +84 -0
  93. data/lib/buby/scanner_insertion_point.rb +118 -0
  94. data/lib/buby/scanner_insertion_point_provider.rb +27 -0
  95. data/lib/buby/scanner_listener.rb +22 -0
  96. data/lib/buby/scope_change_listener.rb +19 -0
  97. data/lib/buby/session_handling_action.rb +43 -0
  98. data/lib/buby/tab.rb +37 -0
  99. data/lib/buby/version.rb +9 -0
  100. data/lib/buby.rb +892 -101
  101. metadata +118 -22
  102. data/VERSION +0 -1
  103. data/java/buby.jar +0 -0
  104. data/java/src/burp/IBurpExtender.java +0 -180
  105. data/java/src/burp/IBurpExtenderCallbacks.java +0 -373
  106. data/java/src/burp/IHttpRequestResponse.java +0 -156
  107. data/java/src/burp/IScanIssue.java +0 -106
  108. data/java/src/burp/IScanQueueItem.java +0 -76
  109. data/lib/buby/extends.rb +0 -4
@@ -0,0 +1,27 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IExtensionStateListener.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * Extensions can implement this interface and then call
14
+ * <code>IBurpExtenderCallbacks.registerExtensionStateListener()</code> to
15
+ * register an extension state listener. The listener will be notified of
16
+ * changes to the extension's state. <b>Note:</b> Any extensions that start
17
+ * background threads or open system resources (such as files or database
18
+ * connections) should register a listener and terminate threads / close
19
+ * resources when the extension is unloaded.
20
+ */
21
+ public interface IExtensionStateListener
22
+ {
23
+ /**
24
+ * This method is called when the extension is unloaded.
25
+ */
26
+ void extensionUnloaded();
27
+ }
@@ -0,0 +1,37 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IHttpListener.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * Extensions can implement this interface and then call
14
+ * <code>IBurpExtenderCallbacks.registerHttpListener()</code> to register an
15
+ * HTTP listener. The listener will be notified of requests and responses made
16
+ * by any Burp tool. Extensions can perform custom analysis or modification of
17
+ * these messages by registering an HTTP listener.
18
+ */
19
+ public interface IHttpListener
20
+ {
21
+ /**
22
+ * This method is invoked when an HTTP request is about to be issued, and
23
+ * when an HTTP response has been received.
24
+ *
25
+ * @param toolFlag A flag indicating the Burp tool that issued the request.
26
+ * Burp tool flags are defined in the
27
+ * <code>IBurpExtenderCallbacks</code> interface.
28
+ * @param messageIsRequest Flags whether the method is being invoked for a
29
+ * request or response.
30
+ * @param messageInfo Details of the request / response to be processed.
31
+ * Extensions can call the setter methods on this object to update the
32
+ * current message and so modify Burp's behavior.
33
+ */
34
+ void processHttpMessage(int toolFlag,
35
+ boolean messageIsRequest,
36
+ IHttpRequestResponse messageInfo);
37
+ }
@@ -0,0 +1,102 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IHttpRequestResponse.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used to retrieve and update details about HTTP messages.
14
+ *
15
+ * <b>Note:</b> The setter methods generally can only be used before the message
16
+ * has been processed, and not in read-only contexts. The getter methods
17
+ * relating to response details can only be used after the request has been
18
+ * issued.
19
+ */
20
+ public interface IHttpRequestResponse
21
+ {
22
+ /**
23
+ * This method is used to retrieve the request message.
24
+ *
25
+ * @return The request message.
26
+ */
27
+ byte[] getRequest();
28
+
29
+ /**
30
+ * This method is used to update the request message.
31
+ *
32
+ * @param message The new request message.
33
+ */
34
+ void setRequest(byte[] message);
35
+
36
+ /**
37
+ * This method is used to retrieve the response message.
38
+ *
39
+ * @return The response message.
40
+ */
41
+ byte[] getResponse();
42
+
43
+ /**
44
+ * This method is used to update the response message.
45
+ *
46
+ * @param message The new response message.
47
+ */
48
+ void setResponse(byte[] message);
49
+
50
+ /**
51
+ * This method is used to retrieve the user-annotated comment for this item,
52
+ * if applicable.
53
+ *
54
+ * @return The user-annotated comment for this item, or null if none is set.
55
+ */
56
+ String getComment();
57
+
58
+ /**
59
+ * This method is used to update the user-annotated comment for this item.
60
+ *
61
+ * @param comment The comment to be assigned to this item.
62
+ */
63
+ void setComment(String comment);
64
+
65
+ /**
66
+ * This method is used to retrieve the user-annotated highlight for this
67
+ * item, if applicable.
68
+ *
69
+ * @return The user-annotated highlight for this item, or null if none is
70
+ * set.
71
+ */
72
+ String getHighlight();
73
+
74
+ /**
75
+ * This method is used to update the user-annotated highlight for this item.
76
+ *
77
+ * @param color The highlight color to be assigned to this item. Accepted
78
+ * values are: red, orange, yellow, green, cyan, blue, pink, magenta, gray,
79
+ * or a null String to clear any existing highlight.
80
+ */
81
+ void setHighlight(String color);
82
+
83
+ /**
84
+ * This method is used to retrieve the HTTP service for this request /
85
+ * response.
86
+ *
87
+ * @return An
88
+ * <code>IHttpService</code> object containing details of the HTTP service.
89
+ */
90
+ IHttpService getHttpService();
91
+
92
+ /**
93
+ * This method is used to update the HTTP service for this request /
94
+ * response.
95
+ *
96
+ * @param httpService An
97
+ * <code>IHttpService</code> object containing details of the new HTTP
98
+ * service.
99
+ */
100
+ void setHttpService(IHttpService httpService);
101
+
102
+ }
@@ -0,0 +1,26 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IHttpRequestResponsePersisted.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used for an
14
+ * <code>IHttpRequestResponse</code> object whose request and response messages
15
+ * have been saved to temporary files using
16
+ * <code>IBurpExtenderCallbacks.saveBuffersToTempFiles()</code>.
17
+ */
18
+ public interface IHttpRequestResponsePersisted extends IHttpRequestResponse
19
+ {
20
+ /**
21
+ * This method is used to permanently delete the saved temporary files. It
22
+ * will no longer be possible to retrieve the request or response for this
23
+ * item.
24
+ */
25
+ void deleteTempFiles();
26
+ }
@@ -0,0 +1,44 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IHttpRequestResponseWithMarkers.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ import java.util.List;
13
+
14
+ /**
15
+ * This interface is used for an
16
+ * <code>IHttpRequestResponse</code> object that has had markers applied.
17
+ * Extensions can create instances of this interface using
18
+ * <code>IBurpExtenderCallbacks.applyMarkers()</code>, or provide their own
19
+ * implementation. Markers are used in various situations, such as specifying
20
+ * Intruder payload positions, Scanner insertion points, and highlights in
21
+ * Scanner issues.
22
+ */
23
+ public interface IHttpRequestResponseWithMarkers extends IHttpRequestResponse
24
+ {
25
+ /**
26
+ * This method returns the details of the request markers.
27
+ *
28
+ * @return A list of index pairs representing the offsets of markers for the
29
+ * request message. Each item in the list is an int[2] array containing the
30
+ * start and end offsets for the marker. The method may return
31
+ * <code>null</code> if no request markers are defined.
32
+ */
33
+ List<int[]> getRequestMarkers();
34
+
35
+ /**
36
+ * This method returns the details of the response markers.
37
+ *
38
+ * @return A list of index pairs representing the offsets of markers for the
39
+ * response message. Each item in the list is an int[2] array containing the
40
+ * start and end offsets for the marker. The method may return
41
+ * <code>null</code> if no response markers are defined.
42
+ */
43
+ List<int[]> getResponseMarkers();
44
+ }
@@ -0,0 +1,39 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IHttpService.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used to provide details about an HTTP service, to which
14
+ * HTTP requests can be sent.
15
+ */
16
+ public interface IHttpService
17
+ {
18
+ /**
19
+ * This method returns the hostname or IP address for the service.
20
+ *
21
+ * @return The hostname or IP address for the service.
22
+ */
23
+ String getHost();
24
+
25
+ /**
26
+ * This method returns the port number for the service.
27
+ *
28
+ * @return The port number for the service.
29
+ */
30
+ int getPort();
31
+
32
+ /**
33
+ * This method returns the protocol for the service.
34
+ *
35
+ * @return The protocol for the service. Expected values are "http" or
36
+ * "https".
37
+ */
38
+ String getProtocol();
39
+ }
@@ -0,0 +1,116 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IInterceptedProxyMessage.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ import java.net.InetAddress;
13
+
14
+ /**
15
+ * This interface is used to represent an HTTP message that has been intercepted
16
+ * by Burp Proxy. Extensions can register an
17
+ * <code>IProxyListener</code> to receive details of proxy messages using this
18
+ * interface. *
19
+ */
20
+ public interface IInterceptedProxyMessage
21
+ {
22
+ /**
23
+ * This action causes Burp Proxy to follow the current interception rules to
24
+ * determine the appropriate action to take for the message.
25
+ */
26
+ static final int ACTION_FOLLOW_RULES = 0;
27
+ /**
28
+ * This action causes Burp Proxy to present the message to the user for
29
+ * manual review or modification.
30
+ */
31
+ static final int ACTION_DO_INTERCEPT = 1;
32
+ /**
33
+ * This action causes Burp Proxy to forward the message to the remote server
34
+ * or client, without presenting it to the user.
35
+ */
36
+ static final int ACTION_DONT_INTERCEPT = 2;
37
+ /**
38
+ * This action causes Burp Proxy to drop the message.
39
+ */
40
+ static final int ACTION_DROP = 3;
41
+ /**
42
+ * This action causes Burp Proxy to follow the current interception rules to
43
+ * determine the appropriate action to take for the message, and then make a
44
+ * second call to processProxyMessage.
45
+ */
46
+ static final int ACTION_FOLLOW_RULES_AND_REHOOK = 0x10;
47
+ /**
48
+ * This action causes Burp Proxy to present the message to the user for
49
+ * manual review or modification, and then make a second call to
50
+ * processProxyMessage.
51
+ */
52
+ static final int ACTION_DO_INTERCEPT_AND_REHOOK = 0x11;
53
+ /**
54
+ * This action causes Burp Proxy to skip user interception, and then make a
55
+ * second call to processProxyMessage.
56
+ */
57
+ static final int ACTION_DONT_INTERCEPT_AND_REHOOK = 0x12;
58
+
59
+ /**
60
+ * This method retrieves a unique reference number for this
61
+ * request/response.
62
+ *
63
+ * @return An identifier that is unique to a single request/response pair.
64
+ * Extensions can use this to correlate details of requests and responses
65
+ * and perform processing on the response message accordingly.
66
+ */
67
+ int getMessageReference();
68
+
69
+ /**
70
+ * This method retrieves details of the intercepted message.
71
+ *
72
+ * @return An <code>IHttpRequestResponse</code> object containing details of
73
+ * the intercepted message.
74
+ */
75
+ IHttpRequestResponse getMessageInfo();
76
+
77
+ /**
78
+ * This method retrieves the currently defined interception action. The
79
+ * default action is
80
+ * <code>ACTION_FOLLOW_RULES</code>. If multiple proxy listeners are
81
+ * registered, then other listeners may already have modified the
82
+ * interception action before it reaches the current listener. This method
83
+ * can be used to determine whether this has occurred.
84
+ *
85
+ * @return The currently defined interception action. Possible values are
86
+ * defined within this interface.
87
+ */
88
+ int getInterceptAction();
89
+
90
+ /**
91
+ * This method is used to update the interception action.
92
+ *
93
+ * @param interceptAction The new interception action. Possible values are
94
+ * defined within this interface.
95
+ */
96
+ void setInterceptAction(int interceptAction);
97
+
98
+ /**
99
+ * This method retrieves the name of the Burp Proxy listener that is
100
+ * processing the intercepted message.
101
+ *
102
+ * @return The name of the Burp Proxy listener that is processing the
103
+ * intercepted message. The format is the same as that shown in the Proxy
104
+ * Listeners UI - for example, "127.0.0.1:8080".
105
+ */
106
+ String getListenerInterface();
107
+
108
+ /**
109
+ * This method retrieves the client IP address from which the request for
110
+ * the intercepted message was received.
111
+ *
112
+ * @return The client IP address from which the request for the intercepted
113
+ * message was received.
114
+ */
115
+ InetAddress getClientIpAddress();
116
+ }
@@ -0,0 +1,31 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IIntruderAttack.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used to hold details about an Intruder attack.
14
+ */
15
+ public interface IIntruderAttack
16
+ {
17
+ /**
18
+ * This method is used to retrieve the HTTP service for the attack.
19
+ *
20
+ * @return The HTTP service for the attack.
21
+ */
22
+ IHttpService getHttpService();
23
+
24
+ /**
25
+ * This method is used to retrieve the request template for the attack.
26
+ *
27
+ * @return The request template for the attack.
28
+ */
29
+ byte[] getRequestTemplate();
30
+
31
+ }
@@ -0,0 +1,50 @@
1
+ package burp;
2
+
3
+ /*
4
+ * @(#)IIntruderPayloadGenerator.java
5
+ *
6
+ * Copyright PortSwigger Ltd. All rights reserved.
7
+ *
8
+ * This code may be used to extend the functionality of Burp Suite Free Edition
9
+ * and Burp Suite Professional, provided that this usage does not violate the
10
+ * license terms for those products.
11
+ */
12
+ /**
13
+ * This interface is used for custom Intruder payload generators. Extensions
14
+ * that have registered an
15
+ * <code>IIntruderPayloadGeneratorFactory</code> must return a new instance of
16
+ * this interface when required as part of a new Intruder attack.
17
+ */
18
+ public interface IIntruderPayloadGenerator
19
+ {
20
+ /**
21
+ * This method is used by Burp to determine whether the payload generator is
22
+ * able to provide any further payloads.
23
+ *
24
+ * @return Extensions should return
25
+ * <code>false</code> when all the available payloads have been used up,
26
+ * otherwise
27
+ * <code>true</code>.
28
+ */
29
+ boolean hasMorePayloads();
30
+
31
+ /**
32
+ * This method is used by Burp to obtain the value of the next payload.
33
+ *
34
+ * @param baseValue The base value of the current payload position. This
35
+ * value may be
36
+ * <code>null</code> if the concept of a base value is not applicable (e.g.
37
+ * in a battering ram attack).
38
+ * @return The next payload to use in the attack.
39
+ */
40
+ byte[] getNextPayload(byte[] baseValue);
41
+
42
+ /**
43
+ * This method is used by Burp to reset the state of the payload generator
44
+ * so that the next call to
45
+ * <code>getNextPayload()</code> returns the first payload again. This
46
+ * method will be invoked when an attack uses the same payload generator for
47
+ * more than one payload position, for example in a sniper attack.
48
+ */
49
+ void reset();
50
+ }