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:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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() {
 String[] strings = {};
 public int getSize() { return strings.length; }
 public Object getElementAt(int i) { return strings[i]; }
}" type="code"/>
|
||||
<Connection code="new javax.swing.AbstractListModel<Signature>() {
 Signature[] signatures = {};
 public int getSize() { return signatures.length; }
 public Signature getElementAt(int i) { return signatures[i]; }
}" type="code"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<Signature>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user