Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2021-30005 PoC — Jetbrains JetBrains PyCharm 数据伪造问题漏洞

Source
Associated Vulnerability
Title:Jetbrains JetBrains PyCharm 数据伪造问题漏洞 (CVE-2021-30005)
Description:Jetbrains JetBrains PyCharm是捷克Jetbrains公司的一款针对Python语言的集成开发环境(IDE)。 Jetbrains JetBrains PyCharm 2020.3.4版本存在数据伪造问题漏洞。该漏洞源于VCS获取项目时检查不足,攻击者可以利用该漏洞执行本地代码。
Readme
# CVE-2021-30005-POC

PoC for [CVE-2021-30005](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-30005).

## Details

The vulnerability resides in the fact that PyCharm would automatically activate a virtual environment found in the project when opened for the first time. This allowed an attacker to create a repository containing a malicious virtual environment with arbitrary commands in the activation scripts (e.g. `venv/bin/activate`), that would get executed when downloaded and opened in PyCharm.

The injected command can be found [here](https://github.com/atorralba/CVE-2021-30005-POC/blob/2f5a4d99bac731200718883a8faa008b08788c88/venv/bin/activate#L4).

## To reproduce

Clone the repo:

```
git clone https://github.com/atorralba/CVE-2021-30005-POC
```
And open it in a vulnerable version of PyCharm (before 2020.3.4).

## More information about the fix

See **Trusted Projects** in https://blog.jetbrains.com/pycharm/2021/03/pycharm-2020-3-4-is-out/

## References

* Inspired by: https://blog.doyensec.com/2020/03/16/vscode_codeexec.html
* JetBrains security bulletin: https://blog.jetbrains.com/blog/2021/05/07/jetbrains-security-bulletin-q1-2021/
File Snapshot

[4.0K] /data/pocs/aaf13538331e9b509b4ca37782eb4c6e747b9355 ├── [1.1K] README.md ├── [ 29] test.py └── [4.0K] venv ├── [4.0K] bin │   ├── [2.2K] activate │   ├── [1.4K] activate.csh │   ├── [3.0K] activate.fish │   ├── [1.7K] activate.ps1 │   ├── [1.2K] activate_this.py │   ├── [ 257] easy_install │   ├── [ 257] easy_install2 │   ├── [ 257] easy_install-2.7 │   ├── [ 248] pip │   ├── [ 248] pip2 │   ├── [ 248] pip-2.7 │   ├── [ 248] pip2.7 │   ├── [3.5M] python │   ├── [ 6] python2 -> python │   ├── [ 6] python2.7 -> python │   ├── [ 235] wheel │   ├── [ 235] wheel2 │   └── [ 235] wheel-2.7 ├── [4.0K] include │   └── [ 22] python2.7 -> /usr/include/python2.7 ├── [4.0K] lib │   └── [4.0K] python2.7 │   ├── [ 30] lib-dynload -> /usr/lib/python2.7/lib-dynload │   ├── [ 24] os.py -> /usr/lib/python2.7/os.py │   ├── [ 25] os.pyc -> /usr/lib/python2.7/os.pyc │   ├── [4.0K] site-packages │   │   ├── [ 126] easy_install.py │   │   ├── [4.0K] pip │   │   │   ├── [ 455] __init__.py │   │   │   ├── [4.0K] _internal │   │   │   │   ├── [7.4K] build_env.py │   │   │   │   ├── [ 11K] cache.py │   │   │   │   ├── [4.0K] cli │   │   │   │   │   ├── [6.4K] autocompletion.py │   │   │   │   │   ├── [7.8K] base_command.py │   │   │   │   │   ├── [ 27K] cmdoptions.py │   │   │   │   │   ├── [ 975] command_context.py │   │   │   │   │   ├── [ 132] __init__.py │   │   │   │   │   ├── [2.8K] main_parser.py │   │   │   │   │   ├── [2.5K] main.py │   │   │   │   │   ├── [9.3K] parser.py │   │   │   │   │   ├── [ 12K] req_command.py │   │   │   │   │   └── [ 156] status_codes.py │   │   │   │   ├── [4.0K] commands │   │   │   │   │   ├── [1.5K] check.py │   │   │   │   │   ├── [2.9K] completion.py │   │   │   │   │   ├── [7.1K] configuration.py │   │   │   │   │   ├── [4.1K] debug.py │   │   │   │   │   ├── [4.9K] download.py │   │   │   │   │   ├── [3.4K] freeze.py │   │   │   │   │   ├── [1.7K] hash.py │   │   │   │   │   ├── [1.2K] help.py │   │   │   │   │   ├── [3.6K] __init__.py │   │   │   │   │   ├── [ 26K] install.py │   │   │   │   │   ├── [ 10K] list.py │   │   │   │   │   ├── [5.0K] search.py │   │   │   │   │   ├── [6.6K] show.py │   │   │   │   │   ├── [2.9K] uninstall.py │   │   │   │   │   └── [7.0K] wheel.py │   │   │   │   ├── [ 14K] configuration.py │   │   │   │   ├── [4.0K] distributions │   │   │   │   │   ├── [1.4K] base.py │   │   │   │   │   ├── [ 959] __init__.py │   │   │   │   │   ├── [ 760] installed.py │   │   │   │   │   ├── [4.0K] sdist.py │   │   │   │   │   └── [1.3K] wheel.py │   │   │   │   ├── [ 10K] exceptions.py │   │   │   │   ├── [4.0K] index │   │   │   │   │   ├── [ 17K] collector.py │   │   │   │   │   ├── [ 30] __init__.py │   │   │   │   │   └── [ 37K] package_finder.py │   │   │   │   ├── [ 517] __init__.py │   │   │   │   ├── [ 16K] legacy_resolve.py │   │   │   │   ├── [6.6K] locations.py │   │   │   │   ├── [ 437] main.py │   │   │   │   ├── [4.0K] models │   │   │   │   │   ├── [1.1K] candidate.py │   │   │   │   │   ├── [2.6K] format_control.py │   │   │   │   │   ├── [1.0K] index.py │   │   │   │   │   ├── [ 63] __init__.py │   │   │   │   │   ├── [6.7K] link.py │   │   │   │   │   ├── [ 679] scheme.py │   │   │   │   │   ├── [3.8K] search_scope.py │   │   │   │   │   ├── [1.9K] selection_prefs.py │   │   │   │   │   ├── [3.7K] target_python.py │   │   │   │   │   └── [2.7K] wheel.py │   │   │   │   ├── [4.0K] network │   │   │   │   │   ├── [ 11K] auth.py │   │   │   │   │   ├── [2.3K] cache.py │   │   │   │   │   ├── [6.1K] download.py │   │   │   │   │   ├── [ 50] __init__.py │   │   │   │   │   ├── [ 14K] session.py │   │   │   │   │   ├── [1.9K] utils.py │   │   │   │   │   └── [1.6K] xmlrpc.py │   │   │   │   ├── [4.0K] operations │   │   │   │   │   ├── [4.0K] build │   │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   │   ├── [3.9K] metadata_legacy.py │   │   │   │   │   │   ├── [1.3K] metadata.py │   │   │   │   │   │   ├── [3.3K] wheel_legacy.py │   │   │   │   │   │   └── [1.4K] wheel.py │   │   │   │   │   ├── [5.2K] check.py │   │   │   │   │   ├── [9.9K] freeze.py │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   ├── [4.0K] install │   │   │   │   │   │   ├── [1.5K] editable_legacy.py │   │   │   │   │   │   ├── [ 51] __init__.py │   │   │   │   │   │   ├── [4.5K] legacy.py │   │   │   │   │   │   └── [ 22K] wheel.py │   │   │   │   │   └── [ 20K] prepare.py │   │   │   │   ├── [5.4K] pep425tags.py │   │   │   │   ├── [7.2K] pyproject.py │   │   │   │   ├── [4.0K] req │   │   │   │   │   ├── [ 14K] constructors.py │   │   │   │   │   ├── [2.6K] __init__.py │   │   │   │   │   ├── [ 18K] req_file.py │   │   │   │   │   ├── [ 30K] req_install.py │   │   │   │   │   ├── [7.9K] req_set.py │   │   │   │   │   ├── [4.6K] req_tracker.py │   │   │   │   │   └── [ 23K] req_uninstall.py │   │   │   │   ├── [7.8K] self_outdated_check.py │   │   │   │   ├── [4.0K] utils │   │   │   │   │   ├── [1.1K] appdirs.py │   │   │   │   │   ├── [8.7K] compat.py │   │   │   │   │   ├── [3.2K] deprecation.py │   │   │   │   │   ├── [1.3K] distutils_args.py │   │   │   │   │   ├── [1.3K] encoding.py │   │   │   │   │   ├── [1.1K] entrypoints.py │   │   │   │   │   ├── [5.1K] filesystem.py │   │   │   │   │   ├── [ 571] filetypes.py │   │   │   │   │   ├── [3.2K] glibc.py │   │   │   │   │   ├── [3.8K] hashes.py │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   ├── [ 810] inject_securetransport.py │   │   │   │   │   ├── [ 13K] logging.py │   │   │   │   │   ├── [ 741] marker_files.py │   │   │   │   │   ├── [ 25K] misc.py │   │   │   │   │   ├── [1.1K] models.py │   │   │   │   │   ├── [3.0K] packaging.py │   │   │   │   │   ├── [1.2K] pkg_resources.py │   │   │   │   │   ├── [5.0K] setuptools_build.py │   │   │   │   │   ├── [9.7K] subprocess.py │   │   │   │   │   ├── [7.6K] temp_dir.py │   │   │   │   │   ├── [1.4K] typing.py │   │   │   │   │   ├── [ 14K] ui.py │   │   │   │   │   ├── [9.2K] unpacking.py │   │   │   │   │   ├── [1.4K] urls.py │   │   │   │   │   ├── [3.3K] virtualenv.py │   │   │   │   │   └── [7.1K] wheel.py │   │   │   │   ├── [4.0K] vcs │   │   │   │   │   ├── [3.9K] bazaar.py │   │   │   │   │   ├── [ 14K] git.py │   │   │   │   │   ├── [ 617] __init__.py │   │   │   │   │   ├── [5.0K] mercurial.py │   │   │   │   │   ├── [ 12K] subversion.py │   │   │   │   │   └── [ 22K] versioncontrol.py │   │   │   │   └── [9.2K] wheel_builder.py │   │   │   ├── [ 632] __main__.py │   │   │   └── [4.0K] _vendor │   │   │   ├── [ 26K] appdirs.py │   │   │   ├── [4.0K] cachecontrol │   │   │   │   ├── [4.8K] adapter.py │   │   │   │   ├── [ 805] cache.py │   │   │   │   ├── [4.0K] caches │   │   │   │   │   ├── [4.1K] file_cache.py │   │   │   │   │   ├── [ 86] __init__.py │   │   │   │   │   └── [ 856] redis_cache.py │   │   │   │   ├── [1.3K] _cmd.py │   │   │   │   ├── [ 695] compat.py │   │   │   │   ├── [ 14K] controller.py │   │   │   │   ├── [2.5K] filewrapper.py │   │   │   │   ├── [4.0K] heuristics.py │   │   │   │   ├── [ 302] __init__.py │   │   │   │   ├── [6.9K] serialize.py │   │   │   │   └── [ 690] wrapper.py │   │   │   ├── [4.0K] certifi │   │   │   │   ├── [275K] cacert.pem │   │   │   │   ├── [ 218] core.py │   │   │   │   ├── [ 52] __init__.py │   │   │   │   └── [ 53] __main__.py │   │   │   ├── [4.0K] chardet │   │   │   │   ├── [ 31K] big5freq.py │   │   │   │   ├── [1.7K] big5prober.py │   │   │   │   ├── [9.2K] chardistribution.py │   │   │   │   ├── [3.7K] charsetgroupprober.py │   │   │   │   ├── [5.0K] charsetprober.py │   │   │   │   ├── [4.0K] cli │   │   │   │   │   ├── [2.7K] chardetect.py │   │   │   │   │   └── [ 1] __init__.py │   │   │   │   ├── [3.5K] codingstatemachine.py │   │   │   │   ├── [1.1K] compat.py │   │   │   │   ├── [1.8K] cp949prober.py │   │   │   │   ├── [1.6K] enums.py │   │   │   │   ├── [3.9K] escprober.py │   │   │   │   ├── [ 10K] escsm.py │   │   │   │   ├── [3.7K] eucjpprober.py │   │   │   │   ├── [ 13K] euckrfreq.py │   │   │   │   ├── [1.7K] euckrprober.py │   │   │   │   ├── [ 31K] euctwfreq.py │   │   │   │   ├── [1.7K] euctwprober.py │   │   │   │   ├── [ 20K] gb2312freq.py │   │   │   │   ├── [1.7K] gb2312prober.py │   │   │   │   ├── [ 14K] hebrewprober.py │   │   │   │   ├── [1.5K] __init__.py │   │   │   │   ├── [ 25K] jisfreq.py │   │   │   │   ├── [ 19K] jpcntx.py │   │   │   │   ├── [ 13K] langbulgarianmodel.py │   │   │   │   ├── [ 18K] langcyrillicmodel.py │   │   │   │   ├── [ 12K] langgreekmodel.py │   │   │   │   ├── [ 11K] langhebrewmodel.py │   │   │   │   ├── [ 12K] langhungarianmodel.py │   │   │   │   ├── [ 11K] langthaimodel.py │   │   │   │   ├── [ 11K] langturkishmodel.py │   │   │   │   ├── [5.2K] latin1prober.py │   │   │   │   ├── [3.3K] mbcharsetprober.py │   │   │   │   ├── [2.0K] mbcsgroupprober.py │   │   │   │   ├── [ 25K] mbcssm.py │   │   │   │   ├── [5.5K] sbcharsetprober.py │   │   │   │   ├── [3.5K] sbcsgroupprober.py │   │   │   │   ├── [3.7K] sjisprober.py │   │   │   │   ├── [ 12K] universaldetector.py │   │   │   │   ├── [2.7K] utf8prober.py │   │   │   │   └── [ 242] version.py │   │   │   ├── [4.0K] colorama │   │   │   │   ├── [2.5K] ansi.py │   │   │   │   ├── [ 10K] ansitowin32.py │   │   │   │   ├── [1.9K] initialise.py │   │   │   │   ├── [ 239] __init__.py │   │   │   │   ├── [5.3K] win32.py │   │   │   │   └── [6.3K] winterm.py │   │   │   ├── [ 17K] contextlib2.py │   │   │   ├── [4.0K] distlib │   │   │   │   ├── [4.0K] _backport │   │   │   │   │   ├── [ 274] __init__.py │   │   │   │   │   ├── [ 971] misc.py │   │   │   │   │   ├── [ 25K] shutil.py │   │   │   │   │   ├── [2.6K] sysconfig.cfg │   │   │   │   │   ├── [ 26K] sysconfig.py │   │   │   │   │   └── [ 90K] tarfile.py │   │   │   │   ├── [ 40K] compat.py │   │   │   │   ├── [ 50K] database.py │   │   │   │   ├── [ 21K] index.py │   │   │   │   ├── [ 581] __init__.py │   │   │   │   ├── [ 51K] locators.py │   │   │   │   ├── [ 14K] manifest.py │   │   │   │   ├── [4.3K] markers.py │   │   │   │   ├── [ 39K] metadata.py │   │   │   │   ├── [ 11K] resources.py │   │   │   │   ├── [ 17K] scripts.py │   │   │   │   ├── [ 94K] t32.exe │   │   │   │   ├── [104K] t64.exe │   │   │   │   ├── [ 58K] util.py │   │   │   │   ├── [ 23K] version.py │   │   │   │   ├── [ 88K] w32.exe │   │   │   │   ├── [ 98K] w64.exe │   │   │   │   └── [ 40K] wheel.py │   │   │   ├── [ 42K] distro.py │   │   │   ├── [4.0K] html5lib │   │   │   │   ├── [ 82K] constants.py │   │   │   │   ├── [4.0K] filters │   │   │   │   │   ├── [ 919] alphabeticalattributes.py │   │   │   │   │   ├── [ 286] base.py │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   ├── [2.9K] inject_meta_charset.py │   │   │   │   │   ├── [3.6K] lint.py │   │   │   │   │   ├── [ 10K] optionaltags.py │   │   │   │   │   ├── [ 26K] sanitizer.py │   │   │   │   │   └── [1.2K] whitespace.py │   │   │   │   ├── [116K] html5parser.py │   │   │   │   ├── [ 16K] _ihatexml.py │   │   │   │   ├── [1.1K] __init__.py │   │   │   │   ├── [ 32K] _inputstream.py │   │   │   │   ├── [ 15K] serializer.py │   │   │   │   ├── [ 75K] _tokenizer.py │   │   │   │   ├── [4.0K] treeadapters │   │   │   │   │   ├── [1.7K] genshi.py │   │   │   │   │   ├── [ 679] __init__.py │   │   │   │   │   └── [1.7K] sax.py │   │   │   │   ├── [4.0K] treebuilders │   │   │   │   │   ├── [ 14K] base.py │   │   │   │   │   ├── [8.7K] dom.py │   │   │   │   │   ├── [ 14K] etree_lxml.py │   │   │   │   │   ├── [ 12K] etree.py │   │   │   │   │   └── [3.5K] __init__.py │   │   │   │   ├── [4.0K] treewalkers │   │   │   │   │   ├── [7.3K] base.py │   │   │   │   │   ├── [1.4K] dom.py │   │   │   │   │   ├── [6.2K] etree_lxml.py │   │   │   │   │   ├── [4.4K] etree.py │   │   │   │   │   ├── [2.3K] genshi.py │   │   │   │   │   └── [5.6K] __init__.py │   │   │   │   ├── [4.0K] _trie │   │   │   │   │   ├── [1013] _base.py │   │   │   │   │   ├── [1.2K] datrie.py │   │   │   │   │   ├── [ 289] __init__.py │   │   │   │   │   └── [1.7K] py.py │   │   │   │   └── [3.9K] _utils.py │   │   │   ├── [4.0K] idna │   │   │   │   ├── [3.2K] codec.py │   │   │   │   ├── [ 232] compat.py │   │   │   │   ├── [ 11K] core.py │   │   │   │   ├── [ 40K] idnadata.py │   │   │   │   ├── [ 58] __init__.py │   │   │   │   ├── [1.7K] intranges.py │   │   │   │   ├── [ 21] package_data.py │   │   │   │   └── [194K] uts46data.py │   │   │   ├── [4.5K] __init__.py │   │   │   ├── [ 78K] ipaddress.py │   │   │   ├── [4.0K] msgpack │   │   │   │   ├── [1.1K] exceptions.py │   │   │   │   ├── [ 37K] fallback.py │   │   │   │   ├── [1.5K] __init__.py │   │   │   │   └── [ 20] _version.py │   │   │   ├── [4.0K] packaging │   │   │   │   ├── [ 744] __about__.py │   │   │   │   ├── [1.1K] _compat.py │   │   │   │   ├── [ 562] __init__.py │   │   │   │   ├── [9.3K] markers.py │   │   │   │   ├── [4.8K] requirements.py │   │   │   │   ├── [ 31K] specifiers.py │   │   │   │   ├── [2.0K] _structures.py │   │   │   │   ├── [ 23K] tags.py │   │   │   │   ├── [1.4K] _typing.py │   │   │   │   ├── [1.7K] utils.py │   │   │   │   └── [ 15K] version.py │   │   │   ├── [4.0K] pep517 │   │   │   │   ├── [3.2K] build.py │   │   │   │   ├── [5.8K] check.py │   │   │   │   ├── [4.0K] colorlog.py │   │   │   │   ├── [ 780] compat.py │   │   │   │   ├── [1.1K] dirtools.py │   │   │   │   ├── [5.9K] envbuild.py │   │   │   │   ├── [ 84] __init__.py │   │   │   │   ├── [7.6K] _in_process.py │   │   │   │   ├── [2.4K] meta.py │   │   │   │   └── [ 10K] wrappers.py │   │   │   ├── [4.0K] pkg_resources │   │   │   │   ├── [106K] __init__.py │   │   │   │   └── [ 562] py31compat.py │   │   │   ├── [4.0K] progress │   │   │   │   ├── [2.8K] bar.py │   │   │   │   ├── [1.3K] counter.py │   │   │   │   ├── [4.7K] __init__.py │   │   │   │   └── [1.3K] spinner.py │   │   │   ├── [266K] pyparsing.py │   │   │   ├── [4.0K] pytoml │   │   │   │   ├── [ 509] core.py │   │   │   │   ├── [ 127] __init__.py │   │   │   │   ├── [ 10K] parser.py │   │   │   │   ├── [1021] test.py │   │   │   │   ├── [1.6K] utils.py │   │   │   │   └── [3.3K] writer.py │   │   │   ├── [4.0K] requests │   │   │   │   ├── [ 21K] adapters.py │   │   │   │   ├── [6.1K] api.py │   │   │   │   ├── [10.0K] auth.py │   │   │   │   ├── [ 465] certs.py │   │   │   │   ├── [1.9K] compat.py │   │   │   │   ├── [ 18K] cookies.py │   │   │   │   ├── [3.1K] exceptions.py │   │   │   │   ├── [3.5K] help.py │   │   │   │   ├── [ 757] hooks.py │   │   │   │   ├── [4.0K] __init__.py │   │   │   │   ├── [1.1K] _internal_utils.py │   │   │   │   ├── [ 33K] models.py │   │   │   │   ├── [ 695] packages.py │   │   │   │   ├── [ 29K] sessions.py │   │   │   │   ├── [4.0K] status_codes.py │   │   │   │   ├── [2.9K] structures.py │   │   │   │   ├── [ 29K] utils.py │   │   │   │   └── [ 436] __version__.py │   │   │   ├── [9.7K] retrying.py │   │   │   ├── [ 33K] six.py │   │   │   ├── [4.0K] urllib3 │   │   │   │   ├── [ 11K] _collections.py │   │   │   │   ├── [ 36K] connectionpool.py │   │   │   │   ├── [ 15K] connection.py │   │   │   │   ├── [4.0K] contrib │   │   │   │   │   ├── [ 909] _appengine_environ.py │   │   │   │   │   ├── [ 11K] appengine.py │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   ├── [4.1K] ntlmpool.py │   │   │   │   │   ├── [ 16K] pyopenssl.py │   │   │   │   │   ├── [4.0K] _securetransport │   │   │   │   │   │   ├── [ 16K] bindings.py │   │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   │   └── [ 12K] low_level.py │   │   │   │   │   ├── [ 32K] securetransport.py │   │   │   │   │   └── [6.9K] socks.py │   │   │   │   ├── [6.5K] exceptions.py │   │   │   │   ├── [8.4K] fields.py │   │   │   │   ├── [2.4K] filepost.py │   │   │   │   ├── [2.6K] __init__.py │   │   │   │   ├── [4.0K] packages │   │   │   │   │   ├── [4.0K] backports │   │   │   │   │   │   ├── [ 0] __init__.py │   │   │   │   │   │   └── [1.4K] makefile.py │   │   │   │   │   ├── [ 108] __init__.py │   │   │   │   │   ├── [ 32K] six.py │   │   │   │   │   └── [4.0K] ssl_match_hostname │   │   │   │   │   ├── [5.6K] _implementation.py │   │   │   │   │   └── [ 688] __init__.py │   │   │   │   ├── [ 17K] poolmanager.py │   │   │   │   ├── [5.9K] request.py │   │   │   │   ├── [ 27K] response.py │   │   │   │   └── [4.0K] util │   │   │   │   ├── [4.5K] connection.py │   │   │   │   ├── [1.0K] __init__.py │   │   │   │   ├── [ 497] queue.py │   │   │   │   ├── [3.7K] request.py │   │   │   │   ├── [2.5K] response.py │   │   │   │   ├── [ 15K] retry.py │   │   │   │   ├── [ 14K] ssl_.py │   │   │   │   ├── [9.6K] timeout.py │   │   │   │   ├── [ 14K] url.py │   │   │   │   └── [5.3K] wait.py │   │   │   └── [4.0K] webencodings │   │   │   ├── [ 10K] __init__.py │   │   │   ├── [8.8K] labels.py │   │   │   ├── [1.3K] mklabels.py │   │   │   ├── [6.4K] tests.py │   │   │   └── [4.2K] x_user_defined.py │   │   ├── [4.0K] pip-20.0.2.dist-info │   │   │   ├── [ 125] entry_points.txt │   │   │   ├── [ 4] INSTALLER │   │   │   ├── [1.1K] LICENSE.txt │   │   │   ├── [3.3K] METADATA │   │   │   ├── [ 50K] RECORD │   │   │   ├── [ 4] top_level.txt │   │   │   └── [ 110] WHEEL │   │   ├── [ 0] pip-20.0.2.virtualenv │   │   ├── [4.0K] pkg_resources │   │   │   ├── [4.0K] extern │   │   │   │   └── [2.4K] __init__.py │   │   │   ├── [106K] __init__.py │   │   │   ├── [ 558] py31compat.py │   │   │   └── [4.0K] _vendor │   │   │   ├── [ 24K] appdirs.py │   │   │   ├── [ 0] __init__.py │   │   │   ├── [4.0K] packaging │   │   │   │   ├── [ 720] __about__.py │   │   │   │   ├── [ 860] _compat.py │   │   │   │   ├── [ 513] __init__.py │   │   │   │   ├── [8.1K] markers.py │   │   │   │   ├── [4.3K] requirements.py │   │   │   │   ├── [ 27K] specifiers.py │   │   │   │   ├── [1.4K] _structures.py │   │   │   │   ├── [ 421] utils.py │   │   │   │   └── [ 11K] version.py │   │   │   ├── [227K] pyparsing.py │   │   │   └── [ 29K] six.py │   │   ├── [4.0K] setuptools │   │   │   ├── [6.4K] archive_util.py │   │   │   ├── [9.7K] build_meta.py │   │   │   ├── [ 64K] cli-32.exe │   │   │   ├── [ 73K] cli-64.exe │   │   │   ├── [ 64K] cli.exe │   │   │   ├── [4.0K] command │   │   │   │   ├── [2.4K] alias.py │   │   │   │   ├── [ 18K] bdist_egg.py │   │   │   │   ├── [1.5K] bdist_rpm.py │   │   │   │   ├── [ 637] bdist_wininst.py │   │   │   │   ├── [4.4K] build_clib.py │   │   │   │   ├── [ 13K] build_ext.py │   │   │   │   ├── [9.4K] build_py.py │   │   │   │   ├── [8.0K] develop.py │   │   │   │   ├── [ 960] dist_info.py │   │   │   │   ├── [ 85K] easy_install.py │   │   │   │   ├── [ 25K] egg_info.py │   │   │   │   ├── [ 568] __init__.py │   │   │   │   ├── [2.2K] install_egg_info.py │   │   │   │   ├── [3.8K] install_lib.py │   │   │   │   ├── [4.6K] install.py │   │   │   │   ├── [2.4K] install_scripts.py │   │   │   │   ├── [ 628] launcher manifest.xml │   │   │   │   ├── [4.9K] py36compat.py │   │   │   │   ├── [ 468] register.py │   │   │   │   ├── [2.1K] rotate.py │   │   │   │   ├── [ 658] saveopts.py │   │   │   │   ├── [7.9K] sdist.py │   │   │   │   ├── [5.0K] setopt.py │   │   │   │   ├── [9.4K] test.py │   │   │   │   ├── [7.1K] upload_docs.py │   │   │   │   └── [ 462] upload.py │   │   │   ├── [ 20K] config.py │   │   │   ├── [5.4K] depends.py │   │   │   ├── [ 218] _deprecation_warning.py │   │   │   ├── [ 935] dep_util.py │   │   │   ├── [ 49K] dist.py │   │   │   ├── [ 524] errors.py │   │   │   ├── [1.7K] extension.py │   │   │   ├── [4.0K] extern │   │   │   │   └── [2.5K] __init__.py │   │   │   ├── [5.0K] glob.py │   │   │   ├── [ 64K] gui-32.exe │   │   │   ├── [ 74K] gui-64.exe │   │   │   ├── [ 64K] gui.exe │   │   │   ├── [2.2K] _imp.py │   │   │   ├── [7.1K] __init__.py │   │   │   ├── [5.2K] installer.py │   │   │   ├── [ 787] launch.py │   │   │   ├── [2.0K] lib2to3_ex.py │   │   │   ├── [5.1K] monkey.py │   │   │   ├── [ 46K] msvc.py │   │   │   ├── [3.1K] namespaces.py │   │   │   ├── [ 40K] package_index.py │   │   │   ├── [1.5K] py27compat.py │   │   │   ├── [ 838] py31compat.py │   │   │   ├── [1.3K] py33compat.py │   │   │   ├── [ 245] py34compat.py │   │   │   ├── [ 14K] sandbox.py │   │   │   ├── [ 218] script (dev).tmpl │   │   │   ├── [ 138] script.tmpl │   │   │   ├── [2.2K] site-patch.py │   │   │   ├── [8.3K] ssl_support.py │   │   │   ├── [ 996] unicode_utils.py │   │   │   ├── [4.0K] _vendor │   │   │   │   ├── [ 0] __init__.py │   │   │   │   ├── [ 15K] ordered_set.py │   │   │   │   ├── [4.0K] packaging │   │   │   │   │   ├── [ 744] __about__.py │   │   │   │   │   ├── [ 865] _compat.py │   │   │   │   │   ├── [ 562] __init__.py │   │   │   │   │   ├── [8.1K] markers.py │   │   │   │   │   ├── [4.6K] requirements.py │   │   │   │   │   ├── [ 27K] specifiers.py │   │   │   │   │   ├── [1.4K] _structures.py │   │   │   │   │   ├── [ 13K] tags.py │   │   │   │   │   ├── [1.5K] utils.py │   │   │   │   │   └── [ 12K] version.py │   │   │   │   ├── [227K] pyparsing.py │   │   │   │   └── [ 29K] six.py │   │   │   ├── [ 144] version.py │   │   │   ├── [8.3K] wheel.py │   │   │   └── [ 714] windows_support.py │   │   ├── [4.0K] setuptools-44.1.0.dist-info │   │   │   ├── [ 239] dependency_links.txt │   │   │   ├── [3.1K] entry_points.txt │   │   │   ├── [ 4] INSTALLER │   │   │   ├── [1.1K] LICENSE │   │   │   ├── [3.6K] METADATA │   │   │   ├── [ 13K] RECORD │   │   │   ├── [ 38] top_level.txt │   │   │   ├── [ 110] WHEEL │   │   │   └── [ 1] zip-safe │   │   ├── [ 0] setuptools-44.1.0.virtualenv │   │   ├── [ 18] _virtualenv.pth │   │   ├── [4.5K] _virtualenv.py │   │   ├── [4.0K] wheel │   │   │   ├── [ 15K] bdist_wheel.py │   │   │   ├── [4.0K] cli │   │   │   │   ├── [9.3K] convert.py │   │   │   │   ├── [2.5K] __init__.py │   │   │   │   ├── [ 0] install.py │   │   │   │   ├── [3.1K] pack.py │   │   │   │   └── [ 673] unpack.py │   │   │   ├── [ 23] __init__.py │   │   │   ├── [ 12K] macosx_libfile.py │   │   │   ├── [ 417] __main__.py │   │   │   ├── [4.4K] metadata.py │   │   │   ├── [8.9K] pep425tags.py │   │   │   ├── [1.2K] pkginfo.py │   │   │   ├── [ 938] util.py │   │   │   ├── [ 133] _version.py │   │   │   └── [7.1K] wheelfile.py │   │   ├── [4.0K] wheel-0.34.2.dist-info │   │   │   ├── [ 108] entry_points.txt │   │   │   ├── [ 4] INSTALLER │   │   │   ├── [1.1K] LICENSE.txt │   │   │   ├── [2.2K] METADATA │   │   │   ├── [2.3K] RECORD │   │   │   ├── [ 6] top_level.txt │   │   │   └── [ 110] WHEEL │   │   └── [ 0] wheel-0.34.2.virtualenv │   └── [6.0K] site.py └── [ 202] pyvenv.cfg 65 directories, 515 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.