示例#1
0
  def GenerateUploadRequest(
      self, offset: int, file_size: int, blob: rdf_crypto.SignedBlob
  ) -> Tuple[rdf_structs.RDFProtoStruct, Type[server_stubs.ClientActionStub]]:
    request = rdf_client_action.ExecuteBinaryRequest(
        executable=blob,
        offset=offset,
        write_path=self.state.write_path,
        more_data=(offset + len(blob.data) < file_size),
        use_client_env=False)

    return request, server_stubs.UpdateAgent
示例#2
0
    def GenerateUploadRequest(self, offset: int, file_size: int,
                              blob: rdf_crypto.SignedBlob):
        # RecursiveBlobUploadMixin expected this function to be overridden.
        request = rdf_client_action.ExecuteBinaryRequest(
            executable=blob,
            args=shlex.split(self.args.command_line),
            offset=offset,
            write_path=self.state.write_path,
            use_client_env=False,
            more_data=(offset + len(blob.data) < file_size))

        return request, server_stubs.ExecuteBinaryCommand
示例#3
0
  def testExecuteBinary(self):
    """Test the basic ExecuteBinaryCommand action."""
    signed_blob = rdf_crypto.SignedBlob()
    signed_blob.Sign(open("/bin/ls", "rb").read(), self.signing_key)

    request = rdf_client_action.ExecuteBinaryRequest(
        executable=signed_blob, args=[__file__], write_path="ablob")

    result = self.RunAction(standard.ExecuteBinaryCommand, request)[0]

    self.assertTrue(result.time_used > 0)
    self.assertTrue(__file__ in result.stdout)
示例#4
0
  def testExecuteBinary(self):
    """Test the basic ExecuteBinaryCommand action."""
    signed_blob = rdf_crypto.SignedBlob()
    signed_blob.Sign(open("/bin/ls", "rb").read(), self.signing_key)

    filepath = __file__.encode(sys.getfilesystemencoding())

    request = rdf_client_action.ExecuteBinaryRequest(
        executable=signed_blob, args=[filepath], write_path="ablob")

    result = self.RunAction(standard.ExecuteBinaryCommand, request)[0]

    self.assertGreater(result.time_used, 0)
    self.assertIn(filepath, result.stdout)
示例#5
0
  def testExecuteBinary(self):
    """Test the basic ExecuteBinaryCommand action."""
    if platform.system() == "Windows":
      cmd, args = r"C:\Windows\System32\cmd.exe", ["/C", "echo", "foobar"]
    else:
      cmd, args = "/bin/echo", ["foobar"]

    signed_blob = rdf_crypto.SignedBlob()
    signed_blob.Sign(open(cmd, "rb").read(), self.signing_key)

    request = rdf_client_action.ExecuteBinaryRequest(
        executable=signed_blob, args=args, write_path="ablob")

    result = self.RunAction(standard.ExecuteBinaryCommand, request)[0]

    if platform.system() != "Windows":  # Windows time resolution is too coarse.
      self.assertGreater(result.time_used, 0)
    self.assertEqual("foobar{}".format(os.linesep).encode("utf-8"),
                     result.stdout)