Esempio n. 1
0
def grr_list_artifacts_impl() -> pd.DataFrame:
    """Lists all registered GRR artifacts.

  Returns:
    A list of artifact descriptors.
  """
    df = convert.from_sequence(grr_colab.list_artifacts())

    priority_columns = [
        'artifact.name',
        'artifact.doc',
        'artifact.supported_os',
        'artifact.labels',
    ]
    df = convert.reindex_dataframe(df, priority_columns=priority_columns)

    return df
Esempio n. 2
0
def grr_search_clients_impl(
        ip: Optional[Text] = None,
        mac: Optional[Text] = None,
        host: Optional[Text] = None,
        user: Optional[Text] = None,
        version: Optional[Text] = None,
        labels: Optional[List[Text]] = None) -> pd.DataFrame:
    """Searches for clients with specified keywords.

  Args:
    ip: IP address.
    mac: MAC address.
    host: Hostname.
    user: Username.
    version: Client version.
    labels: List of client labels.

  Returns:
    List of clients.
  """
    clients = grr_colab.Client.search(ip=ip,
                                      mac=mac,
                                      host=host,
                                      user=user,
                                      version=version,
                                      labels=labels)
    clients_data = [_._client.data for _ in clients]  # pylint: disable=protected-access

    df = convert.from_sequence(clients_data)

    _add_last_seen_column(df)
    _add_online_status_columns(df)

    priority_columns = [
        'online.pretty', 'online', 'client_id', 'last_seen_ago',
        'last_seen_at.pretty', 'knowledge_base.fqdn', 'os_info.version'
    ]
    df = convert.reindex_dataframe(df, priority_columns=priority_columns)

    if 'last_seen_at' in df.columns:
        return df.sort_values(by='last_seen_at',
                              ascending=False).reset_index(drop=True)
    return df