View Javadoc
1   package com.jsql.view.swing.panel.preferences;
2   
3   import com.jsql.view.swing.panel.PanelPreferences;
4   import com.jsql.view.swing.ui.BasicColoredSpinnerUI;
5   import com.jsql.view.swing.util.MediatorHelper;
6   import org.apache.commons.lang3.StringUtils;
7   
8   import javax.swing.*;
9   import java.awt.*;
10  import java.awt.event.ActionListener;
11  import java.util.stream.Stream;
12  
13  public class PanelInjection extends JPanel {
14  
15      private final JCheckBox checkboxIsNotShowingVulnReport = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isNotShowingVulnReport());
16      private final JCheckBox checkboxIsNotSearchingCharInsertion = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isNotSearchingCharInsertion());
17      private final JCheckBox checkboxIsNotInjectingMetadata = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isNotInjectingMetadata());
18      private final JCheckBox checkboxIsParsingForm = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isParsingForm());
19      
20      private final JCheckBox checkboxIsCheckingAllParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllParam());
21      private final JCheckBox checkboxIsCheckingAllURLParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllURLParam());
22      private final JCheckBox checkboxIsCheckingAllRequestParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllRequestParam());
23      private final JCheckBox checkboxIsCheckingAllHeaderParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllHeaderParam());
24      private final JCheckBox checkboxIsCheckingAllBase64Param = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllBase64Param());
25      private final JCheckBox checkboxIsCheckingAllJSONParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllJsonParam());
26      private final JCheckBox checkboxIsCheckingAllCookieParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllCookieParam());
27      private final JCheckBox checkboxIsCheckingAllSOAPParam = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isCheckingAllSoapParam());
28  
29      private final JCheckBox checkboxIsLimitingNormalIndex = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isLimitingNormalIndex());
30      private final JSpinner spinnerNormalIndexCount = new JSpinner();
31      private final JCheckBox checkboxIsLimitingSleepTimeStrategy = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isLimitingSleepTimeStrategy());
32      private final JSpinner spinnerSleepTimeStrategyCount = new JSpinner();
33  
34      private final JCheckBox checkboxIsPerfIndexDisabled = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isPerfIndexDisabled());
35      private final JRadioButton radioIsZipStrategy = new JRadioButton(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isZipStrategy());
36      private final JRadioButton radioIsDefaultStrategy = new JRadioButton(StringUtils.EMPTY, true);
37      private final JRadioButton radioIsDiosStrategy = new JRadioButton(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isDiosStrategy());
38      private final JCheckBox checkboxIsUrlEncodingDisabled = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isUrlEncodingDisabled());
39      private final JCheckBox checkboxIsUrlRandomSuffixDisabled = new JCheckBox(StringUtils.EMPTY, MediatorHelper.model().getMediatorUtils().getPreferencesUtil().isUrlRandomSuffixDisabled());
40  
41      public PanelInjection(PanelPreferences panelPreferences) {
42          
43          this.checkboxIsNotInjectingMetadata.setName("checkboxIsNotInjectingMetadata");
44          this.checkboxIsNotSearchingCharInsertion.setName("checkboxIsNotSearchingCharInsertion");
45          this.checkboxIsNotShowingVulnReport.setName("checkboxIsNotShowingVulnReport");
46          this.checkboxIsParsingForm.setName("checkboxIsParsingForm");
47          this.checkboxIsCheckingAllURLParam.setName("checkboxIsCheckingAllURLParam");
48          this.checkboxIsCheckingAllRequestParam.setName("checkboxIsCheckingAllRequestParam");
49          this.checkboxIsCheckingAllHeaderParam.setName("checkboxIsCheckingAllHeaderParam");
50          this.checkboxIsCheckingAllJSONParam.setName("checkboxIsCheckingAllJSONParam");
51          this.checkboxIsCheckingAllBase64Param.setName("checkboxIsCheckingAllBase64Param");
52          this.checkboxIsCheckingAllCookieParam.setName("checkboxIsCheckingAllCookieParam");
53          this.checkboxIsCheckingAllSOAPParam.setName("checkboxIsCheckingAllSOAPParam");
54          this.checkboxIsPerfIndexDisabled.setName("checkboxIsPerfIndexDisabled");
55          this.radioIsZipStrategy.setName("radioIsZipStrategy");
56          this.radioIsDefaultStrategy.setName("radioIsDefaultStrategy");
57          this.radioIsDiosStrategy.setName("radioIsDiosStrategy");
58          this.checkboxIsUrlEncodingDisabled.setName("checkboxIsUrlEncodingDisabled");
59          this.checkboxIsUrlRandomSuffixDisabled.setName("checkboxIsUrlRandomSuffixDisabled");
60          this.checkboxIsLimitingNormalIndex.setName("checkboxIsLimitingNormalIndex");
61          this.checkboxIsLimitingSleepTimeStrategy.setName("checkboxIsLimitingSleepTimeStrategy");
62          
63          this.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
64          
65          this.checkboxIsPerfIndexDisabled.setToolTipText(
66              "<html>Reduce Normal calibration URL, useful when host rejects large URL."
67              + "<br>Should be enabled when Zip mode is activated.</html>"
68          );
69  
70          var tooltipParseForm =
71              "<html>Create name=value params from HTML forms' extracted data.<br>"
72              + "Sometimes mandatory params are contained in forms.<br>"
73              + "It makes easy adding such params to requests.</html>";
74          this.checkboxIsParsingForm.setToolTipText(tooltipParseForm);
75          this.checkboxIsParsingForm.setFocusable(false);
76          var labelIsParsingForm = new JButton("Get HTML tags <input/> and add parameters to URL and Request");
77          labelIsParsingForm.setToolTipText(tooltipParseForm);
78          labelIsParsingForm.addActionListener(actionEvent -> {
79              
80              this.checkboxIsParsingForm.setSelected(!this.checkboxIsParsingForm.isSelected());
81              panelPreferences.getActionListenerSave().actionPerformed(null);
82          });
83          
84          var tooltipIsNotInjectingMetadata = "Not injecting metadata saves time, particularly for Blind and Time strategies";
85          this.checkboxIsNotInjectingMetadata.setToolTipText(tooltipIsNotInjectingMetadata);
86          this.checkboxIsNotInjectingMetadata.setFocusable(false);
87          var labelIsNotInjectingMetadata = new JButton("Disable search of database name, version and user metadata");
88          labelIsNotInjectingMetadata.setToolTipText(tooltipIsNotInjectingMetadata);
89          labelIsNotInjectingMetadata.addActionListener(actionEvent -> {
90              
91              this.checkboxIsNotInjectingMetadata.setSelected(!this.checkboxIsNotInjectingMetadata.isSelected());
92              panelPreferences.getActionListenerSave().actionPerformed(null);
93          });
94          
95          var tooltipIsNotSearchingCharInsertion = "<html>Injection query starts usually with prefix like <b>quote</b> or <b>parenthesis</b>:<br>" +
96              "- ...&injectMe=' union select...<br>" +
97              "- ...&injectMe=) union select...<br>" +
98              "Default is searching for the prefix but can be disabled to save time when prefix is already set by the user.</html>";
99          this.checkboxIsNotSearchingCharInsertion.setToolTipText(tooltipIsNotSearchingCharInsertion);
100         this.checkboxIsNotSearchingCharInsertion.setFocusable(false);
101         var labelIsNotSearchingCharInsertion = new JButton("Disable search for character insertion");
102         labelIsNotSearchingCharInsertion.setToolTipText(tooltipIsNotSearchingCharInsertion);
103         labelIsNotSearchingCharInsertion.addActionListener(actionEvent -> {
104 
105             this.checkboxIsNotSearchingCharInsertion.setSelected(!this.checkboxIsNotSearchingCharInsertion.isSelected());
106             panelPreferences.getActionListenerSave().actionPerformed(null);
107         });
108 
109         this.checkboxIsNotShowingVulnReport.setFocusable(false);
110         var labelIsNotShowingVulnReport = new JButton("Disable showing vulnerability report");
111         labelIsNotShowingVulnReport.addActionListener(actionEvent -> {
112 
113             this.checkboxIsNotShowingVulnReport.setSelected(!this.checkboxIsNotShowingVulnReport.isSelected());
114             panelPreferences.getActionListenerSave().actionPerformed(null);
115         });
116 
117         var tooltipIsSleepTimeStrategy = "<html>Time strategy waits an arbitrary number of seconds for a page to respond.<br>Amount of seconds can be lowered on a stable environment like local tests in order to save time.</html>";
118         this.checkboxIsLimitingSleepTimeStrategy.setToolTipText(tooltipIsSleepTimeStrategy);
119         this.checkboxIsLimitingSleepTimeStrategy.setFocusable(false);
120         var labelIsLimitingSleepTimeStrategy = new JButton("Delay Time strategy for");
121         labelIsLimitingSleepTimeStrategy.setToolTipText(tooltipIsSleepTimeStrategy);
122         labelIsLimitingSleepTimeStrategy.addActionListener(actionEvent -> {
123             
124             this.checkboxIsLimitingSleepTimeStrategy.setSelected(!this.checkboxIsLimitingSleepTimeStrategy.isSelected());
125             panelPreferences.getActionListenerSave().actionPerformed(null);
126         });
127         
128         var panelSleepTimeStrategy = new JPanel(new BorderLayout());
129         panelSleepTimeStrategy.add(labelIsLimitingSleepTimeStrategy, BorderLayout.WEST);
130         panelSleepTimeStrategy.add(this.spinnerSleepTimeStrategyCount, BorderLayout.CENTER);
131         panelSleepTimeStrategy.add(new JLabel(" s ; default 5s"), BorderLayout.EAST);
132         panelSleepTimeStrategy.setMaximumSize(new Dimension(125, this.spinnerSleepTimeStrategyCount.getPreferredSize().height));
133         this.spinnerSleepTimeStrategyCount.addChangeListener(e -> panelPreferences.getActionListenerSave().actionPerformed(null));
134         
135         int countSleepTimeStrategy = MediatorHelper.model().getMediatorUtils().getPreferencesUtil().countSleepTimeStrategy();
136         var spinnerSleepTimeStrategy = new SpinnerNumberModel(
137             countSleepTimeStrategy <= 0 ? 15 : countSleepTimeStrategy,
138             1,
139             30,
140             1
141         );
142         this.spinnerSleepTimeStrategyCount.setModel(spinnerSleepTimeStrategy);
143         this.spinnerSleepTimeStrategyCount.setUI(new BasicColoredSpinnerUI());
144         this.spinnerSleepTimeStrategyCount.addMouseWheelListener(new SpinnerMouseWheelListener());
145         
146         var tooltipIsLimitingNormalIndex = "Maximum number of columns to check on UNION based queries";
147         this.checkboxIsLimitingNormalIndex.setToolTipText(tooltipIsLimitingNormalIndex);
148         this.checkboxIsLimitingNormalIndex.setFocusable(false);
149         var labelIsLimitingNormalIndex = new JButton("Limit Normal UNION strategy to");
150         labelIsLimitingNormalIndex.setToolTipText(tooltipIsLimitingNormalIndex);
151         labelIsLimitingNormalIndex.addActionListener(actionEvent -> {
152             
153             this.checkboxIsLimitingNormalIndex.setSelected(!this.checkboxIsLimitingNormalIndex.isSelected());
154             panelPreferences.getActionListenerSave().actionPerformed(null);
155         });
156         
157         var panelIsLimitingNormalIndex = new JPanel(new BorderLayout());
158         panelIsLimitingNormalIndex.add(labelIsLimitingNormalIndex, BorderLayout.WEST);
159         panelIsLimitingNormalIndex.add(this.spinnerNormalIndexCount, BorderLayout.CENTER);
160         panelIsLimitingNormalIndex.add(new JLabel(" column(s) ; default 50 columns"), BorderLayout.EAST);
161         panelIsLimitingNormalIndex.setMaximumSize(new Dimension(250, this.spinnerNormalIndexCount.getPreferredSize().height));
162         this.spinnerNormalIndexCount.addChangeListener(e -> panelPreferences.getActionListenerSave().actionPerformed(null));
163         
164         int countNormalIndex = MediatorHelper.model().getMediatorUtils().getPreferencesUtil().countNormalIndex();
165         var spinnerCountNormalIndex = new SpinnerNumberModel(
166             countNormalIndex <= 0 ? 50 : countNormalIndex,
167             1,
168             200,
169             1
170         );
171         this.spinnerNormalIndexCount.setModel(spinnerCountNormalIndex);
172         this.spinnerNormalIndexCount.setUI(new BasicColoredSpinnerUI());
173         this.spinnerNormalIndexCount.addMouseWheelListener(new SpinnerMouseWheelListener());
174         
175         var labelIsCheckingAllParam = new JButton("Inject every parameters (ignore user's selection)");
176         var labelIsCheckingAllURLParam = new JButton("Inject every URL parameters when URL method is selected");
177         var labelIsCheckingAllRequestParam = new JButton("Inject every Request parameters when Request method is selected");
178         var labelIsCheckingAllHeaderParam = new JButton("Inject every Header parameters when Header method is selected");
179         var labelIsCheckingAllCookieParam = new JButton("Inject every cookie parameters");
180         var labelIsCheckingAllJSONParam = new JButton("Inject every JSON parameters");
181         var labelIsCheckingAllBase64Param = new JButton("Inject Base64 parameters");
182         var labelIsCheckingAllSOAPParam = new JButton("Inject SOAP parameters in Request body");
183         
184         var labelIsDefaultStrategy = new JButton("Use Default mode (use this ; no change to URL or processing)");
185         var labelIsDiosStrategy = new JButton("Use Dios mode (less queries ; do not use with Error strategies)");
186         labelIsDiosStrategy.setToolTipText(
187             "<html>Mode Dump In One Shot injects a single query that gets all the data at once."
188             + "<br>Faster than default mode for Normal and Error strats but requires volume of data to not be huge.</html>"
189         );
190         var labelIsZipStrategy = new JButton("Use Zip mode (smaller SQL queries ; reduce URL size but less efficient)");
191         labelIsZipStrategy.setToolTipText(
192             "<html>Zip mode injects small queries, useful when host rejects large URL."
193             + "<br>Downside is metadata like table or row count is not fetched.</html>"
194         );
195         var labelIsUrlEncodingDisabled = new JButton("Disable URL encoding (smaller URL)");
196         var labelIsUrlRandomSuffixDisabled = new JButton("Disable URL random suffix (strategy Time special use case)");
197         var labelIsPerfIndexDisabled = new JButton("Disable calibration (smaller SQL query during Normal index selection only)");
198         
199         var emptyLabelGeneralInjection = new JLabel();
200         var labelGeneralInjection = new JLabel("<html><b>Processing</b></html>");
201         var emptyLabelParamsInjection = new JLabel();
202         var labelParamsInjection = new JLabel("<html><br /><b>URL parameters</b></html>");
203         var emptyLabelSpecial = new JLabel();
204         var labelSpecial = new JLabel("<html><br /><b>Special parameters</b></html>");
205         var emptyLabelQuerySize = new JLabel();
206         var labelQuerySize = new JLabel("<html><br /><b>Reduce URL size (advanced)</b></html>");
207         
208         ActionListener actionListenerCheckingAllParam = actionEvent -> {
209             
210             if (actionEvent.getSource() != this.checkboxIsCheckingAllParam) {
211                 this.checkboxIsCheckingAllParam.setSelected(!this.checkboxIsCheckingAllParam.isSelected());
212             }
213             
214             this.checkboxIsCheckingAllURLParam.setSelected(this.checkboxIsCheckingAllParam.isSelected());
215             this.checkboxIsCheckingAllRequestParam.setSelected(this.checkboxIsCheckingAllParam.isSelected());
216             this.checkboxIsCheckingAllHeaderParam.setSelected(this.checkboxIsCheckingAllParam.isSelected());
217             
218             this.checkboxIsCheckingAllURLParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
219             this.checkboxIsCheckingAllRequestParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
220             this.checkboxIsCheckingAllHeaderParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
221             
222             labelIsCheckingAllURLParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
223             labelIsCheckingAllRequestParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
224             labelIsCheckingAllHeaderParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
225             
226             panelPreferences.getActionListenerSave().actionPerformed(null);
227         };
228         
229         this.checkboxIsCheckingAllURLParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
230         this.checkboxIsCheckingAllRequestParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
231         this.checkboxIsCheckingAllHeaderParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
232         
233         labelIsCheckingAllURLParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
234         labelIsCheckingAllRequestParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
235         labelIsCheckingAllHeaderParam.setEnabled(!this.checkboxIsCheckingAllParam.isSelected());
236         
237         labelIsCheckingAllParam.addActionListener(actionListenerCheckingAllParam);
238         labelIsCheckingAllURLParam.addActionListener(actionEvent -> {
239             
240             this.checkboxIsCheckingAllURLParam.setSelected(!this.checkboxIsCheckingAllURLParam.isSelected());
241             panelPreferences.getActionListenerSave().actionPerformed(null);
242         });
243         labelIsCheckingAllRequestParam.addActionListener(actionEvent -> {
244             
245             this.checkboxIsCheckingAllRequestParam.setSelected(!this.checkboxIsCheckingAllRequestParam.isSelected());
246             panelPreferences.getActionListenerSave().actionPerformed(null);
247         });
248         labelIsCheckingAllHeaderParam.addActionListener(actionEvent -> {
249             
250             this.checkboxIsCheckingAllHeaderParam.setSelected(!this.checkboxIsCheckingAllHeaderParam.isSelected());
251             panelPreferences.getActionListenerSave().actionPerformed(null);
252         });
253         labelIsCheckingAllJSONParam.addActionListener(actionEvent -> {
254             
255             this.checkboxIsCheckingAllJSONParam.setSelected(!this.checkboxIsCheckingAllJSONParam.isSelected());
256             panelPreferences.getActionListenerSave().actionPerformed(null);
257         });
258         labelIsCheckingAllBase64Param.addActionListener(actionEvent -> {
259             
260             this.checkboxIsCheckingAllBase64Param.setSelected(!this.checkboxIsCheckingAllBase64Param.isSelected());
261             panelPreferences.getActionListenerSave().actionPerformed(null);
262         });
263         labelIsCheckingAllCookieParam.addActionListener(actionEvent -> {
264             
265             this.checkboxIsCheckingAllCookieParam.setSelected(!this.checkboxIsCheckingAllCookieParam.isSelected());
266             panelPreferences.getActionListenerSave().actionPerformed(null);
267         });
268         labelIsCheckingAllSOAPParam.addActionListener(actionEvent -> {
269             
270             this.checkboxIsCheckingAllSOAPParam.setSelected(!this.checkboxIsCheckingAllSOAPParam.isSelected());
271             panelPreferences.getActionListenerSave().actionPerformed(null);
272         });
273         labelIsPerfIndexDisabled.addActionListener(actionEvent -> {
274             
275             this.checkboxIsPerfIndexDisabled.setSelected(!this.checkboxIsPerfIndexDisabled.isSelected());
276             panelPreferences.getActionListenerSave().actionPerformed(null);
277         });
278         labelIsZipStrategy.addActionListener(actionEvent -> {
279             
280             this.radioIsZipStrategy.setSelected(!this.radioIsZipStrategy.isSelected());
281             panelPreferences.getActionListenerSave().actionPerformed(null);
282         });
283         labelIsDiosStrategy.addActionListener(actionEvent -> {
284             
285             this.radioIsDiosStrategy.setSelected(!this.radioIsDiosStrategy.isSelected());
286             panelPreferences.getActionListenerSave().actionPerformed(null);
287         });
288         labelIsDefaultStrategy.addActionListener(actionEvent -> {
289             
290             this.radioIsDefaultStrategy.setSelected(!this.radioIsDefaultStrategy.isSelected());
291             panelPreferences.getActionListenerSave().actionPerformed(null);
292         });
293         labelIsUrlEncodingDisabled.addActionListener(actionEvent -> {
294             
295             this.checkboxIsUrlEncodingDisabled.setSelected(!this.checkboxIsUrlEncodingDisabled.isSelected());
296             panelPreferences.getActionListenerSave().actionPerformed(null);
297         });
298         labelIsUrlRandomSuffixDisabled.addActionListener(actionEvent -> {
299 
300             this.checkboxIsUrlRandomSuffixDisabled.setSelected(!this.checkboxIsUrlRandomSuffixDisabled.isSelected());
301             panelPreferences.getActionListenerSave().actionPerformed(null);
302         });
303 
304         this.checkboxIsCheckingAllParam.addActionListener(actionListenerCheckingAllParam);
305         
306         Stream.of(
307             this.checkboxIsNotInjectingMetadata,
308             this.checkboxIsNotSearchingCharInsertion,
309             this.checkboxIsNotShowingVulnReport,
310             this.checkboxIsParsingForm,
311             this.checkboxIsCheckingAllURLParam,
312             this.checkboxIsCheckingAllRequestParam,
313             this.checkboxIsCheckingAllHeaderParam,
314             this.checkboxIsCheckingAllJSONParam,
315             this.checkboxIsCheckingAllBase64Param,
316             this.checkboxIsCheckingAllCookieParam,
317             this.checkboxIsCheckingAllSOAPParam,
318             this.checkboxIsPerfIndexDisabled,
319             this.radioIsZipStrategy,
320             this.radioIsDiosStrategy,
321             this.radioIsDefaultStrategy,
322             this.checkboxIsUrlEncodingDisabled,
323             this.checkboxIsUrlRandomSuffixDisabled,
324             this.checkboxIsLimitingNormalIndex,
325             this.checkboxIsLimitingSleepTimeStrategy
326         )
327         .forEach(button -> button.addActionListener(panelPreferences.getActionListenerSave()));
328         
329         Stream.of(
330             labelIsParsingForm,
331             labelIsNotInjectingMetadata,
332             labelIsNotSearchingCharInsertion,
333             labelIsNotShowingVulnReport,
334             labelIsCheckingAllParam,
335             labelIsCheckingAllURLParam,
336             labelIsCheckingAllRequestParam,
337             labelIsCheckingAllHeaderParam,
338             labelIsCheckingAllJSONParam,
339             labelIsCheckingAllBase64Param,
340             labelIsCheckingAllCookieParam,
341             labelIsCheckingAllSOAPParam,
342             labelIsPerfIndexDisabled,
343             labelIsZipStrategy,
344             labelIsDiosStrategy,
345             labelIsDefaultStrategy,
346             labelIsUrlEncodingDisabled,
347             labelIsUrlRandomSuffixDisabled,
348             labelIsLimitingNormalIndex,
349             labelIsLimitingSleepTimeStrategy
350         )
351         .forEach(label -> {
352             
353             label.setHorizontalAlignment(SwingConstants.LEFT);
354             label.setBorderPainted(false);
355             label.setContentAreaFilled(false);
356         });
357         
358         labelIsNotInjectingMetadata.setName("labelIsNotInjectingMetadata");
359         labelIsParsingForm.setName("labelIsParsingForm");
360         labelIsCheckingAllURLParam.setName("labelIsCheckingAllURLParam");
361         labelIsCheckingAllRequestParam.setName("labelIsCheckingAllRequestParam");
362         labelIsCheckingAllHeaderParam.setName("labelIsCheckingAllHeaderParam");
363         labelIsCheckingAllJSONParam.setName("labelIsCheckingAllJSONParam");
364         labelIsCheckingAllBase64Param.setName("labelIsCheckingAllBase64Param");
365         labelIsCheckingAllCookieParam.setName("labelIsCheckingAllCookieParam");
366         labelIsCheckingAllSOAPParam.setName("labelIsCheckingAllSOAPParam");
367         labelIsPerfIndexDisabled.setName("labelIsPerfIndexDisabled");
368         labelIsZipStrategy.setName("labelIsZipStrategy");
369         labelIsDefaultStrategy.setName("labelIsDefaultStrategy");
370         labelIsDiosStrategy.setName("labelIsDiosStrategy");
371         labelIsUrlEncodingDisabled.setName("labelIsUrlEncodingDisabled");
372         labelIsUrlRandomSuffixDisabled.setName("labelIsUrlRandomSuffixDisabled");
373         labelIsLimitingNormalIndex.setName("labelIsLimitingNormalIndex");
374         labelIsLimitingSleepTimeStrategy.setName("labelIsLimitingSleepTimeStrategy");
375         
376         var groupSpaceToComment = new ButtonGroup();
377         groupSpaceToComment.add(this.radioIsZipStrategy);
378         groupSpaceToComment.add(this.radioIsDiosStrategy);
379         groupSpaceToComment.add(this.radioIsDefaultStrategy);
380         
381         var groupLayout = new GroupLayout(this);
382         this.setLayout(groupLayout);
383 
384         groupLayout
385         .setHorizontalGroup(
386             groupLayout
387             .createSequentialGroup()
388             .addGroup(
389                 groupLayout
390                 .createParallelGroup(GroupLayout.Alignment.TRAILING, false)
391                 .addComponent(emptyLabelGeneralInjection)
392                 .addComponent(this.checkboxIsParsingForm)
393                 .addComponent(this.checkboxIsNotInjectingMetadata)
394                 .addComponent(this.checkboxIsNotSearchingCharInsertion)
395                 .addComponent(this.checkboxIsNotShowingVulnReport)
396                 .addComponent(this.checkboxIsLimitingNormalIndex)
397                 .addComponent(this.checkboxIsLimitingSleepTimeStrategy)
398                 
399                 .addComponent(emptyLabelParamsInjection)
400                 .addComponent(this.checkboxIsCheckingAllParam)
401                 .addComponent(this.checkboxIsCheckingAllURLParam)
402                 .addComponent(this.checkboxIsCheckingAllRequestParam)
403                 .addComponent(this.checkboxIsCheckingAllHeaderParam)
404                 
405                 .addComponent(emptyLabelSpecial)
406 //                .addComponent(this.checkboxIsCheckingAllBase64Param)
407                 .addComponent(this.checkboxIsCheckingAllJSONParam)
408                 .addComponent(this.checkboxIsCheckingAllSOAPParam)
409                 .addComponent(this.checkboxIsCheckingAllCookieParam)
410                 
411                 .addComponent(emptyLabelQuerySize)
412                 .addComponent(this.radioIsDefaultStrategy)
413                 .addComponent(this.radioIsDiosStrategy)
414                 .addComponent(this.radioIsZipStrategy)
415                 .addComponent(this.checkboxIsPerfIndexDisabled)
416                 .addComponent(this.checkboxIsUrlEncodingDisabled)
417                 .addComponent(this.checkboxIsUrlRandomSuffixDisabled)
418             )
419             .addGroup(
420                 groupLayout
421                 .createParallelGroup()
422                 .addComponent(labelGeneralInjection)
423                 .addComponent(labelIsParsingForm)
424                 .addComponent(labelIsNotInjectingMetadata)
425                 .addComponent(labelIsNotSearchingCharInsertion)
426                 .addComponent(labelIsNotShowingVulnReport)
427                 .addComponent(panelIsLimitingNormalIndex)
428                 .addComponent(panelSleepTimeStrategy)
429                 
430                 .addComponent(labelParamsInjection)
431                 .addComponent(labelIsCheckingAllParam)
432                 .addComponent(labelIsCheckingAllURLParam)
433                 .addComponent(labelIsCheckingAllRequestParam)
434                 .addComponent(labelIsCheckingAllHeaderParam)
435                 
436                 .addComponent(labelSpecial)
437 //                .addComponent(labelIsCheckingAllBase64Param)
438                 .addComponent(labelIsCheckingAllJSONParam)
439                 .addComponent(labelIsCheckingAllSOAPParam)
440                 .addComponent(labelIsCheckingAllCookieParam)
441 
442                 .addComponent(labelQuerySize)
443                 .addComponent(labelIsDefaultStrategy)
444                 .addComponent(labelIsDiosStrategy)
445                 .addComponent(labelIsZipStrategy)
446                 .addComponent(labelIsPerfIndexDisabled)
447                 .addComponent(labelIsUrlEncodingDisabled)
448                 .addComponent(labelIsUrlRandomSuffixDisabled)
449             )
450         );
451         
452         groupLayout
453         .setVerticalGroup(
454             groupLayout
455             .createSequentialGroup()
456             .addGroup(
457                 groupLayout
458                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
459                 .addComponent(emptyLabelGeneralInjection)
460                 .addComponent(labelGeneralInjection)
461             )
462             .addGroup(
463                 groupLayout
464                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
465                 .addComponent(this.checkboxIsParsingForm)
466                 .addComponent(labelIsParsingForm)
467             )
468             .addGroup(
469                 groupLayout
470                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
471                 .addComponent(this.checkboxIsNotInjectingMetadata)
472                 .addComponent(labelIsNotInjectingMetadata)
473             )
474             .addGroup(
475                 groupLayout
476                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
477                 .addComponent(this.checkboxIsNotSearchingCharInsertion)
478                 .addComponent(labelIsNotSearchingCharInsertion)
479             )
480             .addGroup(
481                 groupLayout
482                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
483                 .addComponent(this.checkboxIsNotShowingVulnReport)
484                 .addComponent(labelIsNotShowingVulnReport)
485             )
486             .addGroup(
487                 groupLayout
488                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
489                 .addComponent(this.checkboxIsLimitingNormalIndex)
490                 .addComponent(panelIsLimitingNormalIndex)
491             )
492             .addGroup(
493                 groupLayout
494                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
495                 .addComponent(this.checkboxIsLimitingSleepTimeStrategy)
496                 .addComponent(panelSleepTimeStrategy)
497             )
498             
499             .addGroup(
500                 groupLayout
501                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
502                 .addComponent(emptyLabelParamsInjection)
503                 .addComponent(labelParamsInjection)
504             )
505             .addGroup(
506                 groupLayout
507                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
508                 .addComponent(this.checkboxIsCheckingAllParam)
509                 .addComponent(labelIsCheckingAllParam)
510             )
511             .addGroup(
512                 groupLayout
513                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
514                 .addComponent(this.checkboxIsCheckingAllURLParam)
515                 .addComponent(labelIsCheckingAllURLParam)
516             )
517             .addGroup(
518                 groupLayout
519                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
520                 .addComponent(this.checkboxIsCheckingAllRequestParam)
521                 .addComponent(labelIsCheckingAllRequestParam)
522             )
523             .addGroup(
524                 groupLayout
525                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
526                 .addComponent(this.checkboxIsCheckingAllHeaderParam)
527                 .addComponent(labelIsCheckingAllHeaderParam)
528             )
529             
530             .addGroup(
531                 groupLayout
532                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
533                 .addComponent(emptyLabelSpecial)
534                 .addComponent(labelSpecial)
535             )
536 //            .addGroup(
537 //                groupLayout
538 //                .createParallelGroup(GroupLayout.Alignment.BASELINE)
539 //                .addComponent(this.checkboxIsCheckingAllBase64Param)
540 //                .addComponent(labelIsCheckingAllBase64Param)
541 //            )
542             .addGroup(
543                 groupLayout
544                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
545                 .addComponent(this.checkboxIsCheckingAllJSONParam)
546                 .addComponent(labelIsCheckingAllJSONParam)
547             )
548             .addGroup(
549                 groupLayout
550                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
551                 .addComponent(this.checkboxIsCheckingAllSOAPParam)
552                 .addComponent(labelIsCheckingAllSOAPParam)
553             )
554             .addGroup(
555                 groupLayout
556                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
557                 .addComponent(this.checkboxIsCheckingAllCookieParam)
558                 .addComponent(labelIsCheckingAllCookieParam)
559             )
560             
561             .addGroup(
562                 groupLayout
563                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
564                 .addComponent(emptyLabelQuerySize)
565                 .addComponent(labelQuerySize)
566             )
567             .addGroup(
568                 groupLayout
569                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
570                 .addComponent(this.radioIsDefaultStrategy)
571                 .addComponent(labelIsDefaultStrategy)
572             )
573             .addGroup(
574                 groupLayout
575                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
576                 .addComponent(this.radioIsDiosStrategy)
577                 .addComponent(labelIsDiosStrategy)
578             )
579             .addGroup(
580                 groupLayout
581                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
582                 .addComponent(this.radioIsZipStrategy)
583                 .addComponent(labelIsZipStrategy)
584             )
585             .addGroup(
586                 groupLayout
587                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
588                 .addComponent(this.checkboxIsPerfIndexDisabled)
589                 .addComponent(labelIsPerfIndexDisabled)
590             )
591             .addGroup(
592                 groupLayout
593                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
594                 .addComponent(this.checkboxIsUrlEncodingDisabled)
595                 .addComponent(labelIsUrlEncodingDisabled)
596             )
597             .addGroup(
598                 groupLayout
599                 .createParallelGroup(GroupLayout.Alignment.BASELINE)
600                 .addComponent(this.checkboxIsUrlRandomSuffixDisabled)
601                 .addComponent(labelIsUrlRandomSuffixDisabled)
602             )
603         );
604     }
605 
606     
607     // Getter and setter
608     
609     public JCheckBox getCheckboxIsNotInjectingMetadata() {
610         return this.checkboxIsNotInjectingMetadata;
611     }
612     
613     public JCheckBox getCheckboxIsNotSearchingCharInsertion() {
614         return this.checkboxIsNotSearchingCharInsertion;
615     }
616 
617     public JCheckBox getCheckboxIsNotShowingVulnReport() {
618         return this.checkboxIsNotShowingVulnReport;
619     }
620 
621     public JCheckBox getCheckboxIsCheckingAllParam() {
622         return this.checkboxIsCheckingAllParam;
623     }
624     
625     public JCheckBox getCheckboxIsCheckingAllURLParam() {
626         return this.checkboxIsCheckingAllURLParam;
627     }
628     
629     public JCheckBox getCheckboxIsCheckingAllRequestParam() {
630         return this.checkboxIsCheckingAllRequestParam;
631     }
632     
633     public JCheckBox getCheckboxIsCheckingAllHeaderParam() {
634         return this.checkboxIsCheckingAllHeaderParam;
635     }
636     
637     public JCheckBox getCheckboxIsCheckingAllBase64Param() {
638         return this.checkboxIsCheckingAllBase64Param;
639     }
640     
641     public JCheckBox getCheckboxIsCheckingAllJsonParam() {
642         return this.checkboxIsCheckingAllJSONParam;
643     }
644     
645     public JCheckBox getCheckboxIsCheckingAllCookieParam() {
646         return this.checkboxIsCheckingAllCookieParam;
647     }
648     
649     public JCheckBox getCheckboxIsCheckingAllSoapParam() {
650         return this.checkboxIsCheckingAllSOAPParam;
651     }
652     
653     public JCheckBox getCheckboxIsParsingForm() {
654         return this.checkboxIsParsingForm;
655     }
656 
657     public JCheckBox getCheckboxIsPerfIndexDisabled() {
658         return this.checkboxIsPerfIndexDisabled;
659     }
660 
661     public JRadioButton getRadioIsZipStrategy() {
662         return this.radioIsZipStrategy;
663     }
664     
665     public JRadioButton getRadioIsDiosStrategy() {
666         return this.radioIsDiosStrategy;
667     }
668     
669     public JRadioButton getRadioIsDefaultStrategy() {
670         return this.radioIsDefaultStrategy;
671     }
672     
673     public JCheckBox getCheckboxIsUrlEncodingDisabled() {
674         return this.checkboxIsUrlEncodingDisabled;
675     }
676     
677     public JCheckBox getCheckboxIsUrlRandomSuffixDisabled() {
678         return this.checkboxIsUrlRandomSuffixDisabled;
679     }
680 
681     public JCheckBox getCheckboxIsLimitingNormalIndex() {
682         return this.checkboxIsLimitingNormalIndex;
683     }
684     
685     public JSpinner getSpinnerNormalIndexCount() {
686         return this.spinnerNormalIndexCount;
687     }
688     
689     public JCheckBox getCheckboxIsLimitingSleepTimeStrategy() {
690         return this.checkboxIsLimitingSleepTimeStrategy;
691     }
692     
693     public JSpinner getSpinnerSleepTimeStrategy() {
694         return this.spinnerSleepTimeStrategyCount;
695     }
696 }