Merge branch 'develop' of https://github.com/sleuthkit/autopsy into 6095-persona-api
@ -6,8 +6,7 @@
|
||||
|
||||
</configurations>
|
||||
<dependencies >
|
||||
|
||||
<dependency conf="core->default" org="com.github.jgraph" name="jgraphx" rev="v3.8.0"/>
|
||||
<dependency conf="core->default" org="com.github.vlsi.mxgraph" name="jgraphx" rev="4.1.0" />
|
||||
|
||||
<dependency conf="core->default" org="org.apache.activemq" name="activemq-all" rev="5.11.1"/>
|
||||
<dependency conf="core->default" org="org.apache.curator" name="curator-client" rev="2.8.0"/>
|
||||
|
@ -4,7 +4,6 @@
|
||||
<chain name="main">
|
||||
<ibiblio name="central" root="https://repo1.maven.org/maven2" m2compatible="true"/>
|
||||
<ibiblio name="maven.restlet.org" root="http://maven.restlet.com" m2compatible="true" />
|
||||
<ibiblio name="jitpack.io" root="https://jitpack.io" m2compatible="true" />
|
||||
</chain>
|
||||
</resolvers>
|
||||
</ivysettings>
|
||||
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||
OpenIDE-Module: org.sleuthkit.autopsy.core/10
|
||||
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/core/Bundle.properties
|
||||
OpenIDE-Module-Layer: org/sleuthkit/autopsy/core/layer.xml
|
||||
OpenIDE-Module-Implementation-Version: 30
|
||||
OpenIDE-Module-Implementation-Version: 31
|
||||
OpenIDE-Module-Requires: org.openide.windows.WindowManager
|
||||
AutoUpdate-Show-In-Client: true
|
||||
AutoUpdate-Essential-Module: true
|
||||
|
@ -42,7 +42,7 @@ file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar
|
||||
file.reference.jdom2-2.0.6.jar=release\\modules\\ext\\jdom2-2.0.6.jar
|
||||
file.reference.jempbox-1.8.16.jar=release\\modules\\ext\\jempbox-1.8.16.jar
|
||||
file.reference.jericho-html-3.3.jar=release/modules/ext/jericho-html-3.3.jar
|
||||
file.reference.jgraphx-v3.8.0.jar=release/modules/ext/jgraphx-v3.8.0.jar
|
||||
file.reference.jgraphx-4.1.0.jar=release/modules/ext/jgraphx-4.1.0.jar
|
||||
file.reference.jhighlight-1.0.3.jar=release\\modules\\ext\\jhighlight-1.0.3.jar
|
||||
file.reference.jmatio-1.5.jar=release\\modules\\ext\\jmatio-1.5.jar
|
||||
file.reference.json-simple-1.1.1.jar=release\\modules\\ext\\json-simple-1.1.1.jar
|
||||
@ -126,5 +126,5 @@ nbm.homepage=http://www.sleuthkit.org/
|
||||
nbm.module.author=Brian Carrier
|
||||
nbm.needs.restart=true
|
||||
source.reference.curator-recipes-2.8.0.jar=release/modules/ext/curator-recipes-2.8.0-sources.jar
|
||||
spec.version.base=10.18
|
||||
spec.version.base=10.19
|
||||
|
||||
|
@ -251,7 +251,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>3</release-version>
|
||||
<specification-version>1.3</specification-version>
|
||||
<specification-version>1.4</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
</module-dependencies>
|
||||
@ -495,6 +495,10 @@
|
||||
<runtime-relative-path>ext/vorbis-java-core-0.8.jar</runtime-relative-path>
|
||||
<binary-origin>release\modules\ext\vorbis-java-core-0.8.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/jgraphx-4.1.0.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/jgraphx-4.1.0.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/java-libpst-0.8.1.jar</runtime-relative-path>
|
||||
<binary-origin>release\modules\ext\java-libpst-0.8.1.jar</binary-origin>
|
||||
@ -711,10 +715,6 @@
|
||||
<runtime-relative-path>ext/google-auth-library-oauth2-http-0.15.0.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/google-auth-library-oauth2-http-0.15.0.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/jgraphx-v3.8.0.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/jgraphx-v3.8.0.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/juniversalchardet-1.0.3.jar</runtime-relative-path>
|
||||
<binary-origin>release\modules\ext\juniversalchardet-1.0.3.jar</binary-origin>
|
||||
|
@ -201,11 +201,9 @@ public class CorrelationAttributeUtil {
|
||||
* Makes a correlation attribute instance from a phone number attribute of an
|
||||
* artifact.
|
||||
*
|
||||
* @param corrAttrInstances Correlation attributes will be added to this.
|
||||
* @param artifact An artifact with a phone number attribute.
|
||||
*
|
||||
* @return The correlation instance artifact or null, if the phone number is
|
||||
* not a valid correlation attribute.
|
||||
*
|
||||
* @throws TskCoreException If there is an error querying the case
|
||||
* database.
|
||||
* @throws CentralRepoException If there is an error querying the central
|
||||
|
@ -18,8 +18,11 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.geolocation;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
@ -363,21 +366,17 @@ class GeoFilterPanel extends javax.swing.JPanel {
|
||||
* for the numbers of days after the most recent waypoint, not the
|
||||
* current date.
|
||||
*
|
||||
* @param showAll True if all waypoints should be shown
|
||||
* @param withoutTimeStamp True to show waypoints without timeStamps,
|
||||
* this filter is only applicable if
|
||||
* mostRecentNumDays is true
|
||||
* @param showAll True if all waypoints should be shown
|
||||
* @param withoutTimeStamp True to show waypoints without timeStamps,
|
||||
* this filter is only applicable if mostRecentNumDays is true
|
||||
* @param mostRecentNumDays Show Waypoint for the most recent given
|
||||
* number of days. This parameter is ignored if
|
||||
* showAll is true.
|
||||
* @param dataSources A list of dataSources to filter waypoint
|
||||
* for.
|
||||
* @param artifactTypes A list of artifactTypes to filter waypoint
|
||||
* for.
|
||||
* number of days. This parameter is ignored if showAll is true.
|
||||
* @param dataSources A list of dataSources to filter waypoint for.
|
||||
* @param artifactTypes A list of artifactTypes to filter waypoint for.
|
||||
*/
|
||||
GeoFilter(boolean showAll, boolean withoutTimeStamp,
|
||||
int mostRecentNumDays, List<DataSource> dataSources,
|
||||
List<ARTIFACT_TYPE> artifactTypes) {
|
||||
int mostRecentNumDays, List<DataSource> dataSources,
|
||||
List<ARTIFACT_TYPE> artifactTypes) {
|
||||
this.showAll = showAll;
|
||||
this.showWithoutTimeStamp = withoutTimeStamp;
|
||||
this.mostRecentNumDays = mostRecentNumDays;
|
||||
@ -420,7 +419,7 @@ class GeoFilterPanel extends javax.swing.JPanel {
|
||||
* all datasources should be include.
|
||||
*
|
||||
* @return A list of dataSources or null if all dataSources should be
|
||||
* included.
|
||||
* included.
|
||||
*/
|
||||
List<DataSource> getDataSources() {
|
||||
return Collections.unmodifiableList(dataSources);
|
||||
@ -439,14 +438,16 @@ class GeoFilterPanel extends javax.swing.JPanel {
|
||||
}
|
||||
|
||||
/**
|
||||
* Container for data sources and artifact types to be given as filter options
|
||||
* Container for data sources and artifact types to be given as filter
|
||||
* options
|
||||
*/
|
||||
final private class Sources {
|
||||
|
||||
final List<Pair<String, DataSource>> dataSources;
|
||||
final Map<ARTIFACT_TYPE, Long> artifactTypes;
|
||||
|
||||
private Sources(List<Pair<String, DataSource>> dataSources,
|
||||
Map<ARTIFACT_TYPE, Long> artifactTypes) {
|
||||
Map<ARTIFACT_TYPE, Long> artifactTypes) {
|
||||
this.dataSources = dataSources;
|
||||
this.artifactTypes = artifactTypes;
|
||||
}
|
||||
@ -455,8 +456,8 @@ class GeoFilterPanel extends javax.swing.JPanel {
|
||||
/**
|
||||
* SwingWorker for updating the list of valid data sources.
|
||||
*
|
||||
* doInBackground creates a list of Pair objects that contain the
|
||||
* display name of the data source and the data source object.
|
||||
* doInBackground creates a list of Pair objects that contain the display
|
||||
* name of the data source and the data source object.
|
||||
*/
|
||||
final private class DataSourceUpdater extends SwingWorker<Sources, Void> {
|
||||
|
||||
@ -503,6 +504,26 @@ class GeoFilterPanel extends javax.swing.JPanel {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new ImageIcon for the given artifact type ID representing
|
||||
* the type's waypoint color
|
||||
*
|
||||
* @param artifactTypeId The artifact type id
|
||||
*
|
||||
* @return the ImageIcon
|
||||
*/
|
||||
private ImageIcon getImageIcon(int artifactTypeId) {
|
||||
Color color = MapWaypoint.getColor(artifactTypeId);
|
||||
BufferedImage img = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
|
||||
|
||||
Graphics g = img.createGraphics();
|
||||
g.setColor(color);
|
||||
g.fillRect(0, 0, 16, 16);
|
||||
g.dispose();
|
||||
|
||||
return new ImageIcon(img);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void done() {
|
||||
Sources sources = null;
|
||||
@ -523,8 +544,7 @@ class GeoFilterPanel extends javax.swing.JPanel {
|
||||
}
|
||||
for (Map.Entry<ARTIFACT_TYPE, Long> entry : sources.artifactTypes.entrySet()) {
|
||||
String dispName = entry.getKey().getDisplayName() + " (" + entry.getValue() + ")";
|
||||
String iconPath = IconsUtil.getIconFilePath(entry.getKey().getTypeID());
|
||||
Icon icon = new ImageIcon(getClass().getResource(iconPath));
|
||||
Icon icon = getImageIcon(entry.getKey().getTypeID());
|
||||
atCheckboxPanel.addElement(dispName, icon, entry.getKey());
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.geolocation;
|
||||
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Point;
|
||||
@ -34,8 +36,10 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.prefs.PreferenceChangeEvent;
|
||||
@ -88,8 +92,8 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
private static final int POPUP_HEIGHT = 200;
|
||||
private static final int POPUP_MARGIN = 10;
|
||||
|
||||
private BufferedImage defaultWaypointImage;
|
||||
private BufferedImage selectedWaypointImage;
|
||||
private BufferedImage whiteWaypointImage;
|
||||
private BufferedImage transparentWaypointImage;
|
||||
|
||||
private MapWaypoint currentlySelectedWaypoint;
|
||||
|
||||
@ -108,8 +112,8 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
popupFactory = new PopupFactory();
|
||||
|
||||
try {
|
||||
defaultWaypointImage = ImageIO.read(getClass().getResource("/org/sleuthkit/autopsy/images/waypoint_teal.png"));
|
||||
selectedWaypointImage = ImageIO.read(getClass().getResource("/org/sleuthkit/autopsy/images/waypoint_yellow.png"));
|
||||
whiteWaypointImage = ImageIO.read(getClass().getResource("/org/sleuthkit/autopsy/images/waypoint_white.png"));
|
||||
transparentWaypointImage = ImageIO.read(getClass().getResource("/org/sleuthkit/autopsy/images/waypoint_transparent.png"));
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.WARNING, "Unable to load geolocation waypoint images", ex);
|
||||
}
|
||||
@ -310,7 +314,7 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
void setZoom(int zoom) {
|
||||
zoomChanging = true;
|
||||
mapViewer.setZoom(zoom);
|
||||
zoomSlider.setValue((zoomSlider.getMaximum() + zoomSlider.getMinimum()) - zoom);
|
||||
zoomSlider.setValue(zoom);
|
||||
zoomChanging = false;
|
||||
}
|
||||
|
||||
@ -358,7 +362,7 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
* Show the popup menu for the given waypoint and location.
|
||||
*
|
||||
* @param waypoint Selected waypoint
|
||||
* @param point Current mouse click location
|
||||
* @param point Current mouse click location
|
||||
*/
|
||||
private void showPopupMenu(MapWaypoint waypoint, Point point) throws TskCoreException {
|
||||
if (waypoint == null) {
|
||||
@ -437,7 +441,7 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
* @param clickPoint The mouse click point
|
||||
*
|
||||
* @return A waypoint that is within 10 pixels of the given point, or null
|
||||
* if none was found.
|
||||
* if none was found.
|
||||
*/
|
||||
private List<MapWaypoint> findClosestWaypoint(Point clickPoint) {
|
||||
if (waypointTree == null) {
|
||||
@ -463,7 +467,7 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
MapWaypoint nextWaypoint = iterator.next();
|
||||
|
||||
Point2D point = mapViewer.convertGeoPositionToPoint(nextWaypoint.getPosition());
|
||||
Rectangle rect = new Rectangle((int) point.getX() - (defaultWaypointImage.getWidth() / 2), (int) point.getY() - defaultWaypointImage.getHeight(), defaultWaypointImage.getWidth(), defaultWaypointImage.getHeight());
|
||||
Rectangle rect = new Rectangle((int) point.getX() - (whiteWaypointImage.getWidth() / 2), (int) point.getY() - whiteWaypointImage.getHeight(), whiteWaypointImage.getWidth(), whiteWaypointImage.getHeight());
|
||||
|
||||
if (rect.contains(clickPoint)) {
|
||||
closestPoints.add(nextWaypoint);
|
||||
@ -572,6 +576,7 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
zoomSlider.setOrientation(javax.swing.JSlider.VERTICAL);
|
||||
zoomSlider.setPaintTicks(true);
|
||||
zoomSlider.setSnapToTicks(true);
|
||||
zoomSlider.setInverted(true);
|
||||
zoomSlider.setMinimumSize(new java.awt.Dimension(35, 100));
|
||||
zoomSlider.setOpaque(false);
|
||||
zoomSlider.setPreferredSize(new java.awt.Dimension(35, 190));
|
||||
@ -686,16 +691,65 @@ final public class MapPanel extends javax.swing.JPanel {
|
||||
*/
|
||||
private class MapWaypointRenderer implements WaypointRenderer<MapWaypoint> {
|
||||
|
||||
private final Map<Color, BufferedImage> imageCache = new HashMap<>();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param waypoint the waypoint for which to get the color
|
||||
* @param currentlySelectedWaypoint the waypoint that is currently
|
||||
* selected
|
||||
* @return the color that this waypoint should be rendered
|
||||
*/
|
||||
private Color getColor(MapWaypoint waypoint, MapWaypoint currentlySelectedWaypoint) {
|
||||
Color baseColor = waypoint.getColor();
|
||||
if (waypoint.equals(currentlySelectedWaypoint)) {
|
||||
// Highlight this waypoint since it is selected
|
||||
return Color.YELLOW;
|
||||
} else {
|
||||
return baseColor;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a waypoint image with the specified color
|
||||
*
|
||||
* @param color the color of the new waypoint image
|
||||
* @return the new waypoint image
|
||||
*/
|
||||
private BufferedImage createWaypointImage(Color color) {
|
||||
int w = whiteWaypointImage.getWidth();
|
||||
int h = whiteWaypointImage.getHeight();
|
||||
|
||||
BufferedImage ret = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
|
||||
|
||||
Graphics2D g = ret.createGraphics();
|
||||
g.drawImage(whiteWaypointImage, 0, 0, null);
|
||||
g.setComposite(AlphaComposite.SrcIn);
|
||||
g.setColor(color);
|
||||
g.fillRect(0, 0, w, h);
|
||||
g.setComposite(AlphaComposite.SrcAtop);
|
||||
g.drawImage(transparentWaypointImage, 0, 0, null);
|
||||
g.dispose();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintWaypoint(Graphics2D gd, JXMapViewer jxmv, MapWaypoint waypoint) {
|
||||
Color color = getColor(waypoint, currentlySelectedWaypoint);
|
||||
|
||||
// Store computed images in cache for later use
|
||||
BufferedImage image = imageCache.computeIfAbsent(color, k -> {
|
||||
return createWaypointImage(color);
|
||||
});
|
||||
|
||||
Point2D point = jxmv.getTileFactory().geoToPixel(waypoint.getPosition(), jxmv.getZoom());
|
||||
|
||||
int x = (int) point.getX();
|
||||
int y = (int) point.getY();
|
||||
|
||||
BufferedImage image = (waypoint == currentlySelectedWaypoint ? selectedWaypointImage : defaultWaypointImage);
|
||||
|
||||
(gd.create()).drawImage(image, x - image.getWidth() / 2, y - image.getHeight(), null);
|
||||
gd = (Graphics2D) gd.create();
|
||||
gd.drawImage(image, x - image.getWidth() / 2, y - image.getHeight(), null);
|
||||
gd.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,14 +18,17 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.geolocation;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.AbstractAction;
|
||||
@ -65,6 +68,18 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe
|
||||
private final static String HTML_PROP_FORMAT = "<b>%s: </b>%s<br>";
|
||||
static private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.US);
|
||||
|
||||
private static final Map<Integer, Color> artifactTypesToColors = new HashMap<>();
|
||||
|
||||
static {
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_BOOKMARK.getTypeID(), Color.BLUE);
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_LAST_KNOWN_LOCATION.getTypeID(), Color.RED);
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_ROUTE.getTypeID(), Color.CYAN);
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_SEARCH.getTypeID(), Color.GREEN);
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_TRACK.getTypeID(), Color.ORANGE);
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_GPS_TRACKPOINT.getTypeID(), Color.ORANGE);
|
||||
artifactTypesToColors.put(BlackboardArtifact.ARTIFACT_TYPE.TSK_METADATA_EXIF.getTypeID(), Color.CYAN);
|
||||
}
|
||||
|
||||
private final Waypoint dataModelWaypoint;
|
||||
private final GeoPosition position;
|
||||
|
||||
@ -75,7 +90,7 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe
|
||||
* @param dmWaypoints
|
||||
*
|
||||
* @return List of MapWaypoint objects. List will be empty if dmWaypoints
|
||||
* was empty or null.
|
||||
* was empty or null.
|
||||
*/
|
||||
static Set<MapWaypoint> getWaypoints(List<Waypoint> dmWaypoints) {
|
||||
Set<MapWaypoint> mapPoints = new LinkedHashSet<>();
|
||||
@ -97,7 +112,7 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe
|
||||
* @param mapWaypoints
|
||||
*
|
||||
* @return A list of Waypoint objects, or empty list if mapWaypoints was
|
||||
* null or empty.
|
||||
* null or empty.
|
||||
*/
|
||||
static List<Waypoint> getDataModelWaypoints(List<MapWaypoint> mapWaypoints) {
|
||||
List<Waypoint> waypoints = new ArrayList<>();
|
||||
@ -232,7 +247,7 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe
|
||||
* menu items can be put in a consistent order with other parts of the UI.
|
||||
*
|
||||
* @param artifact Artifact for the selected waypoint
|
||||
* @param content Artifact content
|
||||
* @param content Artifact content
|
||||
*
|
||||
* @return List of JMenuItems for the DataModelActionFactory actions
|
||||
*/
|
||||
@ -268,7 +283,7 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe
|
||||
/**
|
||||
* Get the nicely formatted details for the given waypoint.
|
||||
*
|
||||
* @param point Waypoint object
|
||||
* @param point Waypoint object
|
||||
* @param header String details header
|
||||
*
|
||||
* @return HTML formatted String of details for given waypoint
|
||||
@ -326,6 +341,22 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe
|
||||
return DATE_FORMAT.format(new java.util.Date(timeStamp * 1000));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the waypoint color that represents the given artifact type id
|
||||
*/
|
||||
static Color getColor(int artifactTypeId) {
|
||||
return artifactTypesToColors.getOrDefault(artifactTypeId, Color.GRAY);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the color that this waypoint should be rendered
|
||||
*/
|
||||
Color getColor() {
|
||||
return getColor(dataModelWaypoint.getArtifact().getArtifactTypeID());
|
||||
}
|
||||
|
||||
/**
|
||||
* An action class for Extracting artifact files.
|
||||
*/
|
||||
|
Before Width: | Height: | Size: 912 B |
BIN
Core/src/org/sleuthkit/autopsy/images/waypoint_transparent.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
Core/src/org/sleuthkit/autopsy/images/waypoint_white.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 891 B |
@ -1,8 +1,8 @@
|
||||
Manifest-Version: 1.0
|
||||
OpenIDE-Module: org.sleuthkit.autopsy.corelibs/3
|
||||
OpenIDE-Module-Implementation-Version: 6
|
||||
OpenIDE-Module-Implementation-Version: 7
|
||||
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/corelibs/Bundle.properties
|
||||
OpenIDE-Module-Specification-Version: 1.3
|
||||
OpenIDE-Module-Specification-Version: 1.4
|
||||
AutoUpdate-Show-In-Client: true
|
||||
AutoUpdate-Essential-Module: true
|
||||
|
||||
|
@ -135,7 +135,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>10</release-version>
|
||||
<specification-version>10.18</specification-version>
|
||||
<specification-version>10.19</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -144,7 +144,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>3</release-version>
|
||||
<specification-version>1.3</specification-version>
|
||||
<specification-version>1.4</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -127,7 +127,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>10</release-version>
|
||||
<specification-version>10.18</specification-version>
|
||||
<specification-version>10.19</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -136,7 +136,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>3</release-version>
|
||||
<specification-version>1.3</specification-version>
|
||||
<specification-version>1.4</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
</module-dependencies>
|
||||
|
@ -214,10 +214,10 @@ class GPXParserDataSourceIngestModule(DataSourceIngestModule):
|
||||
geoWaypoints = GeoWaypoints()
|
||||
|
||||
for point in route.points:
|
||||
geoWaypointList.addPoint(Waypoint(point.latitude, point.longitude, point.elevation, point.name))
|
||||
geoWaypoints.addPoint(Waypoint(point.latitude, point.longitude, point.elevation, point.name))
|
||||
|
||||
try:
|
||||
geoArtifactHelper.addRoute(None, None, geoWaypointList, None)
|
||||
geoArtifactHelper.addRoute(None, None, geoWaypoints, None)
|
||||
except Blackboard.BlackboardException as e:
|
||||
self.log("Error posting GPS route artifact for " + file.getUniquePath() + " (objID = " + str(file.getId()) + "):" + e.getMessage())
|
||||
except TskCoreException as e:
|
||||
|
@ -119,7 +119,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>10</release-version>
|
||||
<specification-version>10.18</specification-version>
|
||||
<specification-version>10.19</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -128,7 +128,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>3</release-version>
|
||||
<specification-version>1.3</specification-version>
|
||||
<specification-version>1.4</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
</module-dependencies>
|
||||
|
29
NEWS.txt
@ -1,3 +1,32 @@
|
||||
---------------- VERSION 4.15.0 --------------
|
||||
New UI Features:
|
||||
- Added Document view to File Discovery.
|
||||
- Expanded Context Content Viewer to show if an app accessed a file.
|
||||
- Added translation feature to Message Content Viewer.
|
||||
- Added waypoint type filter to the Geolocation viewer.
|
||||
- Added zoom feature to Indexed Text Content Viewer.
|
||||
|
||||
New Ingest Modules Features:
|
||||
- New GPX ingest module.
|
||||
- New Drone ingest module for DJI drones based on DatCon.
|
||||
- Create artifacts for files opened by Adobe Reader, Windows Media Player, Office Docs (Most Recently Used (MRU) and TrustRecords), 7Zip MRU, WinRAR MRU, Applets, Microsoft Management Console (MMC) via RegRipper.
|
||||
|
||||
New Central Repository Features:
|
||||
- Central Repository stores account IDs that were previously seen.
|
||||
- Central Repository is enabled by default to store past hashes. Feature to flag previously seen files is disabled by default.
|
||||
|
||||
Other New Features:
|
||||
- Multi-user cases can be created via command line
|
||||
|
||||
Bug fixes:
|
||||
- Prevent entire application from crashing when gstreamer crashes on videos.
|
||||
- Improve Geolocation viewer with large data sets.
|
||||
- Fix error with non-sector aligned reads on local disks.
|
||||
- Times from Recycle Bin files are now in timeline.
|
||||
- Validate timeline events and ignore events too far in the future.
|
||||
- Moved some database queries off of UI thread.
|
||||
- Remove hard coded sizes from UI that cause issues with other languages.
|
||||
|
||||
---------------- VERSION 4.14.0 --------------
|
||||
Specialized UIs:
|
||||
- New File Discovery UI that allows you to search and filter for certain types of files.
|
||||
|
@ -60,7 +60,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>10</release-version>
|
||||
<specification-version>10.18</specification-version>
|
||||
<specification-version>10.19</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -69,7 +69,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>3</release-version>
|
||||
<specification-version>1.3</specification-version>
|
||||
<specification-version>1.4</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
</module-dependencies>
|
||||
|
@ -47,7 +47,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>10</release-version>
|
||||
<specification-version>10.18</specification-version>
|
||||
<specification-version>10.19</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy User Documentation"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 4.14.0
|
||||
PROJECT_NUMBER = 4.15.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
@ -1025,7 +1025,7 @@ GENERATE_HTML = YES
|
||||
# The default directory is: html.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_OUTPUT = 4.14.0
|
||||
HTML_OUTPUT = 4.15.0
|
||||
|
||||
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
||||
# generated HTML page (for example: .htm, .php, .asp).
|
||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 1017 B After Width: | Height: | Size: 9.5 KiB |
@ -8,14 +8,14 @@ ActiveMQ is a messaging service that allows the Autopsy clients to communicate w
|
||||
\section install_activemq_prereq Prerequisites
|
||||
|
||||
You will need:
|
||||
- 64-bit version of the Java Runtime Environment (JRE) from http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html.
|
||||
- 64-bit version of the Java 8 Runtime Environment (JRE) from https://github.com/ojdkbuild/ojdkbuild (<a href="https://github.com/ojdkbuild/ojdkbuild/releases/download/java-1.8.0-openjdk-1.8.0.242-1.b08/java-1.8.0-openjdk-1.8.0.242-1.b08.ojdkbuild.windows.x86_64.msi"> Link to installer</a>)
|
||||
- Download ActiveMQ from: http://activemq.apache.org/download.html . Autopsy has been tested with ActiveMQ version 5.14.0.
|
||||
|
||||
|
||||
\section install_activemq_install Installation
|
||||
|
||||
\subsection install_activemq_install_java JRE Installation
|
||||
Install the Java JRE if needed. You can test this by running _where java_ from the command line. If you see output like the yellow results below, you have a JRE.
|
||||
Install the Java JRE if needed. You can test this by running _where java_ from the command line. If you see output similar to the results below, you have a JRE.
|
||||
<br><br>
|
||||
\image html wherejava.PNG
|
||||
<br><br>
|
||||
|
@ -13,7 +13,7 @@ Solr's embedded ZooKeeper is also used as a coordination service for Autopsy.
|
||||
We use Bitnami Solr, which packages Solr as a Windows service.
|
||||
|
||||
You will need:
|
||||
- A 64-bit version of the Java Runtime Environment (JRE) from http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html.
|
||||
- A 64-bit version of the Java 8 Runtime Environment (JRE) from https://github.com/ojdkbuild/ojdkbuild. (<a href="https://github.com/ojdkbuild/ojdkbuild/releases/download/java-1.8.0-openjdk-1.8.0.242-1.b08/java-1.8.0-openjdk-1.8.0.242-1.b08.ojdkbuild.windows.x86_64.msi"> Link to installer</a>)
|
||||
- The Apache Solr 4.10.3-0 installation package. This is no longer available from its original source, but you can find it on our site: https://sourceforge.net/projects/autopsy/files/CollaborativeServices/Solr.
|
||||
-- NOTE: We tested Solr 6 at one point, but ran into stability problems when loading and unloading cores. For now, you need to use Solr 4.
|
||||
- An installed version of Autopsy so that you can copy files from it. You can install Autopsy on one of the planned client systems. You do not need to install it on the Solr server.
|
||||
@ -24,7 +24,11 @@ You will need:
|
||||
\section install_solr_install Installation
|
||||
|
||||
\subsection install_solr_install_java JRE Installation
|
||||
1. JREs are normally installed under "C:\Program Files\Java\jre(version)", so check there to see if you have one installed already. If not, get the installer as listed in the above Prerequisites section and install it with the default settings.
|
||||
1. Install the Java JRE if needed. You can test this by running _where java_ from the command line. If you see output similar to the results below, you have a JRE.
|
||||
<br><br>
|
||||
\image html wherejava.PNG
|
||||
<br><br>
|
||||
If you need the JRE, install it with the default settings.
|
||||
|
||||
\subsection install_solr_install_solr Solr Installation
|
||||
|
||||
@ -52,7 +56,7 @@ The following steps will configure Solr to run using an account that will have a
|
||||
+ <i>++JvmOptions=-Dbootstrap_confdir="C:\Bitnami\solr-4.10.3-0\apache-solr\solr\configsets\AutopsyConfig\conf"</i>
|
||||
+ <i>++JvmOptions=-DzkRun </i>
|
||||
<br>
|
||||
- Replace the path to JavaHome with the path to your 64-bit version of the JRE. If you do not know the path, the correct JavaHome path can be obtained by running the command "where java" from the Windows command line. An example is shown below. The text in yellow is what we are interested in. Do not include the "bin" folder in the path you place into the JavaHome variable. A correct example of the final result will look something like this: <i>–-JavaHome="C:\Program Files\Java\jre1.8.0_111"</i>
|
||||
- Replace the path to JavaHome with the path to your 64-bit version of the JRE. If you do not know the path, the correct JavaHome path can be obtained by running the command "where java" from the Windows command line. An example is shown below. The text in yellow is what we are interested in. Do not include the "bin" folder in the path you place into the JavaHome variable. A correct example of the final result will look something like this: <i>–-JavaHome="C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.222-1"</i>
|
||||
<br><br>
|
||||
A portion of an updated _serviceinstall.bat_ is shown below, with the changes marked in yellow.
|
||||
<br><br>
|
||||
|
@ -38,7 +38,7 @@ PROJECT_NAME = "Autopsy"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 4.14.0
|
||||
PROJECT_NUMBER = 4.15.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears a the top of each page and should give viewer a
|
||||
@ -1066,7 +1066,7 @@ GENERATE_HTML = YES
|
||||
# The default directory is: html.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_OUTPUT = api-docs/4.14.0/
|
||||
HTML_OUTPUT = api-docs/4.15.0/
|
||||
|
||||
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
||||
# generated HTML page (for example: .htm, .php, .asp).
|
||||
|
@ -4,7 +4,7 @@ app.title=Autopsy
|
||||
### lowercase version of above
|
||||
app.name=${branding.token}
|
||||
### if left unset, version will default to today's date
|
||||
app.version=4.14.0
|
||||
app.version=4.15.0
|
||||
### build.type must be one of: DEVELOPMENT, RELEASE
|
||||
#build.type=RELEASE
|
||||
build.type=DEVELOPMENT
|
||||
|
@ -36,7 +36,7 @@
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>10</release-version>
|
||||
<specification-version>10.18</specification-version>
|
||||
<specification-version>10.19</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|