예제 #1
0
파일: vfs_test.py 프로젝트: avmi/grr
  def testMultiChunkDecoder(self):
    self.Touch("fs/os/quux", b"QUUX" * 100)
    self.Touch("fs/os/thud", b"THUD" * 100)

    class BarDecoder(decoders.AbstractDecoder):

      def Check(self, filedesc):
        del filedesc  # Unused.
        raise NotImplementedError()

      def Decode(self, filedesc):
        while True:
          chunk = filedesc.Read(4)
          if not chunk:
            return

          if chunk == b"QUUX":
            yield b"NORF"

          if chunk == b"THUD":
            yield b"BLARGH"

    decoders.FACTORY.Register("Bar", BarDecoder)

    args = vfs_plugin.ApiGetDecodedFileArgs()
    args.client_id = self.client_id
    args.decoder_name = "Bar"

    args.file_path = "fs/os/quux"
    self.assertEqual(self._Result(args), b"NORF" * 100)

    args.file_path = "fs/os/thud"
    self.assertEqual(self._Result(args), b"BLARGH" * 100)
예제 #2
0
파일: vfs_test.py 프로젝트: avmi/grr
  def testUnknownDecoder(self):
    self.Touch("fs/os/baz")

    args = vfs_plugin.ApiGetDecodedFileArgs()
    args.client_id = self.client_id
    args.file_path = "fs/os/baz"
    args.decoder_name = "Baz"

    with self.assertRaisesRegex(ValueError, "'Baz'"):
      self._Result(args)
예제 #3
0
    def testSimpleDecoder(self):
        self.Touch("fs/os/foo", b"foo")

        class FooDecoder(decoders.AbstractDecoder):
            def Check(self, filedesc):
                del filedesc  # Unused.
                raise NotImplementedError()

            def Decode(self, filedesc):
                del filedesc  # Unused.
                yield b"bar"

        decoders.FACTORY.Register("Foo", FooDecoder)

        args = vfs_plugin.ApiGetDecodedFileArgs()
        args.client_id = self.client_id
        args.file_path = "fs/os/foo"
        args.decoder_name = "Foo"

        self.assertEqual(self._Result(args), b"bar")