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

From ForensicsWiki
(Difference between pages)
Jump to: navigation, search
m (See Also)
 
(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>
  
; [http://www.pyside.org Python with Qt (PySide)]
+
On Windows XP
: Advantage: Portable and a better development environment than tkiner or wxWidgets
+
<pre>
: Disadvantage: Though not difficult, PySide has to be installed separately
+
C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Default\Preferences
 +
</pre>
  
; [http://processing.org processing.org]
+
On Windows Vista and later
: Advantage: Programming language specifically developed for visualization; compiles to java byte code
+
<pre>
: Disadvantage: Very oddball
+
C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Preferences
 +
</pre>
  
; JavaFX - Java's version of Flash
+
Or for '''Chromium'''
  
; Flash
+
On Linux
 +
<pre>
 +
/home/$USER/.config/chromium/Default/Preferences
 +
</pre>
  
Or you could try one of these higher-level toolkits:
+
On MacOS-X
 +
<pre>
 +
/Users/$USER/Library/Application Support/Chromium/Default/Preferences
 +
</pre>
  
; Crystal Space 3D
+
On Windows XP
 +
<pre>
 +
C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Chromium\User Data\Default\Preferences
 +
</pre>
  
; Panda#D
+
On Windows Vista and later
 +
<pre>
 +
C:\Users\%USERNAME%\AppData\Local\Chromium\User Data\Default\Preferences
 +
</pre>
  
== Applications ==
+
=== Plugins ===
Most of these are scriptable.
+
===Open Source===
+
====Data Plotting====
+
* http://ploticus.sourceforge.net
+
* http://www.gnuplot.info/
+
* [http://www.opendx.org/ OpenDX] - Based on [[IBM]]'s Visualization Data Explorer for 3D, runs on [[Unix]]/X11/Motif. (2007)
+
* http://tulip.labri.fr/TulipDrupal/
+
* http://highcharts.com/
+
* matplotlib
+
  
====Graph and (Social) Network Visualization====
+
Information about plugins can be found under the "plugins section" of the Preferences file.
* [http://code.google.com/p/boomslang/ Boomslang] --- A thin layer of python over matplotlib that makes it easier to do common plots.
+
* [http://www.cytoscape.org/ Cytoscape] - Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data.
+
* [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://www.codeplex.com/nodexl NodeXL] - Free/open excel add-in extends the spreadsheet with network metrics and visualizations. (Only runs on Windows)
+
* [http://gephi.org/ Gephi] -Gephi is an interactive visualization and exploration platform for all kinds of networks and complex systems, dynamic and hierarchical graphs
+
* http://graphstream-project.org/
+
* http://projects.skewed.de/graph-tool/ - graph-tool is an efficient python module for manipulation and statistical analysis of graphs (a.k.a. networks).
+
* http://igraph.sourceforge.net/ - Integrates with R.
+
* http://nwb.cns.iu.edu/ - NetworkWorkbench, a workbench for network scientists.
+
* http://socnetv.sourceforge.net/ - "Social Networks Visualizer (SocNetV) is a flexible and user-friendly tool for the analysis and visualization of Social Networks."
+
* [http://jung.sourceforge.net/ Java Universal Network/Graph Framework (JUNG)] - Graphing, [[data mining]], [[social network]] analysis, and other stuff.
+
* [http://bioinformatics.icmb.utexas.edu/lgl/ Large Graph Layout (LGL)] - A bioinformatics system from University of Texas. They really mean Large.
+
* [http://www.analytictech.com/netdraw/netdraw.htm NetDraw] - "a free program written by Steve Borgatti for visualizing both 1-mode and 2-mode social network data."
+
* [http://pajek.imfm.si/doku.php 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://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.
+
* [http://afterglow.sf.net AfterGlow] - A tool to simplify the generation of network graphs in GraphViz, Gephi, etc.
+
* http://tulip.labri.fr/TulipDrupal/ - Tulip is an information visualization framework dedicated to the analysis and visualization of relational data.  
+
  
See also: http://en.wikipedia.org/wiki/Social_network_analysis_software
+
=== DNS Prefetching ===
  
Reas govisual diagram editor
+
DNS is prefetched for related sites, e.g. links on the page.
reas.com
+
This behavior is controlled by the setting "Predict network actions to improve page load performance", which is enabled by default.
gdf.net
+
  
Visit http://wci.llnl.gov/codes/visit/
+
If enabled the Preferences file contains:
 +
<pre>
 +
  "dns_prefetching": {
 +
      "enabled": true,
 +
</pre>
  
ext js development tool
+
If disabled the Preferences file contains:
 +
<pre>
 +
  "dns_prefetching": {
 +
      "enabled": false,
 +
</pre>
  
sencha
+
== Start-up DNS queries ==
  
wxvera
+
When Chrome starts it queries for several non-existing hostnames that consists of a 10 random characters, E.g.
 +
<pre>
 +
ttrgoiknff.mydomain.com
 +
bxjhgftsyu.mydomain.com
 +
yokjbjiagd.mydomain.com
 +
</pre>
  
ogdf
+
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].
  
====Abandoned Social network Graphers====
+
== Disk Cache ==
(Abandoned means that it hasn't been updated since 2009)
+
The Google Chrome disk cache can be found in:
* [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. (2007)
+
* [http://sourceforge.net/projects/ivc/ InfoVis Cyberinfrastructure] - Another graph drawing system written in Java. (2009)
+
* [http://www.andrew.cmu.edu/user/krack/krackplot.shtml Krackplot] - "KrackPlot is a program for network visualization designed for social network analysts." (2006; Windows only; no source, apparently)
+
* [http://www.sfu.ca/~richards/Multinet/Pages/multinet.htm MultiNet] - A data analysis package for drawing conventional data and graph data.  (2007)
+
* [http://developer.berlios.de/projects/nv2d/ NetVis 2D] - Another graph visualization and layout tool written in Java. (2005)
+
* [http://www.informatik.uni-bremen.de/uDrawGraph/en/uDrawGraph/uDrawGraph.html uDrawGraph]
+
* [http://ubietylab.net/ubigraph/ Ubigraph] - a tool for visualizing dynamic graphs. The basic version is free, and talks to Python, Ruby, PHP, Java, C, C++, C#, Haskell, and OCaml.  (2008)
+
* http://www.paterva.com/web5/
+
  
====Computer Network Visualization====
+
On Linux
* [http://tnv.sourceforge.net/ The Network Visualizer]
+
<pre>
 +
/home/$USER/.config/google-chrome/Default/Application Cache/Cache/
 +
</pre>
  
=== Commercial Graphic Applications and Tools===
+
On MacOS-X
 +
<pre>
 +
/Users/$USER/Caches/Google/Chrome/Default/Cache/
 +
</pre>
  
* [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.
+
On Windows XP
*  [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.
+
C:\Documents and Settings\%USERNAME%\Local Settings\Application Data\Google\Chrome\User Data\Cache\
* [http://www.openviz.com/ OpenViz] and  [http://www.powerviz.com/ PowerViz] - Both from Advanced Visual Systems, super high-end visualization toolkits. $$$$
+
</pre>
* [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.
+
* [http://www.netminer.com/ NetMiner] - A comprehensive tool for Social Network Analysis. Runs on Windows, 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.
+
* [http://www.clarifiednetworks.com/logster Logster] - an ultra-easy software tool to visualize Apache-style logs on a world map.
+
* [http://www.clarifiednetworks.com/Clarified%20Analyzer Clarified Analyzer] - Visualizes Network Traffic and allows to drill down from visualizations to the packet level.
+
  
== Visualization Toolkits and Libraries ==
+
On Windows Vista and later
===C/C++===
+
<pre>
* [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].
+
C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\Cache\
* [http://kdirstat.sourceforge.net/ KDirStat], an open source implementation of [http://www.cs.umd.edu/hcil/treemap-history/index.shtml Treemaps] written in C. (Treemaps are a visualization technique developed at the University of Maryland for visualizing large amounts of multi-dimensional data.)  You can find a copy of it in [http://www.derlien.com/ Disk Inventory X] and
+
</pre>
===Java===
+
* [http://csbi.sourceforge.net/index.html Graph Interface Library (GINY)] - Java
+
* [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://prefuse.sourceforge.net/ Perfuse] - A Java-based toolkit for building interactive information visualization applications
+
* [http://www.ssec.wisc.edu/~billh/visad.html#intro VisAD] - A Java component library for interactive and collaborative visualization.
+
* [http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=LinguineMaps Linguine Maps] - An open-source Java-based system for visualizing software call maps.
+
* [http://zvtm.sourceforge.net/index.html Zoomable Visual Transformation Machine] - Java. Originally started at Xerox Research Europe.
+
* [http://openmap.bbn.com/ OpenMap] A Java-based Geographical Information System framework, from [[BBN]].
+
===JavaScript===
+
* [http://mbostock.github.com/d3/ D3 - Data Driven Documents] - A visualization library for the Web.
+
* [http://key-lines.com KeyLines] - Commercially licensed visualization library for networks/graphs.
+
  
===Python===
+
The Chrome Cache contains different files with the following file names:
* [http://networkx.lanl.gov/ NetworkX], a pure Python network layout program which uses matplotlib to do the actual graphing.
+
* index
 +
* data_#; where # contains a decimal digit.
 +
* f_######; where # contains a hexadecimal digit.
  
===Unclassified===
+
For more info see Chrome developers site [http://www.chromium.org/developers/design-documents/network-stack/disk-cache].
* [http://gravisto.fim.uni-passau.de/ Gravisto: Graph Visualization Toolkit] - An editor and toolkit for developing graph visualization algorithms.
+
* [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.
+
  
==Journals and Conferences==
+
== History ==
* [http://www.palgrave-journals.com/ivs/index.html Information Visualization Journal]
+
Chrome stores the history of visited sites in a file named '''History'''. This file uses the [[SQLite database format]].
* [http://rw4.cs.uni-sb.de/~diehl/softvis/seminar/index.php?goto=seminar ACM Symposium on Software Visualization]
+
==Research Groups==
+
===Berkeley===
+
* [http://bailando.sims.berkeley.edu/infovis.html Bailando Visualization]
+
* [http://vis.berkeley.edu/ Berkeley Visualization Lab]
+
===Brown===
+
* [http://www.cs.brown.edu/people/rt/gd.html Roberto Tamassia's resources on Graph Drawing]
+
===Stanford===
+
* [http://window.stanford.edu/projects/rivet/ Rivet Project] (Visualization complex systems)
+
===UNM===
+
* [http://www.msi.umn.edu/user_support/scivis/scivis-list.html Scientific Visualization at the Supercomputing Institute]
+
===Wattenberg===
+
* [http://www.bewitched.com/ Bewitched], a one-man research group.
+
==See Also==
+
* [[Network Data Visualizations]]
+
* [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]
+
* [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]
+
* [http://www.insna.org/INSNA/soft_inf.html INSNA's web page of Computer Programs for Social Network Analysis]
+
* http://www.dmoz.org/Science/Math/Combinatorics/Software/Graph_Drawing/
+
* http://www.ontopia.net/omnigator/models/index.jsp
+
* http://visant.bu.edu/
+
* http://sourceforge.net/projects/touchgraph/
+
* [http://www.informatik.uni-rostock.de/~ct/ Christian Tominski]
+
  
CAIDA has 15+ years of work visualizing Internet topologies. You may find their tools to be useful:
+
The '''History''' file can be found in same location as the '''Preferences''' file.
* http://www.caida.org/tools/visualization/
+
 
* http://www.caida.org/publications/visualizations/
+
There is also '''Archived History''' that predates information in the '''History''' file.
* http://www.caida.org/tools/visualization/walrus/gallery1/
+
Note that the '''Archived History''' only contains visits.
* http://www.caida.org/research/topology/as_core_network/
+
 
 +
=== 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