1:/*
   2: * jnemesis.java
   3: *
   4: * Created on April 11, 2004, 12:23 AM
   5: *
   6: * A graphical frontend to the nemesis packet injection utility
   7: * This is the source of the beta build on Thu Aug  5 20:30:41 CDT 2004.
   8: * ICMP and the queue do not function, no properties file support.
   9: *
  10: * Build system information follows:
  11: *
  12: * CPU: AMD Athlon(TM) XP 2800+ (2071.203Mhz)
  13: * Memory: 1024M (est.)
  14: * JRE: build 1.4.2_04-b05
  15: * System ID: Linux home.fragtheweak.net 2.6.6-1.435.2.3
  16: */
  17:/*
  18: *
  19: *!!! This applications released under the GPL !!!
  20: *
  21: */
  22:
  23:import java.io.*;
  24:import java.util.*;
  25:import javax.swing.*;
  26:
  27:/**
  28: * @author  Florian Hines <pandemic@syn-recon.net||fhines@blackopscode.com>
  29: */
  30:public class jnemesis extends javax.swing.JFrame {
  31:   
  32:    /** Creates new form jnemesis */
  33:    public jnemesis() {
  34:        loadConfig();
  35:        initComponents();
  36:        try{
  37:            tcpHelp.setPage("file://" + installDir + "/help/nemesis-tcp.html");
  38:        }
  39:        catch (IOException e)
  40:        {
  41:           tcpHelp.setText("Help unavailable - error \n" + e);
  42:        }
  43:        try{
  44:            udpHelp.setPage("file://" + installDir + "/help/nemesis-udp.html");
  45:        }
  46:        catch (IOException e)
  47:        {
  48:           udpHelp.setText("Help unavailable - error \n" + e);
  49:        }
  50:        try{
  51:            icmpHelp.setPage("file://" + installDir + "/help/nemesis-icmp.html"); 
  52:        }
  53:        catch (IOException e)
  54:        {
  55:           icmpHelp.setText("Help unavailable - error \n" + e);
  56:        }
  57:    }
  58:    
  59:    /** This method is called from within the constructor to
  60:     * initialize the form.
  61:     * WARNING: Do NOT modify this code. The content of this method is
  62:     * always regenerated by the Form Editor.
  63:     */
  64:    private void initComponents() {//GEN-BEGIN:initComponents
  65:        jPopupMenu1 = new javax.swing.JPopupMenu();
  66:        masterPanel = new javax.swing.JPanel();
  67:        jtabbedPane1 = new javax.swing.JTabbedPane();
  68:        tcpPanel = new javax.swing.JPanel();
  69:        jPanel1 = new javax.swing.JPanel();
  70:        srcPrtFlag1 = new javax.swing.JRadioButton();
  71:        srcPrtField1 = new javax.swing.JTextField();
  72:        dstPrtFlag1 = new javax.swing.JRadioButton();
  73:        dstPrtField1 = new javax.swing.JTextField();
  74:        tcpFlag1 = new javax.swing.JRadioButton();
  75:        tcpFlagsCBox1 = new javax.swing.JComboBox();
  76:        windowFlag1 = new javax.swing.JRadioButton();
  77:        winSizeField1 = new javax.swing.JTextField();
  78:        seqFlag1 = new javax.swing.JRadioButton();
  79:        seqField1 = new javax.swing.JTextField();
  80:        ackNumFlag1 = new javax.swing.JRadioButton();
  81:        ackNumField1 = new javax.swing.JTextField();
  82:        urgOffFlag1 = new javax.swing.JRadioButton();
  83:        urgOffField1 = new javax.swing.JTextField();
  84:        tcpOptBox1 = new javax.swing.JCheckBox();
  85:        tcpOptField1 = new javax.swing.JTextField();
  86:        tcpOpFileChooser1 = new javax.swing.JButton();
  87:        payloadBox1 = new javax.swing.JCheckBox();
  88:        payloadField1 = new javax.swing.JTextField();
  89:        payloadFileChooser = new javax.swing.JButton();
  90:        jPanel2 = new javax.swing.JPanel();
  91:        srcIpFlag = new javax.swing.JRadioButton();
  92:        srcIpField = new javax.swing.JTextField();
  93:        dstIpFlag = new javax.swing.JRadioButton();
  94:        dstIpField = new javax.swing.JTextField();
  95:        ipIdFlag = new javax.swing.JRadioButton();
  96:        ipIdField = new javax.swing.JTextField();
  97:        ttlFlag = new javax.swing.JRadioButton();
  98:        ttlField = new javax.swing.JTextField();
  99:        tosFlag = new javax.swing.JRadioButton();
 100:        tosField = new javax.swing.JTextField();
 101:        fragOffSetFlag = new javax.swing.JRadioButton();
 102:        fragOffSetField = new javax.swing.JTextField();
 103:        ipOptFileBox = new javax.swing.JCheckBox();
 104:        ipOptFileField = new javax.swing.JTextField();
 105:        ipOptionsFileChooser = new javax.swing.JButton();
 106:        jPanel3 = new javax.swing.JPanel();
 107:        ethDevFlag = new javax.swing.JRadioButton();
 108:        ethDevField = new javax.swing.JTextField();
 109:        srcMacFlag = new javax.swing.JRadioButton();
 110:        srcMacField = new javax.swing.JTextField();
 111:        dstMacFlag = new javax.swing.JRadioButton();
 112:        dstMacField = new javax.swing.JTextField();
 113:        udpPanel = new javax.swing.JPanel();
 114:        jPanel4 = new javax.swing.JPanel();
 115:        jPanel7 = new javax.swing.JPanel();
 116:        srcPrtFlag2 = new javax.swing.JRadioButton();
 117:        srcPrtField2 = new javax.swing.JTextField();
 118:        dstPrtFlag2 = new javax.swing.JRadioButton();
 119:        dstPrtField2 = new javax.swing.JTextField();
 120:        jPanel12 = new javax.swing.JPanel();
 121:        payloadBox2 = new javax.swing.JCheckBox();
 122:        payloadField2 = new javax.swing.JTextField();
 123:        payloadFileChooser1 = new javax.swing.JButton();
 124:        jPanel5 = new javax.swing.JPanel();
 125:        srcIpFlag1 = new javax.swing.JRadioButton();
 126:        srcIpField1 = new javax.swing.JTextField();
 127:        dstIpFlag1 = new javax.swing.JRadioButton();
 128:        dstIpField1 = new javax.swing.JTextField();
 129:        ipIdFlag1 = new javax.swing.JRadioButton();
 130:        ipIdField1 = new javax.swing.JTextField();
 131:        ttlFlag1 = new javax.swing.JRadioButton();
 132:        ttlField1 = new javax.swing.JTextField();
 133:        tosFlag1 = new javax.swing.JRadioButton();
 134:        tosField1 = new javax.swing.JTextField();
 135:        fragOffSetFlag1 = new javax.swing.JRadioButton();
 136:        fragOffSetField1 = new javax.swing.JTextField();
 137:        ipOptFileBox1 = new javax.swing.JCheckBox();
 138:        ipOptFileField1 = new javax.swing.JTextField();
 139:        ipOptionsFileChooser1 = new javax.swing.JButton();
 140:        jPanel6 = new javax.swing.JPanel();
 141:        ethDevFlag1 = new javax.swing.JRadioButton();
 142:        ethDevField1 = new javax.swing.JTextField();
 143:        srcMacFlag1 = new javax.swing.JRadioButton();
 144:        srcMacField1 = new javax.swing.JTextField();
 145:        dstMacFlag1 = new javax.swing.JRadioButton();
 146:        dstMacField1 = new javax.swing.JTextField();
 147:        icmpPanel = new javax.swing.JPanel();
 148:        jPanel8 = new javax.swing.JPanel();
 149:        jTabbedPane2 = new javax.swing.JTabbedPane();
 150:        jPanel11 = new javax.swing.JPanel();
 151:        icmpCodeFlag1 = new javax.swing.JRadioButton();
 152:        icmpCodeField1 = new javax.swing.JTextField();
 153:        icmpIDFlag1 = new javax.swing.JRadioButton();
 154:        icmpIDField1 = new javax.swing.JTextField();
 155:        icmpTypeFlag1 = new javax.swing.JRadioButton();
 156:        icmpTypeField1 = new javax.swing.JTextField();
 157:        prefGatewayFlag1 = new javax.swing.JRadioButton();
 158:        prefGatewayField1 = new javax.swing.JTextField();
 159:        icmpMaskFlag1 = new javax.swing.JRadioButton();
 160:        icmpMaskField1 = new javax.swing.JTextField();
 161:        icmpModeFlag1 = new javax.swing.JRadioButton();
 162:        icmpModeCBox1 = new javax.swing.JComboBox();
 163:        icmpSeqNumFlag1 = new javax.swing.JRadioButton();
 164:        icmpSeqNumField1 = new javax.swing.JTextField();
 165:        payloadBox3 = new javax.swing.JCheckBox();
 166:        payloadField3 = new javax.swing.JTextField();
 167:        payloadFileChooser2 = new javax.swing.JButton();
 168:        jPanel13 = new javax.swing.JPanel();
 169:        icmpTRRTTFlag1 = new javax.swing.JRadioButton();
 170:        icmpTRRTTField1 = new javax.swing.JTextField();
 171:        icmpTRTTFlag1 = new javax.swing.JRadioButton();
 172:        icmpTRTTField1 = new javax.swing.JTextField();
 173:        icmpTRRRTFlag1 = new javax.swing.JRadioButton();
 174:        icmpTRRRTField1 = new javax.swing.JTextField();
 175:        jPanel14 = new javax.swing.JPanel();
 176:        icmpDstIPFlag1 = new javax.swing.JRadioButton();
 177:        icmpDstIPField1 = new javax.swing.JTextField();
 178:        icmpSrcIPFlag1 = new javax.swing.JRadioButton();
 179:        icmpSrcIPField1 = new javax.swing.JTextField();
 180:        icmpFragOpsFlag1 = new javax.swing.JRadioButton();
 181:        icmpFragOpsField1 = new javax.swing.JTextField();
 182:        icmpIPTosFlag1 = new javax.swing.JRadioButton();
 183:        icmpIPTosField1 = new javax.swing.JTextField();
 184:        icmpIPTtlFlag1 = new javax.swing.JRadioButton();
 185:        icmpIPTtlField1 = new javax.swing.JTextField();
 186:        icmpIPOptsBox = new javax.swing.JCheckBox();
 187:        icmpIPOptsPayloadField = new javax.swing.JTextField();
 188:        payloadFileChooser3 = new javax.swing.JButton();
 189:        jPanel9 = new javax.swing.JPanel();
 190:        srcIpFlag2 = new javax.swing.JRadioButton();
 191:        srcIpField2 = new javax.swing.JTextField();
 192:        dstIpFlag2 = new javax.swing.JRadioButton();
 193:        dstIpField2 = new javax.swing.JTextField();
 194:        ipIdFlag2 = new javax.swing.JRadioButton();
 195:        ipIdField2 = new javax.swing.JTextField();
 196:        ttlFlag2 = new javax.swing.JRadioButton();
 197:        ttlField2 = new javax.swing.JTextField();
 198:        tosFlag2 = new javax.swing.JRadioButton();
 199:        tosField2 = new javax.swing.JTextField();
 200:        fragOffSetFlag2 = new javax.swing.JRadioButton();
 201:        fragOffSetField2 = new javax.swing.JTextField();
 202:        ipOptFileBox2 = new javax.swing.JCheckBox();
 203:        ipOptFileField2 = new javax.swing.JTextField();
 204:        ipOptionsFileChooser2 = new javax.swing.JButton();
 205:        jPanel10 = new javax.swing.JPanel();
 206:        ethDevFlag2 = new javax.swing.JRadioButton();
 207:        ethDevField2 = new javax.swing.JTextField();
 208:        srcMacFlag2 = new javax.swing.JRadioButton();
 209:        srcMacField2 = new javax.swing.JTextField();
 210:        dstMacFlag2 = new javax.swing.JRadioButton();
 211:        dstMacField2 = new javax.swing.JTextField();
 212:        queuePanel = new javax.swing.JPanel();
 213:        jScrollPane1 = new javax.swing.JScrollPane();
 214:        queuedList = new javax.swing.JList(queuedPackets);
 215:        jPanel16 = new javax.swing.JPanel();
 216:        injectNext = new javax.swing.JButton();
 217:        jButton2 = new javax.swing.JButton();
 218:        jButton3 = new javax.swing.JButton();
 219:        jButton4 = new javax.swing.JButton();
 220:        jButton5 = new javax.swing.JButton();
 221:        statusPane = new javax.swing.JScrollPane();
 222:        injectionResult = new javax.swing.JTextArea();
 223:        jPanel15 = new javax.swing.JPanel();
 224:        help = new javax.swing.JTabbedPane();
 225:        jScrollPane2 = new javax.swing.JScrollPane();
 226:        tcpHelp = new javax.swing.JEditorPane();
 227:        jScrollPane3 = new javax.swing.JScrollPane();
 228:        udpHelp = new javax.swing.JEditorPane();
 229:        jScrollPane4 = new javax.swing.JScrollPane();
 230:        icmpHelp = new javax.swing.JEditorPane();
 231:        controlPanel = new javax.swing.JPanel();
 232:        injectButton = new javax.swing.JButton();
 233:        queuePacket = new javax.swing.JButton();
 234:        jLabel1 = new javax.swing.JLabel();
 235:        statusField = new javax.swing.JTextField();
 236:
 237:        setTitle("jNemesis-Beta");
 238:        setResizable(false);
 239:        addWindowListener(new java.awt.event.WindowAdapter() {
 240:            public void windowClosing(java.awt.event.WindowEvent evt) {
 241:                exitForm(evt);
 242:            }
 243:        });
 244:
 245:        masterPanel.setLayout(new java.awt.BorderLayout());
 246:
 247:        masterPanel.setMaximumSize(new java.awt.Dimension(575, 375));
 248:        masterPanel.setMinimumSize(new java.awt.Dimension(575, 375));
 249:        masterPanel.setPreferredSize(new java.awt.Dimension(575, 375));
 250:        jtabbedPane1.setFont(new java.awt.Font("Dialog", 0, 12));
 251:        tcpPanel.setLayout(new java.awt.BorderLayout());
 252:
 253:        jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 3));
 254:
 255:        jPanel1.setBorder(new javax.swing.border.TitledBorder(null, "TCP Options", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Lucida Sans", 0, 11)));
 256:        jPanel1.setMaximumSize(new java.awt.Dimension(32767, 200));
 257:        jPanel1.setMinimumSize(new java.awt.Dimension(10, 150));
 258:        jPanel1.setPreferredSize(new java.awt.Dimension(10, 150));
 259:        srcPrtFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 260:        srcPrtFlag1.setText("-x <src port>");
 261:        srcPrtFlag1.setToolTipText("Source Port Flag");
 262:        srcPrtFlag1.addActionListener(new java.awt.event.ActionListener() {
 263:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 264:                srcPrtFlag1ActionPerformed(evt);
 265:            }
 266:        });
 267:
 268:        jPanel1.add(srcPrtFlag1);
 269:
 270:        srcPrtField1.setEditable(false);
 271:        srcPrtField1.setToolTipText("Enter the source port");
 272:        srcPrtField1.setMinimumSize(new java.awt.Dimension(35, 20));
 273:        srcPrtField1.setPreferredSize(new java.awt.Dimension(48, 20));
 274:        jPanel1.add(srcPrtField1);
 275:
 276:        dstPrtFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 277:        dstPrtFlag1.setText("-y <dst port>");
 278:        dstPrtFlag1.setToolTipText("Destination Port Flag");
 279:        dstPrtFlag1.addActionListener(new java.awt.event.ActionListener() {
 280:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 281:                dstPrtFlag1ActionPerformed(evt);
 282:            }
 283:        });
 284:
 285:        jPanel1.add(dstPrtFlag1);
 286:
 287:        dstPrtField1.setEditable(false);
 288:        dstPrtField1.setToolTipText("Enter Destination Port");
 289:        dstPrtField1.setMinimumSize(new java.awt.Dimension(35, 20));
 290:        dstPrtField1.setPreferredSize(new java.awt.Dimension(48, 20));
 291:        jPanel1.add(dstPrtField1);
 292:
 293:        tcpFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 294:        tcpFlag1.setText("-f <TCP Flags>");
 295:        tcpFlag1.setToolTipText("TCP Flag Options");
 296:        tcpFlag1.addActionListener(new java.awt.event.ActionListener() {
 297:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 298:                tcpFlag1ActionPerformed(evt);
 299:            }
 300:        });
 301:
 302:        jPanel1.add(tcpFlag1);
 303:
 304:        tcpFlagsCBox1.setMaximumRowCount(6);
 305:        tcpFlagsCBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "NONE", "-fS (SYN)", "-fA (ACK)", "-fR (RST)", "-fP (PSH)", "-fF (FIN)", "-fU (URG)" }));
 306:        tcpFlagsCBox1.setToolTipText("Possible TCP Flags");
 307:        tcpFlagsCBox1.setEnabled(false);
 308:        jPanel1.add(tcpFlagsCBox1);
 309:
 310:        windowFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 311:        windowFlag1.setText("-w <window size>");
 312:        windowFlag1.setToolTipText("Window Size");
 313:        windowFlag1.addActionListener(new java.awt.event.ActionListener() {
 314:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 315:                windowFlag1ActionPerformed(evt);
 316:            }
 317:        });
 318:
 319:        jPanel1.add(windowFlag1);
 320:
 321:        winSizeField1.setEditable(false);
 322:        winSizeField1.setToolTipText("Enter the Window Size");
 323:        winSizeField1.setMinimumSize(new java.awt.Dimension(45, 20));
 324:        winSizeField1.setPreferredSize(new java.awt.Dimension(45, 20));
 325:        jPanel1.add(winSizeField1);
 326:
 327:        seqFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 328:        seqFlag1.setText("-s <SEQ Number>");
 329:        seqFlag1.setToolTipText("Seq Number Flag");
 330:        seqFlag1.addActionListener(new java.awt.event.ActionListener() {
 331:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 332:                seqFlag1ActionPerformed(evt);
 333:            }
 334:        });
 335:
 336:        jPanel1.add(seqFlag1);
 337:
 338:        seqField1.setEditable(false);
 339:        seqField1.setToolTipText("Enter The Seq Number");
 340:        seqField1.setMinimumSize(new java.awt.Dimension(35, 20));
 341:        seqField1.setPreferredSize(new java.awt.Dimension(35, 20));
 342:        jPanel1.add(seqField1);
 343:
 344:        ackNumFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 345:        ackNumFlag1.setText("-a");
 346:        ackNumFlag1.setToolTipText("Ack Number Flag");
 347:        ackNumFlag1.addActionListener(new java.awt.event.ActionListener() {
 348:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 349:                ackNumFlag1ActionPerformed(evt);
 350:            }
 351:        });
 352:
 353:        jPanel1.add(ackNumFlag1);
 354:
 355:        ackNumField1.setEditable(false);
 356:        ackNumField1.setToolTipText("Enter Ack Number");
 357:        ackNumField1.setMinimumSize(new java.awt.Dimension(40, 20));
 358:        ackNumField1.setPreferredSize(new java.awt.Dimension(40, 20));
 359:        jPanel1.add(ackNumField1);
 360:
 361:        urgOffFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 362:        urgOffFlag1.setText("-u");
 363:        urgOffFlag1.setToolTipText("UP Offset Flag");
 364:        urgOffFlag1.addActionListener(new java.awt.event.ActionListener() {
 365:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 366:                urgOffFlag1ActionPerformed(evt);
 367:            }
 368:        });
 369:
 370:        jPanel1.add(urgOffFlag1);
 371:
 372:        urgOffField1.setEditable(false);
 373:        urgOffField1.setToolTipText("Urgent Pointer Offset");
 374:        urgOffField1.setMinimumSize(new java.awt.Dimension(40, 20));
 375:        urgOffField1.setPreferredSize(new java.awt.Dimension(40, 20));
 376:        jPanel1.add(urgOffField1);
 377:
 378:        tcpOptBox1.setFont(new java.awt.Font("Dialog", 0, 12));
 379:        tcpOptBox1.setText("-o <TCP Options File>");
 380:        tcpOptBox1.setToolTipText("TCP Options File");
 381:        tcpOptBox1.addActionListener(new java.awt.event.ActionListener() {
 382:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 383:                tcpOptBox1ActionPerformed(evt);
 384:            }
 385:        });
 386:
 387:        jPanel1.add(tcpOptBox1);
 388:
 389:        tcpOptField1.setEditable(false);
 390:        tcpOptField1.setToolTipText("path/to/tcp/options/file");
 391:        tcpOptField1.setMinimumSize(new java.awt.Dimension(100, 20));
 392:        tcpOptField1.setPreferredSize(new java.awt.Dimension(250, 20));
 393:        jPanel1.add(tcpOptField1);
 394:
 395:        tcpOpFileChooser1.setText("../");
 396:        jPanel1.add(tcpOpFileChooser1);
 397:
 398:        payloadBox1.setFont(new java.awt.Font("Dialog", 0, 12));
 399:        payloadBox1.setText("-P <Payload File> ");
 400:        payloadBox1.setToolTipText("Payload File");
 401:        payloadBox1.addActionListener(new java.awt.event.ActionListener() {
 402:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 403:                payloadBox1ActionPerformed(evt);
 404:            }
 405:        });
 406:
 407:        jPanel1.add(payloadBox1);
 408:
 409:        payloadField1.setEditable(false);
 410:        payloadField1.setToolTipText("path/to/payload/file");
 411:        payloadField1.setMinimumSize(new java.awt.Dimension(200, 20));
 412:        payloadField1.setPreferredSize(new java.awt.Dimension(250, 20));
 413:        jPanel1.add(payloadField1);
 414:
 415:        payloadFileChooser.setText("../");
 416:        jPanel1.add(payloadFileChooser);
 417:
 418:        tcpPanel.add(jPanel1, java.awt.BorderLayout.NORTH);
 419:
 420:        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 3));
 421:
 422:        jPanel2.setBorder(new javax.swing.border.TitledBorder(null, "IP Options", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Lucida Sans", 0, 11)));
 423:        jPanel2.setMaximumSize(new java.awt.Dimension(32767, 86));
 424:        jPanel2.setMinimumSize(new java.awt.Dimension(10, 86));
 425:        jPanel2.setPreferredSize(new java.awt.Dimension(10, 86));
 426:        srcIpFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 427:        srcIpFlag.setText("-S <src ip>");
 428:        srcIpFlag.addActionListener(new java.awt.event.ActionListener() {
 429:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 430:                srcIpFlagActionPerformed(evt);
 431:            }
 432:        });
 433:
 434:        jPanel2.add(srcIpFlag);
 435:
 436:        srcIpField.setEditable(false);
 437:        srcIpField.setToolTipText("Enter The Source IP Address");
 438:        srcIpField.setMinimumSize(new java.awt.Dimension(97, 20));
 439:        srcIpField.setPreferredSize(new java.awt.Dimension(100, 20));
 440:        jPanel2.add(srcIpField);
 441:
 442:        dstIpFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 443:        dstIpFlag.setText("-D <dst ip>");
 444:        dstIpFlag.addActionListener(new java.awt.event.ActionListener() {
 445:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 446:                dstIpFlagActionPerformed(evt);
 447:            }
 448:        });
 449:
 450:        jPanel2.add(dstIpFlag);
 451:
 452:        dstIpField.setEditable(false);
 453:        dstIpField.setToolTipText("Enter The Destination IP Address");
 454:        dstIpField.setMinimumSize(new java.awt.Dimension(97, 20));
 455:        dstIpField.setPreferredSize(new java.awt.Dimension(100, 20));
 456:        jPanel2.add(dstIpField);
 457:
 458:        ipIdFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 459:        ipIdFlag.setText("-I <ip id>");
 460:        ipIdFlag.addActionListener(new java.awt.event.ActionListener() {
 461:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 462:                ipIdFlagActionPerformed(evt);
 463:            }
 464:        });
 465:
 466:        jPanel2.add(ipIdFlag);
 467:
 468:        ipIdField.setEditable(false);
 469:        ipIdField.setToolTipText("Enter the IP ID number");
 470:        ipIdField.setMinimumSize(new java.awt.Dimension(32, 20));
 471:        ipIdField.setPreferredSize(new java.awt.Dimension(32, 20));
 472:        jPanel2.add(ipIdField);
 473:
 474:        ttlFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 475:        ttlFlag.setText(" -T <ttl>");
 476:        ttlFlag.addActionListener(new java.awt.event.ActionListener() {
 477:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 478:                ttlFlagActionPerformed(evt);
 479:            }
 480:        });
 481:
 482:        jPanel2.add(ttlFlag);
 483:
 484:        ttlField.setEditable(false);
 485:        ttlField.setMinimumSize(new java.awt.Dimension(60, 20));
 486:        ttlField.setPreferredSize(new java.awt.Dimension(40, 20));
 487:        jPanel2.add(ttlField);
 488:
 489:        tosFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 490:        tosFlag.setText("-t <tos>");
 491:        tosFlag.addActionListener(new java.awt.event.ActionListener() {
 492:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 493:                tosFlagActionPerformed(evt);
 494:            }
 495:        });
 496:
 497:        jPanel2.add(tosFlag);
 498:
 499:        tosField.setEditable(false);
 500:        tosField.setToolTipText("Enter TOS");
 501:        tosField.setMinimumSize(new java.awt.Dimension(50, 20));
 502:        tosField.setPreferredSize(new java.awt.Dimension(50, 20));
 503:        jPanel2.add(tosField);
 504:
 505:        fragOffSetFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 506:        fragOffSetFlag.setText("-F <frag offset>");
 507:        fragOffSetFlag.addActionListener(new java.awt.event.ActionListener() {
 508:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 509:                fragOffSetFlagActionPerformed(evt);
 510:            }
 511:        });
 512:
 513:        jPanel2.add(fragOffSetFlag);
 514:
 515:        fragOffSetField.setEditable(false);
 516:        fragOffSetField.setToolTipText("Enter the fragmentation off set");
 517:        fragOffSetField.setMinimumSize(new java.awt.Dimension(50, 20));
 518:        fragOffSetField.setPreferredSize(new java.awt.Dimension(50, 20));
 519:        jPanel2.add(fragOffSetField);
 520:
 521:        ipOptFileBox.setFont(new java.awt.Font("Dialog", 0, 12));
 522:        ipOptFileBox.setText("-O <IP Options File>");
 523:        ipOptFileBox.addActionListener(new java.awt.event.ActionListener() {
 524:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 525:                ipOptFileBoxActionPerformed(evt);
 526:            }
 527:        });
 528:
 529:        jPanel2.add(ipOptFileBox);
 530:
 531:        ipOptFileField.setEditable(false);
 532:        ipOptFileField.setToolTipText("/path/to/ip/options/file");
 533:        ipOptFileField.setPreferredSize(new java.awt.Dimension(250, 20));
 534:        jPanel2.add(ipOptFileField);
 535:
 536:        ipOptionsFileChooser.setFont(new java.awt.Font("Dialog", 0, 12));
 537:        ipOptionsFileChooser.setText("../");
 538:        jPanel2.add(ipOptionsFileChooser);
 539:
 540:        tcpPanel.add(jPanel2, java.awt.BorderLayout.CENTER);
 541:
 542:        jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 2));
 543:
 544:        jPanel3.setBorder(new javax.swing.border.TitledBorder(null, "Data Link Options", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Lucida Sans", 0, 11)));
 545:        jPanel3.setMaximumSize(new java.awt.Dimension(32767, 52));
 546:        jPanel3.setMinimumSize(new java.awt.Dimension(10, 52));
 547:        jPanel3.setPreferredSize(new java.awt.Dimension(10, 52));
 548:        ethDevFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 549:        ethDevFlag.setText("-d <Ethernet Device>");
 550:        ethDevFlag.addActionListener(new java.awt.event.ActionListener() {
 551:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 552:                ethDevFlagActionPerformed(evt);
 553:            }
 554:        });
 555:
 556:        jPanel3.add(ethDevFlag);
 557:
 558:        ethDevField.setEditable(false);
 559:        ethDevField.setToolTipText("Enter the ethernet device you want to use");
 560:        ethDevField.setMinimumSize(new java.awt.Dimension(63, 20));
 561:        ethDevField.setPreferredSize(new java.awt.Dimension(63, 20));
 562:        jPanel3.add(ethDevField);
 563:
 564:        srcMacFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 565:        srcMacFlag.setText("-H");
 566:        srcMacFlag.setToolTipText("Source Mac Address");
 567:        srcMacFlag.addActionListener(new java.awt.event.ActionListener() {
 568:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 569:                srcMacFlagActionPerformed(evt);
 570:            }
 571:        });
 572:
 573:        jPanel3.add(srcMacFlag);
 574:
 575:        srcMacField.setEditable(false);
 576:        srcMacField.setToolTipText("Source Mac Address");
 577:        srcMacField.setMinimumSize(new java.awt.Dimension(100, 20));
 578:        srcMacField.setPreferredSize(new java.awt.Dimension(100, 20));
 579:        jPanel3.add(srcMacField);
 580:
 581:        dstMacFlag.setFont(new java.awt.Font("Dialog", 0, 12));
 582:        dstMacFlag.setText("-M");
 583:        dstMacFlag.setToolTipText("Destination Mac Address");
 584:        dstMacFlag.addActionListener(new java.awt.event.ActionListener() {
 585:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 586:                dstMacFlagActionPerformed(evt);
 587:            }
 588:        });
 589:
 590:        jPanel3.add(dstMacFlag);
 591:
 592:        dstMacField.setEditable(false);
 593:        dstMacField.setToolTipText("Destination Mac Address");
 594:        dstMacField.setMinimumSize(new java.awt.Dimension(100, 20));
 595:        dstMacField.setPreferredSize(new java.awt.Dimension(100, 20));
 596:        jPanel3.add(dstMacField);
 597:
 598:        tcpPanel.add(jPanel3, java.awt.BorderLayout.SOUTH);
 599:
 600:        jtabbedPane1.addTab("TCP", tcpPanel);
 601:
 602:        udpPanel.setLayout(new java.awt.BorderLayout());
 603:
 604:        jPanel4.setLayout(new java.awt.BorderLayout());
 605:
 606:        jPanel4.setBorder(new javax.swing.border.TitledBorder(null, "UPD Options", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Lucida Sans", 0, 11)));
 607:        jPanel4.setMaximumSize(new java.awt.Dimension(32767, 150));
 608:        jPanel4.setMinimumSize(new java.awt.Dimension(20, 150));
 609:        jPanel4.setPreferredSize(new java.awt.Dimension(20, 150));
 610:        jPanel7.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 2));
 611:
 612:        srcPrtFlag2.setFont(new java.awt.Font("Dialog", 0, 12));
 613:        srcPrtFlag2.setText("-x <src port>");
 614:        srcPrtFlag2.setToolTipText("Source Port Flag");
 615:        srcPrtFlag2.addActionListener(new java.awt.event.ActionListener() {
 616:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 617:                srcPrtFlag2ActionPerformed(evt);
 618:            }
 619:        });
 620:
 621:        jPanel7.add(srcPrtFlag2);
 622:
 623:        srcPrtField2.setEditable(false);
 624:        srcPrtField2.setToolTipText("Enter the source port");
 625:        srcPrtField2.setMinimumSize(new java.awt.Dimension(35, 20));
 626:        srcPrtField2.setPreferredSize(new java.awt.Dimension(48, 20));
 627:        jPanel7.add(srcPrtField2);
 628:
 629:        dstPrtFlag2.setFont(new java.awt.Font("Dialog", 0, 12));
 630:        dstPrtFlag2.setText("-y <dst port>");
 631:        dstPrtFlag2.setToolTipText("Destination Port Flag");
 632:        dstPrtFlag2.addActionListener(new java.awt.event.ActionListener() {
 633:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 634:                dstPrtFlag2ActionPerformed(evt);
 635:            }
 636:        });
 637:
 638:        jPanel7.add(dstPrtFlag2);
 639:
 640:        dstPrtField2.setEditable(false);
 641:        dstPrtField2.setToolTipText("Enter Destination Port");
 642:        dstPrtField2.setMinimumSize(new java.awt.Dimension(35, 20));
 643:        dstPrtField2.setPreferredSize(new java.awt.Dimension(48, 20));
 644:        jPanel7.add(dstPrtField2);
 645:
 646:        jPanel4.add(jPanel7, java.awt.BorderLayout.NORTH);
 647:
 648:        jPanel12.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 2));
 649:
 650:        payloadBox2.setFont(new java.awt.Font("Dialog", 0, 12));
 651:        payloadBox2.setText("-P <Payload File> ");
 652:        payloadBox2.setToolTipText("Payload File");
 653:        payloadBox2.addActionListener(new java.awt.event.ActionListener() {
 654:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 655:                payloadBox2ActionPerformed(evt);
 656:            }
 657:        });
 658:
 659:        jPanel12.add(payloadBox2);
 660:
 661:        payloadField2.setEditable(false);
 662:        payloadField2.setToolTipText("path/to/payload/file");
 663:        payloadField2.setMinimumSize(new java.awt.Dimension(200, 20));
 664:        payloadField2.setPreferredSize(new java.awt.Dimension(250, 20));
 665:        jPanel12.add(payloadField2);
 666:
 667:        payloadFileChooser1.setText("../");
 668:        jPanel12.add(payloadFileChooser1);
 669:
 670:        jPanel4.add(jPanel12, java.awt.BorderLayout.WEST);
 671:
 672:        udpPanel.add(jPanel4, java.awt.BorderLayout.NORTH);
 673:
 674:        jPanel5.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 3));
 675:
 676:        jPanel5.setBorder(new javax.swing.border.TitledBorder(null, "IP Options", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Lucida Sans", 0, 11)));
 677:        jPanel5.setMaximumSize(new java.awt.Dimension(32767, 86));
 678:        jPanel5.setMinimumSize(new java.awt.Dimension(1228, 86));
 679:        jPanel5.setPreferredSize(new java.awt.Dimension(1460, 86));
 680:        srcIpFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 681:        srcIpFlag1.setText("-S <src ip>");
 682:        srcIpFlag1.addActionListener(new java.awt.event.ActionListener() {
 683:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 684:                srcIpFlag1ActionPerformed(evt);
 685:            }
 686:        });
 687:
 688:        jPanel5.add(srcIpFlag1);
 689:
 690:        srcIpField1.setEditable(false);
 691:        srcIpField1.setToolTipText("Enter The Source IP Address");
 692:        srcIpField1.setMinimumSize(new java.awt.Dimension(97, 20));
 693:        srcIpField1.setPreferredSize(new java.awt.Dimension(100, 20));
 694:        jPanel5.add(srcIpField1);
 695:
 696:        dstIpFlag1.setFont(new java.awt.Font("Dialog", 0, 12));
 697:        dstIpFlag1.setText("-D <dst ip>");
 698:        dstIpFlag1.addActionListener(new java.awt.event.ActionListener() {
 699:            public void actionPerformed(java.awt.event.ActionEvent evt) {
 700:                dstIpFlag1ActionPerformed(evt);
 701:            }
 702:        });
 703:
 704:        jPanel5.add(dstIpFlag1);
 705:
 706:        dstIpField1.setEditable(false);
 707:        dstIpField1.setToolTipText("Enter The Destination IP Address");
 708:        dstIpField1.setMinimumSize(new java.awt.Di