Difference between pages "Tools:Visualization" and "Google Chrome"

From ForensicsWiki
(Difference between pages)
Jump to: navigation, search
m
 
(Example queries)
 
Line 1: Line 1:
Although not strictly for forensic purposes, '''visualization tools''' such as the ones discussed here can be very useful for visualizing large data sets. As forensic practitioners need to process more and more data, it is likely that some of the techniques implemented by these tools will need to be adopted.
+
Google Chrome is a [[Web Browser|web browser]] developed by Google Inc.
  
==Programming Languages and Developer Toolkits==
+
== Configuration ==
If you are building forensic tools, you probably want to start with one of these:
+
The Google Chrome configuration can be found in the '''Preferences''' file.
; Java and Swing
+
: Advantage: Portable and lots of good documentation out there.
+
: Disadvantage: Programs are a bit verbose, and only offers about 1/2 the performance of C
+
  
; Python with tkinter
+
On Linux
: Advantage: Portable
+
<pre>
: Disadvantage: Python is one of the slowest modern languages around.
+
/home/$USER/.config/google-chrome/Default/Preferences
 +
</pre>
  
; Python with wxWidgets
+
On MacOS-X
: Advantage: Portable and a better development environment than tkiner
+
<pre>
: Disadvantage: wxWidgets is not installed by default, so you'll need to get it installed. Not as well documented as Tkinter
+
/Users/$USER/Library/Application Support/Google/Chrome/Default/Preferences
 +
</pre>
  
; processing.org
+
On Windows XP
: Advantage: Programming language specifically developed for visualization; compiles to java byte code
+
<pre>
: Disadvantage: Very oddball
+
C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Default\Preferences
 +
</pre>
  
; JavaFX - Java's version of Flash
+
On Windows Vista and later
 +
<pre>
 +
C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Preferences
 +
</pre>
  
; Flash
+
Or for '''Chromium'''
  
 +
On Linux
 +
<pre>
 +
/home/$USER/.config/chromium/Default/Preferences
 +
</pre>
  
 +
On MacOS-X
 +
<pre>
 +
/Users/$USER/Library/Application Support/Chromium/Default/Preferences
 +
</pre>
  
== Open Source ==
+
On Windows XP
=== Visualization Toolkits and Libraries ===
+
<pre>
* [http://csbi.sourceforge.net/index.html Graph Interface Library (GINY)] - Java
+
C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Chromium\User Data\Default\Preferences
* [http://www.gravisto.org/ Gravisto: Graph Visualization Toolkit] - An editor and toolkit for developing graph visualization algorithms.
+
</pre>
*  [http://hypergraph.sourceforge.net/ HyperGraph] - Hyperbolic trees, in Java. Check out the home page. Try clicking on the logo...
+
* [http://ivtk.sourceforge.net/ InfoViz Toolkit] - Java, originally developed at [[INRA]].
+
* [https://jdigraph.dev.java.net/ Jdigrah] - Java Directed Graphs.
+
* [http://jgrapht.sourceforge.net/ JGraphT] - A Java visualization kit designed to be simple and extensible.
+
* [http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=LinguineMaps Linguine Maps] - An open-source Java-based system for visualizing software call maps.
+
* [http://prefuse.sourceforge.net/ Perfuse] - A Java-based toolkit for building interactive information visualization applications
+
* [http://www.gnu.frb.br:8080/rox Rox Graph Theory Framework] - An open-source plug-in framework for graph theory visualization.
+
* [http://touchgraph.sourceforge.net/ TouchGraph] - Library for building graph-based interfaces.
+
* [http://www.ssec.wisc.edu/~billh/visad.html#intro VisAD] - A Java component library for interactive and collaborative visualization.
+
* [http://public.kitware.com/VTK/ The Visualization Toolkit] - C++ multi-platform with interfaces available for Tcl/Tk, Java and Python. Professional support provided by [http://www.kitware.com/ Kitware].
+
* [http://zvtm.sourceforge.net/index.html Zoomable Visual Transformation Machine] - Java. Originally started at Xerox Research Europe.
+
* [http://processing.org/ Processing.org] - A new language for doing graphics and visualization.
+
  
====Tree Maps====
+
On Windows Vista and later
[http://www.cs.umd.edu/hcil/treemap-history/index.shtml Treemaps] are a visualization technique developed at the University of Maryland for visualizing large amounts of multi-dimensional data. There is a GPLed implementation of treemaps written in C. You can find a copy of in it:
+
<pre>
* [http://www.derlien.com/ Disk Inventory X]
+
C:\Users\%USERNAME%\AppData\Local\Chromium\User Data\Default\Preferences
* [http://kdirstat.sourceforge.net/ KDirStat]
+
</pre>
  
===Graph Drawing Applications===
+
=== Plugins ===
* [http://www.graphviz.org/ Graphviz] - Originally developed by the [http://public.research.att.com/areas/visualization/ AT&T Information Visualization Gorup], designed for drawing connected graphs of nodes and edges. Neato is a similar system but does layout based on a spring model. Can produce output as [[PostScript]], [[PNG]], [[GIF]], or as an annotated graph file with the locations of all of the objects &mdash; ideal for drawing in a GUI. Runs from the command line on [[Unix]], [[Windows]] and [[Mac]], although there is also a [http://www.pixelglow.com/graphviz/ MacOS GUI version].
+
* [http://graphexploration.cond.org/ Guess: The Graph Exploration System] - Originally developed at HP, this is a large Jython/Java-based system that you can use for building your own applications. Distributed under GPL.
+
* [http://sourceforge.net/projects/ivc/ InfoVis Cyberinfrastructure] - Another graph drawing system written in Java.
+
* [http://jung.sourceforge.net/ Java Universal Network/Graph Framework (JUNG)] - Graphing, [[data mining]], [[social network]] analysis, and other stuff.
+
* [http://www.andrew.cmu.edu/user/krack/krackplot.shtml Krackplot] - "KrackPlot is a program for network visualization designed for social network analysts."
+
* [http://bioinformatics.icmb.utexas.edu/lgl/ Large Graph Layout (LGL)] - A bioinformatics system from University of Texas. They really mean Large.
+
* [http://www.sfu.ca/~richards/Multinet/Pages/multinet.htm MultiNet] - A data analysis package for drawing conventional data and graph data.
+
* [http://www.analytictech.com/netdraw.htm NetDraw] - "a free program written by Steve Borgatti for visualizing both 1-mode and 2-mode social network data."
+
* [http://web.mit.edu/bshi/Public/nv2d/ NetVis 2D] - Another graph visualization and layout tool written in Java.
+
* [http://www.opendx.org/ OpenDX] - Based on [[IBM]]'s Visualization Data Explorer, runs on [[Unix]]/X11/Motif.
+
* [http://vlado.fmf.uni-lj.si/pub/networks/pajek/ Pajek] - Windows program for drawing large networks.
+
* [http://sourceforge.net/projects/sonia/ Social Network Image Animator (SoNIA)] - Originally developed at Stanford. Written in Java. Makes movies.
+
* [http://www.informatik.uni-bremen.de/uDrawGraph/en/uDrawGraph/uDrawGraph.html uDrawGraph]
+
* [http://wilma.sourceforge.net/ WilmaScope] - Real-time animations of dynamic graph structures. Written in Java. Sophisticated force model with strings and attraction.
+
* [http://www.caida.org/tools/visualization/walrus/ Walrus] - A 3-d graph network exploration tool. Employs 3D hyperbolic displays and layout based on a user-supplied spanning tree.
+
  
== Geographical Drawing Programs ==
+
Information about plugins can be found under the "plugins section" of the Preferences file.
  
* [http://openmap.bbn.com/ OpenMap] -- From [[BBN]].
+
=== DNS Prefetching ===
  
== Commercial Tools ==
+
DNS is prefetched for related sites, e.g. links on the page.
 +
This behavior is controlled by the setting "Predict network actions to improve page load performance", which is enabled by default.
  
* [http://www.aisee.com/ aiSee Graph Layout Software] - Supports 15 layout algorithms, recursive graph nesting, and easy printing. Runs on [[Windows]], [[Linux]], [[Solaris]], [[NetBSD]], and [[MacOS]]. 30-day trial and free registered versions available. Academic pricing available.
+
If enabled the Preferences file contains:
*  [http://www.geomantics.com/ Geomantics] - Geographical, Visualization and Graphics software. Runs on [[Windows]].
+
<pre>
* [http://www.kylebank.com/ Graphis 2D and 3D graphing software] - Runs on [[Windows]]. Free 30-day evaluation copy available.
+
  "dns_prefetching": {
* [http://www.openviz.com/ OpenViz] and  [http://www.powerviz.com/ PowerViz] - Both from Advanced Visual Systems, super high-end visualization toolkits. $$$$
+
      "enabled": true,
* [http://www.tomsawyer.com/ Tom Sawyer Software] Analysis, Visualizaiton, and Layout programs. - Heavy support for drawing graphs. Beautiful gallery. ActiveX, Java, C++ and .NET editions.
+
</pre>
* [http://www.netminer.com/ NetMiner] - "One of the most comprehensive and usable software tools for Social Network Analysis in the world." Runs on Winodws, with a Linux version under development. $35 for "Express" student version, $250 for "Professional" student version, $950 for "Normal" "Professional" version.
+
* [http://www.analytictech.com/ucinet.htm UCINET] - A comprehensive package for the analysis of social network data as well as other 1-mode and 2-mode data.
+
  
= Other Resources =
+
If disabled the Preferences file contains:
==Journals and Conferences==
+
<pre>
* [http://www.palgrave-journals.com/ivs/index.html Information Visualization Journal]
+
  "dns_prefetching": {
* [http://rw4.cs.uni-sb.de/~diehl/softvis/seminar/index.php?goto=seminar ACM Symposium on Software Visualization]
+
      "enabled": false,
==Link Farms==
+
</pre>
* [http://www-static.cc.gatech.edu/gvu/ii/resources/infovis.html GVU's Information Visualization Resources link farm]
+
 
* [http://directory.google.com/Top/Science/Math/Combinatorics/Software/Graph_Drawing/ Google Directory of Graph Drawing Software]
+
== Start-up DNS queries ==
* [http://directory.fsf.org/science/visual/ GNU Free Software directory of scientific visualization software]
+
 
* [http://www.manageability.org/blog/stuff/open-source-graph-network-visualization-in-java/view Open Source Graph Network Visualization in Java]
+
When Chrome starts it queries for several non-existing hostnames that consists of a 10 random characters, E.g.
* [http://www.insna.org/INSNA/soft_inf.html INSNA's web page of Computer Programs for Social Network Analysis]
+
<pre>
==Research Groups==
+
ttrgoiknff.mydomain.com
* [http://www.msi.umn.edu/user_support/scivis/scivis-list.html Scientific Visualization at the Supercomputing Institute]
+
bxjhgftsyu.mydomain.com
* [http://www.cs.brown.edu/people/rt/gd.html Roberto Tamassia's resources on Graph Drawing]
+
yokjbjiagd.mydomain.com
* [http://bailando.sims.berkeley.edu/infovis.html Bailando Visualization at UC Berkeley]
+
</pre>
* [http://vis.berkeley.edu/ Berkeley Visualization Lab]
+
 
 +
This is used to determine if your ISP is hijacking NXDOMAIN results [http://www.google.com/support/forum/p/Chrome/thread?tid=3511015c72a7b314&hl=en].
 +
 
 +
== Disk Cache ==
 +
The Google Chrome disk cache can be found in:
 +
 
 +
On Linux
 +
<pre>
 +
/home/$USER/.config/google-chrome/Default/Application Cache/Cache/
 +
</pre>
 +
 
 +
On MacOS-X
 +
<pre>
 +
/Users/$USER/Caches/Google/Chrome/Default/Cache/
 +
</pre>
 +
 
 +
On Windows XP
 +
<pre>
 +
C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Cache\
 +
</pre>
 +
 
 +
On Windows Vista and later
 +
<pre>
 +
C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Cache\
 +
</pre>
 +
 
 +
The Chrome Cache contains different files with the following file names:
 +
* index
 +
* data_#; where # contains a decimal digit.
 +
* f_######; where # contains a hexadecimal digit.
 +
 
 +
For more info see Chrome developers site [http://www.chromium.org/developers/design-documents/network-stack/disk-cache].
 +
 
 +
== History ==
 +
Chrome stores the history of visited sites in a file named '''History'''. This file uses the [[SQLite database format]].
 +
 
 +
The '''History''' file can be found in same location as the '''Preferences''' file.
 +
 
 +
There is also '''Archived History''' that predates information in the '''History''' file.
 +
Note that the '''Archived History''' only contains visits.
 +
 
 +
=== Timestamps ===
 +
The '''History''' file uses the different timestamps.
 +
 
 +
==== visits.visit_time ====
 +
 
 +
The '''visits.visit_time''' is in (the number of) microseconds since January 1, 1601 UTC
 +
 
 +
Some Python code to do the conversion into human readable format:
 +
<pre>
 +
date_string = datetime.datetime( 1601, 1, 1 )
 +
            + datetime.timedelta( microseconds=timestamp )
 +
</pre>
 +
 
 +
Note that this timestamp is not the same as a Windows filetime which is (the number of) 100 nanoseconds since January 1, 1601 UTC
 +
 
 +
==== downloads.start_time ====
 +
 
 +
The '''downloads.start_time''' is in (the number of) seconds since January 1, 1970 UTC
 +
 
 +
Some Python code to do the conversion into human readable format:
 +
<pre>
 +
date_string = datetime.datetime( 1970, 1, 1 )
 +
            + datetime.timedelta( seconds=timestamp )
 +
</pre>
 +
 
 +
=== Example queries ===
 +
Some example queries:
 +
 
 +
To get an overview of the visited sites:
 +
<pre>
 +
SELECT datetime(((visits.visit_time/1000000)-11644473600), "unixepoch"), urls.url, urls.title FROM urls, visits WHERE urls.id = visits.url;
 +
</pre>
 +
 
 +
Note that the visit_time conversion looses precision.
 +
 
 +
To get an overview of the downloaded files:
 +
<pre>
 +
SELECT datetime(downloads.start_time, "unixepoch"), downloads.url, downloads.full_path, downloads.received_bytes, downloads.total_bytes FROM downloads;
 +
</pre>
 +
 
 +
How the information of the downloaded files is stored in the database can vary per version of Chrome a newer variant of the previous query is:
 +
<pre>
 +
SELECT datetime(((downloads.start_time/1000000)-11644473600), "unixepoch"), downloads.target_path, downloads_url_chains.url, downloads.received_bytes, downloads.total_bytes \
 +
FROM downloads, downloads_url_chains WHERE downloads.id = downloads_url_chains.id;
 +
</pre>
 +
 
 +
== See Also ==
 +
 
 +
* [[SQLite database format]]
 +
 
 +
== External Links ==
 +
* [http://en.wikipedia.org/wiki/Google_Chrome Wikipedia article on Google Chrome]
 +
* [http://www.chromium.org/user-experience/user-data-directory The Chromium Projects - User Data Directory]
 +
* [http://www.chromium.org/developers/design-documents/network-stack/disk-cache Chrome Disk Cache]
 +
* [http://www.google.com/support/forum/p/Chrome/thread?tid=3511015c72a7b314&hl=en Chrome support forum article random 10 character hostnames on startup]
 +
* [http://computer-forensics.sans.org/blog/2010/01/21/google-chrome-forensics/ Google Chrome Forensics] by [[Kristinn Guðjónsson]]
 +
* [http://www.useragentstring.com/pages/Chrome/ Chrome User Agent strings]
 +
* [http://linuxsleuthing.blogspot.ch/2013/02/cashing-in-on-google-chrome-cache.html?m=1 Cashing in on the Google Chrome Cache], [[John Lehr]], February 24, 2013
 +
 
 +
[[Category:Applications]]
 +
[[Category:Web Browsers]]

Revision as of 01:51, 20 April 2013

Google Chrome is a web browser developed by Google Inc.

Configuration

The Google Chrome configuration can be found in the Preferences file.

On Linux

/home/$USER/.config/google-chrome/Default/Preferences

On MacOS-X

/Users/$USER/Library/Application Support/Google/Chrome/Default/Preferences

On Windows XP

C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Default\Preferences

On Windows Vista and later

C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Preferences

Or for Chromium

On Linux

/home/$USER/.config/chromium/Default/Preferences

On MacOS-X

/Users/$USER/Library/Application Support/Chromium/Default/Preferences

On Windows XP

C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Chromium\User Data\Default\Preferences

On Windows Vista and later

C:\Users\%USERNAME%\AppData\Local\Chromium\User Data\Default\Preferences

Plugins

Information about plugins can be found under the "plugins section" of the Preferences file.

DNS Prefetching

DNS is prefetched for related sites, e.g. links on the page. This behavior is controlled by the setting "Predict network actions to improve page load performance", which is enabled by default.

If enabled the Preferences file contains:

   "dns_prefetching": {
      "enabled": true,

If disabled the Preferences file contains:

   "dns_prefetching": {
      "enabled": false,

Start-up DNS queries

When Chrome starts it queries for several non-existing hostnames that consists of a 10 random characters, E.g.

ttrgoiknff.mydomain.com
bxjhgftsyu.mydomain.com
yokjbjiagd.mydomain.com

This is used to determine if your ISP is hijacking NXDOMAIN results [1].

Disk Cache

The Google Chrome disk cache can be found in:

On Linux

/home/$USER/.config/google-chrome/Default/Application Cache/Cache/

On MacOS-X

/Users/$USER/Caches/Google/Chrome/Default/Cache/

On Windows XP

C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Cache\

On Windows Vista and later

C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Cache\

The Chrome Cache contains different files with the following file names:

  • index
  • data_#; where # contains a decimal digit.
  • f_######; where # contains a hexadecimal digit.

For more info see Chrome developers site [2].

History

Chrome stores the history of visited sites in a file named History. This file uses the SQLite database format.

The History file can be found in same location as the Preferences file.

There is also Archived History that predates information in the History file. Note that the Archived History only contains visits.

Timestamps

The History file uses the different timestamps.

visits.visit_time

The visits.visit_time is in (the number of) microseconds since January 1, 1601 UTC

Some Python code to do the conversion into human readable format:

date_string = datetime.datetime( 1601, 1, 1 )
            + datetime.timedelta( microseconds=timestamp )

Note that this timestamp is not the same as a Windows filetime which is (the number of) 100 nanoseconds since January 1, 1601 UTC

downloads.start_time

The downloads.start_time is in (the number of) seconds since January 1, 1970 UTC

Some Python code to do the conversion into human readable format:

date_string = datetime.datetime( 1970, 1, 1 )
            + datetime.timedelta( seconds=timestamp )

Example queries

Some example queries:

To get an overview of the visited sites:

SELECT datetime(((visits.visit_time/1000000)-11644473600), "unixepoch"), urls.url, urls.title FROM urls, visits WHERE urls.id = visits.url;

Note that the visit_time conversion looses precision.

To get an overview of the downloaded files:

SELECT datetime(downloads.start_time, "unixepoch"), downloads.url, downloads.full_path, downloads.received_bytes, downloads.total_bytes FROM downloads;

How the information of the downloaded files is stored in the database can vary per version of Chrome a newer variant of the previous query is:

SELECT datetime(((downloads.start_time/1000000)-11644473600), "unixepoch"), downloads.target_path, downloads_url_chains.url, downloads.received_bytes, downloads.total_bytes \
FROM downloads, downloads_url_chains WHERE downloads.id = downloads_url_chains.id;

See Also

External Links