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