Exemple #1
0
    def testBasicParsingOldFormat(self):
        """Test we can parse a standard file."""
        history_file = os.path.join(self.base_path, "parser_test", "History")
        history = chrome_history.ChromeParser(open(history_file, "rb"))
        entries = [x for x in history.Parse()]

        try:
            dt1 = datetime.datetime(1970, 1, 1)
            dt1 += datetime.timedelta(microseconds=entries[0][0])
        except (TypeError, ValueError):
            dt1 = entries[0][0]

        try:
            dt2 = datetime.datetime(1970, 1, 1)
            dt2 += datetime.timedelta(microseconds=entries[-1][0])
        except (TypeError, ValueError):
            dt2 = entries[-1][0]

        # Check that our results are properly time ordered
        time_results = [x[0] for x in entries]
        self.assertEqual(time_results, sorted(time_results))

        self.assertEqual(str(dt1), "2011-04-07 12:03:11")
        self.assertEqual(entries[0][2],
                         "http://start.ubuntu.com/10.04/Google/")

        self.assertEqual(str(dt2), "2011-05-23 08:37:27.061516")
        self.assertTrue(entries[-1][2].startswith(
            "https://chrome.google.com/webs"
            "tore/detail/mfjkgbjaikamkkojmak"
            "jclmkianficch"))

        self.assertEqual(len(entries), 71)
Exemple #2
0
    def testBasicParsing(self):
        """Test we can parse a standard file."""
        history_file = os.path.join(self.base_path, "parser_test", "History2")
        history = chrome_history.ChromeParser(open(history_file, "rb"))
        entries = [x for x in history.Parse()]

        try:
            dt1 = datetime.datetime(1970, 1, 1)
            dt1 += datetime.timedelta(microseconds=entries[0][0])
        except (TypeError, ValueError):
            dt1 = entries[0][0]

        try:
            dt2 = datetime.datetime(1970, 1, 1)
            dt2 += datetime.timedelta(microseconds=entries[-1][0])
        except (TypeError, ValueError):
            dt2 = entries[-1][0]

        # Check that our results are properly time ordered
        time_results = [x[0] for x in entries]
        self.assertEqual(time_results, sorted(time_results))

        self.assertEqual(str(dt1), "2013-05-03 15:11:26.556635")
        self.assertTrue(entries[0][2].startswith(
            "https://www.google.ch/search?q=why+you+shouldn"))

        self.assertEqual(str(dt2), "2013-05-03 15:11:39.763984")
        self.assertTrue(entries[-1][2].startswith("http://www.test.ch/"))

        self.assertEqual(len(entries), 4)
Exemple #3
0
    def testBasicParsingOldFormat(self):
        """Test we can parse a standard file."""
        history_file = os.path.join(self.base_path, "History")
        history = chrome_history.ChromeParser(open(history_file))
        entries = [x for x in history.Parse()]

        try:
            dt1 = datetime.datetime(1970, 1, 1)
            dt1 += datetime.timedelta(microseconds=entries[0][0])
        except TypeError:
            dt1 = entries[0][0]
        except ValueError:
            dt1 = entries[0][0]

        try:
            dt2 = datetime.datetime(1970, 1, 1)
            dt2 += datetime.timedelta(microseconds=entries[-1][0])
        except TypeError:
            dt2 = entries[-1][0]
        except ValueError:
            dt2 = entries[-1][0]

        self.assertEquals(str(dt1), "2011-04-07 12:03:11")
        self.assertEquals(entries[0][2],
                          "http://start.ubuntu.com/10.04/Google/")

        self.assertEquals(str(dt2), "2011-05-23 08:36:05")
        self.assertEquals(entries[-1][2],
                          "http://www.photoscreensavers.us/Cats%20Demo.exe")

        self.assertEquals(len(entries), 71)
Exemple #4
0
    def testBasicParsing(self):
        """Test we can parse a standard file."""
        history_file = os.path.join(self.base_path, "History2")
        history = chrome_history.ChromeParser(open(history_file))
        entries = [x for x in history.Parse()]

        try:
            dt1 = datetime.datetime(1970, 1, 1)
            dt1 += datetime.timedelta(microseconds=entries[0][0])
        except TypeError:
            dt1 = entries[0][0]
        except ValueError:
            dt1 = entries[0][0]

        try:
            dt2 = datetime.datetime(1970, 1, 1)
            dt2 += datetime.timedelta(microseconds=entries[-1][0])
        except TypeError:
            dt2 = entries[-1][0]
        except ValueError:
            dt2 = entries[-1][0]

        self.assertEquals(str(dt1), "2013-05-03 15:11:26.556635")

        self.assertTrue(entries[0][2].startswith(
            "https://www.google.ch/search?q=why+you+shouldn"))

        self.assertEquals(str(dt2), "2013-05-03 15:11:39.763984")
        self.assertTrue(entries[-1][2].startswith("http://www.test.ch/"))
        self.assertEquals(len(entries), 4)
Exemple #5
0
    def testTimeOrderingDownload(self):
        """Test we can correctly time order downloads and visits."""
        history_file = os.path.join(self.base_path, "parser_test", "History3")
        history = chrome_history.ChromeParser(open(history_file, "rb"))
        entries = [x for x in history.Parse()]

        # Check that our results are properly time ordered
        time_results = [x[0] for x in entries]
        self.assertEqual(time_results, sorted(time_results))
        self.assertEqual(len(entries), 23)
Exemple #6
0
  def ParseFiles(self, responses):
    """Take each file we retrieved and get the history from it."""
    # Note that some of these Find requests will fail because some paths don't
    # exist, e.g. Chromium on most machines, so we don't check for success.
    if responses:
      for response in responses:
        fd = aff4.FACTORY.Open(
            response.stat_entry.AFF4Path(self.client_id), token=self.token)
        hist = chrome_history.ChromeParser(fd)
        count = 0
        for epoch64, dtype, url, dat1, dat2, dat3 in hist.Parse():
          count += 1
          str_entry = "%s %s %s %s %s %s" % (
              datetime.datetime.utcfromtimestamp(epoch64 / 1e6), url, dat1,
              dat2, dat3, dtype)
          self.SendReply(rdfvalue.RDFString(utils.SmartStr(str_entry)))

        self.Log("Wrote %d Chrome History entries for user %s from %s", count,
                 self.args.username, response.stat_entry.pathspec.Basename())
        self.state.hist_count += count