Giter VIP home page Giter VIP logo

openconnect-sso's Introduction

openconnect-sso

Wrapper script for OpenConnect supporting Azure AD (SAMLv2) authentication to Cisco SSL-VPNs

Tests Status

Installation

Using pip/pipx

A generic way that works on most 'standard' Linux distributions out of the box. The following example shows how to install openconect-sso along with its dependencies including Qt:

$ pip install --user pipx
Successfully installed pipx
$ pipx install "openconnect-sso[full]"
⣾ installing openconnect-sso
  installed package openconnect-sso 0.4.0, Python 3.7.5
  These apps are now globally available
    - openconnect-sso
⚠️  Note: '/home/vlaci/.local/bin' is not on your PATH environment variable.
These apps will not be globally accessible until your PATH is updated. Run
`pipx ensurepath` to automatically add it, or manually modify your PATH in your
shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
Successfully installed openconnect-sso
$ pipx ensurepath
Success! Added /home/vlaci/.local/bin to the PATH environment variable.
Consider adding shell completions for pipx. Run 'pipx completions' for
instructions.

You likely need to open a new terminal or re-login for the changes to take
effect. ✨ 🌟 ✨

Of course you can also install via pip instead of pipx if you'd like to install system-wide or a virtualenv of your choice.

On Arch Linux

There is an unofficial package available for Arch Linux on AUR. You can use your favorite AUR helper to install it:

yay -S openconnect-sso

Using nix

The easiest method to try is by installing directly:

$ nix-env -i -f https://github.com/vlaci/openconnect-sso/archive/master.tar.gz
unpacking 'https://github.com/vlaci/openconnect-sso/archive/master.tar.gz'...
[...]
installing 'openconnect-sso-0.4.0'
these derivations will be built:
  /nix/store/2z47740z1rr2cfqfin5lnq04sq3c5xjg-openconnect-sso-0.4.0.drv
[...]
building '/nix/store/50q496iqf840wi8b95cfmgn07k6y5b59-user-environment.drv'...
created 606 symlinks in user environment
$ openconnect-sso

An overlay is also available to use in nix expressions:

let
  openconnectOverlay = import "${builtins.fetchTarball https://github.com/vlaci/openconnect-sso/archive/master.tar.gz}/overlay.nix";
  pkgs = import <nixpkgs> { overlays = [ openconnectOverlay ]; };
in
  #  pkgs.openconnect-sso is available in this context

... or to use in configuration.nix:

{ config, ... }:

{
  nixpkgs.overlays = [
    (import "${builtins.fetchTarball https://github.com/vlaci/openconnect-sso/archive/master.tar.gz}/overlay.nix")
  ];
}

Windows (EXPERIMENTAL)

Install with pip/pipx and be sure that you have sudo and openconnect executable commands in your PATH.

Usage

If you want to save credentials and get them automatically injected in the web browser:

$ openconnect-sso --server vpn.server.com/group --user [email protected]
Password ([email protected]):
[info     ] Authenticating to VPN endpoint ...

User credentials are automatically saved to the users login keyring (if available).

If you already have Cisco AnyConnect set-up, then --server argument is optional. Also, the last used --server address is saved between sessions so there is no need to always type in the same arguments:

$ openconnect-sso
[info     ] Authenticating to VPN endpoint ...

Configuration is saved in $XDG_CONFIG_HOME/openconnect-sso/config.toml. On typical Linux installations it is located under $HOME/.config/openconnect-sso/config.toml

For CISCO-VPN and TOTP the following seems to work by tuning the config.toml and removing the default "submit"-action to the following:

[[auto_fill_rules."https://*"]]
selector = "input[data-report-event=Signin_Submit]"
action = "click"

[[auto_fill_rules."https://*"]]
selector = "input[type=tel]"
fill = "totp"

Adding custom openconnect arguments

Sometimes you need to add custom openconnect arguments. One situation can be if you get similar error messages:

Failed to read from SSL socket: The transmitted packet is too large (EMSGSIZE).
Failed to recv DPD request (-5)

or:

Detected MTU of 1370 bytes (was 1406)

Generally, you can add openconnect arguments after the -- separator. This is called "positional arguments". The solution of the previous errors is setting --base-mtu e.g.:

openconnect-sso --server vpn.server.com/group --user [email protected] -- --base-mtu=1370
#                                                          separator ^^|^^^^^^^^^^^^^^^ openconnect args

Development

openconnect-sso is developed using Nix. Refer to the Quick Start section of the Nix manual to see how to get it installed on your machine.

To get dropped into a development environment, just type nix-shell:

$ nix-shell
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pip-build-hook
Using pipBuildPhase
Sourcing pip-install-hook
Using pipInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Run 'make help' for available commands

[nix-shell]$

To try an installed version of the package, issue nix-build:

$ nix build
[1 built, 0.0 MiB DL]

$ result/bin/openconnect-sso --help

Alternatively you may just get Poetry and start developing by using the included Makefile. Type make help to see the possible make targets.

openconnect-sso's People

Contributors

anishsane avatar billksun avatar bondicha avatar brendon-boldt avatar chadykamar avatar dependabot[bot] avatar dimitripapadopoulos avatar duhdugg avatar epichub avatar fchris82 avatar hexop avatar jcszymansk avatar jherland avatar johnrigoni avatar krisztian-kovacs avatar ladynamedlaura avatar marekdedic avatar maximdeclercq avatar maximus64 avatar mranno avatar olaf-b avatar pamarlie avatar rschmied avatar tresni avatar vlaci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openconnect-sso's Issues

Server certificate verify failed: signer not found

I've had been using openconnect-sso for connecting to a single vpn server for a couple of months now without any issues.
Recently I started getting the following error:

$ openconnect-sso --server vpn.xxx.xxx -l debug
...
Connected to xxx.xxx.xxx.xxx
SSL negotiation with vpn.xxx.xxx
Server certificate verify failed: signer not found
Server SSL certificate didn't match: pin-sha256:PIN/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
SSL connection failure: Error in the certificate.
Creating SSL connection failed

I haven't updated its version since I started using it:

$ openconnect-sso --version
openconnect-sso 0.6.0

Nix overlay is not working

I added the nix overlay to my configuration.nix:

  nixpkgs.overlays = [
    (import "${builtins.fetchTarball https://github.com/vlaci/openconnect-sso/archive/master.tar.gz}/overlay.nix")
  ];
  environment.systemPackages = with pkgs; [
    openconnect-sso
    ntfs3g
    home-manager
    lm_sensors
    wget
    firefox
    plasma-browser-integration
  ];

And I got this output:

❯ sudo nixos-rebuild switch 
unpacking 'https://github.com/vlaci/openconnect-sso/archive/master.tar.gz'...
building Nix...
building the system configuration...
error: getting status of '/nix/store/1yy3gl756gbkdvqx8y4gkfki28ag59dp-source/lib.nix': No such file or directory

Installing via nix-env works fine.

AttributeError: 'NoneType' object has no attribute 'password'

If I start the script (version 0.7.1) without the option -u to prevent the first "Initiating autologin" I got this error. The version 0.7.0 is working well.

openconnect-sso --server myServer
Traceback (most recent call last):
 File "/nix/store/pqzf8bpv74s309hlnv0iis09760f4107-python3.8-openconnect-sso-0.7.1/bin/.openconnect-sso-wrapped", line 9, in <module>
   sys.exit(main())
 File "/nix/store/pqzf8bpv74s309hlnv0iis09760f4107-python3.8-openconnect-sso-0.7.1/lib/python3.8/site-packages/openconnect_sso/cli.py", line 169, in main
   return app.run(args)
 File "/nix/store/pqzf8bpv74s309hlnv0iis09760f4107-python3.8-openconnect-sso-0.7.1/lib/python3.8/site-packages/openconnect_sso/app.py", line 34, in run
   auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
 File "/nix/store/v72cj06nk69cynckz2s12rhar25k1h7v-python3-3.8.5/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
   return future.result()
File "/nix/store/pqzf8bpv74s309hlnv0iis09760f4107-python3.8-openconnect-sso-0.7.1/lib/python3.8/site-packages/openconnect_sso/app.py", line 112, in _run
   if not credentials.password:
AttributeError: 'NoneType' object has no attribute 'password'

stack trace when authentication fails

When authentication fails with an error, I am hitting a stack trace like below.
The xml auth element contains <error id="109">Single sign-on AnyConnect token verification failure.</error>

$ rm -Rf ~/.config/openconnect-sso/ ;
$ _openconnect-sso_ --log-level=debug --server=xxx-xxx-xxxxxxx.xxxxx.xxx/xxx
...
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
[error   ] Error occurred during authentication. Invalid response type in state [openconnect_sso.authenticator] response=AuthRequestResponse(auth_id='main', auth_title='Login', auth_message='Please complete the authentication process in the AnyConnect Login window.', login_url='https://xxxxx-xxx-xxxxxxx-x.xxxxxx.xxx/+XXXXX+/saml/sp/login?tgname=SSL_Profile&acsamlcap=v2', login_final_url='https://xxxxx-xxx-xxxxxxx-x.xxxxx.xxx/+XXXXX+/saml_ac_login.html', token_cookie_name='acSamlv2Token', opaque=<Element opaque at 0x7f9580330cc8>) state=<STATE CompleteAuthentication>
[debug    ] Entering state                 [openconnect_sso.authenticator] state=<STATE StartAuthentication>
Traceback (most recent call last):
  File "openconnect-sso/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "openconnect-sso/lib/python3.6/site-packages/openconnect_sso/cli.py", line 128, in main
    return _app.run(args)_
  File "openconnect-sso/lib/python3.6/site-packages/openconnect_sso/app.py", line 27, in run
    return asyncio.get_event_loop().run_until_complete(_run(args))
  File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
    return future.result()
  File "openconnect-sso/lib/python3.6/site-packages/openconnect_sso/app.py", line 87, in _run
    session_token = await authenticate_to(selected_profile, credentials)
  File "openconnect-sso/lib/python3.6/site-packages/openconnect_sso/authenticator.py", line 24, in authenticate
    self.auth_state = await self.auth_state.trigger()
  File "openconnect-sso/lib/python3.6/site-packages/openconnect_sso/authenticator.py", line 64, in trigger
    logger.debug("Auth started", url=self.authenticator.host.vpn_url)
AttributeError: 'NoneType' object has no attribute 'host'

Broken in Fedora 35 - Blank browser

I updated my workstation from Fedora 33 to Fedora 35. The program worked fine on 33, however on 35, the browser window that opens is completely blank. Resizing the window or trying keyboard shortcuts doesn't seem fix anything, and the debug logs are stuck on "Waiting for browser".

I've tested this with python versions 3.6-3.10, it's all the same issue.

Broken on debian testing - SSO web browser window is empty

I am successfully using openconnect-sso on Debian stable (10/buster) on multiple computers doing SSO. However, on Debian testing when I'm trying to connect the web browser window opens up but is empty - it simply fails to render anything. I get an empty windows, like I just see the window border but no content at all.

I'm running debian testing with xmonad window manager. I am following the install instructions with pipx install etc.

How do I start debugging this? What dependencies are used to display the browser window - I guess I could try pinning some version or similar. Thankful for any pointers!

getpass.py error

I don't understand why this is an error...keyrings.alt-4.0.2 is installed, yet I don't get the login window.

Arch Linux - Zen-kernel - XPS 9570 i7

Warning: Password input may be echoed.
Password ($USER): Traceback (most recent call last):
  File "/usr/lib/python3.9/getpass.py", line 76, in unix_getpass
    termios.tcsetattr(fd, tcsetattr_flags, new)
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.9/getpass.py", line 79, in unix_getpass
    termios.tcsetattr(fd, tcsetattr_flags, old)
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/openconnect-sso", line 33, in <module>
    sys.exit(load_entry_point('openconnect-sso==0.6.2', 'console_scripts', 'openconnect-sso')())
  File "/usr/lib/python3.9/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 111, in _run
    credentials.password = getpass.getpass(prompt=f"Password ({args.user}): ")
  File "/usr/lib/python3.9/getpass.py", line 91, in unix_getpass
    passwd = fallback_getpass(prompt, stream)
  File "/usr/lib/python3.9/getpass.py", line 126, in fallback_getpass
    return _raw_input(prompt, stream)
  File "/usr/lib/python3.9/getpass.py", line 148, in _raw_input
    raise EOFError
EOFError

Autofilled fields not accepted until modified "by hand"

When autofilling, the form displays the errors "Please enter a username" and "Please enter a password". If I modify the field (e.g., type a space at the end and then delete it), then the values that were autofilled are accepted. I had similar problems when remembering passwords with epiphany (same okta implementation), so it may be a webkit issue. The okta server in question is http://okta.nd.edu. Is this fixable in openconnect-sso, or do I need to report upstream?

[Bug] keyring.errors.NoKeyringError: No recommended backend was available

Fresh kubuntu 20.04 VM gets the below error. It seems like either there's a bug or the README needs to be updated to indicate a keyring is required (not just used if available)

from the README: Usage

User credentials are automatically saved to the users login keyring (if available).

sudo apt update && \
sudo apt install python3 python3-pip python3-venv -y && \
python3 -m pip install --upgrade pip && \
python3 -m pip install pipx && \
python3 -m pipx ensurepath && \
pipx install "openconnect-sso[full]" && \
openconnect-sso --server **** --user ****
Password (****): 
Traceback (most recent call last):
  File "/home/******/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/******/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/home/******/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/******/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 111, in _run
    credentials.password = getpass.getpass(prompt=f"Password ({args.user}): ")
  File "/home/******/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/config.py", line 105, in password
    keyring.set_password(APP_NAME, self.username, value)
  File "/home/******/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/keyring/core.py", line 60, in set_password
    get_keyring().set_password(service_name, username, password)
  File "/home/******/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/keyring/backends/fail.py", line 25, in get_password
    raise NoKeyringError(msg)
keyring.errors.NoKeyringError: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.

Installation via Nix overlay does not work on NixOS 20.09

Trying to install openconnect-sso via home-manager on my NixOS 20.09 (the current stable NixOS version) like this:

{ pkgs, ...}:
{
  nixpkgs.overlays = [
    (import "${builtins.fetchTarball https://github.com/vlaci/openconnect-sso/archive/master.tar.gz}/overlay.nix")
  ];
  home.packages = with pkgs; [ openconnect-sso ];
}

fails (after lots of build activity with:

Processing ./openconnect_sso-0.7.1-py3-none-any.whl
...
ERROR: Could not find a version that satisfies the requirement keyring<23.0.0,>=21.1 (from openconnect-sso==0.7.1) (from versions: none)
ERROR: No matching distribution found for keyring<23.0.0,>=21.1 (from openconnect-sso==0.7.1)
builder for '/nix/store/35r2gwjkp2srq1z4xgnrli6xss1vhllz-python3.8-openconnect-sso-0.7.1.drv' failed with exit code 1
...

I don't immediately see why this should fail. If I nix-shell -p python38Packages.keyring on my NixOS 20.09 I get keyring v21.3.1 which should satisfy openconnect-sso's requirement. I've tried this on a couple of machines, and also via home-manager or from /etc/nixos/configuration.nix, still with the same build failure.

There are multiple workarounds:

  • Install via nix-env
  • Apply the overlay to a different NixOS version. Both 20.03 and unstable seems to work for me.

For now I am running with this (which works well for me):

{ pkgs, ...}:

let
  openconnect-sso-src = builtins.fetchTarball "https://github.com/vlaci/openconnect-sso/archive/master.tar.gz";
  unstablePkgs = import <nixos-unstable> {
    overlays = [
        (import "${openconnect-sso-src}/overlay.nix")
    ];
  };

in
{
  home.packages = [ unstablePkgs.openconnect-sso ];
}

openconnect-sso 0.6.2 requires structlog<21.0,>=20.1, but you have structlog 21.1.0 which is incompatible.

I tried going back to stuctlog-20.1, this threw another error. I thought it be good to post this as an issue.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/openconnect-sso", line 33, in <module>
    sys.exit(load_entry_point('openconnect-sso==0.6.2', 'console_scripts', 'openconnect-sso')())
  File "/usr/bin/openconnect-sso", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/lib/python3.9/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/usr/lib/python3.9/site-packages/openconnect_sso/cli.py", line 10, in <module>
    from openconnect_sso import app, config, __version__
  File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 16, in <module>
    from openconnect_sso.authenticator import Authenticator, AuthResponseError
  File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 6, in <module>
    from openconnect_sso.saml_authenticator import authenticate_in_browser
  File "/usr/lib/python3.9/site-packages/openconnect_sso/saml_authenticator.py", line 3, in <module>
    from openconnect_sso.browser import Browser
  File "/usr/lib/python3.9/site-packages/openconnect_sso/browser/__init__.py", line 1, in <module>
    from .browser import Browser, DisplayMode, Terminated
  File "/usr/lib/python3.9/site-packages/openconnect_sso/browser/browser.py", line 5, in <module>
    from . import webengine_process as web
  File "/usr/lib/python3.9/site-packages/openconnect_sso/browser/webengine_process.py", line 9, in <module>
    import pkg_resources
  File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3243, in <module>
    def _initialize_master_working_set():
  File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3226, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3255, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 570, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 583, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 772, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'structlog<21.0,>=20.1' distribution was not found and is required by openconnect-sso

Error on connection. Help needed to start investigating

First of all, thanks for the great wrapper.
I am using Cisco AnyConnect successfully, but having troubles with the docker network, so trying to use openconnect.

OpenConnect-sso: 0.7.3
OS: Linux Mint 20.1
Kernel: 5.4.0-72

As I have a working Cisco AnyConnect profile, I tried to connect using:

$ openconnect-sso
[info     ] Loading profiles from file     [openconnect_sso.profile] path=XXXX-Profile.xml
Traceback (most recent call last):
  File "/home/user/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 119, in _run
    profiles = get_profiles(Path(args.profile_path))
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/profile.py", line 47, in get_profiles
    profiles.extend(_get_profiles_from_one_file(p))
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/profile.py", line 29, in _get_profiles_from_one_file
    user_group=entry.UserGroup,
  File "src/lxml/objectify.pyx", line 231, in lxml.objectify.ObjectifiedElement.__getattr__
  File "src/lxml/objectify.pyx", line 450, in lxml.objectify._lookupChildOrRaise
AttributeError: no such child: {http://schemas.xmlsoap.org/encoding/}UserGroup

I have also tried connecting as anew:

$ openconnect-sso --server yyyyyyyyy.vpn.xxxxxxxx.com -l debug
Using selector: EpollSelector
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=yyyyyyyyy.vpn.xxxxxxxx.com name=
Starting new HTTPS connection (1): yyyyyyyyy.vpn.xxxxxxxx.com:443
https://yyyyyyyyy.vpn.xxxxxxxx.com:443 "GET / HTTP/1.1" 302 0
Starting new HTTPS connection (1): abc1.vpn.xxxxxxxx.com:443
https://abc1.vpn.xxxxxxxx.com:443 "GET / HTTP/1.1" 200 None
[debug    ] Auth target url                [openconnect_sso.authenticator] url=https://abc1.vpn.xxxxxxxx.com/
[debug    ] Sending auth init request      [openconnect_sso.authenticator] content=b'<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<config-auth client="vpn" type="init" aggregate-auth-version="2">\n  <version who="vpn">4.7.00136</version>\n  <device-id>linux-64</device-id>\n  <group-select></group-select>\n  <group-access>https://abc1.vpn.xxxxxxxx.com/</group-access>\n  <capabilities>\n    <auth-method>single-sign-on-v2</auth-method>\n  </capabilities>\n</config-auth>\n'
Starting new HTTPS connection (1): abc1.vpn.xxxxxxxx.com:443
https://abc1.vpn.xxxxxxxx.com:443 "POST / HTTP/1.1" 200 None
[debug    ] Auth init response received    [openconnect_sso.authenticator] content=b'<?xml version="1.0" encoding="UTF-8"?>\n<config-auth client="vpn" type="auth-request" aggregate-auth-version="2">\n<client-cert-request></client-cert-request>\n</config-auth>\n'
Traceback (most recent call last):
  File "/home/user/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 139, in _run
    auth_response = await authenticate_to(
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 22, in authenticate
    response = self._start_authentication()
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 67, in _start_authentication
    return parse_response(response)
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 140, in parse_response
    return parse_auth_request_response(xml)
  File "/home/user/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 146, in parse_auth_request_response
    assert xml.auth.get("id") == "main"
  File "src/lxml/objectify.pyx", line 231, in lxml.objectify.ObjectifiedElement.__getattr__
  File "src/lxml/objectify.pyx", line 450, in lxml.objectify._lookupChildOrRaise
AttributeError: no such child: auth

Any pointers for troubleshooting?

Azure AD SSO asking me to "stay signed in" breaks flow

Hi there,

we're using some O365 AD with custom login pages, which seem to work flawlessly. However, after the 2FA confirmation using MS Authenticator App the page asking me if I want to "stay signed in" loads in the modal and then disappears every time before I can confirm. This effectively seems to break the flow.

This is the last message on the CLI:

[info ] Browser exited [openconnect_sso.browser.browser]
[info ] Response received [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=
[error ] Could not finish authentication. Invalid response type in current state [openconnect_sso.authenticator] response=AuthRequestResponse(auth_id='main', auth_title='', auth_message='Please complete the authentication process in the AnyConnect Login window.', auth_error='Single sign-on AnyConnect token verification failure.', login_url='https://vpn.....de/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&acsamlcap=v2', login_final_url='https://vpn.....de/+CSCOE+/saml_ac_login.html', token_cookie_name='...', opaque=<Element opaque at 0x7f594cae2c40>)
Traceback (most recent call last):
File "/usr/bin/openconnect-sso", line 33, in
sys.exit(load_entry_point('openconnect-sso==0.6.0', 'console_scripts', 'openconnect-sso')())
File "/usr/lib/python3.9/site-packages/openconnect_sso/cli.py", line 169, in main
return app.run(args)
File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 34, in run
auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 137, in _run
auth_response = await authenticate_to(
File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 50, in authenticate
raise AuthenticationError(response)
openconnect_sso.authenticator.AuthenticationError: AuthRequestResponse(auth_id='main', auth_title='', auth_message='Please complete the authentication process in the AnyConnect Login window.', auth_error='Single sign-on AnyConnect token verification failure.', login_url='https://vpn.....de/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&acsamlcap=v2', login_final_url='https://vpn.....de/+CSCOE+/saml_ac_login.html', token_cookie_name='acSamlv2Token', opaque=<Element opaque at 0x7f594cae2c40>)

As no configuration file is created (I presume only after the first successful login), I don't know where to modify settings or explore configuration options. Any ideas what I could try next? Thanks in advance!

"Keys" being pressed in authentication window

Hello all,

I fired up openconnect-sso today for the first time, so I have very little history with it. I'm trying to connect to my school's vpn server from Manjaro. After the window is opened it seems to have buttons pressed continually and I am unable to actually login. The server is vpn.iastate.edu.

Any thoughts?

ModuleNotFoundError: No module named 'pip._vendor.six'

$ pipx install 'openconnect-sso[full]'
Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/lib/python3.8/site-packages/pip/__main__.py", line 16, in <module>
    from pip._internal.cli.main import main as _main  # isort:skip # noqa
  File "/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 10, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/lib/python3.8/site-packages/pip/_internal/cli/autocompletion.py", line 9, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/lib/python3.8/site-packages/pip/_internal/cli/main_parser.py", line 7, in <module>
    from pip._internal.cli import cmdoptions
  File "/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/lib/python3.8/site-packages/pip/_internal/cli/cmdoptions.py", line 24, in <module>
    from pip._internal.exceptions import CommandError
  File "/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/lib/python3.8/site-packages/pip/_internal/exceptions.py", line 10, in <module>
    from pip._vendor.six import iteritems
ModuleNotFoundError: No module named 'pip._vendor.six'
'/home/jbodnar/.local/pipx/venvs/openconnect-sso[full]/bin/python -m pip install --upgrade pip -q' failed

Document or add reference to the workflow

Hi

I would like to motivate the author(s) to either add references to the knowledge/information about the workflow and protocols and their play together, or summarize the documentation in this project.

Knowledge is skill and sharing is inclusion.

Thank you very much!

Error on login XMLSyntaxError

sso

uname -a:

Linux **** 5.4.0-92-generic #103-Ubuntu SMP Fri Nov 26 16:13:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Command

openconnect-sso -l debug --server $VPNURL$/$VPNGROUP$ --user $USER$

Response

openconnect-sso -l debug --server $VPNURL$/$VPNGROUP$ --user $USER$
Using selector: EpollSelector
Loading KWallet
Loading SecretService
Loading Windows
Loading chainer
Loading libsecret
Loading macOS
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=$VPNURL$/$VPNGROUP$ name=
Starting new HTTPS connection (1): $VPNURL$:443
https://$VPNURL$:443 "GET /$VPNGROUP$ HTTP/1.1" 302 0
Resetting dropped connection: $VPNURL$
https://$VPNURL$:443 "GET /dana-na/auth/url_sN53kEnkUiIWOZmm/welcome.cgi HTTP/1.1" 302 None
https://$VPNURL$:443 "GET /dana-na/auth/url_sN53kEnkUiIWOZmm/login.cgi?realm=$VPNGROUP$ HTTP/1.1" 302 None
Starting new HTTPS connection (1): $COMPANY$.$2FAPROVIDER$.com:443
https://$COMPANY$.$2FAPROVIDER$.com:443 "GET /app/389858/sso?SAMLRequest=pZLLTsMwEEV%2FJfI%2BcR6tmlpNUKFCVOJRQcWCDZo6Q2spsY3HofD35IFE2XTD%0A2nc851zNgqCprVi2%2FqAf8b1F8sFnU2sSw0PBWqeFAVIkNDRIwkvxtLy7FWkU%0AC%2BuMN9LULFh1c0qDV0YX7OC9JcH5jhqCyLuWPNbYRNI0HKzlWT7PpzknMiy4%0ANk7isL1gMQvWq4K9zrN5jlhJQJSTWEIsJ%2FCWw3Q6m0G1yyZdjKjFtSYP2hcs%0AjdM0jJMwSbZJLOKJyJIXFmx%2B4C6VrpTenzfZjSESN9vtJtw8PG2HDz5Uhe6%2B%0AS%2F9KHY%2FHyBrnoY5GP42eV6Ah1MChE%2BF9cSHqyhqlfST36sIWZKcseEZHQ0Hd%0ARlYu%2BpwYTNxJ5ec5gQhd3zIr%2Fw204CcEI44Vvex6tTG1kl%2FBsq7N8coh%2BK6A%0AhPFyHPl7LuU3%0A&RelayState=https%3A%2F%2F$VPNURL$%2F$VPNGROUP$ HTTP/1.1" 200 None
[debug    ] Auth target url                [openconnect_sso.authenticator] url=https://$COMPANY$.$2FAPROVIDER$.com/app/389858/sso
[debug    ] Sending auth init request      [openconnect_sso.authenticator] content=b'<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<config-auth client="vpn" type="init" aggregate-auth-version="2">\n  <version who="vpn">4.7.00136</version>\n  <device-id>linux-64</device-id>\n  <group-select></group-select>\n  <group-access>https://$COMPANY$.$2FAPROVIDER$.com/app/389858/sso</group-access>\n  <capabilities>\n    <auth-method>single-sign-on-v2</auth-method>\n  </capabilities>\n</config-auth>\n'
Starting new HTTPS connection (1): $COMPANY$.$2FAPROVIDER$.com:443
https://$COMPANY$.$2FAPROVIDER$.com:443 "POST /app/389858/sso HTTP/1.1" 200 None
[debug    ] Auth init response received    [openconnect_sso.authenticator] content=b'\n<!DOCTYPE html>\n<html lang="en">\n<head>\n  <meta charset="utf-8" />\n  <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n  <title>$2FAPROVIDER$ Login</title><link href="/images/b6cb5943dcb44685d5cac99ec47f6536db67fc8e7d2b8fb8292cf9e73252d26e_$2FAPROVIDER$-favicon.png" rel="shortcut icon" type="image/png" /><link href="/css/5de83301260b81418262eef3c23d40fa672b1c552126aa33709961a29d11fe11_login.min.css" rel="stylesheet" type="text/css" /></head>\n\n<body class="bgcover">\n  \n  <div class="login-wrap">\n    <div class="panel card">\n      <div class="panel-heading"><div class="brand"><img style="max-width:280px;max-height:150px" src="/org/11896af62a6d28ec00b33beef56bc8538a46af93845ecebc37aa13a0797c27ae.png" /></div></div>\n      <div class="panel-body"><form action="/login" method="POST" name="loginForm" id="loginForm" role="form" novalidate>\n          <input type="hidden" name="token" value="TuTay7cyQSm8XoBmcvukdjHo-lQ:1641895471341" />\n          <input type="hidden" name="target_method" value="POST" />\n          <input type="hidden" name="target_url" value="/app/389858/sso" />\n          <input type="hidden" name="target_postdata" value="%3C%3Fxml&#43;version=%271.0%27&#43;encoding%3D%27UTF-8%27%3F%3E%0A%3Cconfig-auth&#43;client%3D%22vpn%22&#43;type%3D%22init%22&#43;aggregate-auth-version%3D%222%22%3E%0A&#43;&#43;%3Cversion&#43;who%3D%22vpn%22%3E4.7.00136%3C%2Fversion%3E%0A&#43;&#43;%3Cdevice-id%3Elinux-64%3C%2Fdevice-id%3E%0A&#43;&#43;%3Cgroup-select%3E%3C%2Fgroup-select%3E%0A&#43;&#43;%3Cgroup-access%3Ehttps%3A%2F%2F$COMPANY$.$2FAPROVIDER$.com%2Fapp%2F389858%2Fsso%3C%2Fgroup-access%3E%0A&#43;&#43;%3Ccapabilities%3E%0A&#43;&#43;&#43;&#43;%3Cauth-method%3Esingle-sign-on-v2%3C%2Fauth-method%3E%0A&#43;&#43;%3C%2Fcapabilities%3E%0A%3C%2Fconfig-auth%3E%0A" />\n          <input type="hidden" name="target_opt" value="{&#34;app_id&#34;:389858}" /> \n          <input type="hidden" name="target_urlhash" value="" />\n\n          \n          <button type="submit" name="use_password" value="true" tabindex="-1" style="overflow:visible;height:0;width:0;margin:0;border:0;padding:0;display:block;border:none;"></button>\n\n          <div id="user-cert" style="display:none">\n            \n            <p>You are authenticated as:</p>\n            <div class="well well-sm">\n              <p><i class="fa fa-fw fa-lg fa-user"></i>&nbsp;&nbsp;<strong class="user-firstname-name">...</strong></p>\n              <p><i class="fa fa-fw fa-lg fa-envelope"></i>&nbsp;&nbsp;<span class="user-email">...</span></p>\n              <p><i class="fa fa-fw fa-lg fa-asterisk"></i>&nbsp;&nbsp;User Certificate</p>\n            </div>\n            <p>\n              <button type="button" class="btn btn-primary btn-lg">Use this identity</button>\n            </p>\n          </div>\n          <div id="user-spnego" style="display:none">\n            \n            <p>You are authenticated as:</p>\n            <div class="well well-sm">\n              <p><i class="fa fa-fw fa-lg fa-user"></i>&nbsp;&nbsp;<strong class="user-firstname-name">...</strong></p>\n              <p><i class="fa fa-fw fa-lg fa-envelope"></i>&nbsp;&nbsp;<span class="user-email">...</span></p>\n              <p><i class="fa fa-fw fa-lg fa-asterisk"></i>&nbsp;&nbsp;Integrated Windows Authentication</p>\n            </div>\n            <p>\n              <button type="button" class="btn btn-primary btn-lg">Use this identity</button>\n            </p>\n          </div>\n          <div id="showAltAccount" style="display:none">\n            <br/>\n            <a href="#" onclick="$(\'#altAccount\').toggle()">Use another account</a><br/>\n          </div>\n\n          <div id="altAccount">\n            <div class="inputBlock">\n              <div class="form-group inputWrapper">\n                <input type="email" class="login form-control login-user-en" name="username" id="userName" placeholder="Username or email" autofocus /><label for="userName" class="input-icon-tlm"><i class="fa fa-user-o"></i></label></div>\n              <div class="form-group inputWrapper">\n                <input type="password" class="login form-control" name="password" id="userPassword" placeholder="Password"  /><label for="userPassword" class="input-icon-tlm"><i class="fa fa-unlock-alt"></i></label></div>\n            </div>\n            <div class="form-group"><div class="passwordOptBlock"><div class="checkbox remember-me" title="Automatically fill your email on this computer">\n                  <label><input type="checkbox" name="remember_me"  checked id="checkbox-form" />Remember me</label>\n                </div><div class="forgotBlock1"><a class="forgot-password" href="https://$COMPANY$.$2FAPROVIDER$.com/forgot?s=%2Fapp%2F389858%2Fsso">Forgot your password?</a></div></div><div class="connexionBlock">\n                <button type="submit" name="use_password" value="true" class="btn btn-primary login-button">Sign in</button>\n              </div>\n            </div><div class="forgotBlock2">\n              <a class="forgot-password" href="https://$COMPANY$.$2FAPROVIDER$.com/forgot?s=%2Fapp%2F389858%2Fsso">Forgot your password?</a>\n            </div></div>\n        </form>\n        \n        <div class="errorBox" id="errorBox">\n          \n        </div>\n        </div>\n    </div>\n  </div>\n  <footer class="footer-tlm">\n  <div class="rightFooter-tlm">\n    <span class="$2FAPROVIDER$-tlm">secured by&nbsp;&nbsp;</span>\n    <img src="/images/92abca958ad9c16d36d43b012023403fca28fdac1c755eeb9feabe0901867e26_wallix_footer.png" alt="$2FAPROVIDER$" class="$2FAPROVIDER$Logo-tlm" />\n  </div>\n</footer>\n  <script src="/js/2359d383bf2d4ab65ebf7923bdf74ce40e4093f6e58251b395a64034b3c39772_jquery.min.js"></script>\n  <!--[if lt IE 10]>\n  \n  <script src="/js/4c141f368da1152af24808794c501b65be66f1550e1b0b2f6c10578fb945eaf2_placeholders.min.js"></script>\n  <![endif]-->\n  \n  \n  <script>\n    $("input[name=target_urlhash]").val(window.location.hash);\n  </script>\n  \n  \n  </body>\n</html>'
Traceback (most recent call last):
  File "/home/$USER$/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/$USER$/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/home/$USER$/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/$USER$/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/app.py", line 139, in _run
    auth_response = await authenticate_to(
  File "/home/$USER$/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 22, in authenticate
    response = self._start_authentication()
  File "/home/$USER$/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 67, in _start_authentication
    return parse_response(response)
  File "/home/$USER$/.local/pipx/venvs/openconnect-sso/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 137, in parse_response
    xml = objectify.fromstring(resp.content)
  File "src/lxml/objectify.pyx", line 1998, in lxml.objectify.fromstring
  File "src/lxml/etree.pyx", line 3252, in lxml.etree.fromstring
  File "src/lxml/parser.pxi", line 1912, in lxml.etree._parseMemoryDocument
  File "src/lxml/parser.pxi", line 1800, in lxml.etree._parseDoc
  File "src/lxml/parser.pxi", line 1141, in lxml.etree._BaseParser._parseDoc
  File "src/lxml/parser.pxi", line 615, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 725, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 654, in lxml.etree._raiseParseError
  File "<string>", line 14
lxml.etree.XMLSyntaxError: Specification mandates value for attribute novalidate, line 14, column 121

Working but logs many "Error: ipv4: Invalid values in header for route get request"

First of all thanks for this alternative to CISCO's Anyconnect client with its backdoors and infamous security history :-)

It worked on 1st shot to me, on Ubuntu 20.04 LTS, despite spitting a lot of errors about ip route

I got this many times:

Error: ipv4: Invalid values in header for route get request.
Usage: ip route { list | flush } SELECTOR
...

Then this final error:

Error: any valid prefix is expected rather than "dev".

And my routing table is full of specific single-address routes, which I don't like but I hope I should be able to configure like with NerworkManager's "Route only addresses inside this VPN". Tips are welcome on this!

Anyway the SSO did work and I am connected and working thanks to it, THANKS!

Nix installation failing with infinite recursion error.

Nix setup is failing; the script generates an infinite recursion.

nix-env -i -f https://github.com/vlaci/openconnect-sso/archive/master.tar.gz
installing 'python3.9-openconnect-sso-0.7.3'
error: infinite recursion encountered

       at /nix/store/f6kxwf008fylybbw7p18m86m38fq9bbp-nixpkgs-21.11pre329221.c11d08f0239/nixpkgs/pkgs/top-level/python-aliases.nix:87:20:

           86|   selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
           87|   setuptools_scm = setuptools-scm; # added 2021-06-03
             |                    ^
           88|   smart_open = smart-open; # added 2021-03-14
(use '--show-trace' to show detailed location information)

Windows support

After a little investigation it seems that adding Windows support is not that hard.
Things that needs to be done:

  • Use ProactorEventLoop on windows to get subprocess support
  • Do not use sudo for privilege escalation

opeconnect_args results in "Too many arguments on command line" error

Running Ubuntu 20.04.1, installed via pipx. Connection works fine if I don't specify openconnect_args. I'm guessing perhaps ordering of the args in the calling of openconnect might be the issue? Or perhaps something isn't escaped correctly in the openconnect connection args prior to adding the opeconnect_args arguments.

I've redacted organisational stuff with **.

berg@zen:~/.config/openconnect-sso$ openconnect-sso --server https://vpn4.router.**.edu.au openconnect_args -v
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=https://vpn4.router.**.edu.au name=
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
[info     ] Browser started                [webengine] startup_info=StartupInfo(url='https://vpn4.router.**.edu.au/+CSCOE+/saml/sp/login?tgname=**-VPN&acsamlcap=v2', credentials=None)
[info     ] Loading page                   [webengine] url=https://vpn4.router.**.edu.au/+CSCOE+/saml/sp/login?tgname=**-VPN&acsamlcap=v2
[info     ] Browser exited                 [openconnect_sso.browser.browser] 
[info     ] Response received              [openconnect_sso.authenticator] id=success message=
Too many arguments on command line
Usage:  openconnect [options] <server>
Open client for multiple VPN protocols, version v8.05-1

Additionally, when I run the connection with opeconnect-sso ... -l DEBUG, I am unable to complete the SAML form login. It just keeps showing the login form over and over. I am unable to validate what is happening at the openconnect call.

logger is not configured in `webengine_process.py`

After I start the program with INFO log level, the program outputs something like this:

[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=vpn.XXX.com name=UNNAMED
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=XXX VPN
This plugin does not support createPlatformOpenGLContext!
2020-06-01 15:04.48 Browser started                startup_info=StartupInfo(url='https://vpn.XXX.com/+CSCOE+/saml/sp/login?tgname=TG-VPN&acsamlcap=v2', credentials=Credentials(username='YYY'))
2020-06-01 15:04.48 Loading page                   url=https://vpn.XXX.com/+CSCOE+/saml/sp/login?tgname=TG-VPN&acsamlcap=v2
2020-06-01 15:04.48 Initiating autologin           cred=Credentials(username='YYY')
......

Lines including "Browser started", "Loading page", and "Initiating autologin" come from webengine_process.py. It seems that the logger inside webengine_process.py is not properly configured, and it doesn't respect the log level and the format.
I have also read logs of other people, it seems the logger is working properly in their cases.

MacOS, python 3.8.3

Error when trying to connect

Hello,

First of all thank you for the work on this script!

I unfortunately have an error while connecting...
I have the "Sign in" window of microsoft which opens, I then have a redirection to the ADFS, the password and email address are automatically filled in, I click on "Sign In" than I must approve the "Sign in request" with my Microsoft Authenticator mobile phone.
As soon as I approve the connection, the window closes with the following log:

[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpnlogin', value='1')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser] 
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='acSamlv2Token', value='****************')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser] 
[debug    ] Page loaded                    [webengine] url=https://vpn.domain.fr/+webvpn+/index.html
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=Url(url='https://vpn.domain.fr/+webvpn+/index.html')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser] 
[debug    ] Browser loaded page            [openconnect_sso.saml_authenticator] url=https://vpn.domain.fr/+webvpn+/index.html
[debug    ] Page loaded                    [webengine] url=https://vpn.domain.fr/+CSCOE+/saml_ac_login.html
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=Url(url='https://vpn.domain.fr/+CSCOE+/saml_ac_login.html')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser] 
[debug    ] Browser loaded page            [openconnect_sso.saml_authenticator] url=https://vpn.domain.fr/+CSCOE+/saml_ac_login.html
[info     ] Browser exited                 [openconnect_sso.browser.browser] 
https://vpn.domain.fr:443 "POST / HTTP/1.1" 200 None
[debug    ] Auth finish response received  [openconnect_sso.authenticator] content=b'<?xml version="1.0" encoding="UTF-8"?>\n<config-auth client="vpn" type="complete" aggregate-auth-version="2">\n<error id="9" param1="&#x0A;Your Anyconnect version is too old&#x0A;&#x0A;" param2="">Login denied.  %s</error>\n</config-auth>\n'
Traceback (most recent call last):
  File "/home/ikizo/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/cli.py", line 150, in main
    return app.run(args)
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/app.py", line 28, in run
    return asyncio.get_event_loop().run_until_complete(_run(args))
  File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
    return future.result()
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/app.py", line 98, in _run
    auth_response = await authenticate_to(selected_profile, credentials, display_mode)
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/authenticator.py", line 43, in authenticate
    response = self._complete_authentication(auth_request_response, sso_token)
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/authenticator.py", line 78, in _complete_authentication
    return parse_response(response)
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/authenticator.py", line 138, in parse_response
    return parse_auth_complete_response(xml)
  File "/home/ikizo/.local/pipx/venvs/openconnect-sso/lib/python3.6/site-packages/openconnect_sso/authenticator.py", line 180, in parse_auth_complete_response
    assert xml.auth.get("id") == "success"
  File "src/lxml/objectify.pyx", line 231, in lxml.objectify.ObjectifiedElement.__getattr__
  File "src/lxml/objectify.pyx", line 450, in lxml.objectify._lookupChildOrRaise
AttributeError: no such child: auth

I use openconnect-sso 0.4.0 and openconnect v8.10 on Ubuntu 18.04
I see in the log that the xml tells me that I have a too old version of anyconnect, except that I'm using the latest version of openconnect, does that mean it's dead for me :) ?

Thank you

PulseSecure support with SAML and 2FA

I tried connecting to a Pulse Secure appliance which is configured with GSuite and 2FA, unfortunately it was not working. It would be great if that could be added. Some output I able to share.

[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=sslvpn.example.net name=UNNAMED
Traceback (most recent call last):
  File "/home/bene/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/bene/.local/pipx/venvs/openconnect-sso/lib/python3.7/site-packages/openconnect_sso/cli.py", line 150, in main
    return app.run(args)
  File "/home/bene/.local/pipx/venvs/openconnect-sso/lib/python3.7/site-packages/openconnect_sso/app.py", line 28, in run
    return asyncio.get_event_loop().run_until_complete(_run(args))
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/home/bene/.local/pipx/venvs/openconnect-sso/lib/python3.7/site-packages/openconnect_sso/app.py", line 98, in _run
    auth_response = await authenticate_to(selected_profile, credentials, display_mode)
  File "/home/bene/.local/pipx/venvs/openconnect-sso/lib/python3.7/site-packages/openconnect_sso/authenticator.py", line 21, in authenticate
    response = self._start_authentication()
  File "/home/bene/.local/pipx/venvs/openconnect-sso/lib/python3.7/site-packages/openconnect_sso/authenticator.py", line 65, in _start_authentication
    return parse_response(response)
  File "/home/bene/.local/pipx/venvs/openconnect-sso/lib/python3.7/site-packages/openconnect_sso/authenticator.py", line 133, in parse_response
    xml = objectify.fromstring(resp.content)
  File "src/lxml/objectify.pyx", line 1808, in lxml.objectify.fromstring
  File "src/lxml/etree.pyx", line 3235, in lxml.etree.fromstring
  File "src/lxml/parser.pxi", line 1876, in lxml.etree._parseMemoryDocument
  File "src/lxml/parser.pxi", line 1764, in lxml.etree._parseDoc
  File "src/lxml/parser.pxi", line 1127, in lxml.etree._BaseParser._parseDoc
  File "src/lxml/parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 711, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 640, in lxml.etree._raiseParseError
  File "<string>", line 1256
lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 7 and head, line 1256, column 10```

XMLSyntaxError while trying to connect

The latest version (0.4) throws an XML error while authentificating.
Connecting with the official Anyconnect client works.

openconnect-sso <server>

Traceback (most recent call last):
  File "/usr/bin/openconnect-sso", line 11, in <module>
    load_entry_point('openconnect-sso==0.4.0', 'console_scripts', 'openconnect-sso')()
  File "/usr/lib/python3.8/site-packages/openconnect_sso/cli.py", line 150, in main
    return app.run(args)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/app.py", line 28, in run
    return asyncio.get_event_loop().run_until_complete(_run(args))
  File "/usr/lib/python3.8/asyncio/base_events.py", line 612, in run_until_complete
    return future.result()
  File "/usr/lib/python3.8/site-packages/openconnect_sso/app.py", line 98, in _run
    auth_response = await authenticate_to(selected_profile, credentials, display_mode)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 21, in authenticate
    response = self._start_authentication()
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 65, in _start_authentication
    return parse_response(response)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 133, in parse_response
    xml = objectify.fromstring(resp.content)
  File "src/lxml/objectify.pyx", line 1808, in lxml.objectify.fromstring
  File "src/lxml/etree.pyx", line 3235, in lxml.etree.fromstring
  File "src/lxml/parser.pxi", line 1876, in lxml.etree._parseMemoryDocument
  File "src/lxml/parser.pxi", line 1764, in lxml.etree._parseDoc
  File "src/lxml/parser.pxi", line 1127, in lxml.etree._BaseParser._parseDoc
  File "src/lxml/parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 711, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 640, in lxml.etree._raiseParseError
  File "<string>", line 6
lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: br line 4 and body, line 6, column 9

RTNETLINK answers: File exists

Repeated "RTNETLINK answers: File exists" message after connection.

[govind@fedora-workstation ~]$ openconnect-sso 
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=https://sjc05-vpn-cluster-1.cisco.com/ name=
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[info     ] Browser started                [webengine] startup_info=StartupInfo(url='https://sjc05-vpn-cluster-1.cisco.com/+CSCOE+/saml/sp/login?tgname=IPSec_Profile&acsamlcap=v2', credentials=None)
[info     ] Loading page                   [webengine] url=https://sjc05-vpn-cluster-1.cisco.com/+CSCOE+/saml/sp/login?tgname=IPSec_Profile&acsamlcap=v2
js: WARNING: `getUserProfile` does not support requests for  dsc .
js: Refused to load the image 'https://duo.com/' because it violates the following Content Security Policy directive: "img-src 'self'  ".

js: Refused to load the image 'https://duo.com/' because it violates the following Content Security Policy directive: "img-src 'self'  ".

[info     ] Terminate requested.           [webengine] 
[info     ] Exiting browser                [webengine] 
[info     ] Browser exited                 [openconnect_sso.browser.browser] 
[info     ] Response received              [openconnect_sso.authenticator] id=success message=
[sudo] password for govind: 
Connected to 171.70.192.88:443
SSL negotiation with sjc05-vpn-cluster-1.cisco.com
Server certificate verify failed: signer not found
Connected to HTTPS on sjc05-vpn-cluster-1.cisco.com with ciphersuite (TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA512)-(AES-256-GCM)
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
Connected as 10.24.7.81 + 2001:420:c0c8:1001::7e6/64, using SSL, with DTLS in progress
Established DTLS connection (using GnuTLS). Ciphersuite (DTLS1.2)-(ECDHE-RSA)-(AES-256-GCM).
Connect Banner:
| sjc05-vpn-cluster-1.cisco.com
| NOTE: DO NOT dial emergency response numbers (e.g. 911,112) from software telephony clients.
| Your exact location and the appropriate emergency response agency may not be easily identified.
| The following countries restrict use of VoIP software via VPN over the Internet:
| UAE, Saudi Arabia, Pakistan, Lebanon, Jordan, Egypt, Oman, Qatar, Yemen, Algeria and Kuwait.
| 


RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists

This goes on for a while.

Please let me know if you need any more details.

Sign in fails due to "missing secure desktop"

The script fails for me on:

Sending auth finish request    [openconnect_sso.authenticator] content=b'<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n
<config-auth client="vpn" type="auth-reply" aggregate-auth-version="2">\n
  <version who="vpn">4.7.00136</version>\n
  <device-id>linux-64</device-id>\n
  <session-token/>\n  <session-id/>\n
  <opaque is-for="sg">\n
    <tunnel-group>buvpn</tunnel-group>\n
    <auth-method>single-sign-on-v2</auth-method>\n
    <group-alias>buvpn</group-alias>\n
    <config-hash>1623301714042</config-hash>\n
  </opaque>\n
  <auth>\n
    <sso-token>30AC25A72EA1CE66667BB6C</sso-token>\n
  </auth>\n
</config-auth>\n'

Auth finish response received  [openconnect_sso.authenticator] content=b'<?xml version="1.0" encoding="UTF-8"?>\n
<config-auth client="vpn" type="auth-request" aggregate-auth-version="2">\n
<opaque is-for="sg">\n
<tunnel-group>XXXXX</tunnel-group>\n
<auth-method>single-sign-on-v2</auth-method>\n
<group-alias>XXXXX</group-alias>\n
<config-hash>1623301714042</config-hash>\n
</opaque>\n
<auth id="main">\n
<title>Login</title>\n
<message>Please enter your username and password.</message>\n
<banner></banner>\n
<error id="13" param1="" param2="">**Unable to complete connection: Cisco Secure Desktop not installed on the client**</error>\n
<form>\n
<select name="group_list" label="GROUP:">\n
<option selected="true">buvpn</option>\n
</select>\n
</form>\n
</auth>\n
<host-scan>\n
<host-scan-ticket>XXXXXXXXXXXXX</host-scan-ticket>\n
<host-scan-token>XXXXXXXXXXXXXX</host-scan-token>\n
<host-scan-base-uri>/CACHE</host-scan-base-uri>\n
<host-scan-wait-uri>/+CSCOE+/sdesktop/wait.html</host-scan-wait-uri>\n
</host-scan>\n
</config-auth>\n'

Looking at what openconnect does is that it passes along the host-scan-token tag in the post (just after the auth tag closure).

Invalid response type in current state [openconnect_sso.authenticator] response=None

I guess my company does not support openconnect-sso or do I miss something? Thanks!

$ openconnect-sso --server https://server.company.com/mfa --user [email protected]
Password ([email protected]): 
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=https://server.company.com/mfa name=
[error    ] Could not start authentication. Invalid response type in current state [openconnect_sso.authenticator] response=None
Traceback (most recent call last):
  File "/usr/bin/openconnect-sso", line 33, in <module>
    sys.exit(load_entry_point('openconnect-sso==0.5.0', 'console_scripts', 'openconnect-sso')())

multiprocess causes crash on OSX

The behavior introduced in 2eb93fa cause openconnect-sso to crash on OSX. There is a known condition within OSX where calling fork in certain situations is prohibited. Normally this can be overridden by setting export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES as described on StackOverflow and other places.

However, this does not work for openconnect-sso and the Python process crashes:

Without set OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes:

[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=https://[REDACTED] name=
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
objc[43025]: +[NSCharacterSet initialize] may have been in progress in another thread when fork() was called.
objc[43025]: +[NSCharacterSet initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
[warning  ] Connection terminated with browser [openconnect_sso.browser.browser]
[warning  ] Browser window terminated, exiting [openconnect_sso.app]

With set OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes:

Process:               Python [24462]
Path:                  /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.7 (3.7.7)
Code Type:             X86-64 (Native)
Parent Process:        Python [24437]
Responsible:           Python [24462]
User ID:               502

Date/Time:             2020-07-10 13:39:10.988 -0600
OS Version:            Mac OS X 10.14.6 (18G5033)
Report Version:        12
Bridge OS Version:     4.5 (17P5290)
Anonymous UUID:        77C41BF5-9BDE-D898-2AD9-68AF0C18F246

Sleep/Wake UUID:       73D3833C-CF35-4600-B5D8-F2B799B57B37

Time Awake Since Boot: 1200000 seconds
Time Since Wake:       16000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000110
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [24462]

VM Regions Near 0x110:
--> 
    __TEXT                 000000010bd5c000-000000010bd5e000 [    8K] r-x/r-x SM=COW  /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python

Application Specific Information:
*** multi-threaded process forked ***
crashed on child side of fork pre-exec

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libdispatch.dylib             	0x00007fff74a57e47 _dispatch_mgr_queue_push + 41
1   libdispatch.dylib             	0x00007fff74a53bab _dispatch_lane_resume_activate + 58
2   com.apple.CoreServices.CarbonCore	0x00007fff49da5d9a connectToCoreServicesD() + 245
3   com.apple.CoreServices.CarbonCore	0x00007fff49da5c74 getStatus() + 24
4   com.apple.CoreServices.CarbonCore	0x00007fff49da5bef scCreateSystemServiceVersion + 49
5   com.apple.CoreServices.CarbonCore	0x00007fff49da5964 FileIDTreeGetCachedPort + 213
6   com.apple.CoreServices.CarbonCore	0x00007fff49da57d0 FSNodeStorageGetAndLockCurrentUniverse + 83
7   com.apple.CoreServices.CarbonCore	0x00007fff49da565a FileIDTreeGetAndLockVolumeEntryForDeviceID + 38
8   com.apple.CoreServices.CarbonCore	0x00007fff49da55b7 FSMount::FSMount(unsigned int, FSMountNumberType, int*, unsigned int const*) + 75
9   com.apple.CoreServices.CarbonCore	0x00007fff49da5531 FSMountPrepare + 69
10  com.apple.CoreServicesInternal	0x00007fff5ccd6a30 MountInfoPrepare(void***, unsigned int, int, void*, unsigned int const*, __CFURL const*, __CFError**) + 43
11  com.apple.CoreServicesInternal	0x00007fff5ccd6428 parseAttributeBuffer(__CFAllocator const*, unsigned char const*, unsigned char, attrlist const*, void const*, void**, _FileAttributes*, unsigned int*) + 3209
12  com.apple.CoreServicesInternal	0x00007fff5ccd5491 corePropertyProviderPrepareValues(__CFURL const*, __FileCache*, __CFString const* const*, void const**, long, void const*, __CFError**) + 834
13  com.apple.CoreServicesInternal	0x00007fff5ccd50ee prepareValuesForBitmap(__CFURL const*, __FileCache*, _FilePropertyBitmap*, __CFError**) + 360
14  com.apple.CoreServicesInternal	0x00007fff5ccd6d3d _FSURLCopyResourcePropertyForKeyInternal(__CFURL const*, __CFString const*, void*, void*, __CFError**, unsigned char) + 214
15  com.apple.CoreFoundation      	0x00007fff48b13c0f CFURLCopyResourcePropertyForKey + 101
16  QtCore                        	0x000000010ebbd753 0x10ea2e000 + 1636179
17  QtCore                        	0x000000010ebbbacb 0x10ea2e000 + 1628875
18  QtCore                        	0x000000010eb60f6c QFileInfo::isHidden() const + 108
19  QtCore                        	0x000000010eb59062 0x10ea2e000 + 1224802
20  QtCore                        	0x000000010eb58977 0x10ea2e000 + 1223031
21  QtCore                        	0x000000010eb5813e 0x10ea2e000 + 1220926
22  QtCore                        	0x000000010eb597b6 QDirIterator::QDirIterator(QString const&, QStringList const&, QFlags<QDir::Filter>, QFlags<QDirIterator::IteratorFlag>) + 86
23  QtCore                        	0x000000010eb508ea QDir::entryList(QStringList const&, QFlags<QDir::Filter>, QFlags<QDir::SortFlag>) const + 490
24  QtCore                        	0x000000010eb506ec QDir::entryList(QFlags<QDir::Filter>, QFlags<QDir::SortFlag>) const + 28
25  QtCore                        	0x000000010ec0645e QFactoryLoader::update() + 510
26  QtCore                        	0x000000010ec07b07 QFactoryLoader::QFactoryLoader(char const*, QString const&, Qt::CaseSensitivity) + 247
27  QtGui                         	0x00000001172c11fb 0x11729b000 + 156155
28  QtGui                         	0x00000001172c15b1 QPlatformIntegrationFactory::keys(QString const&) + 785
29  QtGui                         	0x00000001172ccf8c QGuiApplicationPrivate::createPlatformIntegration() + 1724
30  QtGui                         	0x00000001172ce51b QGuiApplicationPrivate::createEventDispatcher() + 27
31  QtCore                        	0x000000010ec1709f QCoreApplicationPrivate::init() + 1567
32  QtGui                         	0x00000001172c97f9 QGuiApplicationPrivate::init() + 57
33  QtWidgets                     	0x0000000116d05bda QApplicationPrivate::init() + 26
34  QtWidgets.so                  	0x0000000118312698 init_type_QApplication(_sipSimpleWrapper*, _object*, _object*, _object**, _object**, _object**) + 168
35  sip.so                        	0x000000010f029b44 sipSimpleWrapper_init + 185
36  org.python.python             	0x000000010bdba3a6 type_call + 172
37  org.python.python             	0x000000010bd7f322 _PyObject_FastCallKeywords + 358
38  org.python.python             	0x000000010be14b22 call_function + 730
39  org.python.python             	0x000000010be0db34 _PyEval_EvalFrameDefault + 6922
40  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
41  org.python.python             	0x000000010be14b29 call_function + 737
42  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
43  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
44  org.python.python             	0x000000010be14b29 call_function + 737
45  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
46  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
47  org.python.python             	0x000000010be14b29 call_function + 737
48  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
49  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
50  org.python.python             	0x000000010bd801f3 _PyObject_Call_Prepend + 131
51  org.python.python             	0x000000010bdbd67a slot_tp_init + 80
52  org.python.python             	0x000000010bdba3a6 type_call + 172
53  org.python.python             	0x000000010bd7f322 _PyObject_FastCallKeywords + 358
54  org.python.python             	0x000000010be14b22 call_function + 730
55  org.python.python             	0x000000010be0db34 _PyEval_EvalFrameDefault + 6922
56  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
57  org.python.python             	0x000000010be14b29 call_function + 737
58  org.python.python             	0x000000010be0da99 _PyEval_EvalFrameDefault + 6767
59  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
60  org.python.python             	0x000000010be14b29 call_function + 737
61  org.python.python             	0x000000010be0da99 _PyEval_EvalFrameDefault + 6767
62  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
63  org.python.python             	0x000000010be14b29 call_function + 737
64  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
65  org.python.python             	0x000000010bd8aed3 gen_send_ex + 244
66  org.python.python             	0x000000010be1045f _PyEval_EvalFrameDefault + 17461
67  org.python.python             	0x000000010bd8aed3 gen_send_ex + 244
68  org.python.python             	0x000000010be1045f _PyEval_EvalFrameDefault + 17461
69  org.python.python             	0x000000010bd8aed3 gen_send_ex + 244
70  org.python.python             	0x000000010be1045f _PyEval_EvalFrameDefault + 17461
71  org.python.python             	0x000000010bd8aed3 gen_send_ex + 244
72  org.python.python             	0x000000010be1045f _PyEval_EvalFrameDefault + 17461
73  org.python.python             	0x000000010bd8aed3 gen_send_ex + 244
74  org.python.python             	0x000000010be1045f _PyEval_EvalFrameDefault + 17461
75  org.python.python             	0x000000010bd8aed3 gen_send_ex + 244
76  _asyncio.cpython-37m-darwin.so	0x000000010d1d16e5 task_step + 463
77  org.python.python             	0x000000010bd7f322 _PyObject_FastCallKeywords + 358
78  org.python.python             	0x000000010be36658 context_run + 62
79  org.python.python             	0x000000010bd7fa46 _PyMethodDef_RawFastCallDict + 269
80  org.python.python             	0x000000010bd7f16f _PyCFunction_FastCallDict + 41
81  org.python.python             	0x000000010be0de64 _PyEval_EvalFrameDefault + 7738
82  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
83  org.python.python             	0x000000010be14b29 call_function + 737
84  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
85  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
86  org.python.python             	0x000000010be14b29 call_function + 737
87  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
88  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
89  org.python.python             	0x000000010be14b29 call_function + 737
90  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
91  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
92  org.python.python             	0x000000010be14b29 call_function + 737
93  org.python.python             	0x000000010be0da80 _PyEval_EvalFrameDefault + 6742
94  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
95  org.python.python             	0x000000010be14b29 call_function + 737
96  org.python.python             	0x000000010be0da99 _PyEval_EvalFrameDefault + 6767
97  org.python.python             	0x000000010bd7f880 function_code_fastcall + 106
98  org.python.python             	0x000000010be14b29 call_function + 737
99  org.python.python             	0x000000010be0db34 _PyEval_EvalFrameDefault + 6922
100 org.python.python             	0x000000010be1531d _PyEval_EvalCodeWithName + 1698
101 org.python.python             	0x000000010be0bf87 PyEval_EvalCode + 51
102 org.python.python             	0x000000010be3a3c4 run_mod + 54
103 org.python.python             	0x000000010be393f7 PyRun_FileExFlags + 160
104 org.python.python             	0x000000010be38aae PyRun_SimpleFileExFlags + 270
105 org.python.python             	0x000000010be512b6 pymain_main + 5445
106 org.python.python             	0x000000010be51924 _Py_UnixMain + 56
107 libdyld.dylib                 	0x00007fff74a9b3d5 start + 1

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000100  rbx: 0x00007f92d9df2560  rcx: 0x00007fffab1f7440  rdx: 0x0000000000000000
  rdi: 0x00007fffab1f7440  rsi: 0x00007f92d9df2560  rbp: 0x00007ffee3e9dd90  rsp: 0x00007ffee3e9dd68
   r8: 0xff80004000000000   r9: 0x0000000000000000  r10: 0x00007f92d9df2560  r11: 0x0000002000000000
  r12: 0x00007fff4a06cc29  r13: 0x00000000901fde0d  r14: 0x00007ffee3e9dd7f  r15: 0x0000000040000000
  rip: 0x00007fff74a57e47  rfl: 0x0000000000010206  cr2: 0x0000000000000110
  
Logical CPU:     2
Error Code:      0x00000006
Trap Number:     14


Binary Images:
       0x10bd5c000 -        0x10bd5dfff +org.python.python (3.7.7 - 3.7.7) <79237F1D-1C05-33DC-986F-7635BAD9BA61> /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
       0x10bd66000 -        0x10bee9fff +org.python.python (3.7.7, [c] 2001-2019 Python Software Foundation. - 3.7.7) <AE824497-907F-354C-BD7F-EBC688E37019> /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/Python
       0x10c2d3000 -        0x10c2d4fff +_heapq.cpython-37m-darwin.so (0) <B3354C6E-DE1A-3CE5-93B2-C713E03E29F7> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_heapq.cpython-37m-darwin.so
       0x10c3a4000 -        0x10c3a5fff +_posixsubprocess.cpython-37m-darwin.so (0) <97473AA9-9E56-33F7-A421-68D5EE39F69B> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_posixsubprocess.cpython-37m-darwin.so
       0x10c3a8000 -        0x10c3aafff +select.cpython-37m-darwin.so (0) <06F5AFFD-AFE9-3BB9-A0C9-2D4C080B1542> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/select.cpython-37m-darwin.so
       0x10c3ef000 -        0x10c3f3ff3 +math.cpython-37m-darwin.so (0) <556F9C47-B375-3283-BB7F-2669382463A7> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/math.cpython-37m-darwin.so
       0x10c3f9000 -        0x10c3fcfff +_hashlib.cpython-37m-darwin.so (0) <533BF0AD-2102-3B68-AE84-486C2DC245EF> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_hashlib.cpython-37m-darwin.so
       0x10c400000 -        0x10c44ffff +libssl.1.1.dylib (0) <547394D6-1AB4-3CF8-93A6-9FF212A90576> /usr/local/opt/[email protected]/lib/libssl.1.1.dylib
       0x10c478000 -        0x10c614ab7 +libcrypto.1.1.dylib (0) <D0AD43D1-C05D-3CF2-A07E-8989D84C132E> /usr/local/opt/[email protected]/lib/libcrypto.1.1.dylib
       0x10c6a7000 -        0x10c6acffb +_blake2.cpython-37m-darwin.so (0) <44ED929B-10D4-36B9-9843-F32EFB0F03D1> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_blake2.cpython-37m-darwin.so
       0x10c6b0000 -        0x10c6c0fff +_sha3.cpython-37m-darwin.so (0) <7216082F-285C-30C6-8A9F-1A7361A4B8FE> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_sha3.cpython-37m-darwin.so
       0x10c78e000 -        0x10c78efff +_opcode.cpython-37m-darwin.so (0) <58B5CB76-6AF4-3541-A60D-F93E0B382CA9> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_opcode.cpython-37m-darwin.so
       0x10c7d1000 -        0x10c7d1fff +_bisect.cpython-37m-darwin.so (0) <1E216870-955E-3B1B-A4F9-641383F9866E> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_bisect.cpython-37m-darwin.so
       0x10c7d4000 -        0x10c7d5ffb +_random.cpython-37m-darwin.so (0) <4653396D-FAC3-3A7A-BE5E-07C23D7F621C> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_random.cpython-37m-darwin.so
       0x10c7d8000 -        0x10c7e0ffb +_socket.cpython-37m-darwin.so (0) <1AC36734-6F9D-3E7E-9157-FD7D625AF7EF> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_socket.cpython-37m-darwin.so
       0x10c82b000 -        0x10c82dfff +tracer.cpython-37m-darwin.so (0) <B01971C1-82AF-3B60-A4F6-9E44F418B3A4> /Users/USER/*/tracer.cpython-37m-darwin.so
       0x10c871000 -        0x10c87cffb +_datetime.cpython-37m-darwin.so (0) <650A5002-BCFF-3F71-BEFB-2B1D29089C75> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_datetime.cpython-37m-darwin.so
       0x10c8c4000 -        0x10c8ccff7 +_sqlite3.cpython-37m-darwin.so (0) <40505291-F8B6-3D08-A927-5263607A8C16> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_sqlite3.cpython-37m-darwin.so
       0x10c8d6000 -        0x10c9b1ff7 +libsqlite3.0.dylib (0) <EF3FB44D-2B5B-305C-8E4B-322D10AEB908> /usr/local/opt/sqlite/lib/libsqlite3.0.dylib
       0x10c9d2000 -        0x10c9d5fff +zlib.cpython-37m-darwin.so (0) <6C5B8859-BAE9-3CCE-9617-E1D0D424C0AF> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/zlib.cpython-37m-darwin.so
       0x10c9da000 -        0x10c9dffff +_json.cpython-37m-darwin.so (0) <3E2E5A5C-12D2-3C86-A11A-39859684E1DB> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_json.cpython-37m-darwin.so
       0x10c9e3000 -        0x10c9e4fff +_bz2.cpython-37m-darwin.so (0) <0EFDB952-9083-3284-B79B-FAFFF7E2FDB2> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_bz2.cpython-37m-darwin.so
       0x10ca28000 -        0x10ca2bff7 +_lzma.cpython-37m-darwin.so (0) <90EC91DE-F25C-3E21-AD59-3BC0D2CE4FE0> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_lzma.cpython-37m-darwin.so
       0x10ca30000 -        0x10ca4bfff +liblzma.5.dylib (0) <767E5514-4916-38C6-9815-CFD9191FFD9A> /usr/local/opt/xz/lib/liblzma.5.dylib
       0x10ca51000 -        0x10ca52fff +grp.cpython-37m-darwin.so (0) <9FC81284-268A-3916-9A96-B7BEAEF0D807> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/grp.cpython-37m-darwin.so
       0x10cb15000 -        0x10cb18fff +_struct.cpython-37m-darwin.so (0) <06EF8645-BD8E-3FE8-8259-B5A2098E118F> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_struct.cpython-37m-darwin.so
       0x10cb5f000 -        0x10cb6bffb +_pickle.cpython-37m-darwin.so (0) <A4508250-79CD-3388-B336-24724DD545A4> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_pickle.cpython-37m-darwin.so
       0x10cb75000 -        0x10cb7affb +array.cpython-37m-darwin.so (0) <F991B8FC-C2AA-3572-A8E3-B8D28A67F9A8> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/array.cpython-37m-darwin.so
       0x10cbc1000 -        0x10cbc4ff7 +binascii.cpython-37m-darwin.so (0) <351609F5-5463-35A1-A744-9B1BEE6A207B> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/binascii.cpython-37m-darwin.so
       0x10cc08000 -        0x10cc27ffb +pyexpat.cpython-37m-darwin.so (0) <FD89393A-A1E7-35FC-9EA4-4E6E98AF6576> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/pyexpat.cpython-37m-darwin.so
       0x10cf15000 -        0x10cf18fff +_csv.cpython-37m-darwin.so (0) <073C1A3A-048A-3D54-B1BE-2F7D23A90D2A> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_csv.cpython-37m-darwin.so
       0x10cf1d000 -        0x10cf1dfff +_contextvars.cpython-37m-darwin.so (0) <94895B91-74B6-319F-8CAD-4EAD8F1F05B9> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_contextvars.cpython-37m-darwin.so
       0x10cf20000 -        0x10cf21fff +termios.cpython-37m-darwin.so (0) <5E145C5B-1DA2-3B2E-959D-6403A55B1BC9> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/termios.cpython-37m-darwin.so
       0x10d173000 -        0x10d180fff +_ssl.cpython-37m-darwin.so (0) <BBCF73C2-D1C7-3468-AEDF-BCE1418AC8A5> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_ssl.cpython-37m-darwin.so
       0x10d1ce000 -        0x10d1d3fff +_asyncio.cpython-37m-darwin.so (0) <E29FC887-E5AE-3DB9-B6D3-008E446606DD> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_asyncio.cpython-37m-darwin.so
       0x10d29c000 -        0x10d2abfff +_ctypes.cpython-37m-darwin.so (0) <AE1F9AB4-7662-3FDF-B7D7-03E7833D4821> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_ctypes.cpython-37m-darwin.so
       0x10d2f6000 -        0x10d2f6fff +_uuid.cpython-37m-darwin.so (0) <8675DF4B-16E2-3945-B1A7-6157DCA846B1> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_uuid.cpython-37m-darwin.so
       0x10d7f9000 -        0x10d826ff7 +_decimal.cpython-37m-darwin.so (0) <BAAEE9E7-A1D9-3FEE-A596-9C663B26DBE7> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_decimal.cpython-37m-darwin.so
       0x10d8b9000 -        0x10d8bafff +_queue.cpython-37m-darwin.so (0) <0BB33325-EF09-3FED-A6D3-1424A090C66D> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_queue.cpython-37m-darwin.so
       0x10da8f000 -        0x10da90fff +_scproxy.cpython-37m-darwin.so (0) <911038ED-5667-3D32-A708-D7CFA7121D2A> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_scproxy.cpython-37m-darwin.so
       0x10dad3000 -        0x10dbd1fff +unicodedata.cpython-37m-darwin.so (0) <0DAAFBEC-DFA8-3B0C-91EF-DEF4D4B2B1DB> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/unicodedata.cpython-37m-darwin.so
       0x10ddc9000 -        0x10e1cdfff +etree.cpython-37m-darwin.so (0) <032168CD-4F41-372D-8BDA-01F6B1116059> /Users/USER/*/etree.cpython-37m-darwin.so
       0x10e3ac000 -        0x10e3c9ff3 +_elementpath.cpython-37m-darwin.so (0) <03D93F43-0B97-3BD8-8FC0-995E33B868CB> /Users/USER/*/_elementpath.cpython-37m-darwin.so
       0x10e42d000 -        0x10e6aaff3 +objectify.cpython-37m-darwin.so (0) <4A091459-4819-3D8B-8387-E4C6FB9BF8F2> /Users/USER/*/objectify.cpython-37m-darwin.so
       0x10e762000 -        0x10e8b7ff7 +QtCore.so (0) <FE9A9C68-C3AC-33AA-8A3D-DE7955103B4C> /Users/USER/*/QtCore.so
       0x10ea2e000 -        0x10ef69ff7 +QtCore (0) <8734E50A-7522-3DBE-AE6B-7FDD34486BE8> /Users/USER/*/QtCore.framework/Versions/5/QtCore
       0x10f027000 -        0x10f03afff +sip.so (0) <C4554A87-BD02-3EC7-9B98-D3E3D306F984> /Users/USER/*/sip.so
       0x10f0c5000 -        0x10f0e4ffb +QtWebEngineWidgets.so (0) <2A832DF3-30C9-33DD-8C7F-B620276D6FE3> /Users/USER/*/QtWebEngineWidgets.so
       0x10f10e000 -        0x10f12eff3 +QtWebEngineWidgets (0) <19BFFCDB-0B0B-3762-8144-7D41C4E3C051> /Users/USER/*/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets
       0x10f153000 -        0x116189f5f +QtWebEngineCore (0) <19C9254C-AA6F-3456-B017-428C0AEF1D48> /Users/USER/*/QtWebEngineCore.framework/Versions/5/QtWebEngineCore
       0x1168b3000 -        0x116b9fff7 +QtQuick (0) <C2E11527-F0A5-3917-96B9-16DB4237075A> /Users/USER/*/QtQuick.framework/Versions/5/QtQuick
       0x116caf000 -        0x116cd8ff7 +QtPrintSupport (0) <EF85935D-AA16-3F0B-92F3-E1945D33611A> /Users/USER/*/QtPrintSupport.framework/Versions/5/QtPrintSupport
       0x116cfb000 -        0x117137ff3 +QtWidgets (0) <C8B5CE41-7BF1-3D47-B9F7-C468BC82F1E9> /Users/USER/*/QtWidgets.framework/Versions/5/QtWidgets
       0x11729b000 -        0x1176e4fef +QtGui (0) <A7EBB7A5-5AD3-30E0-86F3-88995BED6ACA> /Users/USER/*/QtGui.framework/Versions/5/QtGui
       0x1177ea000 -        0x1177fefff +QtWebChannel (0) <DF2CA636-3B48-3105-92E7-3D41D035AABD> /Users/USER/*/QtWebChannel.framework/Versions/5/QtWebChannel
       0x117809000 -        0x117b7bffb +QtQml (0) <9469027E-FB4A-3C14-9ECD-300FF3CBD384> /Users/USER/*/QtQml.framework/Versions/5/QtQml
       0x117c2c000 -        0x117d37ff7 +QtNetwork (0) <1426CE54-42FC-32F7-BAF1-319AE07F6BEF> /Users/USER/*/QtNetwork.framework/Versions/5/QtNetwork
       0x117d80000 -        0x117de4fff +QtPositioning (0) <22EDE822-889A-3253-A701-A127212E1672> /Users/USER/*/QtPositioning.framework/Versions/5/QtPositioning
       0x117dfd000 -        0x117e08ff7 +QtQuickWidgets (0) <99276A71-B9BE-3D76-B174-F1454CF3E6F5> /Users/USER/*/QtQuickWidgets.framework/Versions/5/QtQuickWidgets
       0x117e62000 -        0x117fbeff3 +QtGui.so (0) <35E31EC3-89B6-3661-AAF9-E5E57D85736E> /Users/USER/*/QtGui.so
       0x1181cf000 -        0x118454fff +QtWidgets.so (0) <8EC23506-4B1C-326D-83B6-D2D5C3FDB4C5> /Users/USER/*/QtWidgets.so
       0x1187b3000 -        0x118812fff +QtNetwork.so (0) <2FEF57FC-2379-31CC-A189-0CC5B3CB1A87> /Users/USER/*/QtNetwork.so
       0x1188c9000 -        0x1188ceff7 +QtWebChannel.so (0) <FCDA7B5B-7227-38C5-8A11-197697DB02E8> /Users/USER/*/QtWebChannel.so
       0x1188dd000 -        0x1188deffb +_multiprocessing.cpython-37m-darwin.so (0) <5D6AB5A9-9EC6-3911-B1F6-9B47D8BA80A3> /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_multiprocessing.cpython-37m-darwin.so
       0x1188e6000 -        0x11895070f  dyld (655.1.1) <DF71FC3D-E58F-3D48-9165-3B96FF8BFA22> /usr/lib/dyld
       0x1189b1000 -        0x1189c0ffb +QtWebEngineCore.so (0) <AF82F088-F113-3827-BDA6-9AD0C28E77A5> /Users/USER/*/QtWebEngineCore.so
       0x119a00000 -        0x119a20ff7 +QtPrintSupport.so (0) <25A79623-C4BB-3C06-B031-718D53CB29B7> /Users/USER/*/QtPrintSupport.so
    0x7fff44b02000 -     0x7fff44b06fff  com.apple.agl (3.3.2 - AGL-3.3.2) <A5954DED-265B-395D-B907-3CEC000B10B6> /System/Library/Frameworks/AGL.framework/Versions/A/AGL
    0x7fff44b07000 -     0x7fff44ce3ffb  com.apple.avfoundation (2.0 - 1550.4) <FE6603A7-7E82-378C-B751-5848B56BDC0E> /System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation
    0x7fff44ce4000 -     0x7fff44da9fff  com.apple.audio.AVFAudio (1.0 - ???) <D454A339-2FC6-3EF6-992F-D676046612DB> /System/Library/Frameworks/AVFoundation.framework/Versions/A/Frameworks/AVFAudio.framework/Versions/A/AVFAudio
    0x7fff44eb1000 -     0x7fff44eb1fff  com.apple.Accelerate (1.11 - Accelerate 1.11) <762942CB-CFC9-3A0C-9645-A56523A06426> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff44ec9000 -     0x7fff45562fef  com.apple.vImage (8.1 - ???) <53FA3611-894E-3158-A654-FBD2F70998FE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff45563000 -     0x7fff457dcff3  libBLAS.dylib (1243.200.4) <417CA0FC-B6CB-3FB3-ACBC-8914E3F62D20> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff457dd000 -     0x7fff4584fffb  libBNNS.dylib (38.250.1) <538D12A2-9B9D-3E22-9896-F90F6E69C06E> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
    0x7fff45850000 -     0x7fff45bf9ff3  libLAPACK.dylib (1243.200.4) <92175DF4-863A-3780-909A-A3E5C410F2E9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff45bfa000 -     0x7fff45c0ffeb  libLinearAlgebra.dylib (1243.200.4) <CB671EE6-DEA1-391C-9B2B-AA09A46B4D7A> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
    0x7fff45c10000 -     0x7fff45c15ff3  libQuadrature.dylib (3.200.2) <1BAE7E22-2862-379F-B334-A3756067730F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
    0x7fff45c16000 -     0x7fff45c92ff3  libSparse.dylib (79.200.5) <E78B33D3-672A-3C53-B512-D3DDB2E9AC8D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
    0x7fff45c93000 -     0x7fff45ca6fe3  libSparseBLAS.dylib (1243.200.4) <E9243341-DB77-37C1-97C5-3DFA00DD70FA> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
    0x7fff45ca7000 -     0x7fff45e8eff7  libvDSP.dylib (671.250.4) <7B110627-A9C1-3FB7-A077-0C7741BA25D8> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff45e8f000 -     0x7fff45f42ff7  libvMisc.dylib (671.250.4) <D5BA4812-BFFC-3CD0-B382-905CD8555DA6> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff45f43000 -     0x7fff45f43fff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <74288115-EF61-30B6-843F-0593B31D4929> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff460e5000 -     0x7fff46e9affb  com.apple.AppKit (6.9 - 1671.60.109) <78DB9AAE-C127-3BAA-8BAE-145AAFBFFBA2> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff46eec000 -     0x7fff46eecfff  com.apple.ApplicationServices (50.1 - 50.1) <DD5FDF45-E7C1-335C-8757-3D714CBA9367> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff46eed000 -     0x7fff46f58fff  com.apple.ApplicationServices.ATS (377 - 453.11.2.2) <A258DA73-114B-3102-A056-4AAAD3CEB9DD> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff46ff1000 -     0x7fff47108ff7  libFontParser.dylib (228.6.2.5) <CEDF1D5A-8897-3621-A1DC-558301F8BE05> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff47109000 -     0x7fff4714bfff  libFontRegistry.dylib (228.12.2.4) <6DDE44EC-FF6B-3893-9209-45E0955ABDD5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff4723c000 -     0x7fff47240ff3  com.apple.ColorSyncLegacy (4.13.0 - 1) <E8E9342C-47EB-359D-A373-554AC19B174A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
    0x7fff472db000 -     0x7fff4732dff7  com.apple.HIServices (1.22 - 628) <2BE461FF-80B9-30D3-A574-AED5724B1C1B> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff4732e000 -     0x7fff4733dfff  com.apple.LangAnalysis (1.7.0 - 1.7.0) <F5617A2A-FEA6-3832-B5BA-C2111B98786F> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff4733e000 -     0x7fff47387ff7  com.apple.print.framework.PrintCore (14.7 - 503.8) <E1D0FCBC-155E-372E-A90F-4A20B94FC114> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff47388000 -     0x7fff473c1ff7  com.apple.QD (3.12 - 407.2) <28C7D39F-59C9-3314-BECC-67045487229C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff473c2000 -     0x7fff473cefff  com.apple.speech.synthesis.framework (8.1.3 - 8.1.3) <5E7B9BD4-122B-3012-A044-3259C97E7509> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff473cf000 -     0x7fff47646fff  com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <32487CB2-246B-3B80-8F60-D65DFC367DDC> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff47648000 -     0x7fff47648fff  com.apple.audio.units.AudioUnit (1.14 - 1.14) <B489CFDA-DEF3-38F5-A815-23EC30B8DA03> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff479a1000 -     0x7fff47d43fff  com.apple.CFNetwork (978.3 - 978.3) <6A5459BD-77A4-386C-872D-9BB297D83588> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff47d58000 -     0x7fff47d58fff  com.apple.Carbon (158 - 158) <38182BEA-597C-39AC-B4BA-4849E24EE84E> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff47d59000 -     0x7fff47d5cffb  com.apple.CommonPanels (1.2.6 - 98) <1CD6D56D-8EC7-3528-8CBC-FC69533519B5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff47d5d000 -     0x7fff48054fff  com.apple.HIToolbox (2.1.1 - 918.7) <88D7F19C-8C9D-384B-BAB5-8205CA282F2C> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff48055000 -     0x7fff48058ff3  com.apple.help (1.3.8 - 66) <A08517EB-8958-36C9-AEE0-1A8FEEACBE3F> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff48059000 -     0x7fff4805eff7  com.apple.ImageCapture (9.0 - 1534.2) <DB063E87-ED8F-3E4E-A7E2-A6B45FA73EF7> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff4805f000 -     0x7fff480f4ff3  com.apple.ink.framework (10.9 - 225) <7C7E9483-2E91-3DD3-B1E0-C238F42CA0DD> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff480f5000 -     0x7fff4810dff7  com.apple.openscripting (1.7 - 179.1) <9B8C1ECC-5864-3E21-9149-863E884EA25C> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff4812d000 -     0x7fff4812eff7  com.apple.print.framework.Print (14.2 - 267.4) <A7A9D2A0-D4E0-35EF-A0F7-50521F707C33> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff4812f000 -     0x7fff48131ff7  com.apple.securityhi (9.0 - 55006) <05717F77-7A7B-37E6-AB3E-03F063E9095B> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff48132000 -     0x7fff48138ff7  com.apple.speech.recognition.framework (6.0.3 - 6.0.3) <3CC050FB-EBCB-3087-8EA5-F378C8F99217> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff4825a000 -     0x7fff4825afff  com.apple.Cocoa (6.11 - 23) <BB61D501-2D32-3DA2-9573-0C884189B211> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff48268000 -     0x7fff483b7ff7  com.apple.ColorSync (4.13.0 - 3345.6) <356BA478-76DE-3087-86BE-5E884276AB83> /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff48543000 -     0x7fff485c9fff  com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <1E8E64E6-0E58-375A-97F7-07CB4EE181AC> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff4862d000 -     0x7fff48657ffb  com.apple.CoreBluetooth (1.0 - 1) <4F2DDEF0-1F92-384B-8CDA-4958725D0A8E> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
    0x7fff48658000 -     0x7fff489ddfef  com.apple.CoreData (120 - 866.6) <132CB39B-8D58-30FA-B8AD-49BFFF34B293> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff489de000 -     0x7fff48aceff7  com.apple.CoreDisplay (101.3 - 110.18) <6DD41271-E145-3E99-9D49-7CC8AC1C65B6> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
    0x7fff48acf000 -     0x7fff48f14ff7  com.apple.CoreFoundation (6.9 - 1575.235) <BECD568A-70AE-32BC-A6F1-A69BD61C1D37> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff48f16000 -     0x7fff495a6fe7  com.apple.CoreGraphics (2.0 - 1265.10) <92E5B053-A926-3788-B3BB-E563B2B96836> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff495a8000 -     0x7fff498c8fff  com.apple.CoreImage (14.4.0 - 750.0.140) <11026E39-D2FF-3CF6-8ACE-7BA293F9853E> /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff49942000 -     0x7fff49998ff7  com.apple.audio.midi.CoreMIDI (1.10 - 88) <130FB156-4863-3B5D-9508-DBF42A73823B> /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI
    0x7fff4999b000 -     0x7fff49bc4fff  com.apple.CoreML (1.0 - 1) <9EC1FED2-BA47-307B-A326-43C4D05166E7> /System/Library/Frameworks/CoreML.framework/Versions/A/CoreML
    0x7fff49bc5000 -     0x7fff49cc9fff  com.apple.CoreMedia (1.0 - 2290.14) <2C7A5348-7F19-3E28-97E4-6065A64B1DC9> /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
    0x7fff49cca000 -     0x7fff49d25fff  com.apple.CoreMediaIO (900.0 - 5050.1) <31BD51EA-4327-3087-BBFB-CC585AE3B4A6> /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO
    0x7fff49d26000 -     0x7fff49d26fff  com.apple.CoreServices (946 - 946) <BC6F47BD-5947-32C3-BDC9-4C63AF659F4E> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff49d27000 -     0x7fff49da3ff7  com.apple.AE (773 - 773) <55AE7C9E-27C3-30E9-A047-3B92A6FD53B4> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff49da4000 -     0x7fff4a07bfff  com.apple.CoreServices.CarbonCore (1178.33 - 1178.33) <CB87F0C7-2CD6-3983-8E32-B6A2EC925352> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff4a07c000 -     0x7fff4a0c4ff7  com.apple.DictionaryServices (1.2 - 284.16.4) <746EB200-DC51-30AE-9CBC-608A7B4CC8DA> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff4a0c5000 -     0x7fff4a0cdffb  com.apple.CoreServices.FSEvents (1239.200.13 - 1239.200.13) <5913F08D-4AA2-3200-B998-012E6A19A66D> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
    0x7fff4a0ce000 -     0x7fff4a27fff7  com.apple.LaunchServices (946 - 946) <A0C91634-9410-38E8-BC11-7A5A369E6BA5> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff4a280000 -     0x7fff4a31eff7  com.apple.Metadata (10.7.0 - 1191.58) <89DA10B4-5695-3FD9-A920-C34C33957868> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff4a31f000 -     0x7fff4a369ff7  com.apple.CoreServices.OSServices (946 - 946) <20C4EEF8-D5AC-39A0-9B4A-78F88E3EFBCC> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff4a36a000 -     0x7fff4a3d1ff7  com.apple.SearchKit (1.4.0 - 1.4.0) <DA08AA6F-A6F1-36C0-87F4-E26294E51A3A> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff4a3d2000 -     0x7fff4a3f3ff3  com.apple.coreservices.SharedFileList (71.28 - 71.28) <487A8464-729E-305A-B5D1-E3FE8EB9CFC5> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
    0x7fff4a6fe000 -     0x7fff4a860ff3  com.apple.CoreText (352.0 - 584.26.3.4) <7247EA49-9F90-3258-AABF-932C6343BD6A> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff4a861000 -     0x7fff4a8a1ff3  com.apple.CoreVideo (1.8 - 281.4) <10CF8E52-07E3-382B-8091-2CEEEFFA69B4> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff4a8a2000 -     0x7fff4a931fff  com.apple.framework.CoreWLAN (13.0 - 1375.2) <EC43DDAD-D838-3469-88F1-667EF5963AD1> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
    0x7fff4aab4000 -     0x7fff4ab62fff  com.apple.DiscRecording (9.0.3 - 9030.4.5) <D7A28B57-C025-3D44-BB17-82243B7B91BC> /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording
    0x7fff4ab88000 -     0x7fff4ab8dffb  com.apple.DiskArbitration (2.7 - 2.7) <0D7444BE-7F82-3480-8873-08E8EBC6DE47> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff4ad51000 -     0x7fff4ad53ff3  com.apple.ForceFeedback (1.0.6 - 1.0.6) <205B0C3E-4E8D-3347-A993-469F06ABBFF9> /System/Library/Frameworks/ForceFeedback.framework/Versions/A/ForceFeedback
    0x7fff4ad54000 -     0x7fff4b101ffb  com.apple.Foundation (6.9 - 1575.235) <60DBA0A0-F514-3755-9E19-A62216D7C856> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff4b170000 -     0x7fff4b19fffb  com.apple.GSS (4.0 - 2.0) <E2B90D08-3857-3155-9FCC-07D778988EC9> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff4b1a0000 -     0x7fff4b1b9ff3  com.apple.GameController (1.0 - 1) <9339D37B-54EA-31C5-A4A5-2135288BA992> /System/Library/Frameworks/GameController.framework/Versions/A/GameController
    0x7fff4b29f000 -     0x7fff4b3a9fff  com.apple.Bluetooth (6.0.14 - 6.0.14d8) <526047AA-211F-3E6E-9418-B0379AE193F5> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
    0x7fff4b40c000 -     0x7fff4b49bfff  com.apple.framework.IOKit (2.0.2 - 1483.260.4) <8A90F547-86EF-3DFB-92FE-0E2C0376DD84> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff4b49d000 -     0x7fff4b4acffb  com.apple.IOSurface (255.6.1 - 255.6.1) <85F85EBB-EA59-3A8B-B3EB-7C20F3CC77AE> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff4b4ad000 -     0x7fff4b4ffff3  com.apple.ImageCaptureCore (1.0 - 1534.2) <27942C51-8108-3ED9-B37E-7C365A31EC2D> /System/Library/Frameworks/ImageCaptureCore.framework/Versions/A/ImageCaptureCore
    0x7fff4b500000 -     0x7fff4b68cfef  com.apple.ImageIO.framework (3.3.0 - 1850.2.6) <CA362EE8-5EFD-33C3-AAB8-241846C486F1> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff4b68d000 -     0x7fff4b691ffb  libGIF.dylib (1850.2.6) <22A37594-65B6-38D3-BE4E-FB4ECFA1D93C> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff4b692000 -     0x7fff4b76efe7  libJP2.dylib (1850.2.6) <5CC65160-9FF8-3E92-858D-17FB9E80B43D> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff4b76f000 -     0x7fff4b794feb  libJPEG.dylib (1850.2.6) <E484FD1B-0033-3177-A1C5-2E2795E9CBD8> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff4ba57000 -     0x7fff4ba7dfeb  libPng.dylib (1850.2.6) <05430FA2-EF4E-3765-AF93-463F01E6EBA7> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff4ba7e000 -     0x7fff4ba80ffb  libRadiance.dylib (1850.2.6) <AD9283A9-9CA9-3ECE-9236-1D142B94645B> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff4ba81000 -     0x7fff4bacefeb  libTIFF.dylib (1850.2.6) <BB39423E-2C3A-3C65-A497-2F951354E0A1> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff4bdc9000 -     0x7fff4cc29fff  com.apple.JavaScriptCore (14607 - 14607.3.9) <E25D3B54-A072-33F3-AA89-6F8588BF5A05> /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore
    0x7fff4cc41000 -     0x7fff4cc5afff  com.apple.Kerberos (3.0 - 1) <DB1E0679-37E1-3B93-9789-32F63D660C3B> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff4cf14000 -     0x7fff4cf1efff  com.apple.MediaAccessibility (1.0 - 114.4) <76C449C5-DB45-3D7F-BFAD-3DACEF15DA21> /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
    0x7fff4cfce000 -     0x7fff4d674fff  com.apple.MediaToolbox (1.0 - 2290.14) <927F9E24-32DB-33F9-9866-4DD8092A51F4> /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
    0x7fff4d676000 -     0x7fff4d71eff7  com.apple.Metal (162.2 - 162.2) <B65C71BF-D40E-3BB3-940C-117DDD203551> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
    0x7fff4d720000 -     0x7fff4d739ff3  com.apple.MetalKit (1.0 - 113) <51CDE966-54A7-3556-971B-1173E9986BB8> /System/Library/Frameworks/MetalKit.framework/Versions/A/MetalKit
    0x7fff4d73a000 -     0x7fff4d759ff7  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <44CE8362-E972-3697-AD6F-15BC863BAEB8> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore
    0x7fff4d75a000 -     0x7fff4d7d6fe7  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <EE8440DA-66DF-3923-ABBC-E0543211C069> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage
    0x7fff4d7d7000 -     0x7fff4d7fefff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <E64450DF-2B96-331E-B7F4-666E00571C70> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
    0x7fff4d7ff000 -     0x7fff4d92aff7  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <F2CF26B6-73F1-3644-8FE9-CDB9B2C4501F> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
    0x7fff4d92b000 -     0x7fff4d945fff  com.apple.MetalPerformanceShaders.MPSRayIntersector (1.0 - 1) <B33A35C3-0393-366B-ACFB-F4BB6A5F7B4A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
    0x7fff4d946000 -     0x7fff4d947ff7  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <69F14BCF-C5C5-3BF8-9C31-8F87D2D6130A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
    0x7fff4e73e000 -     0x7fff4e74aff7  com.apple.NetFS (6.0 - 4.0) <E917806F-0607-3292-B2D6-A15404D61B99> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff511e8000 -     0x7fff5123fff7  com.apple.opencl (2.15.3 - 2.15.3) <3F72F3B0-F607-39E5-BDF6-5C37C9B67430> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff51240000 -     0x7fff5125bff7  com.apple.CFOpenDirectory (10.14 - 207.200.4) <F03D84EB-49B2-3A00-9127-B9A269824026> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff5125c000 -     0x7fff51267ffb  com.apple.OpenDirectory (10.14 - 207.200.4) <A8020CEE-5B78-3581-A735-EA2833683F31> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff51bb7000 -     0x7fff51bb9fff  libCVMSPluginSupport.dylib (17.7.3) <83C36A70-5F35-37D1-A124-A2CD497F1915> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff51bba000 -     0x7fff51bbfff3  libCoreFSCache.dylib (166.5) <5BC99EE7-7FFD-3F30-9AEE-EEDC25067AC4> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
    0x7fff51bc0000 -     0x7fff51bc4fff  libCoreVMClient.dylib (166.5) <B8FA5858-8185-3992-AD3B-A81AF08C3CDD> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff51bc5000 -     0x7fff51bcdff7  libGFXShared.dylib (17.7.3) <09F50639-F0CB-3312-8BAC-5AA8083350F6> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff51bce000 -     0x7fff51bd9fff  libGL.dylib (17.7.3) <4EEC82D4-A3C6-336D-9F90-67F1D24ED35B> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff51bda000 -     0x7fff51c14fef  libGLImage.dylib (17.7.3) <B175F261-69D1-3366-A009-DF75CB32E2F9> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff51d88000 -     0x7fff51dc6fff  libGLU.dylib (17.7.3) <5BB2F84A-4D96-35A1-8A5B-99AE39CD9E59> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff52763000 -     0x7fff52772ffb  com.apple.opengl (17.7.3 - 17.7.3) <9C1FCE6E-FED6-3A09-9FDC-4C81F8CDB2A6> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff52af5000 -     0x7fff52c3eff7  com.apple.QTKit (7.7.3 - 3040) <D42BB4BE-B347-3113-ACA4-3257A5E45F52> /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit
    0x7fff52c3f000 -     0x7fff52e93fff  com.apple.imageKit (3.0 - 1067) <4F398AF4-828E-3FC2-9E3D-4EE3F36F7619> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/ImageKit.framework/Versions/A/ImageKit
    0x7fff52e94000 -     0x7fff52f81ff3  com.apple.PDFKit (1.0 - 745.4) <59D93E57-AEBC-390A-A274-D2F5FF7BB495> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/PDFKit.framework/Versions/A/PDFKit
    0x7fff52f82000 -     0x7fff53451ff7  com.apple.QuartzComposer (5.1 - 370) <9C59494E-8D09-359E-B457-AA893520984C> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/QuartzComposer
    0x7fff53452000 -     0x7fff53478ff7  com.apple.quartzfilters (1.10.0 - 83.1) <1CABB0FA-A6DB-3DD5-A598-F298F081E04E> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzFilters.framework/Versions/A/QuartzFilters
    0x7fff53479000 -     0x7fff5357aff7  com.apple.QuickLookUIFramework (5.0 - 775.6) <5660DDBA-2BE4-310A-9E81-370106EDB21D> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuickLookUI.framework/Versions/A/QuickLookUI
    0x7fff5357b000 -     0x7fff5357bfff  com.apple.quartzframework (1.5 - 23) <E31CCEA6-FE51-38F9-87E9-22CAD454A3DB> /System/Library/Frameworks/Quartz.framework/Versions/A/Quartz
    0x7fff5357c000 -     0x7fff537d3ff7  com.apple.QuartzCore (1.11 - 701.14) <1E82D0E6-EB06-3CC6-AEB5-06E3365887D0> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff537d4000 -     0x7fff5382bfff  com.apple.QuickLookFramework (5.0 - 775.6) <CB74C63F-E223-3783-9021-8E28091BCDA6> /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook
    0x7fff539f2000 -     0x7fff53a0aff7  com.apple.SafariServices.framework (14609 - 14609.2.9.1.3) <EA1DD9F9-B0F0-3F38-B8FF-910BDAA1D6AF> /System/Library/Frameworks/SafariServices.framework/Versions/A/SafariServices
    0x7fff54009000 -     0x7fff54309ff7  com.apple.security (7.0 - 58286.270.6) <0FA49A7B-26C3-3DEF-B369-046E6D0CDF12> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff5430a000 -     0x7fff54396fff  com.apple.securityfoundation (6.0 - 55185.260.1) <C5C23F73-34A8-3676-9FFB-B18ABB42DA1A> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff543c8000 -     0x7fff543ccfff  com.apple.xpc.ServiceManagement (1.0 - 1) <7F9EC269-38C8-334B-976A-3951021B28B7> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff54765000 -     0x7fff547d2fff  com.apple.SystemConfiguration (1.17 - 1.17) <30C8327F-3EFF-3520-9C50-016F8B6B954F> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff54a31000 -     0x7fff54d92fff  com.apple.VideoToolbox (1.0 - 2290.14) <30C690CF-8935-39E8-B343-ADB009C84FC5> /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
    0x7fff57a0e000 -     0x7fff57ab3fff  com.apple.APFS (1.0 - 1) <06284DE8-5883-39F8-B04D-0D5EA74D12ED> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
    0x7fff584c8000 -     0x7fff584c9ff7  com.apple.AggregateDictionary (1.0 - 1) <A6AF8AC4-1F25-37C4-9157-A02E9C200926> /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
    0x7fff58887000 -     0x7fff589cafff  com.apple.AnnotationKit (1.0 - 232.3.31) <73F4FFC8-A97F-3B97-AA8B-7C4CFF769295> /System/Library/PrivateFrameworks/AnnotationKit.framework/Versions/A/AnnotationKit
    0x7fff58aca000 -     0x7fff58af6ff7  com.apple.framework.Apple80211 (13.0 - 1380.2) <E02D473E-2CE6-34EA-833C-758E479E066A> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
    0x7fff58c1e000 -     0x7fff58c2dfc7  com.apple.AppleFSCompression (96.200.3 - 1.0) <3CF60CE8-976E-3CB8-959D-DD0948C1C2DE> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
    0x7fff58d29000 -     0x7fff58d34fff  com.apple.AppleIDAuthSupport (1.0 - 1) <2E9D1398-DBE6-328B-ADDA-20FA5FAD7405> /System/Library/PrivateFrameworks/AppleIDAuthSupport.framework/Versions/A/AppleIDAuthSupport
    0x7fff58d75000 -     0x7fff58dbeff3  com.apple.AppleJPEG (1.0 - 1) <4C1F426B-7D77-3980-9633-7DBD8C666B9A> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
    0x7fff59012000 -     0x7fff59034fff  com.apple.applesauce (1.0 - ???) <F49107C7-3C51-3024-8EF1-C57643BE4F3B> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
    0x7fff590f4000 -     0x7fff590f7ff7  com.apple.AppleSystemInfo (3.1.5 - 3.1.5) <B4359468-EB6F-34E6-9B6F-AB23721D4A40> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
    0x7fff590f8000 -     0x7fff59148ff7  com.apple.AppleVAFramework (5.1.4 - 5.1.4) <496592DF-D9FC-3CE0-BE60-00EDB4A3079B> /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
    0x7fff59193000 -     0x7fff591a7ffb  com.apple.AssertionServices (1.0 - 1) <456E507A-4561-3628-9FBE-173ACE7429D8> /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
    0x7fff59576000 -     0x7fff59662ff7  com.apple.AuthKit (1.0 - 1) <2765ABE9-54F2-3E45-8A93-1261E251B90D> /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/AuthKit
    0x7fff59824000 -     0x7fff5982cfff  com.apple.coreservices.BackgroundTaskManagement (1.0 - 57.1) <2A396FC0-7B79-3088-9A82-FB93C1181A57> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
    0x7fff5982d000 -     0x7fff598c2fff  com.apple.backup.framework (1.10.5 - ???) <4EEC51E2-AE4C-340A-B686-901810152C12> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
    0x7fff598c3000 -     0x7fff59930ff3  com.apple.BaseBoard (360.28 - 360.28) <68FA8044-F3CD-3BC6-9DAB-27DACF52BFC0> /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
    0x7fff59939000 -     0x7fff5993fffb  com.apple.BezelServicesFW (317.5 - 317.5) <AEA46A32-E9A5-3EC2-9246-5506BDC4CA13> /System/Library/PrivateFrameworks/BezelServices.framework/Versions/A/BezelServices
    0x7fff5a790000 -     0x7fff5a7dfff7  com.apple.ChunkingLibrary (201 - 201) <DFE16C42-24E6-386F-AC50-0058F61980A2> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
    0x7fff5b59d000 -     0x7fff5b5a6ffb  com.apple.CommonAuth (4.0 - 2.0) <93335CB6-ABEB-3EC7-A040-8A667F40D5F3> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff5ba3f000 -     0x7fff5be22fef  com.apple.CoreAUC (274.0.0 - 274.0.0) <C71F1581-E73B-3DA0-958B-E912C3FB3F23> /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
    0x7fff5be23000 -     0x7fff5be51ff7  com.apple.CoreAVCHD (6.0.0 - 6000.4.1) <A04A99B8-DAC5-36FC-BAC7-7431600C1F89> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
    0x7fff5bee7000 -     0x7fff5bf45ffb  com.apple.corebrightness (1.0 - 1) <9A9CA4DA-C749-3DE8-A7A4-1FC93D10A790> /System/Library/PrivateFrameworks/CoreBrightness.framework/Versions/A/CoreBrightness
    0x7fff5c27f000 -     0x7fff5c290ff7  com.apple.CoreEmoji (1.0 - 69.19.9) <228457B3-E191-356E-9A5B-3C0438D05FBA> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
    0x7fff5c439000 -     0x7fff5c528fff  com.apple.CoreHandwriting (161 - 1.2) <7CBB18C3-FE95-3352-9D67-B441E89AD10F> /System/Library/PrivateFrameworks/CoreHandwriting.framework/Versions/A/CoreHandwriting
    0x7fff5c6fa000 -     0x7fff5c710ffb  com.apple.CoreMediaAuthoring (2.2 - 959) <86089759-E920-37DB-A3BB-F5621C351E4A> /System/Library/PrivateFrameworks/CoreMediaAuthoring.framework/Versions/A/CoreMediaAuthoring
    0x7fff5c83a000 -     0x7fff5c8a0ff7  com.apple.CoreNLP (1.0 - 130.15.22) <27877820-17D0-3B02-8557-4014E876CCC7> /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
    0x7fff5ca0c000 -     0x7fff5ca98fff  com.apple.CorePDF (4.0 - 414) <E4ECDD15-34C0-30C2-AFA9-27C8EDAC3DB0> /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF
    0x7fff5cb4d000 -     0x7fff5cb55ff7  com.apple.CorePhoneNumbers (1.0 - 1) <11F97C7E-C183-305F-8E6C-9B374F50E26B> /System/Library/PrivateFrameworks/CorePhoneNumbers.framework/Versions/A/CorePhoneNumbers
    0x7fff5ccd1000 -     0x7fff5cd02ff3  com.apple.CoreServicesInternal (358 - 358) <DD6EF60D-048F-3186-83DA-EB191EDF48AE> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
    0x7fff5d0c9000 -     0x7fff5d14dfff  com.apple.CoreSymbolication (10.2 - 64490.25.1) <28B2FF2D-3FDE-3A20-B343-341E5BD4E22F> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff5d1dd000 -     0x7fff5d308ff7  com.apple.coreui (2.1 - 499.10) <A80F4B09-F940-346F-A9DF-4EFADD9220A8> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff5d309000 -     0x7fff5d4a9fff  com.apple.CoreUtils (5.9 - 590.16) <9D7E165D-EB34-3E01-A02B-FF6BFBD81DD5> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
    0x7fff5d4fd000 -     0x7fff5d560ff7  com.apple.framework.CoreWiFi (13.0 - 1375.2) <343139CE-6BCC-3B6B-91B4-24A503AEE607> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
    0x7fff5d561000 -     0x7fff5d572ff3  com.apple.CrashReporterSupport (10.13 - 938.28) <74CC266D-FEF3-32DB-A16F-0ECB8D79C993> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
    0x7fff5d602000 -     0x7fff5d611fff  com.apple.framework.DFRFoundation (1.0 - 211.1) <E3F02F2A-2059-39CC-85DA-969676EB88EB> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
    0x7fff5d612000 -     0x7fff5d616ff7  com.apple.DSExternalDisplay (3.1 - 380) <787B9748-B120-3453-B8FE-61D9E363A9E0> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
    0x7fff5d697000 -     0x7fff5d70cffb  com.apple.datadetectorscore (7.0 - 590.27) <06FB1A07-7AE6-3ADD-8E7E-41955FAB38E8> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff5d758000 -     0x7fff5d795ff7  com.apple.DebugSymbols (190 - 190) <6F4FAACA-E06B-38AD-A0C2-14EA5408A231> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff5d796000 -     0x7fff5d8d1ff7  com.apple.desktopservices (1.13.5 - ???) <ED60E493-4E56-3622-A55C-2CABF5D02316> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff5dadd000 -     0x7fff5dba3fff  com.apple.DiskManagement (12.1 - 1555.270.2) <087F13AB-C8DA-3E6A-B457-1AA894D73ECC> /System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement
    0x7fff5dba4000 -     0x7fff5dba8ffb  com.apple.DisplayServicesFW (3.1 - 380) <62041594-2A4C-3362-87EE-F8E8C8E5BEEC> /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
    0x7fff5dc51000 -     0x7fff5dc54ff3  com.apple.EFILogin (2.0 - 2) <C8EDA539-CA28-3962-8507-DC5F058CB6B5> /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin
    0x7fff5e38a000 -     0x7fff5e66cff7  com.apple.vision.EspressoFramework (1.0 - 120) <8B56D943-F87B-3A01-B7A4-19DE3312B61C> /System/Library/PrivateFrameworks/Espresso.framework/Versions/A/Espresso
    0x7fff5e818000 -     0x7fff5ec33fff  com.apple.vision.FaceCore (3.3.4 - 3.3.4) <A576E2DA-BF6F-3B18-8FEB-324E5C5FA9BD> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
    0x7fff63b88000 -     0x7fff63b8dfff  com.apple.GPUWrangler (3.50.15 - 3.50.15) <B42426AC-C5E9-3ECD-9798-22811555C9F6> /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
    0x7fff63f1b000 -     0x7fff63f3fff3  com.apple.GenerationalStorage (2.0 - 285.101) <84C2E52C-F2C6-3FF8-87E5-3C88A40D3881> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
    0x7fff64999000 -     0x7fff649a8fff  com.apple.GraphVisualizer (1.0 - 5) <48D020B7-5938-3FAE-B468-E291AEE2C06F> /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
    0x7fff64b0e000 -     0x7fff64b82ffb  com.apple.Heimdal (4.0 - 2.0) <D97FCF19-EAD6-3E2F-BE88-F817E45CAE96> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff65e87000 -     0x7fff65e8effb  com.apple.IOAccelerator (404.14 - 404.14) <8E1BB4BA-15A7-3711-8502-AD2770EE368F> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
    0x7fff65e92000 -     0x7fff65eaafff  com.apple.IOPresentment (1.0 - 42.6) <890C4723-37AB-344B-9BF8-BFD436C06EE8> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
    0x7fff66252000 -     0x7fff6627fff7  com.apple.IconServices (379 - 379) <7BAD562D-4FA3-3E11-863C-1EEBE2406D2C> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
    0x7fff663a9000 -     0x7fff663adffb  com.apple.InternationalSupport (1.0 - 10.15.6) <6226A905-D055-321D-B665-5B0CC4798A74> /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
    0x7fff66512000 -     0x7fff66524ff3  com.apple.security.KeychainCircle.KeychainCircle (1.0 - 1) <70CE5230-195D-3443-94EE-EFA57039724F> /System/Library/PrivateFrameworks/KeychainCircle.framework/Versions/A/KeychainCircle
    0x7fff6653f000 -     0x7fff6661aff7  com.apple.LanguageModeling (1.0 - 159.15.15) <3DE3CE61-542B-37B7-883E-4B9717CAC65F> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
    0x7fff6661b000 -     0x7fff66657ff7  com.apple.Lexicon-framework (1.0 - 33.15.10) <4B5E843E-2809-3E70-9560-9254E2656419> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
    0x7fff6665e000 -     0x7fff66663fff  com.apple.LinguisticData (1.0 - 238.25) <F529B961-098C-3E4C-A3E9-9DA9BFA1B3F0> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
    0x7fff66e82000 -     0x7fff66e85fff  com.apple.Mangrove (1.0 - 25) <537A5B2E-4C30-3CFD-8BDC-79F9A04AC327> /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove
    0x7fff66f0c000 -     0x7fff66f32ff3  com.apple.MarkupUI (1.0 - 232.3.31) <51E6781F-99C4-37D1-8FFE-0AFEDA997396> /System/Library/PrivateFrameworks/MarkupUI.framework/Versions/A/MarkupUI
    0x7fff66f9a000 -     0x7fff66fcdff7  com.apple.MediaKit (16 - 907) <AB279933-3DEB-3F96-9634-166B8F0C2919> /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit
    0x7fff67359000 -     0x7fff67381ff7  com.apple.spotlight.metadata.utilities (1.0 - 1191.58) <23E8580B-19C0-3E4F-A9FE-368DA80EAA6F> /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
    0x7fff67382000 -     0x7fff6740fff7  com.apple.gpusw.MetalTools (1.0 - 1) <9B542958-6363-3041-A265-EC7AC7BD7A43> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
    0x7fff675df000 -     0x7fff675faffb  com.apple.MobileKeyBag (2.0 - 1.0) <39337CBB-1D39-3DDC-A998-591194C76523> /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
    0x7fff6760d000 -     0x7fff67682fff  com.apple.Montreal (1.0 - 42.15.9) <17BFD046-4362-3A76-A496-648D00FF3743> /System/Library/PrivateFrameworks/Montreal.framework/Versions/A/Montreal
    0x7fff67683000 -     0x7fff676adffb  com.apple.MultitouchSupport.framework (2450.1 - 2450.1) <42A23EC9-64A7-31C7-BF33-DF4412ED8A3F> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff678e9000 -     0x7fff678f3fff  com.apple.NetAuth (6.2 - 6.2) <0D01BBE5-0269-310D-B148-D19DAE143DEB> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff68154000 -     0x7fff681a5ff3  com.apple.OTSVG (1.0 - ???) <B7620B5E-CDE2-3BDD-B6EC-8AB143FC5C4E> /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
    0x7fff6924a000 -     0x7fff6933dfff  com.apple.PencilKit (1.0 - 1) <79225726-6980-3680-AC0B-D8C5C5DB2224> /System/Library/PrivateFrameworks/PencilKit.framework/Versions/A/PencilKit
    0x7fff6933e000 -     0x7fff6934dff7  com.apple.PerformanceAnalysis (1.218.2 - 218.2) <65F3DB3E-6D4E-33A0-B510-EF768D323DAB> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff6b18a000 -     0x7fff6b1deffb  com.apple.ProtectedCloudStorage (1.0 - 1) <0D6BFA27-B807-3999-8B65-C2183803CA20> /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage
    0x7fff6b1df000 -     0x7fff6b1fdff7  com.apple.ProtocolBuffer (1 - 263.2) <907D6C95-D050-31DE-99CA-16A5135BC6F9> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
    0x7fff6b37b000 -     0x7fff6b37eff3  com.apple.QuickLookNonBaseSystem (1.0 - 1) <69D0DD00-A3D2-3835-91F0-F33BD9D7D740> /System/Library/PrivateFrameworks/QuickLookNonBaseSystem.framework/Versions/A/QuickLookNonBaseSystem
    0x7fff6b37f000 -     0x7fff6b394ff3  com.apple.QuickLookThumbnailing (1.0 - 1) <B5E746AE-1DCB-3299-8626-10CCCBC2D5EE> /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Versions/A/QuickLookThumbnailing
    0x7fff6b395000 -     0x7fff6b3e5fff  com.apple.ROCKit (27.6 - 27.6) <756C2253-E8B1-3C48-9945-DE8D6AD24DE2> /System/Library/PrivateFrameworks/ROCKit.framework/Versions/A/ROCKit
    0x7fff6b525000 -     0x7fff6b530fff  com.apple.xpc.RemoteServiceDiscovery (1.0 - 1336.261.4) <91B495F6-7379-32A4-8185-265A193C9DF7> /System/Library/PrivateFrameworks/RemoteServiceDiscovery.framework/Versions/A/RemoteServiceDiscovery
    0x7fff6b543000 -     0x7fff6b565fff  com.apple.RemoteViewServices (2.0 - 128) <8FB0E4EB-DCBB-32E6-94C6-AA9BA9EE4CAC> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff6b566000 -     0x7fff6b579ff3  com.apple.xpc.RemoteXPC (1.0 - 1336.261.4) <F2A776AB-3830-3481-B4C4-A63FD454A1D0> /System/Library/PrivateFrameworks/RemoteXPC.framework/Versions/A/RemoteXPC
    0x7fff6cd6f000 -     0x7fff6ce8dfff  com.apple.Sharing (1288.62.5 - 1288.62.5) <BB647030-839A-3271-B205-D4325346DD3B> /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
    0x7fff6dca1000 -     0x7fff6df50fff  com.apple.SkyLight (1.600.0 - 340.55) <1F737945-E242-3F03-A7D6-1A5955AB1298> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
    0x7fff6e6f4000 -     0x7fff6e700fff  com.apple.SpeechRecognitionCore (5.0.21 - 5.0.21) <7A6A67DB-C813-328E-AAFB-D267A5B50B3D> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
    0x7fff6ee51000 -     0x7fff6eedcfc7  com.apple.Symbolication (10.2 - 64490.38.1) <9FDCC98D-5B32-35AD-A9BF-94DF2B78507F> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff6f3b3000 -     0x7fff6f3bffff  com.apple.private.SystemPolicy (1.0 - 1) <9CDA85A3-875C-3615-8818-2DC73E9FFE8B> /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy
    0x7fff6f3c4000 -     0x7fff6f3d0ffb  com.apple.TCC (1.0 - 1) <73CF6FA9-44CE-30C9-887F-235940976585> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff6f636000 -     0x7fff6f6feff3  com.apple.TextureIO (3.8.4 - 3.8.1) <7CEAC05A-D283-3D5A-B1E3-C849285FA0BF> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
    0x7fff6f7bb000 -     0x7fff6f973ffb  com.apple.UIFoundation (1.0 - 551.5) <A0FDC3A4-45C6-3C87-B77F-7DC394374C08> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
    0x7fff705ef000 -     0x7fff706c8fff  com.apple.ViewBridge (401.1 - 401.1) <18144EC1-5DEF-369C-8EBA-2826E7142784> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge
    0x7fff70ea0000 -     0x7fff70ea3fff  com.apple.dt.XCTTargetBootstrap (1.0 - 14490.66) <7AE3457F-AF40-3508-93FB-1D9E31EB1C9D> /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap
    0x7fff712a4000 -     0x7fff712a6ffb  com.apple.loginsupport (1.0 - 1) <3F8D6334-BCD6-36C1-BA20-CC8503A84375> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
    0x7fff71570000 -     0x7fff715a4fff  libCRFSuite.dylib (41.15.4) <406DAC06-0C77-3F90-878B-4D38F11F0256> /usr/lib/libCRFSuite.dylib
    0x7fff715a7000 -     0x7fff715b1ff7  libChineseTokenizer.dylib (28.15.3) <9B7F6109-3A5D-3641-9A7E-31D2239D73EE> /usr/lib/libChineseTokenizer.dylib
    0x7fff715b2000 -     0x7fff7163bfff  libCoreStorage.dylib (546.50.1) <8E643B27-7986-3351-B37E-038FB6794BF9> /usr/lib/libCoreStorage.dylib
    0x7fff7163f000 -     0x7fff71640ffb  libDiagnosticMessagesClient.dylib (107) <A14D0819-0970-34CD-8680-80E4D7FE8C2C> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff71677000 -     0x7fff718ceff3  libFosl_dynamic.dylib (18.3.4) <1B5DD4E2-8AE0-315E-829E-D5BFCD264EA8> /usr/lib/libFosl_dynamic.dylib
    0x7fff718ee000 -     0x7fff718f5fff  libMatch.1.dylib (31.200.1) <EF8164CB-B599-39D9-9E73-4958A372DC0B> /usr/lib/libMatch.1.dylib
    0x7fff7191f000 -     0x7fff7193efff  libMobileGestalt.dylib (645.270.1) <99A06C8A-97D6-383D-862C-F453BABB48A4> /usr/lib/libMobileGestalt.dylib
    0x7fff7193f000 -     0x7fff7193ffff  libOpenScriptingUtil.dylib (179.1) <4D603146-EDA5-3A74-9FF8-4F75D8BB9BC6> /usr/lib/libOpenScriptingUtil.dylib
    0x7fff71a7f000 -     0x7fff71a80ffb  libSystem.B.dylib (1252.250.1) <82F463D9-8E43-30B7-8CB2-A65E6EBDDB34> /usr/lib/libSystem.B.dylib
    0x7fff71afc000 -     0x7fff71afdfff  libThaiTokenizer.dylib (2.15.1) <ADB37DC3-7D9B-3E73-A72A-BCC3433C937A> /usr/lib/libThaiTokenizer.dylib
    0x7fff71b0f000 -     0x7fff71b25ffb  libapple_nghttp2.dylib (1.24.1) <6F04250A-6686-3FDC-9A8D-290C64B06502> /usr/lib/libapple_nghttp2.dylib
    0x7fff71b26000 -     0x7fff71b4fffb  libarchive.2.dylib (54.250.1) <47289946-8504-3966-9127-6CE39993DC2C> /usr/lib/libarchive.2.dylib
    0x7fff71b50000 -     0x7fff71bcffff  libate.dylib (1.13.8) <92B44EDB-369D-3EE8-AEC5-61F8B9313DBF> /usr/lib/libate.dylib
    0x7fff71bd3000 -     0x7fff71bd3ff3  libauto.dylib (187) <3E3780E1-96F3-3A22-91C5-92F9A5805518> /usr/lib/libauto.dylib
    0x7fff71ca5000 -     0x7fff71cb5ffb  libbsm.0.dylib (39.200.18) <CF381E0B-025B-364F-A83D-2527E03F1AA3> /usr/lib/libbsm.0.dylib
    0x7fff71cb6000 -     0x7fff71cc3fff  libbz2.1.0.dylib (38.200.3) <272953A1-8D36-329B-BDDB-E887B347710F> /usr/lib/libbz2.1.0.dylib
    0x7fff71cc4000 -     0x7fff71d17ff7  libc++.1.dylib (400.9.4) <9A60A190-6C34-339F-BB3D-AACE942009A4> /usr/lib/libc++.1.dylib
    0x7fff71d18000 -     0x7fff71d2dff7  libc++abi.dylib (400.17) <38C09CED-9090-3719-90F3-04A2749F5428> /usr/lib/libc++abi.dylib
    0x7fff71d2e000 -     0x7fff71d2eff3  libcharset.1.dylib (51.200.6) <2A27E064-314C-359C-93FC-8A9B06206174> /usr/lib/libcharset.1.dylib
    0x7fff71d2f000 -     0x7fff71d3fffb  libcmph.dylib (6.15.1) <9C52B2FE-179F-32AC-B87E-2AFC49ABF817> /usr/lib/libcmph.dylib
    0x7fff71d40000 -     0x7fff71d58ffb  libcompression.dylib (52.250.2) <7F4BB18C-1FB4-3825-8D8B-6E6B168774C6> /usr/lib/libcompression.dylib
    0x7fff71fcd000 -     0x7fff71fe3fff  libcoretls.dylib (155.220.1) <4C64BE3E-41E3-3020-8BB7-07E90C0C861C> /usr/lib/libcoretls.dylib
    0x7fff71fe4000 -     0x7fff71fe5ff3  libcoretls_cfhelpers.dylib (155.220.1) <0959B3E9-6643-3589-8BB3-21D52CDF0EF1> /usr/lib/libcoretls_cfhelpers.dylib
    0x7fff7247e000 -     0x7fff72489ff7  libcsfde.dylib (546.50.1) <7BAF8FCF-33A1-3C7C-8FEB-2020C8ED6063> /usr/lib/libcsfde.dylib
    0x7fff72491000 -     0x7fff724e7ff3  libcups.2.dylib (462.15) <9A487009-8412-3D77-8F55-DE4BBCFBE58C> /usr/lib/libcups.2.dylib
    0x7fff7261b000 -     0x7fff7261bfff  libenergytrace.dylib (17.200.1) <80BB567A-FD18-3497-BF97-353F57D98CDD> /usr/lib/libenergytrace.dylib
    0x7fff7261c000 -     0x7fff72635ffb  libexpat.1.dylib (16.1.2) <3E146D20-52C1-3EDA-9374-1243E2890AC6> /usr/lib/libexpat.1.dylib
    0x7fff7264d000 -     0x7fff72652ff7  libgermantok.dylib (17.15.2) <E5F0F794-FF27-3D64-AE52-C78C6A84DD67> /usr/lib/libgermantok.dylib
    0x7fff72653000 -     0x7fff72658ff7  libheimdal-asn1.dylib (520.270.1) <73F60D6F-76F8-35EF-9C86-9A81225EE4BE> /usr/lib/libheimdal-asn1.dylib
    0x7fff72683000 -     0x7fff72773fff  libiconv.2.dylib (51.200.6) <2047C9B7-3F74-3A95-810D-2ED8F0475A99> /usr/lib/libiconv.2.dylib
    0x7fff72774000 -     0x7fff729d5ffb  libicucore.A.dylib (62141.0.1) <A0D63918-76E9-3C1B-B255-46F4C1DA7FE8> /usr/lib/libicucore.A.dylib
    0x7fff72a22000 -     0x7fff72a23fff  liblangid.dylib (128.15.1) <22D05C4F-769B-3075-ABCF-44A0EBACE028> /usr/lib/liblangid.dylib
    0x7fff72a24000 -     0x7fff72a3cff3  liblzma.5.dylib (10.200.3) <E1F4FD60-1CE4-37B9-AD95-29D348AF1AC0> /usr/lib/liblzma.5.dylib
    0x7fff72a54000 -     0x7fff72af8ff7  libmecab.1.0.0.dylib (779.24.1) <A8D0379B-85FA-3B3D-89ED-5CF2C3826AB2> /usr/lib/libmecab.1.0.0.dylib
    0x7fff72af9000 -     0x7fff72cfdfff  libmecabra.dylib (779.24.1) <D71F71E0-30E2-3DB3-B636-7DE13D51FB4B> /usr/lib/libmecabra.dylib
    0x7fff72ed5000 -     0x7fff73226ff7  libnetwork.dylib (1229.250.15) <72C7E9E3-B2BE-3300-BE1B-64606222022C> /usr/lib/libnetwork.dylib
    0x7fff732b8000 -     0x7fff73a3dfdf  libobjc.A.dylib (756.2) <7C312627-43CB-3234-9324-4DEA92D59F50> /usr/lib/libobjc.A.dylib
    0x7fff73a4f000 -     0x7fff73a53ffb  libpam.2.dylib (22.200.1) <586CF87F-349C-393D-AEEB-FB75F94A5EB7> /usr/lib/libpam.2.dylib
    0x7fff73a56000 -     0x7fff73a8bfff  libpcap.A.dylib (79.250.3) <97B8CE1B-3EF6-3443-95EF-5659733139C9> /usr/lib/libpcap.A.dylib
    0x7fff73ba4000 -     0x7fff73bbcffb  libresolv.9.dylib (65.200.3) <1FB0982D-84D9-36E0-B3D8-C808891EFF50> /usr/lib/libresolv.9.dylib
    0x7fff73bbe000 -     0x7fff73bf9ff3  libsandbox.1.dylib (851.270.3) <75C65BC5-6711-39C3-9392-7174EC934D1E> /usr/lib/libsandbox.1.dylib
    0x7fff73c0d000 -     0x7fff73c0eff7  libspindump.dylib (267.3) <A584E403-8C95-3841-9C16-E22664A5A63F> /usr/lib/libspindump.dylib
    0x7fff73c0f000 -     0x7fff73decfff  libsqlite3.dylib (274.26) <6404BA3B-BCA4-301F-B2FE-8776105A2AA3> /usr/lib/libsqlite3.dylib
    0x7fff74005000 -     0x7fff74008ff7  libutil.dylib (51.200.4) <CE9B18C9-66ED-32D4-9D29-01F8FCB467B0> /usr/lib/libutil.dylib
    0x7fff74009000 -     0x7fff74016fff  libxar.1.dylib (417.1) <39CCF46B-C81A-34B1-92A1-58C4E5DA846E> /usr/lib/libxar.1.dylib
    0x7fff7401b000 -     0x7fff740feff3  libxml2.2.dylib (32.15) <2748446B-C53C-3B6C-BB5D-B9153D7243E1> /usr/lib/libxml2.2.dylib
    0x7fff740ff000 -     0x7fff74127ff3  libxslt.1.dylib (16.7) <EC50E503-AEEE-3F50-956F-55E4AF4584D9> /usr/lib/libxslt.1.dylib
    0x7fff74128000 -     0x7fff7413aff7  libz.1.dylib (70.200.4) <B048FC1F-058F-3A08-A1FE-81D5308CB3E6> /usr/lib/libz.1.dylib
    0x7fff7491e000 -     0x7fff74922ff3  libcache.dylib (81) <1987D1E1-DB11-3291-B12A-EBD55848E02D> /usr/lib/system/libcache.dylib
    0x7fff74923000 -     0x7fff7492dff3  libcommonCrypto.dylib (60118.250.2) <1765BB6E-6784-3653-B16B-CB839721DC9A> /usr/lib/system/libcommonCrypto.dylib
    0x7fff7492e000 -     0x7fff74935ff7  libcompiler_rt.dylib (63.4) <5212BA7B-B7EA-37B4-AF6E-AC4F507EDFB8> /usr/lib/system/libcompiler_rt.dylib
    0x7fff74936000 -     0x7fff7493fff7  libcopyfile.dylib (146.250.1) <98CD00CD-9B91-3B5C-A9DB-842638050FA8> /usr/lib/system/libcopyfile.dylib
    0x7fff74940000 -     0x7fff749c4fc3  libcorecrypto.dylib (602.260.2) <01464D24-570C-3B83-9D18-467769E0FCDD> /usr/lib/system/libcorecrypto.dylib
    0x7fff74a4b000 -     0x7fff74a84ff7  libdispatch.dylib (1008.270.1) <97273678-E94C-3C8C-89F6-2E2020F4B43B> /usr/lib/system/libdispatch.dylib
    0x7fff74a85000 -     0x7fff74ab1ff7  libdyld.dylib (655.1.1) <002418CC-AD11-3D10-865B-015591D24E6C> /usr/lib/system/libdyld.dylib
    0x7fff74ab2000 -     0x7fff74ab2ffb  libkeymgr.dylib (30) <0D0F9CA2-8D5A-3273-8723-59987B5827F2> /usr/lib/system/libkeymgr.dylib
    0x7fff74ab3000 -     0x7fff74abfff3  libkxld.dylib (4903.278.35) <AF9234BD-D3A5-323A-B170-1525C841DD7E> /usr/lib/system/libkxld.dylib
    0x7fff74ac0000 -     0x7fff74ac0ff7  liblaunch.dylib (1336.261.4) <AEBAE502-D691-3D26-BFD9-CB41090C0360> /usr/lib/system/liblaunch.dylib
    0x7fff74ac1000 -     0x7fff74ac6fff  libmacho.dylib (927.0.3) <A377D608-77AB-3F6E-90F0-B4F251A5C12F> /usr/lib/system/libmacho.dylib
    0x7fff74ac7000 -     0x7fff74ac9ff7  libquarantine.dylib (86.270.1) <3F36A3D6-9606-3D90-B520-809BAEF981C3> /usr/lib/system/libquarantine.dylib
    0x7fff74aca000 -     0x7fff74acbff7  libremovefile.dylib (45.200.2) <9FBEB2FF-EEBE-31BC-BCFC-C71F8D0E99B6> /usr/lib/system/libremovefile.dylib
    0x7fff74acc000 -     0x7fff74ae3ff3  libsystem_asl.dylib (356.200.4) <A62A7249-38B8-33FA-9875-F1852590796C> /usr/lib/system/libsystem_asl.dylib
    0x7fff74ae4000 -     0x7fff74ae4ff7  libsystem_blocks.dylib (73) <A453E8EE-860D-3CED-B5DC-BE54E9DB4348> /usr/lib/system/libsystem_blocks.dylib
    0x7fff74ae5000 -     0x7fff74b6cfff  libsystem_c.dylib (1272.250.1) <7EDACF78-2FA3-35B8-B051-D70475A35117> /usr/lib/system/libsystem_c.dylib
    0x7fff74b6d000 -     0x7fff74b70ffb  libsystem_configuration.dylib (963.270.3) <2B4A836D-68A4-33E6-8D48-CD4486B03387> /usr/lib/system/libsystem_configuration.dylib
    0x7fff74b71000 -     0x7fff74b74ff7  libsystem_coreservices.dylib (66) <719F75A4-74C5-3BA6-A09E-0C5A3E5889D7> /usr/lib/system/libsystem_coreservices.dylib
    0x7fff74b75000 -     0x7fff74b7bfff  libsystem_darwin.dylib (1272.250.1) <EC9B39A5-9592-3577-8997-7DC721D20D8C> /usr/lib/system/libsystem_darwin.dylib
    0x7fff74b7c000 -     0x7fff74b82ffb  libsystem_dnssd.dylib (878.270.3) <D5352ABD-0311-3327-8E64-93F29EB19BF1> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff74b83000 -     0x7fff74bceffb  libsystem_info.dylib (517.200.9) <D09D5AE0-2FDC-3A6D-93EC-729F931B1457> /usr/lib/system/libsystem_info.dylib
    0x7fff74bcf000 -     0x7fff74bf7ff7  libsystem_kernel.dylib (4903.278.35) <253AF05A-457D-37A6-890B-C3CD9CE8A3FD> /usr/lib/system/libsystem_kernel.dylib
    0x7fff74bf8000 -     0x7fff74c43ff7  libsystem_m.dylib (3158.200.7) <F19B6DB7-014F-3820-831F-389CCDA06EF6> /usr/lib/system/libsystem_m.dylib
    0x7fff74c44000 -     0x7fff74c6efff  libsystem_malloc.dylib (166.270.1) <011F3AD0-8E6A-3A89-AE64-6E5F6840F30A> /usr/lib/system/libsystem_malloc.dylib
    0x7fff74c6f000 -     0x7fff74c79ff7  libsystem_networkextension.dylib (767.250.2) <FF06F13A-AEFE-3A27-A073-910EF78AEA36> /usr/lib/system/libsystem_networkextension.dylib
    0x7fff74c7a000 -     0x7fff74c81fff  libsystem_notify.dylib (172.200.21) <145B5CFC-CF73-33CE-BD3D-E8DDE268FFDE> /usr/lib/system/libsystem_notify.dylib
    0x7fff74c82000 -     0x7fff74c8bfef  libsystem_platform.dylib (177.270.1) <9D1FE5E4-EB7D-3B3F-A8D1-A96D9CF1348C> /usr/lib/system/libsystem_platform.dylib
    0x7fff74c8c000 -     0x7fff74c96ff7  libsystem_pthread.dylib (330.250.2) <2D5C08FF-484F-3D59-9132-CE1DCB3F76D7> /usr/lib/system/libsystem_pthread.dylib
    0x7fff74c97000 -     0x7fff74c9aff7  libsystem_sandbox.dylib (851.270.3) <0F89B133-8D87-3B2E-BA5A-C7138738C581> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff74c9b000 -     0x7fff74c9dff3  libsystem_secinit.dylib (30.260.2) <EF1EA47B-7B22-35E8-BD9B-F7003DCB96AE> /usr/lib/system/libsystem_secinit.dylib
    0x7fff74c9e000 -     0x7fff74ca5ff3  libsystem_symptoms.dylib (820.267.1) <03F1C2DD-0F5A-3D9D-88F6-B26C0F94EB52> /usr/lib/system/libsystem_symptoms.dylib
    0x7fff74ca6000 -     0x7fff74cbbff7  libsystem_trace.dylib (906.260.2) <12C1B9A2-39D6-3428-AE60-2303BD201A57> /usr/lib/system/libsystem_trace.dylib
    0x7fff74cbd000 -     0x7fff74cc2ffb  libunwind.dylib (35.4) <24A97A67-F017-3CFC-B0D0-6BD0224B1336> /usr/lib/system/libunwind.dylib
    0x7fff74cc3000 -     0x7fff74cf2fff  libxpc.dylib (1336.261.4) <7A9D1BF7-F17F-3B87-9373-B0079544E8C5> /usr/lib/system/libxpc.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 1187412
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=593.7M resident=0K(0%) swapped_out_or_unallocated=593.7M(100%)
Writable regions: Total=137.5M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=137.5M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        1 
Dispatch continuations            16.0M        1 
Kernel Alloc Once                    8K        1 
MALLOC                            79.9M       32 
MALLOC guard page                   16K        3 
MALLOC_LARGE (reserved)            384K        2         reserved VM address space (unallocated)
PROTECTED_MEMORY                     4K        1 
STACK GUARD                          4K        1 
Stack                             17.0M        3 
Stack Guard                          8K        2 
VM_ALLOCATE                       22.3M       42 
__DATA                            40.5M      368 
__FONT_DATA                          4K        1 
__LINKEDIT                       236.1M       68 
__TEXT                           357.6M      356 
__UNICODE                          564K        1 
mapped file                       25.9M        2 
shared memory                       44K        4 
===========                     =======  ======= 
TOTAL                            796.5M      889 
TOTAL, minus reserved VM space   796.1M      889 

It appears that PyQT (or QT itself) is forking, so the introduction of the multiprocessing.Process is a double fork. Reverting to 85da34b or prior works fine.

systemd service

I build myself a systemd user service to run this and it works quite nice. Maybe you can add that in the readme.

# ~/.config/systemd/user/openconnect.service                                                                                                             
[Unit]
Description=Openconnect VPN
After=network.target

[Service]
ExecStart=openconnect-sso -s your.vpn.server.de --authgroup MYUSERS --browser-display-mode shown -- --disable-ipv6 --interface myvpniface
Restart=always

[Install]
WantedBy=default.target

Support WebAuthn

First of all thank you so much for building this nice wrapper. This made it so much easier for me to connect to my VPN from Linux system.

However, I recently switched from traditional OTP based MFA to a security key (YubiKey) based MFA. But I can't seem to get it to work with openconnect-sso because it does not open a new popup dialog box which should ask me to connect my YubiKey and tap it.

Logs:

$ openconnect-sso --server vpn.server.company.com/ssl --authenticate shell --browser-display-mode shown
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=vpn.server.company.com/ssl name=
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
[info     ] Browser started                [webengine] startup_info=StartupInfo(url='https://vpn.server.company.com/+CSCOE+/saml/sp/login?tgname=SSL_Profile&acsamlcap=v2', credentials=None)
[info     ] Loading page                   [webengine] url=https://vpn.server.company.com/+CSCOE+/saml/sp/login?tgname=SSL_Profile&acsamlcap=v2
js: WARNING: `getUserProfile` does not support requests for  dsc .
js: Refused to load the image 'https://duo.com/' because it violates the following Content Security Policy directive: "img-src 'self'  ".

js: Refused to load the image 'https://duo.com/' because it violates the following Content Security Policy directive: "img-src 'self'  ".

js: Refused to load the image 'https://duo.com/' because it violates the following Content Security Policy directive: "img-src 'self'  ".

^C 
$

Ignore the js: errors, they have always been there even when this was working fine with OTP based MFA.


The browser screen asks for login credentials, then upon successful login, shows the following screen:

Screenshot from 2021-04-05 15-41-39

After clicking the Use Security Key button, I expect to see a new dialog box but nothing happens. The screen changes to following but nothing appears:

Screenshot from 2021-04-05 15-41-59

Would be great if you can point me in the right direction for troubleshooting. Is this expected behavior? Is this a problem specific to WebAuthn or is it not possible to show any new popup dialog boxes in the current openconnect-sso login flow?

Error on connection, help wanted to where start troubleshoot

Hi,

Have installed openconnect-sso via AUR.

openconnect-sso 0.6.1
OS: ArcoLinux
Kernel: 5.11.5-arch1-1
Shell: zsh 5.8
DE: Plasma 5.21.2

I hope for a bit of a push in the troubleshooting direction, because I'm not really sure where to start here :-/
I have some issues with after authentication getting following error:
Authentication looks okay when running through Azure auth.

[info     ] Browser exited                 [openconnect_sso.browser.browser] 
Traceback (most recent call last):
  File "/home/ksadmin/.local/bin/openconnect-sso", line 8, in <module>
    sys.exit(main())
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/app.py", line 137, in _run
    auth_response = await authenticate_to(
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 44, in authenticate
    response = self._complete_authentication(auth_request_response, sso_token)
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 81, in _complete_authentication
    return parse_response(response)
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 142, in parse_response
    return parse_auth_complete_response(xml)
  File "/home/ksadmin/.local/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 187, in parse_auth_complete_response
    auth_message=xml.auth.message,
  File "src/lxml/objectify.pyx", line 231, in lxml.objectify.ObjectifiedElement.__getattr__
  File "src/lxml/objectify.pyx", line 450, in lxml.objectify._lookupChildOrRaise
AttributeError: no such child: message

Error when using nix-shell, looking for help

Hi, I'm trying to build the project, and i just had a fresh install of nix. I haven't used nix before.

I got this error when launching nix-shell from the repo directory. I'm not sure if that's an issue with nix itself or something related to this project. Any help or pointer is appreciated. Thanks!

$ nix-shell  --show-trace
error: while evaluating the attribute 'buildInputs' of the derivation 'nix-shell' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:205:7:
while evaluating the attribute 'out.outPath' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/lib/customisation.nix:156:13:
while evaluating the attribute 'buildInputs' of the derivation 'python3.9-poetry-1.1.4' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:205:7:
while evaluating the attribute 'out.outPath' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/lib/customisation.nix:156:13:
while evaluating the attribute 'buildInputs' of the derivation 'python3.9-poetry-core-1.0.0' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:205:7:
while evaluating 'getOutput' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/lib/attrsets.nix:489:23, called from undefined position:
while evaluating anonymous function at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:156:13, called from undefined position:
while evaluating the attribute 'setuptools-scm' at /nix/store/p4giqc2yspwbf7aq95lmnaxdxpizqi12-source/default.nix:211:19:
while evaluating the attribute 'setuptools_scm' at undefined position:
while evaluating anonymous function at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:27:22, called from undefined position:
while evaluating 'removeDistribute' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:15:22, called from /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:27:29:
while evaluating 'isDerivation' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/lib/attrsets.nix:330:18, called from /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:16:8:
while evaluating 'removeRecurseForDerivations' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:8:33, called from /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:28:31:
while evaluating 'checkInPkgs' at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:22:20, called from /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:29:32:
infinite recursion encountered, at /nix/store/pjyp4bcyh0mh7q200zlpq2isd3h6r4d3-nixpkgs-21.11pre317548.e0ce3c683ae/nixpkgs/pkgs/top-level/python-aliases.nix:76:20

Pypi version is out of sync

The newest version on pypi is 0.7.3. Would be nice to sync with the newest version from github releases which is 0.8.0.
Maybe this could be automated via github actions.

Browser display connection fails: WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed. QGLXContext: Failed to create dummy context

The opening of the browser window to verify or enter log-in information fails.

What changed: I upgraded all packages including openconnect-sso and deps through pipx and my browsers through apt.

The package still works by manually copy-pasting the url in my browser, but it was nice to have the window open automatically.

~/.local/bin/openconnect-sso -s vpn.domain.my --browser-display-mode shown
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=vpn.domain.my name=
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed.
QGLXContext: Failed to create dummy context
[info     ] Browser started                [webengine] startup_info=StartupInfo(url='https://vpn.domain.my/+CSCOE+/saml/sp/login?tgname=PF-ANYCONNECT&acsamlcap=v2', credentials=None)
[info     ] Loading page                   [webengine] url=vpn.domain.my/+CSCOE+/saml/sp/login?tgname=PF-ANYCONNECT&acsamlcap=v2
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile) 
[warning  ] Connection terminated with browser [openconnect_sso.browser.browser] 
[warning  ] Browser window terminated, exiting [openconnect_sso.app] 

Build fails on unstable

Currently, it is not possible to build openconnect-sso on the latest unstable channel. My entire configuration can be found here.

Error:

...
Found duplicated packages in closure for dependency 'toml':
  toml 0.10.2 (/nix/store/qhppvmrdmlcs8nzn22j5l2m0v9k1qyxm-python3.8-toml-0.10.2/lib/python3.8/site-packages)
  toml 0.10.2 (/nix/store/gm124arknrkwdcnxdg0wb802cnzh4z2m-python3.8-toml-0.10.2/lib/python3.8/site-packages)
Found duplicated packages in closure for dependency 'more-itertools':
  more-itertools 8.7.0 (/nix/store/h435djgkx517hv10n84iap062g5skw0m-python3.8-more-itertools-8.7.0/lib/python3.8/site-packages)
  more-itertools 8.7.0 (/nix/store/m4r9pxrnz85622qcyxmm6633yj86mklh-python3.8-more-itertools-8.7.0/lib/python3.8/site-packages)

Package duplicates found in closure, see above. Usually this happens if two packages depend on different version of the same dependency.
builder for '/nix/store/zwwg4n59xg1y9hayfql54p3zqmw4vrqs-python3.8-openconnect-sso-0.7.3.drv' failed with exit code 1
...
> nix-shell -p nix-info --run "nix-info -m"

 - system: `"x86_64-linux"`
 - host os: `Linux 5.4.112, NixOS, 21.05pre284548.1fe6ed37fd9 (Okapi)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.10`
 - channels(rhoriguchi): `""`
 - channels(root): `"nixos-21.05pre285574.8e4fe32876c"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Overlay:

(self: super: {
  openconnect-sso = (super.callPackage "${
      super.fetchFromGitHub {
        owner = "vlaci";
        repo = "openconnect-sso";
        rev = "v0.7.3";
        sha256 = "126rm5zhdwxiyqv7fh2xilqw7q0s438d3laisjynlnc4ddnrdc3w";
      }
    }/nix" { pkgs = super; }).openconnect-sso;
})

Auth finish request not working if CSD is needed

In my company the newest disimprovement for our VPN is to force us to install AV software. Now I need to get openconnect-sso somehow to work with a Cisco Secure Desktop (CSD) wrapper script. I don't know the protocol so not shure what to send when to make the request work. Here is what I get after already going through login and 2FA:

[debug    ] Sending auth finish request    [openconnect_sso.authenticator] content=b'<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<config-auth client="vpn" type="auth-reply" aggregate-auth-version="2">\n  <version who="vpn">4.7.00136</version>\n  <device-id>linux-64</device-id>\n  <session-token/>\n  <session-id/>\n  <opaque is-for="sg">\n    <tunnel-group>Company</tunnel-group>\n    <auth-method>single-sign-on-v2</auth-method>\n    <config-hash>4589745648123</config-hash>\n  </opaque>\n  <auth>\n    <sso-token>8Z26547815NS92C998874AC</sso-token>\n  </auth>\n</config-auth>\n'
https://vpn.company.com:443 "POST / HTTP/1.1" 200 None
[debug    ] Auth finish response received  [openconnect_sso.authenticator] content=b'<?xml version="1.0" encoding="UTF-8"?>\n<config-auth client="vpn" type="complete" aggregate-auth-version="2">\n<error id="13" param1="" param2="">Unable to complete connection: Cisco Secure Desktop not installed on the client</error>\n</config-auth>\n'
Traceback (most recent call last):
  File "/usr/bin/openconnect-sso", line 33, in <module>
    sys.exit(load_entry_point('openconnect-sso==0.6.0', 'console_scripts', 'openconnect-sso')())
  File "/usr/lib/python3.8/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/usr/lib/python3.8/site-packages/openconnect_sso/app.py", line 137, in _run
    auth_response = await authenticate_to(
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 44, in authenticate
    response = self._complete_authentication(auth_request_response, sso_token)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 81, in _complete_authentication
    return parse_response(response)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 142, in parse_response
    return parse_auth_complete_response(xml)
  File "/usr/lib/python3.8/site-packages/openconnect_sso/authenticator.py", line 184, in parse_auth_complete_response
    assert xml.auth.get("id") == "success"
  File "src/lxml/objectify.pyx", line 231, in lxml.objectify.ObjectifiedElement.__getattr__
  File "src/lxml/objectify.pyx", line 450, in lxml.objectify._lookupChildOrRaise
AttributeError: no such child: auth

I tried to somehow pass the sso-token to openconnect, but could not get it to work. I would appreciate if someone who knows this protocol could give me a hint on how to do the final auth step.

TFA input/automation

I have the ability to programmatically determine my TFA code and would to include its entry in the scripted login actions.

Is there a way to inject the value into the config.toml so that it will autofill the appropriate form field?

Token Verification failure (Azure)

Hi all.
The company I work at has just enabled SSO with an authenticator and I'm having issues with it authenticating (Azure). I have tried authenticating with the authenticator app, as well as text message. Both seem to throw the same error

[info     ] Browser exited                 [openconnect_sso.browser.browser]
[debug    ] Sending auth finish request    [openconnect_sso.authenticator] content=b'<?xml version=\'1.0\' encoding=\'UTF-8\'?>\n<config-auth client="vpn" type="auth-reply" aggregate-auth-version="2">\n  <version who="vpn">4.7.00136</version>\n  <device-id>linux-64</device-id>\n  <session-token/>\n  <session-id/>\n  <opaque is-for="sg">\n    <tunnel-group>DefaultWEBVPNGroup</tunnel-group>\n    <auth-method>single-sign-on-v2</auth-method>\n    <config-hash>1624075756240</config-hash>\n  </opaque>\n  <auth>\n    <sso-token></sso-token>\n  </auth>\n</config-auth>\n'
https://vpn2.my-company.com:443 "POST / HTTP/1.1" 200 None
[debug    ] Auth finish response received  [openconnect_sso.authenticator] content=b'<?xml version="1.0" encoding="UTF-8"?>\n<config-auth client="vpn" type="auth-request" aggregate-auth-version="2">\n<opaque is-for="sg">\n<tunnel-group>DefaultWEBVPNGroup</tunnel-group>\n<auth-method>single-sign-on-v2</auth-method>\n<config-hash>1624075756240</config-hash>\n</opaque>\n<auth id="main">\n<message>Please complete the authentication process in the AnyConnect Login window.</message>\n<error id="109">Single sign-on AnyConnect token verification failure.</error>\n<sso-v2-login>https://vpn2-saml.my-company.com/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&#x26;acsamlcap=v2</sso-v2-login>\n<sso-v2-login-final>https://vpn2-saml.my-company.com/+CSCOE+/saml_ac_login.html</sso-v2-login-final>\n<sso-v2-logout>https://vpn2-saml.my-company.com/+CSCOE+/saml/sp/logout</sso-v2-logout>\n<sso-v2-logout-final>https://vpn2-saml.my-company.com/+CSCOE+/saml_ac_login.html</sso-v2-logout-final>\n<sso-v2-token-cookie-name>acSamlv2Token</sso-v2-token-cookie-name>\n<sso-v2-error-cookie-name>acSamlv2Error</sso-v2-error-cookie-name>\n<form>\n<input type="sso" name="sso-token"></input>\n</form>\n</auth>\n</config-auth>\n'
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=
[error    ] Could not finish authentication. Invalid response type in current state [openconnect_sso.authenticator] response=AuthRequestResponse(auth_id='main', auth_title='', auth_message='Please complete the authentication process in the AnyConnect Login window.', auth_error='Single sign-on AnyConnect token verification failure.', login_url='https://vpn2-saml.my-company.com/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&acsamlcap=v2', login_final_url='https://vpn2-saml.my-company.com/+CSCOE+/saml_ac_login.html', token_cookie_name='acSamlv2Token', opaque=<Element opaque at 0x7fe4fd5f0f80>)
Traceback (most recent call last):
  File "/usr/bin/openconnect-sso", line 33, in <module>
    sys.exit(load_entry_point('openconnect-sso==0.7.3', 'console_scripts', 'openconnect-sso')())
  File "/usr/lib/python3.9/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 34, in run
    auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 139, in _run
    auth_response = await authenticate_to(
  File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 50, in authenticate
    raise AuthenticationError(response)
openconnect_sso.authenticator.AuthenticationError: AuthRequestResponse(auth_id='main', auth_title='', auth_message='Please complete the authentication process in the AnyConnect Login window.', auth_error='Single sign-on AnyConnect token verification failure.', login_url='https://vpn2-saml.my-company.com/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&acsamlcap=v2', login_final_url='https://vpn2-saml.my-company.com/+CSCOE+/saml_ac_login.html', token_cookie_name='acSamlv2Token', opaque=<Element opaque at 0x7fe4fd5f0f80>)

You can find the entire output here: https://gist.github.com/petergarbers/e43ed8ecd2e82baed08b54b64514e291

I'm really unsure how to proceed. Any guidance would be very welcomed

Failed to open tun device: No such device

  • Distro: Arch Linux Rolling 5.5.1
  • Pip version: 19.3-1
  • VPN server: securevpn.mcgill.ca
    Attempts to fix the issue:
  • Removed openconnect-sso, removed config files at /home/[username]/.config/openconnect-sso and reinstalled using # pip install openconnect-sso
  • Reinstalled openconnect
  • Tried connecting using another device (My android phone Cisco AnyConnect app) and it works without any hiccups
    Here is my return log after trying to connect:
[me@hostname]$ openconnect-sso --server securevpn.mcgill.ca
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=securevpn.mcgill.ca name=UNNAMED
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
[info     ] Browser started                [webengine] startup_info=StartupInfo(url='https://securevpn.mcgill.ca/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&acsamlcap=v2', credentials=None)
[info     ] Loading page                   [webengine] url=https://securevpn.mcgill.ca/+CSCOE+/saml/sp/login?tgname=DefaultWEBVPNGroup&acsamlcap=v2
[info     ] SIGNAL handler                 [webengine] 
[info     ] Exiting browser                [webengine] 
[info     ] Browser exited                 [openconnect_sso.browser.browser] 
[info     ] Response received              [openconnect_sso.authenticator] id=success message=
[sudo] password for me: 
Connected to 132.216.255.250:443
SSL negotiation with securevpn.mcgill.ca
Server certificate verify failed: signer not found
Connected to HTTPS on securevpn.mcgill.ca
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 300, Keepalive 20
Connected as 132.216.232.169, using SSL + LZS, with DTLS + LZS in progress
Established DTLS connection (using GnuTLS). Ciphersuite (DTLS1.2)-(ECDHE-RSA)-(AES-256-GCM).
DTLS connection compression using LZS.
Failed to open tun device: No such device
Set up tun device failed
Unknown error; exiting.

I'd really appreciate if somebody could kindly point me in the right direction, I might be able to figure the solution out myself.

EDIT: Formatting

azure sso completes, then login fails

I've installed 0.7.3 from aur and are connecting to a ocserv that works fine with the cisco anyconnect client. When connecting I'm successfully authenticated and receives the cookies from the server, but then it crashes... any pointers?
See my sanitized logs below:

Using selector: EpollSelector
[info     ] Authenticating to VPN endpoint [openconnect_sso.app] address=some.site.tld name=
Starting new HTTPS connection (1): some.site.tld:443
https://some.site.tld:443 "GET / HTTP/1.1" 200 880
[debug    ] Auth target url                [openconnect_sso.authenticator] url=https://some.site.tld/
[debug    ] Sending auth init request      [openconnect_sso.authenticator] content=b'\n\n  4.7.00136\n  linux-64\n  \n  https://some.site.tld/\n  \n    single-sign-on-v2\n  \n\n'                                                                                         
Starting new HTTPS connection (1): some.site.tld:443
https://some.site.tld:443 "POST / HTTP/1.1" 200 880
[debug    ] Auth init response received    [openconnect_sso.authenticator] content=b'\n\n\nsingle-sign-on-v2\n\n\n<title>Login</title>\nPlease complete the authentication proce
ss in the AnyConnect Login window.\n\nhttps://some.site.tld/+CSCOE+/saml/sp/login\nhttps://some.site.tld/+CSCO
E+/saml_ac_login.html\nhttps://some.site.tld/+CSCOE+/saml/sp/logout\nhttps://some.site.tld/+CSCOE+/saml_ac_login.
html\nacSamlv2Token\nacSamlv2Error\n

\n\n\n'                                                                                                                         
[info     ] Response received              [openconnect_sso.authenticator] id=main message=Please complete the authentication process in the AnyConnect Login window. title=Login
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[info     ] Browser started                [webengine] startup_info=StartupInfo(url='https://some.site.tld/+CSCOE+/saml/sp/login', credentials=None)
[info     ] Loading page                   [webengine] url=https://some.site.tld/+CSCOE+/saml/sp/login
Icon theme "Sardi" not found.
Icon theme "gnome" not found.
Icon theme "elementary" not found.
Icon theme "gnome" not found.
Icon theme "gnome" not found.
[debug    ] Cookie set                     [webengine] name=ESTSAUTHPERSISTENT
[debug    ] Cookie set                     [webengine] name=brcap
[debug    ] Cookie set                     [webengine] name=ch
[debug    ] Cookie set                     [webengine] name=wlidperf
[debug    ] Cookie set                     [webengine] name=buid
[debug    ] Cookie set                     [webengine] name=clrc
[debug    ] Cookie set                     [webengine] name=fpc
[debug    ] Cookie set                     [webengine] name=webvpncontext
[debug    ] Cookie set                     [webengine] name=webvpncontext
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ESTSAUTHPERSISTENT', value='')                                                                                                          
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='brcap', value='0')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ch', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='wlidperf', value='FR=L&ST=
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='buid', value='
')                                                                                                                                                                                
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='clrc', value='{
}')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='fpc', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpncontext', value='
=')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpncontext', value='
=')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=webvpncontext
[debug    ] Cookie set                     [webengine] name=acsamlcap
[debug    ] Cookie set                     [webengine] name=tg
[debug    ] Cookie set                     [webengine] name=acSamlv2Error
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpncontext', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='acsamlcap', value='v2')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='tg', value='')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='acSamlv2Error', value='')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=ESTSAUTHPERSISTENT
[debug    ] Cookie set                     [webengine] name=ESTSAUTH
[debug    ] Cookie set                     [webengine] name=ESTSAUTHLIGHT
[debug    ] Cookie set                     [webengine] name=ch
[debug    ] Cookie set                     [webengine] name=ESTSSC
[debug    ] Cookie set                     [webengine] name=buid
[debug    ] Cookie set                     [webengine] name=SignInStateCookie
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ESTSAUTHPERSISTENT', value='
')                                                                                                         
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=fpc
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ESTSAUTH', value='
')                                                                            
[debug    ] Cookie set                     [webengine] name=esctx
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=x-ms-gateway-slice
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ESTSAUTHLIGHT', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=stsservicecookie
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ch', value='n2CLc-425JLbpRoSWg1Recn4ml-W3zwv51UZUcu1d9k')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='ESTSSC', value='00')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='buid', value='
')                                                                                                                                                                                
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='SignInStateCookie', value='
')                                                                                        
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='fpc', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='esctx', value='
')                                             
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='x-ms-gateway-slice', value='estsfd')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='stsservicecookie', value='estsfd')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=webvpncontext
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpncontext', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Cookie set                     [webengine] name=webvpncontext
[debug    ] Page loaded                    [webengine] url=https://some.site.tld/+CSCOE+/saml/sp/acs
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpncontext', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=Url(url='https://some.site.tld/+CSCOE+/saml/sp/acs')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Browser loaded page            [openconnect_sso.saml_authenticator] url=https://some.site.tld/+CSCOE+/saml/sp/acs
[debug    ] Cookie set                     [webengine] name=webvpncontext
[debug    ] Cookie set                     [webengine] name=acSamlv2Token
[debug    ] Cookie set                     [webengine] name=webvpn
[debug    ] Cookie set                     [webengine] name=webvpnc
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpncontext', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='acSamlv2Token', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpn', value='
')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=SetCookie(name='webvpnc', value='bu:/&p:t&iu:1/&sh:
&lu:/+CS
COT+/translation-table?textdomain%3DAnyConnect%26type%3Dmanifest&fu:profiles%2F/config/profile.xml&fh:
')                                         
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Page loaded                    [webengine] url=https://some.site.tld/+CSCOE+/saml_ac_login.html
[debug    ] Message received from browser  [openconnect_sso.browser.browser] message=Url(url='https://some.site.tld/+CSCOE+/saml_ac_login.html')
[debug    ] Waiting for message from browser process [openconnect_sso.browser.browser]  
[debug    ] Browser loaded page            [openconnect_sso.saml_authenticator] url=https://some.site.tld/+CSCOE+/saml_ac_login.html
[info     ] Terminate requested.           [webengine]  
[info     ] Exiting browser                [webengine]  
[info     ] Browser exited                 [openconnect_sso.browser.browser]  
[debug    ] Sending auth finish request    [openconnect_sso.authenticator] content=b'\n\n  4.7.00136\n  linux-64\n  \n  \n  \n    single-sign
-on-v2\n  \n  \n    
\n  \n\n'                                       
https://some.site.tld:443 "POST / HTTP/1.1" 200 454
[debug    ] Auth finish response received  [openconnect_sso.authenticator] content=b'\n\n0.1(1)\n\n<title>SSL VPN Service</title>\n/profiles//config/profile.xml
**************\n'       
Traceback (most recent call last):
 File "/usr/bin/openconnect-sso", line 33, in
   sys.exit(load_entry_point('openconnect-sso==0.7.3', 'console_scripts', 'openconnect-sso')())
 File "/usr/lib/python3.9/site-packages/openconnect_sso/cli.py", line 169, in main
   return app.run(args)
 File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 34, in run
   auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(
 File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
   return future.result()
 File "/usr/lib/python3.9/site-packages/openconnect_sso/app.py", line 139, in _run
   auth_response = await authenticate_to(
 File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 44, in authenticate
   response = self._complete_authentication(auth_request_response, sso_token)
 File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 81, in _complete_authentication
   return parse_response(response)
 File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 142, in parse_response
   return parse_auth_complete_response(xml)
 File "/usr/lib/python3.9/site-packages/openconnect_sso/authenticator.py", line 187, in parse_auth_complete_response
   auth_message=xml.auth.message,
 File "src/lxml/objectify.pyx", line 231, in lxml.objectify.ObjectifiedElement.getattr
 File "src/lxml/objectify.pyx", line 450, in lxml.objectify._lookupChildOrRaise
AttributeError: no such child: message

Save the authorization

The script works, but I need to go through the process of the browser window every time. And my org requires 2FA, so each time, I need to re-authenticate. Can the authorization be saved? For the record, the browser record automatically closes before I can hit the button which says "stay signed in", for whatever that's worth.

failure when using the nix overlay in docker

I'm trying to understand why this fails:

FROM debian
RUN apt-get update -y && apt-get upgrade -y && apt-get install -y curl bzip2 bash xz-utils
RUN useradd -ms /bin/bash robot
RUN groupadd nixbld && usermod -a -G nixbld robot
RUN mkdir -p /nix
RUN chmod 777 /nix
ENV HOME /home/robot
ENV USER robot
USER robot
WORKDIR /home/robot
RUN curl -L https://nixos.org/nix/install | sh
RUN . $HOME/.nix-profile/etc/profile.d/nix.sh && \
    nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs && \
    nix-channel --update
RUN . $HOME/.nix-profile/etc/profile.d/nix.sh && \
    nix-env -i -f https://github.com/vlaci/openconnect-sso/archive/master.tar.gz

The result is cryptic:

...
Step 13/13 : RUN . $HOME/.nix-profile/etc/profile.d/nix.sh &&     nix-env -i -f https://github.com/vlaci/openconnect-sso/archive/master.tar.gz
 ---> Running in f71178655855
unpacking 'https://github.com/vlaci/openconnect-sso/archive/master.tar.gz'...
unpacking 'https://github.com/nix-community/poetry2nix/archive/2acbe722a8846f6a2d11ca1f64d1ba46f62095c2.tar.gz'...
installing 'python3.8-openconnect-sso-0.6.2'
error: attribute 'platform' missing, at /nix/store/d137f726xk4lbpmd1jiryzdrab94zy4b-source/pep425.nix:76:44
(use '--show-trace' to show detailed location information)
The command '/bin/sh -c . $HOME/.nix-profile/etc/profile.d/nix.sh &&     nix-env -i -f https://github.com/vlaci/openconnect-sso/archive/master.tar.gz' returned a non-zero code: 1

Any ideas?

Expecting "sso-v2-login", receiving "single-sign-on-v2"

Hey all,

Thanks very much for this project, it has the potential to save me some pain.
I've just noticed my attempt at using it is failing, presumably because the server is responding to me with:

<auth-method>single-sign-on-v2</auth-method>

Rather than the anticipated ssov2-login from https://github.com/vlaci/openconnect-sso/blob/master/openconnect_sso/authenticator.py#L155

I'm trying to play around with re-compiling, naively only updating that string + login_final_url, to then see if/where it blows up after that:)

But, of course, I'm running into issues with nix on my local machine.
I'll keep trying, but if anyone has any suggestions I'd really appreciate.

Thanks for your time

Edit/Update:

Bah, apologies, I clearly have 0 idea what I'm talking about, I made the change I referenced above, to receive an identical error message, and to also notice the field I was referring to /is/ being anticipated correctly:

Error message after making my change:

[error    ] Required attributes not found in response ("no such child: single-sign-on-v2", does this endpoint do SSO?), exiting [openconnect_sso.app] 

From authenticator.py:

    root = ConfigAuth(
        {"client": "vpn", "type": "init", "aggregate-auth-version": "2"},
        Version({"who": "vpn"}, "4.7.00136"),
        DeviceId("linux-64"),
        GroupSelect(host.name),
        GroupAccess(url),
        Capabilities(AuthMethod("single-sign-on-v2")),
    )

So the auth-method my server is responding with /is/ anticipated, but nonetheless I'm getting the error:

[error    ] Required attributes not found in response ("no such child: sso-v2-login", does this endpoint do SSO?), exiting [openconnect_sso.app] 

Browser won't stop refreshing while trying to type authentication code

After the first login, the page to enter the authentication code appears but won't stop refreshing every second and logging this in the console:

js: Uncaught ReferenceError: Login is not defined

I barely have time to enter the first digit that the page refresh and I lose what I entered.

I use Ubuntu 20.04.3 LTS and openconnect-sso 0.7.3

Traceback during connection close

Hello,

If I abort a running session with C-c, then it throws a traceback during close. It does not cause any harm, but looks ugly.

Too few arguments.
User cancelled (SIGINT/SIGTERM); exiting.
Traceback (most recent call last):
  File "/usr/lib/python3.7/subprocess.py", line 474, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
  File "/usr/lib/python3.7/subprocess.py", line 931, in communicate
    self.wait()
  File "/usr/lib/python3.7/subprocess.py", line 990, in wait
    return self._wait(timeout=timeout)
  File "/usr/lib/python3.7/subprocess.py", line 1624, in _wait
    (pid, sts) = self._try_wait(0)
  File "/usr/lib/python3.7/subprocess.py", line 1582, in _try_wait
    (pid, sts) = os.waitpid(self.pid, wait_flags)
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/pasja/openconnect/venv/bin/openconnect-sso", line 10, in <module>
    sys.exit(main())
  File "/home/pasja/openconnect/venv/lib/python3.7/site-packages/openconnect_sso/cli.py", line 169, in main
    return app.run(args)
  File "/home/pasja/openconnect/venv/lib/python3.7/site-packages/openconnect_sso/app.py", line 75, in run
    auth_response, selected_profile, args.proxy, args.openconnect_args
  File "/home/pasja/openconnect/venv/lib/python3.7/site-packages/openconnect_sso/app.py", line 186, in run_openconnect
    return subprocess.run(command_line).returncode
  File "/usr/lib/python3.7/subprocess.py", line 481, in run
    process.kill()
  File "/usr/lib/python3.7/subprocess.py", line 1756, in kill
    self.send_signal(signal.SIGKILL)
  File "/usr/lib/python3.7/subprocess.py", line 1746, in send_signal
    os.kill(self.pid, sig)
PermissionError: [Errno 1] Operation not permitted
Component Version
OS debian 10.7
openconnect-sso 0.6.1
sudo 1.8.27
python 3.7.3 (venv)

if you need any further info feel free to ping me :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.