1
0
mirror of https://github.com/elisspace/autopsy.git synced 2026-09-05 18:14:30 +00:00

Made signatures show in ui.

This commit is contained in:
Oliver Spohngellert
2016-03-29 11:45:31 -04:00
parent 38479747ae
commit 7cc2e221f3
5 changed files with 84 additions and 45 deletions

View File

@@ -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;

View File

@@ -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<Signature> 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<Signature> getSignatures() {
return Collections.unmodifiableList(this.signatures);
return this.signatures;
}
void addSignature(Signature sig) {
this.signatures.add(sig);
}
/**

View File

@@ -324,12 +324,15 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JList" name="jList1">
<Component class="javax.swing.JList" name="signatureList">
<Properties>
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="new javax.swing.AbstractListModel() {&#xa; String[] strings = {};&#xa; public int getSize() { return strings.length; }&#xa; public Object getElementAt(int i) { return strings[i]; }&#xa;}" type="code"/>
<Connection code="new javax.swing.AbstractListModel&lt;Signature&gt;() {&#xa; Signature[] signatures = {};&#xa; public int getSize() { return signatures.length; }&#xa; public Signature getElementAt(int i) { return signatures[i]; }&#xa;}" type="code"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;Signature&gt;"/>
</AuxValues>
</Component>
</SubComponents>
</Container>

View File

@@ -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<FileType> typesListModel;
private java.util.List<FileType> fileTypes;
private AddFileTypeSignatureDialog addSigDialog;
private DefaultListModel<Signature> 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<Signature> 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<Signature>();
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>() {
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<Signature> signatureList;
private javax.swing.JList<FileType> typesList;
private javax.swing.JScrollPane typesScrollPane;
// End of variables declaration//GEN-END:variables

View File

@@ -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("<?xml", 0L), "", false); //NON-NLS
List<Signature> signatureList;
signatureList = new ArrayList<>();
signatureList.add(new Signature("<?xml", 0L));
fileType = new FileType("text/xml", new ArrayList<>(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<Signature> sigList = new ArrayList<>();
sigList.add(signature);
return new FileType(mimeType, sigList, filesSetName, alert);
}
/**