From 7cc2e221f3154ec20d0a82ea7635a0a661007bcf Mon Sep 17 00:00:00 2001 From: Oliver Spohngellert Date: Tue, 29 Mar 2016 11:45:31 -0400 Subject: [PATCH] Made signatures show in ui. --- .../AddFileTypeSignatureDialog.java | 7 +++ .../autopsy/modules/filetypeid/FileType.java | 9 ++- .../FileTypeIdGlobalSettingsPanel.form | 7 ++- .../FileTypeIdGlobalSettingsPanel.java | 49 ++++++++-------- .../UserDefinedFileTypesManager.java | 57 ++++++++++++++----- 5 files changed, 84 insertions(+), 45 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeSignatureDialog.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeSignatureDialog.java index 130791b642..75a162c4da 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeSignatureDialog.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/AddFileTypeSignatureDialog.java @@ -53,6 +53,13 @@ final class AddFileTypeSignatureDialog extends JDialog { private Signature signature; private BUTTON_PRESSED result; + /** + * @return the signature + */ + public Signature getSignature() { + return signature; + } + enum BUTTON_PRESSED { ADD, CANCEL; diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileType.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileType.java index 6afba5cab1..4e6707e1ef 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileType.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileType.java @@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.modules.filetypeid; import java.io.Serializable; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -55,7 +56,7 @@ class FileType implements Serializable { */ FileType(String mimeType, List signatures, String filesSetName, boolean alert) { this.mimeType = mimeType; - this.signatures = signatures; + this.signatures = new ArrayList<>(signatures); this.interestingFilesSetName = filesSetName; this.alert = alert; } @@ -75,7 +76,11 @@ class FileType implements Serializable { * @return The signatures. */ List getSignatures() { - return Collections.unmodifiableList(this.signatures); + return this.signatures; + } + + void addSignature(Signature sig) { + this.signatures.add(sig); } /** diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.form index b30ead2299..e74b45d13f 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.form @@ -324,12 +324,15 @@ - + - + + + + diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java index 1b551412fc..7b67b55755 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdGlobalSettingsPanel.java @@ -22,11 +22,12 @@ import java.awt.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.UnsupportedEncodingException; -import java.nio.charset.Charset; import java.util.Collections; +import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JOptionPane; +import javax.swing.ListModel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.ListSelectionEvent; @@ -61,6 +62,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane private DefaultListModel typesListModel; private java.util.List fileTypes; private AddFileTypeSignatureDialog addSigDialog; + private DefaultListModel signaturesListModel; /** * This panel implements a property change listener that listens to ingest @@ -90,6 +92,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane private void customizeComponents() { setName(Bundle.FileTypeIdGlobalSettingsPanel_Title()); setFileTypesListModel(); + setSignaturesListModel(); setSignatureTypeComboBoxModel(); setOffsetRealtiveToComboBoxModel(); clearTypeDetailsComponents(); @@ -104,6 +107,11 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane typesListModel = new DefaultListModel<>(); typesList.setModel(typesListModel); } + + private void setSignaturesListModel() { + this.signaturesListModel = new DefaultListModel<>(); + signatureList.setModel(signaturesListModel); + } /** * Sets the model for the signature type combo box. @@ -259,21 +267,10 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane if (null != fileType) { mimeTypeTextField.setText(fileType.getMimeType()); mimeTypeTextField.setEditable(false); - Signature signature = fileType.getSignature(); - FileType.Signature.Type sigType = signature.getType(); - String signatureBytes; - if (Signature.Type.RAW == signature.getType()) { - signatureBytes = DatatypeConverter.printHexBinary(signature.getSignatureBytes()); - } else { - try { - signatureBytes = new String(signature.getSignatureBytes(), "UTF-8"); - } catch (UnsupportedEncodingException ex) { - JOptionPane.showMessageDialog(null, - ex.getLocalizedMessage(), - NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.JOptionPane.storeFailed.title"), - JOptionPane.ERROR_MESSAGE); - signatureBytes = ""; - } + List signatures = fileType.getSignatures(); + this.signaturesListModel.clear(); + for(Signature sig: signatures) { + signaturesListModel.addElement(sig); } postHitCheckBox.setSelected(fileType.alertOnMatch()); filesSetNameTextField.setEnabled(postHitCheckBox.isSelected()); @@ -353,7 +350,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); - jList1 = new javax.swing.JList(); + signatureList = new javax.swing.JList(); addSigButton = new javax.swing.JButton(); editSigButton = new javax.swing.JButton(); deleteSigButton = new javax.swing.JButton(); @@ -422,12 +419,12 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane jLabel3.setFont(jLabel3.getFont().deriveFont(jLabel3.getFont().getStyle() & ~java.awt.Font.BOLD, 11)); org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.jLabel3.text")); // NOI18N - jList1.setModel(new javax.swing.AbstractListModel() { - String[] strings = {}; - public int getSize() { return strings.length; } - public Object getElementAt(int i) { return strings[i]; } + signatureList.setModel(new javax.swing.AbstractListModel() { + Signature[] signatures = {}; + public int getSize() { return signatures.length; } + public Signature getElementAt(int i) { return signatures[i]; } }); - jScrollPane1.setViewportView(jList1); + jScrollPane1.setViewportView(signatureList); org.openide.awt.Mnemonics.setLocalizedText(addSigButton, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.addSigButton.text")); // NOI18N addSigButton.addMouseListener(new java.awt.event.MouseAdapter() { @@ -561,14 +558,14 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane }//GEN-LAST:event_postHitCheckBoxActionPerformed private void addSigButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addSigButtonActionPerformed - + }//GEN-LAST:event_addSigButtonActionPerformed private void addButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_addButtonMousePressed if (evt.getSource().equals(this.addSigButton)) { this.addSigDialog = new AddFileTypeSignatureDialog(); - if(addSigDialog.getResult() == BUTTON_PRESSED.ADD) { - System.out.println("Gottem"); + if (addSigDialog.getResult() == BUTTON_PRESSED.ADD) { + signaturesListModel.addElement(this.addSigDialog.getSignature()); } } }//GEN-LAST:event_addButtonMousePressed @@ -583,7 +580,6 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane private javax.swing.JLabel ingestRunningWarningLabel; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; - private javax.swing.JList jList1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel mimeTypeLabel; private javax.swing.JTextField mimeTypeTextField; @@ -591,6 +587,7 @@ final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPane private javax.swing.JCheckBox postHitCheckBox; private javax.swing.JButton saveTypeButton; private javax.swing.JSeparator separator; + private javax.swing.JList signatureList; private javax.swing.JList typesList; private javax.swing.JScrollPane typesScrollPane; // End of variables declaration//GEN-END:variables diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java index 125293e2f9..de6959ef26 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/UserDefinedFileTypesManager.java @@ -27,6 +27,7 @@ import java.io.UnsupportedEncodingException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.logging.Level; import javax.persistence.PersistenceException; @@ -188,55 +189,79 @@ final class UserDefinedFileTypesManager { FileType fileType; try { - // Add rule for xml - fileType = new FileType("text/xml", new Signature(" signatureList; + signatureList = new ArrayList<>(); + signatureList.add(new Signature("(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for gzip - byteArray = DatatypeConverter.parseHexBinary("1F8B"); //NON-NLS - fileType = new FileType("application/x-gzip", new Signature(byteArray, 0L), "", false); //NON-NLS + byteArray = DatatypeConverter.parseHexBinary("1F8B"); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 0L)); + fileType = new FileType("application/x-gzip", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .wk1 byteArray = DatatypeConverter.parseHexBinary("0000020006040600080000000000"); //NON-NLS - fileType = new FileType("application/x-123", new Signature(byteArray, 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 0L)); + fileType = new FileType("application/x-123", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for Radiance image byteArray = DatatypeConverter.parseHexBinary("233F52414449414E43450A");//NON-NLS - fileType = new FileType("image/vnd.radiance", new Signature(byteArray, 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 0L)); + fileType = new FileType("image/vnd.radiance", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .dcx image byteArray = DatatypeConverter.parseHexBinary("B168DE3A"); //NON-NLS - fileType = new FileType("image/x-dcx", new Signature(byteArray, 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 0L)); + fileType = new FileType("image/x-dcx", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .ics image - fileType = new FileType("image/x-icns", new Signature("icns", 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature("icns", 0L)); + fileType = new FileType("image/x-icns", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .pict image byteArray = DatatypeConverter.parseHexBinary("001102FF"); //NON-NLS - fileType = new FileType("image/x-pict", new Signature(byteArray, 522L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 522L)); + fileType = new FileType("image/x-pict", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); byteArray = DatatypeConverter.parseHexBinary("1100"); //NON-NLS - fileType = new FileType("image/x-pict", new Signature(byteArray, 522L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 522L)); + fileType = new FileType("image/x-pict", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .pam - fileType = new FileType("image/x-portable-arbitrarymap", new Signature("P7", 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature("P7", 0L)); + fileType = new FileType("image/x-portable-arbitrarymap", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .pfm - fileType = new FileType("image/x-portable-floatmap", new Signature("PF", 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature("PF", 0L)); + fileType = new FileType("image/x-portable-floatmap", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); - fileType = new FileType("image/x-portable-floatmap", new Signature("Pf", 0L), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature("Pf", 0L)); + fileType = new FileType("image/x-portable-floatmap", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); // Add rule for .tga byteArray = DatatypeConverter.parseHexBinary("54525545564953494F4E2D5846494C452E00"); //NON-NLS - fileType = new FileType("image/x-tga", new Signature(byteArray, 17, false), "", false); //NON-NLS + signatureList = new ArrayList<>(); + signatureList.add(new Signature(byteArray, 17, false)); + fileType = new FileType("image/x-tga", new ArrayList<>(signatureList), "", false); //NON-NLS fileTypes.add(fileType); } // parseHexBinary() throws this if the argument passed in is not Hex catch (IllegalArgumentException e) { @@ -409,7 +434,9 @@ final class UserDefinedFileTypesManager { Signature signature = XMLDefinitionsReader.parseSignature(fileTypeElem); String filesSetName = XMLDefinitionsReader.parseInterestingFilesSet(fileTypeElem); boolean alert = XMLDefinitionsReader.parseAlert(fileTypeElem); - return new FileType(mimeType, signature, filesSetName, alert); + List sigList = new ArrayList<>(); + sigList.add(signature); + return new FileType(mimeType, sigList, filesSetName, alert); } /**