From b6631a1d12be451ae1876643b69af4c59e0764fb Mon Sep 17 00:00:00 2001 From: Raman Arora Date: Tue, 19 May 2020 14:52:51 -0400 Subject: [PATCH] Interim commit - added data source name, device id, and local account id to display --- .../autopsy/contentviewers/Bundle.properties | 7 + .../contentviewers/CallLogArtifactViewer.form | 155 +++++++++++++++- .../contentviewers/CallLogArtifactViewer.java | 169 +++++++++++++++++- 3 files changed, 321 insertions(+), 10 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties index c712ef5044..3ab7db6086 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties @@ -973,3 +973,10 @@ CallLogArtifactViewer.dateTimeLabel.text=Date/Time..... CallLogArtifactViewer.directionLabel.text=Direction CallLogArtifactViewer.toOrFromNameLabel.text=Name, if available CallLogArtifactViewer.personaButton1.text=Persona +CallLogArtifactViewer.dataSourceNameLabel.text=jLabel2 +CallLogArtifactViewer.jLabel2.text=Device Id +CallLogArtifactViewer.deviceIdLabel.text=jLabel3 +CallLogArtifactViewer.jLabel3.text=jLabel3 +CallLogArtifactViewer.localAccountIdLabel.text=jLabel1 +CallLogArtifactViewer.localAccountLabel.text=Local Account +CallLogArtifactViewer.jLabel4.text=Data Source Name diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.form b/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.form index 0a5c547cbb..2eb5b7f2d9 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.form +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.form @@ -11,7 +11,7 @@ - + @@ -192,7 +192,7 @@ - + @@ -245,5 +245,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.java index d8459fb44d..f0c09db9d2 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/CallLogArtifactViewer.java @@ -29,6 +29,7 @@ import org.sleuthkit.autopsy.datamodel.ContentUtils; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardAttribute; import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.TskCoreException; /** @@ -75,6 +76,17 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac jLabel9 = new javax.swing.JLabel(); jButton3 = new javax.swing.JButton(); otherParticipantsLabel = new javax.swing.JLabel(); + bottomPanel = new javax.swing.JPanel(); + otherAttributesPanel = new javax.swing.JPanel(); + jLabel3 = new javax.swing.JLabel(); + otherAttributesListPanel = new javax.swing.JPanel(); + localAccountInfoPanel = new javax.swing.JPanel(); + jLabel4 = new javax.swing.JLabel(); + dataSourceNameLabel = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + deviceIdLabel = new javax.swing.JLabel(); + localAccountLabel = new javax.swing.JLabel(); + localAccountIdLabel = new javax.swing.JLabel(); setLayout(new java.awt.BorderLayout()); @@ -190,7 +202,7 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac .addGroup(otherParticipantsListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(jButton2)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 46, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 86, Short.MAX_VALUE) .addGroup(otherParticipantsListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(jButton3)) @@ -200,6 +212,80 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac otherParticipantsPanel.add(otherParticipantsListPanel, java.awt.BorderLayout.CENTER); add(otherParticipantsPanel, java.awt.BorderLayout.CENTER); + + bottomPanel.setLayout(new java.awt.BorderLayout()); + + otherAttributesPanel.setLayout(new java.awt.BorderLayout()); + + org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.jLabel3.text")); // NOI18N + otherAttributesPanel.add(jLabel3, java.awt.BorderLayout.CENTER); + + javax.swing.GroupLayout otherAttributesListPanelLayout = new javax.swing.GroupLayout(otherAttributesListPanel); + otherAttributesListPanel.setLayout(otherAttributesListPanelLayout); + otherAttributesListPanelLayout.setHorizontalGroup( + otherAttributesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 413, Short.MAX_VALUE) + ); + otherAttributesListPanelLayout.setVerticalGroup( + otherAttributesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 100, Short.MAX_VALUE) + ); + + otherAttributesPanel.add(otherAttributesListPanel, java.awt.BorderLayout.PAGE_END); + + bottomPanel.add(otherAttributesPanel, java.awt.BorderLayout.PAGE_START); + + org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.jLabel4.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(dataSourceNameLabel, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.dataSourceNameLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.jLabel2.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(deviceIdLabel, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.deviceIdLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(localAccountLabel, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.localAccountLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(localAccountIdLabel, org.openide.util.NbBundle.getMessage(CallLogArtifactViewer.class, "CallLogArtifactViewer.localAccountIdLabel.text")); // NOI18N + + javax.swing.GroupLayout localAccountInfoPanelLayout = new javax.swing.GroupLayout(localAccountInfoPanel); + localAccountInfoPanel.setLayout(localAccountInfoPanelLayout); + localAccountInfoPanelLayout.setHorizontalGroup( + localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(localAccountInfoPanelLayout.createSequentialGroup() + .addGap(19, 19, 19) + .addGroup(localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel4) + .addComponent(jLabel2) + .addComponent(localAccountLabel)) + .addGap(18, 18, 18) + .addGroup(localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(localAccountIdLabel) + .addGroup(localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(dataSourceNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE) + .addComponent(deviceIdLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addContainerGap(140, Short.MAX_VALUE)) + ); + localAccountInfoPanelLayout.setVerticalGroup( + localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(localAccountInfoPanelLayout.createSequentialGroup() + .addGap(18, 18, 18) + .addGroup(localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(localAccountLabel) + .addComponent(localAccountIdLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(dataSourceNameLabel) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(localAccountInfoPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2) + .addComponent(deviceIdLabel)) + .addContainerGap(22, Short.MAX_VALUE)) + ); + + bottomPanel.add(localAccountInfoPanel, java.awt.BorderLayout.PAGE_END); + + add(bottomPanel, java.awt.BorderLayout.PAGE_END); }// //GEN-END:initComponents private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed @@ -216,14 +302,25 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac this.toOrFromNameLabel.setEnabled(false); } // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JPanel bottomPanel; private javax.swing.JPanel callDetailsPanel; + private javax.swing.JLabel dataSourceNameLabel; private javax.swing.JLabel dateTimeLabel; + private javax.swing.JLabel deviceIdLabel; private javax.swing.JLabel directionLabel; private javax.swing.JLabel durationLabel; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; + private javax.swing.JLabel localAccountIdLabel; + private javax.swing.JPanel localAccountInfoPanel; + private javax.swing.JLabel localAccountLabel; + private javax.swing.JPanel otherAttributesListPanel; + private javax.swing.JPanel otherAttributesPanel; private javax.swing.JLabel otherParticipantsLabel; private javax.swing.JPanel otherParticipantsListPanel; private javax.swing.JPanel otherParticipantsPanel; @@ -241,6 +338,14 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac String dateTimeStr = null; String duration = null; Collection otherParticipants = null; + String dataSourceName = null; + String dataSourceDeviceId = null; + String localAccountId = null; + + + + + CallLogViewData(String number) { this(number, null); @@ -274,13 +379,21 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac this.direction = direction; } -// String getMediaType() { -// return mediaType; -// } -// -// void setMediaType(String mediaType) { -// this.mediaType = mediaType; -// } + String getDataSourceName() { + return dataSourceName; + } + + void setDataSourceName(String dataSourceName) { + this.dataSourceName = dataSourceName; + } + + String getDataSourceDeviceId() { + return dataSourceDeviceId; + } + + void setDataSourceDeviceId(String dataSourceDeviceId) { + this.dataSourceDeviceId = dataSourceDeviceId; + } String getDateTimeStr() { return dateTimeStr; @@ -306,6 +419,14 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac otherParticipants = otherParticipants; } + public String getLocalAccountId() { + return localAccountId; + } + + public void setLocalAccountId(String localAccountId) { + this.localAccountId = localAccountId; + } + } @Override @@ -357,6 +478,23 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac } + // TBD: Populate other attributs panel + this.remove(this.otherAttributesPanel); + + // populate local account and data source + if (callLogViewData.getLocalAccountId() != null) { + this.localAccountIdLabel.setText(callLogViewData.getLocalAccountId()); + } else { + this.localAccountLabel.setVisible(false); + this.localAccountIdLabel.setVisible(false); + } + if (callLogViewData.getDataSourceName() != null) { + this.dataSourceNameLabel.setText(callLogViewData.getDataSourceName()); + } + if (callLogViewData.getDataSourceDeviceId() != null) { + this.deviceIdLabel.setText(callLogViewData.getDataSourceDeviceId()); + } + } @@ -378,6 +516,7 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac BlackboardAttribute directionAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DIRECTION)); BlackboardAttribute numberAttr = null; + BlackboardAttribute localAccountAttr = null; CallLogViewData callLogViewData = null; String direction = null; @@ -387,8 +526,10 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac if (direction.equalsIgnoreCase("Incoming")) { numberAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_FROM)); + localAccountAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_TO)); } else if (direction.equalsIgnoreCase("Outgoing")) { numberAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_TO)); + localAccountAttr = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_FROM)); } } @@ -436,6 +577,18 @@ public class CallLogArtifactViewer extends javax.swing.JPanel implements Artifac } } + Content dataSource = artifact.getDataSource(); + + callLogViewData.setDataSourceName(dataSource.getName()); + String deviceId = ((DataSource) dataSource).getDeviceId(); + callLogViewData.setDataSourceDeviceId(deviceId); + + if (localAccountAttr != null) { + String attrValue = localAccountAttr.getValueString(); + if (attrValue.equalsIgnoreCase(deviceId) == false && attrValue.contains(",") == false ) { + callLogViewData.setLocalAccountId(attrValue); + } + } }