Copy disabled (too large)
Download .txt
Showing preview only (19,914K chars total). Download the full file to get everything.
Repository: ym2011/PEST
Branch: master
Commit: 15e4d1c42192
Files: 898
Total size: 18.8 MB
Directory structure:
gitextract_q3uml0q4/
├── .gitignore
├── BruteXSS/
│ ├── License.txt
│ ├── README.md
│ ├── brutexss.py
│ ├── colorama/
│ │ ├── __init__.py
│ │ ├── ansi.py
│ │ ├── ansitowin32.py
│ │ ├── initialise.py
│ │ ├── win32.py
│ │ └── winterm.py
│ ├── mechanize/
│ │ ├── __init__.py
│ │ ├── _auth.py
│ │ ├── _beautifulsoup.py
│ │ ├── _clientcookie.py
│ │ ├── _debug.py
│ │ ├── _firefox3cookiejar.py
│ │ ├── _form.py
│ │ ├── _gzip.py
│ │ ├── _headersutil.py
│ │ ├── _html.py
│ │ ├── _http.py
│ │ ├── _lwpcookiejar.py
│ │ ├── _markupbase.py
│ │ ├── _mechanize.py
│ │ ├── _mozillacookiejar.py
│ │ ├── _msiecookiejar.py
│ │ ├── _opener.py
│ │ ├── _pullparser.py
│ │ ├── _request.py
│ │ ├── _response.py
│ │ ├── _rfc3986.py
│ │ ├── _sgmllib_copy.py
│ │ ├── _sockettimeout.py
│ │ ├── _testcase.py
│ │ ├── _urllib2.py
│ │ ├── _urllib2_fork.py
│ │ ├── _useragent.py
│ │ ├── _util.py
│ │ └── _version.py
│ ├── wordlist-huge.txt
│ ├── wordlist-medium.txt
│ ├── wordlist-small.txt
│ └── wordlist.txt
├── Burpsuite/
│ ├── BurpSuite_2021.bat
│ ├── README.MD
│ ├── Run Burp Suite_v1.7.37.bat
│ ├── download-link.txt
│ └── xray_run_with_burp.bat
├── DBScanner/
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── about oracle.txt
│ └── dbscan.py
├── Github_Leak/
│ ├── GitHack-master/
│ │ ├── GitHack.py
│ │ ├── README.md
│ │ └── lib/
│ │ ├── __init__.py
│ │ └── parser.py
│ └── Github-Hunter-master/
│ ├── GithubHunter.py
│ ├── README.md
│ ├── info.ini.example
│ └── requirements.txt
├── Linux_scripts/
│ ├── recover_ss.sh
│ ├── run_armitage.sh
│ ├── set_proxy.sh
│ └── siege_batchaccess.sh
├── README.md
├── Snorby_scripts/
│ ├── README.MD
│ ├── setup.sh
│ ├── start_ids.sh
│ └── stop_ids.sh
├── User Agents/
│ ├── LICENSE
│ ├── README.md
│ ├── SwitchyOmega/
│ │ ├── OmegaOptions.bak
│ │ └── SwitchyOmega_v2.2.11.crx
│ ├── csv/
│ │ ├── android-browser.csv
│ │ ├── chrome.csv
│ │ ├── firefox.csv
│ │ ├── internet-explorer.csv
│ │ ├── opera.csv
│ │ ├── safari.csv
│ │ ├── techpatterns_com_useragentswitcher.csv
│ │ └── ua_org_allagents.csv
│ ├── json/
│ │ ├── android-browser.json
│ │ ├── chrome.json
│ │ ├── firefox.json
│ │ ├── internet-explorer.json
│ │ ├── opera.json
│ │ ├── safari.json
│ │ ├── techpatterns_com_useragentswitcher.json
│ │ └── ua_org_allagents.json
│ ├── requirements.txt
│ ├── user agent example.txt
│ └── useragents.py
├── Weak_Password/
│ ├── Bruteforce/
│ │ ├── README.md
│ │ ├── bruteforce.py
│ │ ├── comm/
│ │ │ ├── __init__.py
│ │ │ ├── config.py
│ │ │ ├── portscan.py
│ │ │ └── printers.py
│ │ ├── conf/
│ │ │ ├── .svn/
│ │ │ │ ├── all-wcprops
│ │ │ │ ├── entries
│ │ │ │ └── text-base/
│ │ │ │ └── config.txt.svn-base
│ │ │ ├── ftp.conf
│ │ │ ├── ldapd.conf
│ │ │ ├── mongodb.conf
│ │ │ ├── mssql.conf
│ │ │ ├── mysql.conf
│ │ │ ├── pop3.conf
│ │ │ ├── postgres.conf
│ │ │ ├── signs.conf
│ │ │ ├── smb.conf
│ │ │ ├── snmp.conf
│ │ │ ├── ssh.conf
│ │ │ ├── tomcat.conf
│ │ │ ├── vnc.conf
│ │ │ └── web.conf
│ │ ├── factorys/
│ │ │ ├── __init__.py
│ │ │ └── pluginFactory.py
│ │ ├── plugins/
│ │ │ ├── __init__.py
│ │ │ ├── ftp.py
│ │ │ ├── ldapd.py
│ │ │ ├── mongodb.py
│ │ │ ├── mssql.py
│ │ │ ├── mysql.py
│ │ │ ├── pop3.py
│ │ │ ├── postgres.py
│ │ │ ├── redisexp.py
│ │ │ ├── rsync.py
│ │ │ ├── rsynclib.py
│ │ │ ├── smb.py
│ │ │ ├── snmp.py
│ │ │ ├── ssh.py
│ │ │ ├── ssltest.py
│ │ │ ├── vnc.py
│ │ │ ├── vnclib.py
│ │ │ └── web.py
│ │ └── requirements.txt
│ ├── Fuxi-Scanner/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── doc/
│ │ │ ├── INSTALL.en.md
│ │ │ ├── INSTALL.zh.md
│ │ │ └── README.zh.md
│ │ ├── fuxi/
│ │ │ ├── __init__.py
│ │ │ ├── app.py
│ │ │ ├── static/
│ │ │ │ ├── css/
│ │ │ │ │ ├── dropzone.css
│ │ │ │ │ ├── duallistbox/
│ │ │ │ │ │ ├── bootstrap-duallistbox.css
│ │ │ │ │ │ └── bootstrap-multiselect.css
│ │ │ │ │ ├── font-awesome-4.7.0/
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ └── font-awesome.css
│ │ │ │ │ │ └── fonts/
│ │ │ │ │ │ └── FontAwesome.otf
│ │ │ │ │ └── main.css
│ │ │ │ ├── download/
│ │ │ │ │ └── test
│ │ │ │ └── js/
│ │ │ │ ├── bootstrap/
│ │ │ │ │ └── bootstrap-multiselect.js
│ │ │ │ ├── jquery/
│ │ │ │ │ └── jquery.bootstrap-duallistbox.js
│ │ │ │ ├── main.js
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── Chart.js
│ │ │ │ │ ├── FeedEk.js
│ │ │ │ │ ├── bootstrap-datetimepicker.js
│ │ │ │ │ ├── dropzone.js
│ │ │ │ │ └── laydate/
│ │ │ │ │ ├── laydate.js
│ │ │ │ │ └── theme/
│ │ │ │ │ └── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ └── server/
│ │ │ │ ├── acunetix-scanner.js
│ │ │ │ ├── asset-management.js
│ │ │ │ ├── asset-services-list.js
│ │ │ │ ├── auth-tester-tasks.js
│ │ │ │ ├── checkbox.js
│ │ │ │ ├── dashboard.js
│ │ │ │ ├── new-asset.js
│ │ │ │ ├── new-auth-tester.js
│ │ │ │ ├── new-scan.js
│ │ │ │ ├── plugin-management.js
│ │ │ │ ├── port-scanner.js
│ │ │ │ ├── search.js
│ │ │ │ ├── settings.js
│ │ │ │ ├── subdomain-brute.js
│ │ │ │ ├── subdomain-list.js
│ │ │ │ ├── task-management.js
│ │ │ │ ├── update.js
│ │ │ │ ├── vulnerability.js
│ │ │ │ └── week-passwd-list.js
│ │ │ ├── templates/
│ │ │ │ ├── 404.html
│ │ │ │ ├── 500.html
│ │ │ │ ├── acunetix-scanner.html
│ │ │ │ ├── acunetix-tasks.html
│ │ │ │ ├── advanced-option.html
│ │ │ │ ├── asset-management.html
│ │ │ │ ├── asset-services.html
│ │ │ │ ├── auth-tester-tasks.html
│ │ │ │ ├── base.html
│ │ │ │ ├── dashboard.html
│ │ │ │ ├── index.html
│ │ │ │ ├── login.html
│ │ │ │ ├── new-asset.html
│ │ │ │ ├── new-auth-tester.html
│ │ │ │ ├── new-scan.html
│ │ │ │ ├── plugin-management.html
│ │ │ │ ├── port-scanner.html
│ │ │ │ ├── search.html
│ │ │ │ ├── subdomain-brute.html
│ │ │ │ ├── subdomain-list.html
│ │ │ │ ├── system-config.html
│ │ │ │ ├── task-management.html
│ │ │ │ ├── vulnerability.html
│ │ │ │ └── week-passwd-list.html
│ │ │ └── views/
│ │ │ ├── __init__.py
│ │ │ ├── acunetix_scanner.py
│ │ │ ├── asset_management.py
│ │ │ ├── auth_tester.py
│ │ │ ├── authenticate.py
│ │ │ ├── dashboard.py
│ │ │ ├── index.py
│ │ │ ├── lib/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── get_title.py
│ │ │ │ ├── mongo_db.py
│ │ │ │ └── parse_target.py
│ │ │ ├── modules/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── acunetix_scanner/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── awvs_api.py
│ │ │ │ ├── auth_tester/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth_scanner.py
│ │ │ │ │ └── hydra_plugin.py
│ │ │ │ ├── discovery/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── asset_discovery.py
│ │ │ │ ├── port_scanner/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── nmap_scanner.py
│ │ │ │ ├── scanner/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── parse_plugin.py
│ │ │ │ │ └── poc_scanner.py
│ │ │ │ └── subdomain/
│ │ │ │ ├── __init__.py
│ │ │ │ └── domain_brute.py
│ │ │ ├── plugin_management.py
│ │ │ ├── port_scanner.py
│ │ │ ├── settings.py
│ │ │ ├── subdomain_brute.py
│ │ │ └── vul_scanner.py
│ │ ├── fuxi_scanner.py
│ │ ├── migration/
│ │ │ ├── DataModels
│ │ │ └── start.py
│ │ ├── requirements.txt
│ │ └── run.sh
│ ├── Scrack/
│ │ ├── README.md
│ │ └── Scrack.py
│ └── fenghuangscanner/
│ ├── README.md
│ ├── comm/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── portscan.py
│ │ └── printers.py
│ ├── conf/
│ │ ├── .svn/
│ │ │ ├── all-wcprops
│ │ │ ├── entries
│ │ │ └── text-base/
│ │ │ └── config.txt.svn-base
│ │ ├── ftp.conf
│ │ ├── ldapd.conf
│ │ ├── mongodb.conf
│ │ ├── mssql.conf
│ │ ├── mysql.conf
│ │ ├── pop3.conf
│ │ ├── postgres.conf
│ │ ├── signs.conf
│ │ ├── smb.conf
│ │ ├── snmp.conf
│ │ ├── ssh.conf
│ │ ├── tomcat.conf
│ │ ├── vnc.conf
│ │ └── web.conf
│ ├── factorys/
│ │ ├── __init__.py
│ │ └── pluginFactory.py
│ ├── main.py
│ ├── plugins/
│ │ ├── __init__.py
│ │ ├── ftp.py
│ │ ├── ldapd.py
│ │ ├── mongodb.py
│ │ ├── mssql.py
│ │ ├── mysql.py
│ │ ├── pop3.py
│ │ ├── postgres.py
│ │ ├── redisexp.py
│ │ ├── rsync.py
│ │ ├── rsynclib.py
│ │ ├── smb.py
│ │ ├── snmp.py
│ │ ├── ssh.py
│ │ ├── ssltest.py
│ │ ├── vnc.py
│ │ ├── vnclib.py
│ │ └── web.py
│ └── requirements.txt
├── Windows_scripts/
│ ├── AppScan_batch_scan/
│ │ ├── AppScan_batch.bat
│ │ ├── READ.ME
│ │ ├── batch.bat
│ │ └── urltoscan0.bat
│ ├── Armitage-FAQ.txt
│ ├── FolderHide.bat
│ ├── FolderUnhide.bat
│ ├── README.MD
│ ├── Windows-security-check/
│ │ ├── Windows-security-check.README
│ │ └── Windows-security-check.bat
│ ├── check_honeyport_status.bat
│ ├── init.bat
│ ├── ipreverse.py
│ ├── networking.txt
│ ├── ping_check_network.bat
│ ├── safedog.py
│ ├── smsbomb.py
│ ├── start_share_v1.2.bat
│ └── stop_share_v1.4.bat
├── antSword/
│ ├── .github/
│ │ └── ISSUE_TEMPLATE.md
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── README_CN.md
│ ├── app.js
│ ├── modules/
│ │ ├── cache.js
│ │ ├── config.js
│ │ ├── database.js
│ │ ├── logger.js
│ │ ├── menubar.js
│ │ ├── plugStore.js
│ │ ├── request.js
│ │ └── update.js
│ ├── package.json
│ ├── shells/
│ │ ├── README.md
│ │ ├── asp.net_custom_script_for_odbc.aspx
│ │ ├── asp.net_eval_script.aspx
│ │ ├── asp_eval_xxxx_script.asp
│ │ ├── jsp_custom_script_for_mysql.jsp
│ │ ├── jspx_custom_script_for_mysql.jspx
│ │ ├── php_assert_script.php
│ │ ├── php_create_function_script.php
│ │ └── php_custom_script_for_mysql.php
│ ├── source/
│ │ ├── app.entry.js
│ │ ├── base/
│ │ │ ├── cachemanager.js
│ │ │ ├── encodes.js
│ │ │ └── menubar.js
│ │ ├── core/
│ │ │ ├── README.md
│ │ │ ├── asp/
│ │ │ │ ├── encoder/
│ │ │ │ │ └── xxxxdog.js
│ │ │ │ ├── index.js
│ │ │ │ └── template/
│ │ │ │ ├── base.js
│ │ │ │ ├── command.js
│ │ │ │ ├── database/
│ │ │ │ │ ├── access.js
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── dsn.js
│ │ │ │ │ ├── microsoft_jet_oledb_4_0.js
│ │ │ │ │ ├── mysql.js
│ │ │ │ │ ├── oracle.js
│ │ │ │ │ ├── sqloledb_1.js
│ │ │ │ │ ├── sqloledb_1_sspi.js
│ │ │ │ │ └── sqlserver.js
│ │ │ │ └── filemanager.js
│ │ │ ├── aspx/
│ │ │ │ ├── encoder/
│ │ │ │ │ ├── base64.js
│ │ │ │ │ └── hex.js
│ │ │ │ ├── index.js
│ │ │ │ └── template/
│ │ │ │ ├── base.js
│ │ │ │ ├── command.js
│ │ │ │ ├── database/
│ │ │ │ │ ├── access.js
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── dsn.js
│ │ │ │ │ ├── microsoft_jet_oledb_4_0.js
│ │ │ │ │ ├── mysql.js
│ │ │ │ │ ├── oracle.js
│ │ │ │ │ ├── sqloledb_1.js
│ │ │ │ │ ├── sqloledb_1_sspi.js
│ │ │ │ │ └── sqlserver.js
│ │ │ │ └── filemanager.js
│ │ │ ├── base.js
│ │ │ ├── custom/
│ │ │ │ ├── encoder/
│ │ │ │ │ ├── base64.js
│ │ │ │ │ └── hex.js
│ │ │ │ ├── index.js
│ │ │ │ └── template/
│ │ │ │ ├── base.js
│ │ │ │ ├── command.js
│ │ │ │ ├── database/
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── mysql.js
│ │ │ │ │ ├── oracle.js
│ │ │ │ │ └── sqlserver.js
│ │ │ │ └── filemanager.js
│ │ │ ├── index.js
│ │ │ └── php/
│ │ │ ├── encoder/
│ │ │ │ ├── base64.js
│ │ │ │ ├── chr.js
│ │ │ │ ├── chr16.js
│ │ │ │ └── rot13.js
│ │ │ ├── index.js
│ │ │ └── template/
│ │ │ ├── base.js
│ │ │ ├── command.js
│ │ │ ├── database/
│ │ │ │ ├── informix.js
│ │ │ │ ├── mssql.js
│ │ │ │ ├── mysql.js
│ │ │ │ ├── mysqli.js
│ │ │ │ └── oracle.js
│ │ │ └── filemanager.js
│ │ ├── language/
│ │ │ ├── en.js
│ │ │ ├── index.js
│ │ │ └── zh.js
│ │ ├── load.entry.js
│ │ ├── modules/
│ │ │ ├── database/
│ │ │ │ ├── asp/
│ │ │ │ │ └── index.js
│ │ │ │ ├── aspx/
│ │ │ │ │ └── index.js
│ │ │ │ ├── custom/
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── php/
│ │ │ │ └── index.js
│ │ │ ├── filemanager/
│ │ │ │ ├── files.js
│ │ │ │ ├── folder.js
│ │ │ │ ├── index.js
│ │ │ │ └── tasks.js
│ │ │ ├── plugin/
│ │ │ │ └── index.js
│ │ │ ├── settings/
│ │ │ │ ├── about.js
│ │ │ │ ├── aproxy.js
│ │ │ │ ├── display.js
│ │ │ │ ├── encoders.js
│ │ │ │ ├── index.js
│ │ │ │ ├── language.js
│ │ │ │ └── update.js
│ │ │ ├── shellmanager/
│ │ │ │ ├── category/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── sidebar.js
│ │ │ │ │ └── toolbar.js
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ └── list/
│ │ │ │ ├── contextmenu.js
│ │ │ │ ├── form.js
│ │ │ │ ├── grid.js
│ │ │ │ └── index.js
│ │ │ ├── terminal/
│ │ │ │ └── index.js
│ │ │ └── viewsite/
│ │ │ ├── README.md
│ │ │ ├── cookiemgr.js
│ │ │ └── index.js
│ │ └── ui/
│ │ ├── README.md
│ │ ├── tabbar.js
│ │ └── window.js
│ ├── static/
│ │ ├── css/
│ │ │ └── index.css
│ │ └── libs/
│ │ ├── ace/
│ │ │ ├── ace.js
│ │ │ ├── ext-beautify.js
│ │ │ ├── ext-chromevox.js
│ │ │ ├── ext-elastic_tabstops_lite.js
│ │ │ ├── ext-emmet.js
│ │ │ ├── ext-error_marker.js
│ │ │ ├── ext-keybinding_menu.js
│ │ │ ├── ext-language_tools.js
│ │ │ ├── ext-linking.js
│ │ │ ├── ext-modelist.js
│ │ │ ├── ext-old_ie.js
│ │ │ ├── ext-searchbox.js
│ │ │ ├── ext-settings_menu.js
│ │ │ ├── ext-spellcheck.js
│ │ │ ├── ext-split.js
│ │ │ ├── ext-static_highlight.js
│ │ │ ├── ext-statusbar.js
│ │ │ ├── ext-textarea.js
│ │ │ ├── ext-themelist.js
│ │ │ ├── ext-whitespace.js
│ │ │ ├── keybinding-emacs.js
│ │ │ ├── keybinding-vim.js
│ │ │ ├── mode-abap.js
│ │ │ ├── mode-abc.js
│ │ │ ├── mode-actionscript.js
│ │ │ ├── mode-ada.js
│ │ │ ├── mode-apache_conf.js
│ │ │ ├── mode-applescript.js
│ │ │ ├── mode-asciidoc.js
│ │ │ ├── mode-assembly_x86.js
│ │ │ ├── mode-autohotkey.js
│ │ │ ├── mode-batchfile.js
│ │ │ ├── mode-c9search.js
│ │ │ ├── mode-c_cpp.js
│ │ │ ├── mode-cirru.js
│ │ │ ├── mode-clojure.js
│ │ │ ├── mode-cobol.js
│ │ │ ├── mode-coffee.js
│ │ │ ├── mode-coldfusion.js
│ │ │ ├── mode-csharp.js
│ │ │ ├── mode-css.js
│ │ │ ├── mode-curly.js
│ │ │ ├── mode-d.js
│ │ │ ├── mode-dart.js
│ │ │ ├── mode-diff.js
│ │ │ ├── mode-django.js
│ │ │ ├── mode-dockerfile.js
│ │ │ ├── mode-dot.js
│ │ │ ├── mode-eiffel.js
│ │ │ ├── mode-ejs.js
│ │ │ ├── mode-elixir.js
│ │ │ ├── mode-elm.js
│ │ │ ├── mode-erlang.js
│ │ │ ├── mode-forth.js
│ │ │ ├── mode-ftl.js
│ │ │ ├── mode-gcode.js
│ │ │ ├── mode-gherkin.js
│ │ │ ├── mode-gitignore.js
│ │ │ ├── mode-glsl.js
│ │ │ ├── mode-golang.js
│ │ │ ├── mode-groovy.js
│ │ │ ├── mode-haml.js
│ │ │ ├── mode-handlebars.js
│ │ │ ├── mode-haskell.js
│ │ │ ├── mode-haxe.js
│ │ │ ├── mode-html.js
│ │ │ ├── mode-html_ruby.js
│ │ │ ├── mode-ini.js
│ │ │ ├── mode-io.js
│ │ │ ├── mode-jack.js
│ │ │ ├── mode-jade.js
│ │ │ ├── mode-java.js
│ │ │ ├── mode-javascript.js
│ │ │ ├── mode-json.js
│ │ │ ├── mode-jsoniq.js
│ │ │ ├── mode-jsp.js
│ │ │ ├── mode-jsx.js
│ │ │ ├── mode-julia.js
│ │ │ ├── mode-latex.js
│ │ │ ├── mode-lean.js
│ │ │ ├── mode-less.js
│ │ │ ├── mode-liquid.js
│ │ │ ├── mode-lisp.js
│ │ │ ├── mode-live_script.js
│ │ │ ├── mode-livescript.js
│ │ │ ├── mode-logiql.js
│ │ │ ├── mode-lsl.js
│ │ │ ├── mode-lua.js
│ │ │ ├── mode-luapage.js
│ │ │ ├── mode-lucene.js
│ │ │ ├── mode-makefile.js
│ │ │ ├── mode-markdown.js
│ │ │ ├── mode-mask.js
│ │ │ ├── mode-matlab.js
│ │ │ ├── mode-maze.js
│ │ │ ├── mode-mel.js
│ │ │ ├── mode-mips_assembler.js
│ │ │ ├── mode-mipsassembler.js
│ │ │ ├── mode-mushcode.js
│ │ │ ├── mode-mysql.js
│ │ │ ├── mode-nix.js
│ │ │ ├── mode-objectivec.js
│ │ │ ├── mode-ocaml.js
│ │ │ ├── mode-pascal.js
│ │ │ ├── mode-perl.js
│ │ │ ├── mode-pgsql.js
│ │ │ ├── mode-php.js
│ │ │ ├── mode-plain_text.js
│ │ │ ├── mode-powershell.js
│ │ │ ├── mode-praat.js
│ │ │ ├── mode-prolog.js
│ │ │ ├── mode-properties.js
│ │ │ ├── mode-protobuf.js
│ │ │ ├── mode-python.js
│ │ │ ├── mode-r.js
│ │ │ ├── mode-rdoc.js
│ │ │ ├── mode-rhtml.js
│ │ │ ├── mode-ruby.js
│ │ │ ├── mode-rust.js
│ │ │ ├── mode-sass.js
│ │ │ ├── mode-scad.js
│ │ │ ├── mode-scala.js
│ │ │ ├── mode-scheme.js
│ │ │ ├── mode-scss.js
│ │ │ ├── mode-sh.js
│ │ │ ├── mode-sjs.js
│ │ │ ├── mode-smarty.js
│ │ │ ├── mode-snippets.js
│ │ │ ├── mode-soy_template.js
│ │ │ ├── mode-space.js
│ │ │ ├── mode-sql.js
│ │ │ ├── mode-sqlserver.js
│ │ │ ├── mode-stylus.js
│ │ │ ├── mode-svg.js
│ │ │ ├── mode-tcl.js
│ │ │ ├── mode-tex.js
│ │ │ ├── mode-text.js
│ │ │ ├── mode-textile.js
│ │ │ ├── mode-toml.js
│ │ │ ├── mode-twig.js
│ │ │ ├── mode-typescript.js
│ │ │ ├── mode-vala.js
│ │ │ ├── mode-vbscript.js
│ │ │ ├── mode-velocity.js
│ │ │ ├── mode-verilog.js
│ │ │ ├── mode-vhdl.js
│ │ │ ├── mode-xml.js
│ │ │ ├── mode-xquery.js
│ │ │ ├── mode-yaml.js
│ │ │ ├── snippets/
│ │ │ │ ├── abap.js
│ │ │ │ ├── abc.js
│ │ │ │ ├── actionscript.js
│ │ │ │ ├── ada.js
│ │ │ │ ├── apache_conf.js
│ │ │ │ ├── applescript.js
│ │ │ │ ├── asciidoc.js
│ │ │ │ ├── assembly_x86.js
│ │ │ │ ├── autohotkey.js
│ │ │ │ ├── batchfile.js
│ │ │ │ ├── c9search.js
│ │ │ │ ├── c_cpp.js
│ │ │ │ ├── cirru.js
│ │ │ │ ├── clojure.js
│ │ │ │ ├── cobol.js
│ │ │ │ ├── coffee.js
│ │ │ │ ├── coldfusion.js
│ │ │ │ ├── csharp.js
│ │ │ │ ├── css.js
│ │ │ │ ├── curly.js
│ │ │ │ ├── d.js
│ │ │ │ ├── dart.js
│ │ │ │ ├── diff.js
│ │ │ │ ├── django.js
│ │ │ │ ├── dockerfile.js
│ │ │ │ ├── dot.js
│ │ │ │ ├── eiffel.js
│ │ │ │ ├── ejs.js
│ │ │ │ ├── elixir.js
│ │ │ │ ├── elm.js
│ │ │ │ ├── erlang.js
│ │ │ │ ├── forth.js
│ │ │ │ ├── ftl.js
│ │ │ │ ├── gcode.js
│ │ │ │ ├── gherkin.js
│ │ │ │ ├── gitignore.js
│ │ │ │ ├── glsl.js
│ │ │ │ ├── golang.js
│ │ │ │ ├── groovy.js
│ │ │ │ ├── haml.js
│ │ │ │ ├── handlebars.js
│ │ │ │ ├── haskell.js
│ │ │ │ ├── haxe.js
│ │ │ │ ├── html.js
│ │ │ │ ├── html_ruby.js
│ │ │ │ ├── ini.js
│ │ │ │ ├── io.js
│ │ │ │ ├── jack.js
│ │ │ │ ├── jade.js
│ │ │ │ ├── java.js
│ │ │ │ ├── javascript.js
│ │ │ │ ├── json.js
│ │ │ │ ├── jsoniq.js
│ │ │ │ ├── jsp.js
│ │ │ │ ├── jsx.js
│ │ │ │ ├── julia.js
│ │ │ │ ├── latex.js
│ │ │ │ ├── lean.js
│ │ │ │ ├── less.js
│ │ │ │ ├── liquid.js
│ │ │ │ ├── lisp.js
│ │ │ │ ├── live_script.js
│ │ │ │ ├── livescript.js
│ │ │ │ ├── logiql.js
│ │ │ │ ├── lsl.js
│ │ │ │ ├── lua.js
│ │ │ │ ├── luapage.js
│ │ │ │ ├── lucene.js
│ │ │ │ ├── makefile.js
│ │ │ │ ├── markdown.js
│ │ │ │ ├── mask.js
│ │ │ │ ├── matlab.js
│ │ │ │ ├── maze.js
│ │ │ │ ├── mel.js
│ │ │ │ ├── mips_assembler.js
│ │ │ │ ├── mipsassembler.js
│ │ │ │ ├── mushcode.js
│ │ │ │ ├── mysql.js
│ │ │ │ ├── nix.js
│ │ │ │ ├── objectivec.js
│ │ │ │ ├── ocaml.js
│ │ │ │ ├── pascal.js
│ │ │ │ ├── perl.js
│ │ │ │ ├── pgsql.js
│ │ │ │ ├── php.js
│ │ │ │ ├── plain_text.js
│ │ │ │ ├── powershell.js
│ │ │ │ ├── praat.js
│ │ │ │ ├── prolog.js
│ │ │ │ ├── properties.js
│ │ │ │ ├── protobuf.js
│ │ │ │ ├── python.js
│ │ │ │ ├── r.js
│ │ │ │ ├── rdoc.js
│ │ │ │ ├── rhtml.js
│ │ │ │ ├── ruby.js
│ │ │ │ ├── rust.js
│ │ │ │ ├── sass.js
│ │ │ │ ├── scad.js
│ │ │ │ ├── scala.js
│ │ │ │ ├── scheme.js
│ │ │ │ ├── scss.js
│ │ │ │ ├── sh.js
│ │ │ │ ├── sjs.js
│ │ │ │ ├── smarty.js
│ │ │ │ ├── snippets.js
│ │ │ │ ├── soy_template.js
│ │ │ │ ├── space.js
│ │ │ │ ├── sql.js
│ │ │ │ ├── sqlserver.js
│ │ │ │ ├── stylus.js
│ │ │ │ ├── svg.js
│ │ │ │ ├── tcl.js
│ │ │ │ ├── tex.js
│ │ │ │ ├── text.js
│ │ │ │ ├── textile.js
│ │ │ │ ├── toml.js
│ │ │ │ ├── twig.js
│ │ │ │ ├── typescript.js
│ │ │ │ ├── vala.js
│ │ │ │ ├── vbscript.js
│ │ │ │ ├── velocity.js
│ │ │ │ ├── verilog.js
│ │ │ │ ├── vhdl.js
│ │ │ │ ├── xml.js
│ │ │ │ ├── xquery.js
│ │ │ │ └── yaml.js
│ │ │ ├── theme-ambiance.js
│ │ │ ├── theme-chaos.js
│ │ │ ├── theme-chrome.js
│ │ │ ├── theme-clouds.js
│ │ │ ├── theme-clouds_midnight.js
│ │ │ ├── theme-cobalt.js
│ │ │ ├── theme-crimson_editor.js
│ │ │ ├── theme-dawn.js
│ │ │ ├── theme-dreamweaver.js
│ │ │ ├── theme-eclipse.js
│ │ │ ├── theme-github.js
│ │ │ ├── theme-idle_fingers.js
│ │ │ ├── theme-iplastic.js
│ │ │ ├── theme-katzenmilch.js
│ │ │ ├── theme-kr_theme.js
│ │ │ ├── theme-kuroir.js
│ │ │ ├── theme-merbivore.js
│ │ │ ├── theme-merbivore_soft.js
│ │ │ ├── theme-mono_industrial.js
│ │ │ ├── theme-monokai.js
│ │ │ ├── theme-pastel_on_dark.js
│ │ │ ├── theme-solarized_dark.js
│ │ │ ├── theme-solarized_light.js
│ │ │ ├── theme-sqlserver.js
│ │ │ ├── theme-terminal.js
│ │ │ ├── theme-textmate.js
│ │ │ ├── theme-tomorrow.js
│ │ │ ├── theme-tomorrow_night.js
│ │ │ ├── theme-tomorrow_night_blue.js
│ │ │ ├── theme-tomorrow_night_bright.js
│ │ │ ├── theme-tomorrow_night_eighties.js
│ │ │ ├── theme-twilight.js
│ │ │ ├── theme-vibrant_ink.js
│ │ │ ├── theme-xcode.js
│ │ │ ├── worker-coffee.js
│ │ │ ├── worker-css.js
│ │ │ ├── worker-html.js
│ │ │ ├── worker-javascript.js
│ │ │ ├── worker-json.js
│ │ │ ├── worker-lua.js
│ │ │ ├── worker-php.js
│ │ │ ├── worker-xml.js
│ │ │ └── worker-xquery.js
│ │ ├── bmenu/
│ │ │ ├── bmenu.css
│ │ │ └── bmenu.js
│ │ ├── dhtmlx/
│ │ │ ├── codebase/
│ │ │ │ ├── dhtmlx.css
│ │ │ │ ├── dhtmlx.js
│ │ │ │ ├── dhtmlx_deprecated.js
│ │ │ │ ├── ext/
│ │ │ │ │ ├── dhxupload.xap
│ │ │ │ │ ├── swfobject.js
│ │ │ │ │ └── uploader.swf
│ │ │ │ ├── imgs/
│ │ │ │ │ └── dhxgrid_skyblue/
│ │ │ │ │ └── tree/
│ │ │ │ │ └── Control panel_files/
│ │ │ │ │ ├── category(1).js
│ │ │ │ │ ├── category.js
│ │ │ │ │ ├── countdata.js
│ │ │ │ │ ├── dhtmlx_pro.js
│ │ │ │ │ ├── editor.js
│ │ │ │ │ ├── hostdata.js
│ │ │ │ │ ├── index(1).js
│ │ │ │ │ ├── index(2).js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logger.js
│ │ │ │ │ ├── main.js
│ │ │ │ │ └── require.js
│ │ │ │ └── thirdparty/
│ │ │ │ └── excanvas/
│ │ │ │ ├── AUTHORS
│ │ │ │ ├── COPYING
│ │ │ │ ├── README
│ │ │ │ └── excanvas.js
│ │ │ └── skins/
│ │ │ └── mytheme/
│ │ │ ├── dhtmlx.css
│ │ │ ├── imgs/
│ │ │ │ └── dhxvault_skyblue/
│ │ │ │ └── icons_licence.txt
│ │ │ └── readme.txt
│ │ ├── font-awesome/
│ │ │ └── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── jquery/
│ │ │ └── jquery.js
│ │ ├── laydate/
│ │ │ ├── README.md
│ │ │ ├── laydate.dev.js
│ │ │ ├── laydate.js
│ │ │ ├── need/
│ │ │ │ └── laydate.css
│ │ │ ├── skins/
│ │ │ │ ├── dahong/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── danlan/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── molv/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── qianhuang/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── yahui/
│ │ │ │ │ └── laydate.css
│ │ │ │ └── yalan/
│ │ │ │ └── laydate.css
│ │ │ └── test/
│ │ │ ├── demo1.html
│ │ │ ├── demo2.html
│ │ │ └── demo2.js
│ │ ├── layer/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── GruntFile.js
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── extend/
│ │ │ │ └── layer.ext.js
│ │ │ ├── layer.js
│ │ │ ├── mobile/
│ │ │ │ ├── README.md
│ │ │ │ ├── layer.js
│ │ │ │ └── need/
│ │ │ │ └── layer.css
│ │ │ ├── package.json
│ │ │ ├── skin/
│ │ │ │ ├── layer.css
│ │ │ │ └── layer.ext.css
│ │ │ ├── src/
│ │ │ │ ├── README.md
│ │ │ │ ├── extend/
│ │ │ │ │ └── layer.ext.js
│ │ │ │ ├── layer.js
│ │ │ │ ├── mobile/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── layer.js
│ │ │ │ │ └── need/
│ │ │ │ │ └── layer.css
│ │ │ │ └── skin/
│ │ │ │ ├── layer.css
│ │ │ │ └── layer.ext.css
│ │ │ └── test/
│ │ │ └── demo.html
│ │ ├── react/
│ │ │ ├── react-dom.js
│ │ │ └── react.js
│ │ ├── semanticui/
│ │ │ ├── semantic.css
│ │ │ ├── semantic.js
│ │ │ └── themes/
│ │ │ └── default/
│ │ │ └── assets/
│ │ │ └── fonts/
│ │ │ └── icons.otf
│ │ ├── terminal/
│ │ │ ├── .gitignore
│ │ │ ├── .gitmodules
│ │ │ ├── css/
│ │ │ │ ├── jquery.terminal-1.1.1.css
│ │ │ │ └── jquery.terminal.css
│ │ │ └── js/
│ │ │ ├── jquery.terminal-min-1.1.1.js
│ │ │ └── jquery.terminal-min.js
│ │ └── toastr/
│ │ └── toastr.js
│ └── views/
│ ├── index.html
│ └── plugin.html
├── rainmap-lite/
│ ├── INSTALL.md
│ ├── LICENSE
│ ├── README.md
│ ├── manage.py
│ ├── nmaper/
│ │ ├── admin/
│ │ │ ├── __init__.py
│ │ │ └── views.py
│ │ ├── apps.py
│ │ ├── fixtures/
│ │ │ └── nmapprofiles.json
│ │ ├── forms.py
│ │ ├── migrations/
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_nmapscan_email_text.py
│ │ │ ├── 0003_nmapprofile.py
│ │ │ ├── 0004_nmapscan_status_text.py
│ │ │ ├── 0005_nmapprofile_profilename_text.py
│ │ │ ├── 0006_auto_20160108_0128.py
│ │ │ ├── 0007_nmapscan_slug_text.py
│ │ │ ├── 0008_auto_20160108_0558.py
│ │ │ ├── 0009_auto_20160108_0613.py
│ │ │ ├── 0010_auto_20160108_0650.py
│ │ │ ├── 0011_auto_20160108_0702.py
│ │ │ ├── 0012_auto_20160109_0540.py
│ │ │ └── 0013_auto_20160111_0011.py
│ │ ├── models.py
│ │ ├── static/
│ │ │ ├── admin/
│ │ │ │ └── css/
│ │ │ │ ├── base.css
│ │ │ │ └── widgets.css
│ │ │ ├── css/
│ │ │ │ ├── ie8.css
│ │ │ │ ├── ie9.css
│ │ │ │ └── main.css
│ │ │ ├── fonts/
│ │ │ │ └── FontAwesome.otf
│ │ │ ├── js/
│ │ │ │ ├── ie/
│ │ │ │ │ └── html5shiv.js
│ │ │ │ ├── main.js
│ │ │ │ └── util.js
│ │ │ ├── results/
│ │ │ │ └── README.txt
│ │ │ └── sass/
│ │ │ ├── base/
│ │ │ │ ├── _page.scss
│ │ │ │ └── _typography.scss
│ │ │ ├── components/
│ │ │ │ ├── _box.scss
│ │ │ │ ├── _button.scss
│ │ │ │ ├── _features.scss
│ │ │ │ ├── _form.scss
│ │ │ │ ├── _icon.scss
│ │ │ │ ├── _image.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _section.scss
│ │ │ │ ├── _split.scss
│ │ │ │ ├── _spotlights.scss
│ │ │ │ ├── _table.scss
│ │ │ │ └── _wrapper.scss
│ │ │ ├── ie8.scss
│ │ │ ├── ie9.scss
│ │ │ ├── layout/
│ │ │ │ ├── _footer.scss
│ │ │ │ ├── _header.scss
│ │ │ │ ├── _intro.scss
│ │ │ │ ├── _sidebar.scss
│ │ │ │ └── _wrapper.scss
│ │ │ ├── libs/
│ │ │ │ ├── _functions.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _skel.scss
│ │ │ │ └── _vars.scss
│ │ │ └── main.scss
│ │ ├── templates/
│ │ │ ├── admin/
│ │ │ │ ├── base_site.html
│ │ │ │ ├── index.html
│ │ │ │ └── nmaper/
│ │ │ │ ├── nmap_scan/
│ │ │ │ │ └── change_list.html
│ │ │ │ └── nmapscan/
│ │ │ │ └── change_list.html
│ │ │ ├── index.html
│ │ │ └── registration/
│ │ │ └── login.html
│ │ ├── tests.py
│ │ └── views.py
│ ├── nmaper-cronjob.py
│ └── scandere/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── 乌云技术文章/
└── readme
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.sh linguist-language= bash
================================================
FILE: BruteXSS/License.txt
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: BruteXSS/README.md
================================================
#BruteXSS
#The redistribute version is at https://github.com/ym2011/penetration/tree/master/BruteXSS
#there are more payload added into the file
BruteXSS - Cross-Site Scripting BruteForcer
Author: [Shawar Khan](https://shawarkhan.com)
**The BruteXSS project is sponsored and supported by [Netsparker Web Application Security Scanner](https://www.netsparker.com)**
Disclaimer: I am not responsible for any damage done using this tool. This tool should only be used for educational purposes and for penetration testing.
###Compatibility:
* Windows , Linux or any device running python 2.7
###Requirements:
* Python 2.7
* Wordlist included(wordlist.txt)
* Modules required: Colorama, Mechanize
###Modules Required:
* Colorama: https://pypi.python.org/pypi/colorama/
* Mechanize: https://pypi.python.org/pypi/mechanize/
###Description:
**BruteXSS** is a very powerful and fast Cross-Site Scripting Brutforcer which is used for bruteforcing a parameters. The BruteXSS injects multiple payloads loaded from a specified wordlist and fires them at the specified parameters and scans if any of the parameter is vulnerable to XSS vulnerability. BruteXSS is very accurate at doing its task and there is no chance of false positive as the scanning is much powerful. BruteXSS supports POST and GET requests which makes it compatible with the modern web applications.
###Features:
* XSS Bruteforcing
* XSS Scanning
* Supports GET/POST requests
* Custom wordlist can be included
* User-friendly UI
###Usage(GET Method):
```
COMMAND: python brutexss.py
METHOD: g
URL: http://www.site.com/?parameter=value
WORDLIST: wordlist.txt
```
###Usage(POST method):
```
COMMAND: python brutexss.py
METHOD: p
URL: http://www.site.com/file.php
POST DATA: parameter=value¶meter1=value1
WORDLIST: wordlist.txt
```
###Output:
```
____ _ __ ______ ____
| __ ) _ __ _ _| |_ ___ \ \/ / ___/ ___|
| _ \| '__| | | | __/ _ \ \ /\___ \___ \
| |_) | | | |_| | || __/ / \ ___) |__) |
|____/|_| \__,_|\__\___| /_/\_\____/____/
BruteXSS - Cross-Site Scripting BruteForcer
Author: Shawar Khan - https://shawarkhan.com
Select method: [G]ET or [P]OST (G/P): p
[?] Enter URL:
[?] > http://site.com/file.php
[+] Checking if site.com is available...
[+] site.com is available! Good!
[?] Enter post data: > parameter=value¶meter1=value1
[?] Enter location of Wordlist (Press Enter to use default wordlist.txt)
[?] > wordlist.txt
[+] Using Default wordlist...
[+] Loading Payloads from specified wordlist...
[+] 25 Payloads loaded...
[+] Injecting Payloads...
[+] Testing 'parameter' parameter...
[+] 2 / 25 payloads injected...
[!] XSS Vulnerability Found!
[!] Parameter: parameter
[!] Payload: "><script>prompt(1)</script>
[+] Testing 'parameter1' parameter...
[+] 25 / 25 payloads injected...
[+] 'parameter1' parameter not vulnerable.
[+] 1 Parameter is vulnerable to XSS.
+----+--------------+----------------+
| Id | Parameters | Status |
+----+--------------+----------------+
| 0 | parameter | Vulnerable |
+----+--------------+----------------+
| 1 | parameter1 | Not Vulnerable |
+----+--------------+----------------+
```
================================================
FILE: BruteXSS/brutexss.py
================================================
#!/usr/bin/env python
#!BruteXSS
#!Cross-Site Scripting Bruteforcer
#!Author: Shawar Khan
#!Site: https://shawarkhan.com
from string import whitespace
import httplib
import urllib
import socket
import urlparse
import os
import sys
import time
from colorama import init , Style, Back,Fore
import mechanize
import httplib
init()
banner = """
____ _ __ ______ ____
| __ ) _ __ _ _| |_ ___ \ \/ / ___/ ___|
| _ \| '__| | | | __/ _ \ \ /\___ \___ \
| |_) | | | |_| | || __/ / \ ___) |__) |
|____/|_| \__,_|\__\___| /_/\_\____/____/
BruteXSS - Cross-Site Scripting BruteForcer
Author: Shawar Khan - https://shawarkhan.com
Sponsored & Supported by Netsparker Web Application Security Scanner ( https://www.netsparker.com )
Note: Using incorrect payloads in the custom
wordlist may give you false positives so its
better to use the wordlist which is already
provided for positive results.
"""
def brutexss():
if os.name == 'nt':
os.system('cls')
else:
os.system('clear')
print banner
def again():
inp = raw_input("[?] [E]xit or launch [A]gain? (e/a)").lower()
if inp == 'a':
brutexss()
elif inp == 'e':
exit()
else:
print("[!] Incorrect option selected")
again()
grey = Style.DIM+Fore.WHITE
def wordlistimport(file,lst):
try:
with open(file,'r') as f: #Importing Payloads from specified wordlist.
print(Style.DIM+Fore.WHITE+"[+] Loading Payloads from specified wordlist..."+Style.RESET_ALL)
for line in f:
final = str(line.replace("\n",""))
lst.append(final)
except IOError:
print(Style.BRIGHT+Fore.RED+"[!] Wordlist not found!"+Style.RESET_ALL)
again()
def bg(p,status):
try:
b = ""
l = ""
lostatus = ""
num = []
s = len(max(p, key=len)) #list
if s < 10:
s = 10
for i in range(len(p)): num.append(i)
maxval = str(len(num)) #number
for i in range(s) : b = b + "-"
for i in range(len(maxval)):l = l + "-"
statuslen = len(max(status, key=len))
for i in range(statuslen) : lostatus = lostatus + "-"
if len(b) < 10 :
b = "----------"
if len(lostatus) < 14:
lostatus="--------------"
if len(l) < 2 :
l = "--"
los = statuslen
if los < 14:
los = 14
lenb=len(str(len(b)))
if lenb < 14:
lenb = 10
else:
lenb = 20
upb = ("+-%s-+-%s-+-%s-+")%(l,b,lostatus)
print(upb)
st0 = "Parameters"
st1 = "Status"
print("| Id | "+st0.center(s," ")+" | "+st1.center(los," ")+" |")
print(upb)
for n,i,d in zip(num,p,status):
string = (" %s | %s ")%(str(n),str(i));
lofnum = str(n).center(int(len(l))," ")
lofstr = i.center(s," ")
lofst = d.center(los," ")
if "Not Vulnerable" in lofst:
lofst = Fore.GREEN+d.center(los," ")+Style.RESET_ALL
else:
lofst = Fore.RED+d.center(los," ")+Style.RESET_ALL
print("| "+lofnum+" | "+lofstr+" | "+lofst+" |")
print(upb)
return("")
except(ValueError):
print(Style.BRIGHT+Fore.RED+"[!] Uh oh! No parameters in URL!"+Style.RESET_ALL)
again()
def complete(p,r,c,d):
print("[+] Bruteforce Completed.")
if c == 0:
print("[+] Given parameters are "+Style.BRIGHT+Fore.GREEN+"not vulnerable"+Style.RESET_ALL+" to XSS.")
elif c ==1:
print("[+] %s Parameter is "+Style.BRIGHT+Fore.RED+"vulnerable"+Style.RESET_ALL+" to XSS.")%c
else:
print("[+] %s Parameters are "+Style.BRIGHT+Fore.RED+"vulnerable"+Style.RESET_ALL+" to XSS.")%c
print("[+] Scan Result for %s:")%d
print bg(p,r)
again()
def GET():
try:
try:
grey = Style.DIM+Fore.WHITE
site = raw_input("[?] Enter URL:\n[?] > ") #Taking URL
if 'https://' in site:
pass
elif 'http://' in site:
pass
else:
site = "http://"+site
finalurl = urlparse.urlparse(site)
urldata = urlparse.parse_qsl(finalurl.query)
domain0 = '{uri.scheme}://{uri.netloc}/'.format(uri=finalurl)
domain = domain0.replace("https://","").replace("http://","").replace("www.","").replace("/","")
print (Style.DIM+Fore.WHITE+"[+] Checking if "+domain+" is available..."+Style.RESET_ALL)
connection = httplib.HTTPConnection(domain)
connection.connect()
print("[+] "+Fore.GREEN+domain+" is available! Good!"+Style.RESET_ALL)
url = site
paraname = []
paravalue = []
wordlist = raw_input("[?] Enter location of Wordlist (Press Enter to use default wordlist.txt)\n[?] > ")
if len(wordlist) == 0:
wordlist = 'wordlist.txt'
print(grey+"[+] Using Default wordlist..."+Style.RESET_ALL)
else:
pass
payloads = []
wordlistimport(wordlist,payloads)
lop = str(len(payloads))
grey = Style.DIM+Fore.WHITE
print(Style.DIM+Fore.WHITE+"[+] "+lop+" Payloads loaded..."+Style.RESET_ALL)
print("[+] Bruteforce start:")
o = urlparse.urlparse(site)
parameters = urlparse.parse_qs(o.query,keep_blank_values=True)
path = urlparse.urlparse(site).scheme+"://"+urlparse.urlparse(site).netloc+urlparse.urlparse(site).path
for para in parameters: #Arranging parameters and values.
for i in parameters[para]:
paraname.append(para)
paravalue.append(i)
total = 0
c = 0
fpar = []
fresult = []
progress = 0
for pn, pv in zip(paraname,paravalue): #Scanning the parameter.
print(grey+"[+] Testing '"+pn+"' parameter..."+Style.RESET_ALL)
fpar.append(str(pn))
for x in payloads: #
validate = x.translate(None, whitespace)
if validate == "":
progress = progress + 1
else:
sys.stdout.write("\r[+] %i / %s payloads injected..."% (progress,len(payloads)))
sys.stdout.flush()
progress = progress + 1
enc = urllib.quote_plus(x)
data = path+"?"+pn+"="+pv+enc
page = urllib.urlopen(data)
sourcecode = page.read()
if x in sourcecode:
print(Style.BRIGHT+Fore.RED+"\n[!]"+" XSS Vulnerability Found! \n"+Fore.RED+Style.BRIGHT+"[!]"+" Parameter:\t%s\n"+Fore.RED+Style.BRIGHT+"[!]"+" Payload:\t%s"+Style.RESET_ALL)%(pn,x)
fresult.append(" Vulnerable ")
c = 1
total = total+1
progress = progress + 1
break
else:
c = 0
if c == 0:
print(Style.BRIGHT+Fore.GREEN+"\n[+]"+Style.RESET_ALL+Style.DIM+Fore.WHITE+" '%s' parameter not vulnerable."+Style.RESET_ALL)%pn
fresult.append("Not Vulnerable")
progress = progress + 1
pass
progress = 0
complete(fpar,fresult,total,domain)
except(httplib.HTTPResponse, socket.error) as Exit:
print(Style.BRIGHT+Fore.RED+"[!] Site "+domain+" is offline!"+Style.RESET_ALL)
again()
except(KeyboardInterrupt) as Exit:
print("\nExit...")
def POST():
try:
try:
try:
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11)Gecko/20071127 Firefox/2.0.0.11')]
br.set_handle_robots(False)
br.set_handle_refresh(False)
site = raw_input("[?] Enter URL:\n[?] > ") #Taking URL
if 'https://' in site:
pass
elif 'http://' in site:
pass
else:
site = "http://"+site
finalurl = urlparse.urlparse(site)
urldata = urlparse.parse_qsl(finalurl.query)
domain0 = '{uri.scheme}://{uri.netloc}/'.format(uri=finalurl)
domain = domain0.replace("https://","").replace("http://","").replace("www.","").replace("/","")
print (Style.DIM+Fore.WHITE+"[+] Checking if "+domain+" is available..."+Style.RESET_ALL)
connection = httplib.HTTPConnection(domain)
connection.connect()
print("[+] "+Fore.GREEN+domain+" is available! Good!"+Style.RESET_ALL)
path = urlparse.urlparse(site).scheme+"://"+urlparse.urlparse(site).netloc+urlparse.urlparse(site).path
url = site
param = str(raw_input("[?] Enter post data: > "))
wordlist = raw_input("[?] Enter location of Wordlist (Press Enter to use default wordlist.txt)\n[?] > ")
if len(wordlist) == 0:
wordlist = 'wordlist.txt'
print("[+] Using Default wordlist...")
else:
pass
payloads = []
wordlistimport(wordlist,payloads)
lop = str(len(payloads))
grey = Style.DIM+Fore.WHITE
print(Style.DIM+Fore.WHITE+"[+] "+lop+" Payloads loaded..."+Style.RESET_ALL)
print("[+] Bruteforce start:")
params = "http://www.site.com/?"+param
finalurl = urlparse.urlparse(params)
urldata = urlparse.parse_qsl(finalurl.query)
o = urlparse.urlparse(params)
parameters = urlparse.parse_qs(o.query,keep_blank_values=True)
paraname = []
paravalue = []
for para in parameters: #Arranging parameters and values.
for i in parameters[para]:
paraname.append(para)
paravalue.append(i)
fpar = []
fresult = []
total = 0
progress = 0
pname1 = [] #parameter name
payload1 = []
for pn, pv in zip(paraname,paravalue): #Scanning the parameter.
print(grey+"[+] Testing '"+pn+"' parameter..."+Style.RESET_ALL)
fpar.append(str(pn))
for i in payloads:
validate = i.translate(None, whitespace)
if validate == "":
progress = progress + 1
else:
progress = progress + 1
sys.stdout.write("\r[+] %i / %s payloads injected..."% (progress,len(payloads)))
sys.stdout.flush()
pname1.append(pn)
payload1.append(str(i))
d4rk = 0
for m in range(len(paraname)):
d = paraname[d4rk]
d1 = paravalue[d4rk]
tst= "".join(pname1)
tst1 = "".join(d)
if pn in d:
d4rk = d4rk + 1
else:
d4rk = d4rk +1
pname1.append(str(d))
payload1.append(str(d1))
data = urllib.urlencode(dict(zip(pname1,payload1)))
r = br.open(path, data)
sourcecode = r.read()
pname1 = []
payload1 = []
if i in sourcecode:
print(Style.BRIGHT+Fore.RED+"\n[!]"+" XSS Vulnerability Found! \n"+Fore.RED+Style.BRIGHT+"[!]"+" Parameter:\t%s\n"+Fore.RED+Style.BRIGHT+"[!]"+" Payload:\t%s"+Style.RESET_ALL)%(pn,i)
fresult.append(" Vulnerable ")
c = 1
total = total+1
progress = progress + 1
break
else:
c = 0
if c == 0:
print(Style.BRIGHT+Fore.GREEN+"\n[+]"+Style.RESET_ALL+Style.DIM+Fore.WHITE+" '%s' parameter not vulnerable."+Style.RESET_ALL)%pn
fresult.append("Not Vulnerable")
progress = progress + 1
pass
progress = 0
complete(fpar,fresult,total,domain)
except(httplib.HTTPResponse, socket.error) as Exit:
print(Style.BRIGHT+Fore.RED+"[!] Site "+domain+" is offline!"+Style.RESET_ALL)
again()
except(KeyboardInterrupt) as Exit:
print("\nExit...")
except (mechanize.HTTPError,mechanize.URLError) as e:
print(Style.BRIGHT+Fore.RED+"\n[!] HTTP ERROR! %s %s"+Style.RESET_ALL)%(e.code,e.reason)
try:
methodselect = raw_input("[?] Select method: [G]ET or [P]OST (G/P): ").lower()
if methodselect == 'g':
GET()
elif methodselect == 'p':
POST()
else:
print("[!] Incorrect method selected.")
again()
except(KeyboardInterrupt) as Exit:
print("\nExit...")
brutexss()
================================================
FILE: BruteXSS/colorama/__init__.py
================================================
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
from .initialise import init, deinit, reinit, colorama_text
from .ansi import Fore, Back, Style, Cursor
from .ansitowin32 import AnsiToWin32
__version__ = '0.3.7'
================================================
FILE: BruteXSS/colorama/ansi.py
================================================
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
'''
This module generates ANSI character codes to printing colors to terminals.
See: http://en.wikipedia.org/wiki/ANSI_escape_code
'''
CSI = '\033['
OSC = '\033]'
BEL = '\007'
def code_to_chars(code):
return CSI + str(code) + 'm'
def set_title(title):
return OSC + '2;' + title + BEL
def clear_screen(mode=2):
return CSI + str(mode) + 'J'
def clear_line(mode=2):
return CSI + str(mode) + 'K'
class AnsiCodes(object):
def __init__(self):
# the subclasses declare class attributes which are numbers.
# Upon instantiation we define instance attributes, which are the same
# as the class attributes but wrapped with the ANSI escape sequence
for name in dir(self):
if not name.startswith('_'):
value = getattr(self, name)
setattr(self, name, code_to_chars(value))
class AnsiCursor(object):
def UP(self, n=1):
return CSI + str(n) + 'A'
def DOWN(self, n=1):
return CSI + str(n) + 'B'
def FORWARD(self, n=1):
return CSI + str(n) + 'C'
def BACK(self, n=1):
return CSI + str(n) + 'D'
def POS(self, x=1, y=1):
return CSI + str(y) + ';' + str(x) + 'H'
class AnsiFore(AnsiCodes):
BLACK = 30
RED = 31
GREEN = 32
YELLOW = 33
BLUE = 34
MAGENTA = 35
CYAN = 36
WHITE = 37
RESET = 39
# These are fairly well supported, but not part of the standard.
LIGHTBLACK_EX = 90
LIGHTRED_EX = 91
LIGHTGREEN_EX = 92
LIGHTYELLOW_EX = 93
LIGHTBLUE_EX = 94
LIGHTMAGENTA_EX = 95
LIGHTCYAN_EX = 96
LIGHTWHITE_EX = 97
class AnsiBack(AnsiCodes):
BLACK = 40
RED = 41
GREEN = 42
YELLOW = 43
BLUE = 44
MAGENTA = 45
CYAN = 46
WHITE = 47
RESET = 49
# These are fairly well supported, but not part of the standard.
LIGHTBLACK_EX = 100
LIGHTRED_EX = 101
LIGHTGREEN_EX = 102
LIGHTYELLOW_EX = 103
LIGHTBLUE_EX = 104
LIGHTMAGENTA_EX = 105
LIGHTCYAN_EX = 106
LIGHTWHITE_EX = 107
class AnsiStyle(AnsiCodes):
BRIGHT = 1
DIM = 2
NORMAL = 22
RESET_ALL = 0
Fore = AnsiFore()
Back = AnsiBack()
Style = AnsiStyle()
Cursor = AnsiCursor()
================================================
FILE: BruteXSS/colorama/ansitowin32.py
================================================
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
import re
import sys
import os
from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style
from .winterm import WinTerm, WinColor, WinStyle
from .win32 import windll, winapi_test
winterm = None
if windll is not None:
winterm = WinTerm()
def is_stream_closed(stream):
return not hasattr(stream, 'closed') or stream.closed
def is_a_tty(stream):
return hasattr(stream, 'isatty') and stream.isatty()
class StreamWrapper(object):
'''
Wraps a stream (such as stdout), acting as a transparent proxy for all
attribute access apart from method 'write()', which is delegated to our
Converter instance.
'''
def __init__(self, wrapped, converter):
# double-underscore everything to prevent clashes with names of
# attributes on the wrapped stream object.
self.__wrapped = wrapped
self.__convertor = converter
def __getattr__(self, name):
return getattr(self.__wrapped, name)
def write(self, text):
self.__convertor.write(text)
class AnsiToWin32(object):
'''
Implements a 'write()' method which, on Windows, will strip ANSI character
sequences from the text, and if outputting to a tty, will convert them into
win32 function calls.
'''
ANSI_CSI_RE = re.compile('\001?\033\[((?:\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer
ANSI_OSC_RE = re.compile('\001?\033\]((?:.|;)*?)(\x07)\002?') # Operating System Command
def __init__(self, wrapped, convert=None, strip=None, autoreset=False):
# The wrapped stream (normally sys.stdout or sys.stderr)
self.wrapped = wrapped
# should we reset colors to defaults after every .write()
self.autoreset = autoreset
# create the proxy wrapping our output stream
self.stream = StreamWrapper(wrapped, self)
on_windows = os.name == 'nt'
# We test if the WinAPI works, because even if we are on Windows
# we may be using a terminal that doesn't support the WinAPI
# (e.g. Cygwin Terminal). In this case it's up to the terminal
# to support the ANSI codes.
conversion_supported = on_windows and winapi_test()
# should we strip ANSI sequences from our output?
if strip is None:
strip = conversion_supported or (not is_stream_closed(wrapped) and not is_a_tty(wrapped))
self.strip = strip
# should we should convert ANSI sequences into win32 calls?
if convert is None:
convert = conversion_supported and not is_stream_closed(wrapped) and is_a_tty(wrapped)
self.convert = convert
# dict of ansi codes to win32 functions and parameters
self.win32_calls = self.get_win32_calls()
# are we wrapping stderr?
self.on_stderr = self.wrapped is sys.stderr
def should_wrap(self):
'''
True if this class is actually needed. If false, then the output
stream will not be affected, nor will win32 calls be issued, so
wrapping stdout is not actually required. This will generally be
False on non-Windows platforms, unless optional functionality like
autoreset has been requested using kwargs to init()
'''
return self.convert or self.strip or self.autoreset
def get_win32_calls(self):
if self.convert and winterm:
return {
AnsiStyle.RESET_ALL: (winterm.reset_all, ),
AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT),
AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL),
AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL),
AnsiFore.BLACK: (winterm.fore, WinColor.BLACK),
AnsiFore.RED: (winterm.fore, WinColor.RED),
AnsiFore.GREEN: (winterm.fore, WinColor.GREEN),
AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW),
AnsiFore.BLUE: (winterm.fore, WinColor.BLUE),
AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA),
AnsiFore.CYAN: (winterm.fore, WinColor.CYAN),
AnsiFore.WHITE: (winterm.fore, WinColor.GREY),
AnsiFore.RESET: (winterm.fore, ),
AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True),
AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True),
AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True),
AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True),
AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True),
AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True),
AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True),
AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True),
AnsiBack.BLACK: (winterm.back, WinColor.BLACK),
AnsiBack.RED: (winterm.back, WinColor.RED),
AnsiBack.GREEN: (winterm.back, WinColor.GREEN),
AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW),
AnsiBack.BLUE: (winterm.back, WinColor.BLUE),
AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA),
AnsiBack.CYAN: (winterm.back, WinColor.CYAN),
AnsiBack.WHITE: (winterm.back, WinColor.GREY),
AnsiBack.RESET: (winterm.back, ),
AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True),
AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True),
AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True),
AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True),
AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True),
AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True),
AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True),
AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True),
}
return dict()
def write(self, text):
if self.strip or self.convert:
self.write_and_convert(text)
else:
self.wrapped.write(text)
self.wrapped.flush()
if self.autoreset:
self.reset_all()
def reset_all(self):
if self.convert:
self.call_win32('m', (0,))
elif not self.strip and not is_stream_closed(self.wrapped):
self.wrapped.write(Style.RESET_ALL)
def write_and_convert(self, text):
'''
Write the given text to our wrapped stream, stripping any ANSI
sequences from the text, and optionally converting them into win32
calls.
'''
cursor = 0
text = self.convert_osc(text)
for match in self.ANSI_CSI_RE.finditer(text):
start, end = match.span()
self.write_plain_text(text, cursor, start)
self.convert_ansi(*match.groups())
cursor = end
self.write_plain_text(text, cursor, len(text))
def write_plain_text(self, text, start, end):
if start < end:
self.wrapped.write(text[start:end])
self.wrapped.flush()
def convert_ansi(self, paramstring, command):
if self.convert:
params = self.extract_params(command, paramstring)
self.call_win32(command, params)
def extract_params(self, command, paramstring):
if command in 'Hf':
params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';'))
while len(params) < 2:
# defaults:
params = params + (1,)
else:
params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0)
if len(params) == 0:
# defaults:
if command in 'JKm':
params = (0,)
elif command in 'ABCD':
params = (1,)
return params
def call_win32(self, command, params):
if command == 'm':
for param in params:
if param in self.win32_calls:
func_args = self.win32_calls[param]
func = func_args[0]
args = func_args[1:]
kwargs = dict(on_stderr=self.on_stderr)
func(*args, **kwargs)
elif command in 'J':
winterm.erase_screen(params[0], on_stderr=self.on_stderr)
elif command in 'K':
winterm.erase_line(params[0], on_stderr=self.on_stderr)
elif command in 'Hf': # cursor position - absolute
winterm.set_cursor_position(params, on_stderr=self.on_stderr)
elif command in 'ABCD': # cursor position - relative
n = params[0]
# A - up, B - down, C - forward, D - back
x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command]
winterm.cursor_adjust(x, y, on_stderr=self.on_stderr)
def convert_osc(self, text):
for match in self.ANSI_OSC_RE.finditer(text):
start, end = match.span()
text = text[:start] + text[end:]
paramstring, command = match.groups()
if command in '\x07': # \x07 = BEL
params = paramstring.split(";")
# 0 - change title and icon (we will only change title)
# 1 - change icon (we don't support this)
# 2 - change title
if params[0] in '02':
winterm.set_title(params[1])
return text
================================================
FILE: BruteXSS/colorama/initialise.py
================================================
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
import atexit
import contextlib
import sys
from .ansitowin32 import AnsiToWin32
orig_stdout = None
orig_stderr = None
wrapped_stdout = None
wrapped_stderr = None
atexit_done = False
def reset_all():
if AnsiToWin32 is not None: # Issue #74: objects might become None at exit
AnsiToWin32(orig_stdout).reset_all()
def init(autoreset=False, convert=None, strip=None, wrap=True):
if not wrap and any([autoreset, convert, strip]):
raise ValueError('wrap=False conflicts with any other arg=True')
global wrapped_stdout, wrapped_stderr
global orig_stdout, orig_stderr
orig_stdout = sys.stdout
orig_stderr = sys.stderr
if sys.stdout is None:
wrapped_stdout = None
else:
sys.stdout = wrapped_stdout = \
wrap_stream(orig_stdout, convert, strip, autoreset, wrap)
if sys.stderr is None:
wrapped_stderr = None
else:
sys.stderr = wrapped_stderr = \
wrap_stream(orig_stderr, convert, strip, autoreset, wrap)
global atexit_done
if not atexit_done:
atexit.register(reset_all)
atexit_done = True
def deinit():
if orig_stdout is not None:
sys.stdout = orig_stdout
if orig_stderr is not None:
sys.stderr = orig_stderr
@contextlib.contextmanager
def colorama_text(*args, **kwargs):
init(*args, **kwargs)
try:
yield
finally:
deinit()
def reinit():
if wrapped_stdout is not None:
sys.stdout = wrapped_stdout
if wrapped_stderr is not None:
sys.stderr = wrapped_stderr
def wrap_stream(stream, convert, strip, autoreset, wrap):
if wrap:
wrapper = AnsiToWin32(stream,
convert=convert, strip=strip, autoreset=autoreset)
if wrapper.should_wrap():
stream = wrapper.stream
return stream
================================================
FILE: BruteXSS/colorama/win32.py
================================================
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
# from winbase.h
STDOUT = -11
STDERR = -12
try:
import ctypes
from ctypes import LibraryLoader
windll = LibraryLoader(ctypes.WinDLL)
from ctypes import wintypes
except (AttributeError, ImportError):
windll = None
SetConsoleTextAttribute = lambda *_: None
winapi_test = lambda *_: None
else:
from ctypes import byref, Structure, c_char, POINTER
COORD = wintypes._COORD
class CONSOLE_SCREEN_BUFFER_INFO(Structure):
"""struct in wincon.h."""
_fields_ = [
("dwSize", COORD),
("dwCursorPosition", COORD),
("wAttributes", wintypes.WORD),
("srWindow", wintypes.SMALL_RECT),
("dwMaximumWindowSize", COORD),
]
def __str__(self):
return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % (
self.dwSize.Y, self.dwSize.X
, self.dwCursorPosition.Y, self.dwCursorPosition.X
, self.wAttributes
, self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right
, self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X
)
_GetStdHandle = windll.kernel32.GetStdHandle
_GetStdHandle.argtypes = [
wintypes.DWORD,
]
_GetStdHandle.restype = wintypes.HANDLE
_GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo
_GetConsoleScreenBufferInfo.argtypes = [
wintypes.HANDLE,
POINTER(CONSOLE_SCREEN_BUFFER_INFO),
]
_GetConsoleScreenBufferInfo.restype = wintypes.BOOL
_SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
_SetConsoleTextAttribute.argtypes = [
wintypes.HANDLE,
wintypes.WORD,
]
_SetConsoleTextAttribute.restype = wintypes.BOOL
_SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition
_SetConsoleCursorPosition.argtypes = [
wintypes.HANDLE,
COORD,
]
_SetConsoleCursorPosition.restype = wintypes.BOOL
_FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA
_FillConsoleOutputCharacterA.argtypes = [
wintypes.HANDLE,
c_char,
wintypes.DWORD,
COORD,
POINTER(wintypes.DWORD),
]
_FillConsoleOutputCharacterA.restype = wintypes.BOOL
_FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute
_FillConsoleOutputAttribute.argtypes = [
wintypes.HANDLE,
wintypes.WORD,
wintypes.DWORD,
COORD,
POINTER(wintypes.DWORD),
]
_FillConsoleOutputAttribute.restype = wintypes.BOOL
_SetConsoleTitleW = windll.kernel32.SetConsoleTitleA
_SetConsoleTitleW.argtypes = [
wintypes.LPCSTR
]
_SetConsoleTitleW.restype = wintypes.BOOL
handles = {
STDOUT: _GetStdHandle(STDOUT),
STDERR: _GetStdHandle(STDERR),
}
def winapi_test():
handle = handles[STDOUT]
csbi = CONSOLE_SCREEN_BUFFER_INFO()
success = _GetConsoleScreenBufferInfo(
handle, byref(csbi))
return bool(success)
def GetConsoleScreenBufferInfo(stream_id=STDOUT):
handle = handles[stream_id]
csbi = CONSOLE_SCREEN_BUFFER_INFO()
success = _GetConsoleScreenBufferInfo(
handle, byref(csbi))
return csbi
def SetConsoleTextAttribute(stream_id, attrs):
handle = handles[stream_id]
return _SetConsoleTextAttribute(handle, attrs)
def SetConsoleCursorPosition(stream_id, position, adjust=True):
position = COORD(*position)
# If the position is out of range, do nothing.
if position.Y <= 0 or position.X <= 0:
return
# Adjust for Windows' SetConsoleCursorPosition:
# 1. being 0-based, while ANSI is 1-based.
# 2. expecting (x,y), while ANSI uses (y,x).
adjusted_position = COORD(position.Y - 1, position.X - 1)
if adjust:
# Adjust for viewport's scroll position
sr = GetConsoleScreenBufferInfo(STDOUT).srWindow
adjusted_position.Y += sr.Top
adjusted_position.X += sr.Left
# Resume normal processing
handle = handles[stream_id]
return _SetConsoleCursorPosition(handle, adjusted_position)
def FillConsoleOutputCharacter(stream_id, char, length, start):
handle = handles[stream_id]
char = c_char(char.encode())
length = wintypes.DWORD(length)
num_written = wintypes.DWORD(0)
# Note that this is hard-coded for ANSI (vs wide) bytes.
success = _FillConsoleOutputCharacterA(
handle, char, length, start, byref(num_written))
return num_written.value
def FillConsoleOutputAttribute(stream_id, attr, length, start):
''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )'''
handle = handles[stream_id]
attribute = wintypes.WORD(attr)
length = wintypes.DWORD(length)
num_written = wintypes.DWORD(0)
# Note that this is hard-coded for ANSI (vs wide) bytes.
return _FillConsoleOutputAttribute(
handle, attribute, length, start, byref(num_written))
def SetConsoleTitle(title):
return _SetConsoleTitleW(title)
================================================
FILE: BruteXSS/colorama/winterm.py
================================================
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
from . import win32
# from wincon.h
class WinColor(object):
BLACK = 0
BLUE = 1
GREEN = 2
CYAN = 3
RED = 4
MAGENTA = 5
YELLOW = 6
GREY = 7
# from wincon.h
class WinStyle(object):
NORMAL = 0x00 # dim text, dim background
BRIGHT = 0x08 # bright text, dim background
BRIGHT_BACKGROUND = 0x80 # dim text, bright background
class WinTerm(object):
def __init__(self):
self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes
self.set_attrs(self._default)
self._default_fore = self._fore
self._default_back = self._back
self._default_style = self._style
# In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style.
# So that LIGHT_EX colors and BRIGHT style do not clobber each other,
# we track them separately, since LIGHT_EX is overwritten by Fore/Back
# and BRIGHT is overwritten by Style codes.
self._light = 0
def get_attrs(self):
return self._fore + self._back * 16 + (self._style | self._light)
def set_attrs(self, value):
self._fore = value & 7
self._back = (value >> 4) & 7
self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND)
def reset_all(self, on_stderr=None):
self.set_attrs(self._default)
self.set_console(attrs=self._default)
def fore(self, fore=None, light=False, on_stderr=False):
if fore is None:
fore = self._default_fore
self._fore = fore
# Emulate LIGHT_EX with BRIGHT Style
if light:
self._light |= WinStyle.BRIGHT
else:
self._light &= ~WinStyle.BRIGHT
self.set_console(on_stderr=on_stderr)
def back(self, back=None, light=False, on_stderr=False):
if back is None:
back = self._default_back
self._back = back
# Emulate LIGHT_EX with BRIGHT_BACKGROUND Style
if light:
self._light |= WinStyle.BRIGHT_BACKGROUND
else:
self._light &= ~WinStyle.BRIGHT_BACKGROUND
self.set_console(on_stderr=on_stderr)
def style(self, style=None, on_stderr=False):
if style is None:
style = self._default_style
self._style = style
self.set_console(on_stderr=on_stderr)
def set_console(self, attrs=None, on_stderr=False):
if attrs is None:
attrs = self.get_attrs()
handle = win32.STDOUT
if on_stderr:
handle = win32.STDERR
win32.SetConsoleTextAttribute(handle, attrs)
def get_position(self, handle):
position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition
# Because Windows coordinates are 0-based,
# and win32.SetConsoleCursorPosition expects 1-based.
position.X += 1
position.Y += 1
return position
def set_cursor_position(self, position=None, on_stderr=False):
if position is None:
# I'm not currently tracking the position, so there is no default.
# position = self.get_position()
return
handle = win32.STDOUT
if on_stderr:
handle = win32.STDERR
win32.SetConsoleCursorPosition(handle, position)
def cursor_adjust(self, x, y, on_stderr=False):
handle = win32.STDOUT
if on_stderr:
handle = win32.STDERR
position = self.get_position(handle)
adjusted_position = (position.Y + y, position.X + x)
win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False)
def erase_screen(self, mode=0, on_stderr=False):
# 0 should clear from the cursor to the end of the screen.
# 1 should clear from the cursor to the beginning of the screen.
# 2 should clear the entire screen, and move cursor to (1,1)
handle = win32.STDOUT
if on_stderr:
handle = win32.STDERR
csbi = win32.GetConsoleScreenBufferInfo(handle)
# get the number of character cells in the current buffer
cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y
# get number of character cells before current cursor position
cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X
if mode == 0:
from_coord = csbi.dwCursorPosition
cells_to_erase = cells_in_screen - cells_before_cursor
if mode == 1:
from_coord = win32.COORD(0, 0)
cells_to_erase = cells_before_cursor
elif mode == 2:
from_coord = win32.COORD(0, 0)
cells_to_erase = cells_in_screen
# fill the entire screen with blanks
win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord)
# now set the buffer's attributes accordingly
win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord)
if mode == 2:
# put the cursor where needed
win32.SetConsoleCursorPosition(handle, (1, 1))
def erase_line(self, mode=0, on_stderr=False):
# 0 should clear from the cursor to the end of the line.
# 1 should clear from the cursor to the beginning of the line.
# 2 should clear the entire line.
handle = win32.STDOUT
if on_stderr:
handle = win32.STDERR
csbi = win32.GetConsoleScreenBufferInfo(handle)
if mode == 0:
from_coord = csbi.dwCursorPosition
cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X
if mode == 1:
from_coord = win32.COORD(0, csbi.dwCursorPosition.Y)
cells_to_erase = csbi.dwCursorPosition.X
elif mode == 2:
from_coord = win32.COORD(0, csbi.dwCursorPosition.Y)
cells_to_erase = csbi.dwSize.X
# fill the entire screen with blanks
win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord)
# now set the buffer's attributes accordingly
win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord)
def set_title(self, title):
win32.SetConsoleTitle(title)
================================================
FILE: BruteXSS/mechanize/__init__.py
================================================
__all__ = [
'AbstractBasicAuthHandler',
'AbstractDigestAuthHandler',
'BaseHandler',
'Browser',
'BrowserStateError',
'CacheFTPHandler',
'ContentTooShortError',
'Cookie',
'CookieJar',
'CookiePolicy',
'DefaultCookiePolicy',
'DefaultFactory',
'FTPHandler',
'Factory',
'FileCookieJar',
'FileHandler',
'FormNotFoundError',
'FormsFactory',
'HTTPBasicAuthHandler',
'HTTPCookieProcessor',
'HTTPDefaultErrorHandler',
'HTTPDigestAuthHandler',
'HTTPEquivProcessor',
'HTTPError',
'HTTPErrorProcessor',
'HTTPHandler',
'HTTPPasswordMgr',
'HTTPPasswordMgrWithDefaultRealm',
'HTTPProxyPasswordMgr',
'HTTPRedirectDebugProcessor',
'HTTPRedirectHandler',
'HTTPRefererProcessor',
'HTTPRefreshProcessor',
'HTTPResponseDebugProcessor',
'HTTPRobotRulesProcessor',
'HTTPSClientCertMgr',
'HeadParser',
'History',
'LWPCookieJar',
'Link',
'LinkNotFoundError',
'LinksFactory',
'LoadError',
'MSIECookieJar',
'MozillaCookieJar',
'OpenerDirector',
'OpenerFactory',
'ParseError',
'ProxyBasicAuthHandler',
'ProxyDigestAuthHandler',
'ProxyHandler',
'Request',
'RobotExclusionError',
'RobustFactory',
'RobustFormsFactory',
'RobustLinksFactory',
'RobustTitleFactory',
'SeekableResponseOpener',
'TitleFactory',
'URLError',
'USE_BARE_EXCEPT',
'UnknownHandler',
'UserAgent',
'UserAgentBase',
'XHTMLCompatibleHeadParser',
'__version__',
'build_opener',
'install_opener',
'lwp_cookie_str',
'make_response',
'request_host',
'response_seek_wrapper', # XXX deprecate in public interface?
'seek_wrapped_response', # XXX should probably use this internally in place of response_seek_wrapper()
'str2time',
'urlopen',
'urlretrieve',
'urljoin',
# ClientForm API
'AmbiguityError',
'ControlNotFoundError',
'FormParser',
'ItemCountError',
'ItemNotFoundError',
'LocateError',
'Missing',
'ParseFile',
'ParseFileEx',
'ParseResponse',
'ParseResponseEx',
'ParseString',
'XHTMLCompatibleFormParser',
# deprecated
'CheckboxControl',
'Control',
'FileControl',
'HTMLForm',
'HiddenControl',
'IgnoreControl',
'ImageControl',
'IsindexControl',
'Item',
'Label',
'ListControl',
'PasswordControl',
'RadioControl',
'ScalarControl',
'SelectControl',
'SubmitButtonControl',
'SubmitControl',
'TextControl',
'TextareaControl',
]
import logging
import sys
from _version import __version__
# high-level stateful browser-style interface
from _mechanize import \
Browser, History, \
BrowserStateError, LinkNotFoundError, FormNotFoundError
# configurable URL-opener interface
from _useragent import UserAgentBase, UserAgent
from _html import \
Link, \
Factory, DefaultFactory, RobustFactory, \
FormsFactory, LinksFactory, TitleFactory, \
RobustFormsFactory, RobustLinksFactory, RobustTitleFactory
# urllib2 work-alike interface. This is a superset of the urllib2 interface.
from _urllib2 import *
import _urllib2
if hasattr(_urllib2, "HTTPSHandler"):
__all__.append("HTTPSHandler")
del _urllib2
# misc
from _http import HeadParser
from _http import XHTMLCompatibleHeadParser
from _opener import ContentTooShortError, OpenerFactory, urlretrieve
from _response import \
response_seek_wrapper, seek_wrapped_response, make_response
from _rfc3986 import urljoin
from _util import http2time as str2time
# cookies
from _clientcookie import Cookie, CookiePolicy, DefaultCookiePolicy, \
CookieJar, FileCookieJar, LoadError, request_host_lc as request_host, \
effective_request_host
from _lwpcookiejar import LWPCookieJar, lwp_cookie_str
# 2.4 raises SyntaxError due to generator / try/finally use
if sys.version_info[:2] > (2,4):
try:
import sqlite3
except ImportError:
pass
else:
from _firefox3cookiejar import Firefox3CookieJar
from _mozillacookiejar import MozillaCookieJar
from _msiecookiejar import MSIECookieJar
# forms
from _form import (
AmbiguityError,
ControlNotFoundError,
FormParser,
ItemCountError,
ItemNotFoundError,
LocateError,
Missing,
ParseError,
ParseFile,
ParseFileEx,
ParseResponse,
ParseResponseEx,
ParseString,
XHTMLCompatibleFormParser,
# deprecated
CheckboxControl,
Control,
FileControl,
HTMLForm,
HiddenControl,
IgnoreControl,
ImageControl,
IsindexControl,
Item,
Label,
ListControl,
PasswordControl,
RadioControl,
ScalarControl,
SelectControl,
SubmitButtonControl,
SubmitControl,
TextControl,
TextareaControl,
)
# If you hate the idea of turning bugs into warnings, do:
# import mechanize; mechanize.USE_BARE_EXCEPT = False
USE_BARE_EXCEPT = True
logger = logging.getLogger("mechanize")
if logger.level is logging.NOTSET:
logger.setLevel(logging.CRITICAL)
del logger
================================================
FILE: BruteXSS/mechanize/_auth.py
================================================
"""HTTP Authentication and Proxy support.
Copyright 2006 John J. Lee <jjl@pobox.com>
This code is free software; you can redistribute it and/or modify it under
the terms of the BSD or ZPL 2.1 licenses (see the file COPYING.txt
included with the distribution).
"""
from _urllib2_fork import HTTPPasswordMgr
# TODO: stop deriving from HTTPPasswordMgr
class HTTPProxyPasswordMgr(HTTPPasswordMgr):
# has default realm and host/port
def add_password(self, realm, uri, user, passwd):
# uri could be a single URI or a sequence
if uri is None or isinstance(uri, basestring):
uris = [uri]
else:
uris = uri
passwd_by_domain = self.passwd.setdefault(realm, {})
for uri in uris:
for default_port in True, False:
reduced_uri = self.reduce_uri(uri, default_port)
passwd_by_domain[reduced_uri] = (user, passwd)
def find_user_password(self, realm, authuri):
attempts = [(realm, authuri), (None, authuri)]
# bleh, want default realm to take precedence over default
# URI/authority, hence this outer loop
for default_uri in False, True:
for realm, authuri in attempts:
authinfo_by_domain = self.passwd.get(realm, {})
for default_port in True, False:
reduced_authuri = self.reduce_uri(authuri, default_port)
for uri, authinfo in authinfo_by_domain.iteritems():
if uri is None and not default_uri:
continue
if self.is_suburi(uri, reduced_authuri):
return authinfo
user, password = None, None
if user is not None:
break
return user, password
def reduce_uri(self, uri, default_port=True):
if uri is None:
return None
return HTTPPasswordMgr.reduce_uri(self, uri, default_port)
def is_suburi(self, base, test):
if base is None:
# default to the proxy's host/port
hostport, path = test
base = (hostport, "/")
return HTTPPasswordMgr.is_suburi(self, base, test)
class HTTPSClientCertMgr(HTTPPasswordMgr):
# implementation inheritance: this is not a proper subclass
def add_key_cert(self, uri, key_file, cert_file):
self.add_password(None, uri, key_file, cert_file)
def find_key_cert(self, authuri):
return HTTPPasswordMgr.find_user_password(self, None, authuri)
================================================
FILE: BruteXSS/mechanize/_beautifulsoup.py
================================================
"""Beautiful Soup
Elixir and Tonic
"The Screen-Scraper's Friend"
v2.1.1
http://www.crummy.com/software/BeautifulSoup/
Beautiful Soup parses arbitrarily invalid XML- or HTML-like substance
into a tree representation. It provides methods and Pythonic idioms
that make it easy to search and modify the tree.
A well-formed XML/HTML document will yield a well-formed data
structure. An ill-formed XML/HTML document will yield a
correspondingly ill-formed data structure. If your document is only
locally well-formed, you can use this library to find and process the
well-formed part of it. The BeautifulSoup class has heuristics for
obtaining a sensible parse tree in the face of common HTML errors.
Beautiful Soup has no external dependencies. It works with Python 2.2
and up.
Beautiful Soup defines classes for four different parsing strategies:
* BeautifulStoneSoup, for parsing XML, SGML, or your domain-specific
language that kind of looks like XML.
* BeautifulSoup, for parsing run-of-the-mill HTML code, be it valid
or invalid.
* ICantBelieveItsBeautifulSoup, for parsing valid but bizarre HTML
that trips up BeautifulSoup.
* BeautifulSOAP, for making it easier to parse XML documents that use
lots of subelements containing a single string, where you'd prefer
they put that string into an attribute (such as SOAP messages).
You can subclass BeautifulStoneSoup or BeautifulSoup to create a
parsing strategy specific to an XML schema or a particular bizarre
HTML document. Typically your subclass would just override
SELF_CLOSING_TAGS and/or NESTABLE_TAGS.
""" #"
from __future__ import generators
__author__ = "Leonard Richardson (leonardr@segfault.org)"
__version__ = "2.1.1"
__date__ = "$Date: 2004/10/18 00:14:20 $"
__copyright__ = "Copyright (c) 2004-2005 Leonard Richardson"
__license__ = "PSF"
from _sgmllib_copy import SGMLParser, SGMLParseError
import types
import re
import _sgmllib_copy as sgmllib
class NullType(object):
"""Similar to NoneType with a corresponding singleton instance
'Null' that, unlike None, accepts any message and returns itself.
Examples:
>>> Null("send", "a", "message")("and one more",
... "and what you get still") is Null
True
"""
def __new__(cls): return Null
def __call__(self, *args, **kwargs): return Null
## def __getstate__(self, *args): return Null
def __getattr__(self, attr): return Null
def __getitem__(self, item): return Null
def __setattr__(self, attr, value): pass
def __setitem__(self, item, value): pass
def __len__(self): return 0
# FIXME: is this a python bug? otherwise ``for x in Null: pass``
# never terminates...
def __iter__(self): return iter([])
def __contains__(self, item): return False
def __repr__(self): return "Null"
Null = object.__new__(NullType)
class PageElement:
"""Contains the navigational information for some part of the page
(either a tag or a piece of text)"""
def setup(self, parent=Null, previous=Null):
"""Sets up the initial relations between this element and
other elements."""
self.parent = parent
self.previous = previous
self.next = Null
self.previousSibling = Null
self.nextSibling = Null
if self.parent and self.parent.contents:
self.previousSibling = self.parent.contents[-1]
self.previousSibling.nextSibling = self
def findNext(self, name=None, attrs={}, text=None):
"""Returns the first item that matches the given criteria and
appears after this Tag in the document."""
return self._first(self.fetchNext, name, attrs, text)
firstNext = findNext
def fetchNext(self, name=None, attrs={}, text=None, limit=None):
"""Returns all items that match the given criteria and appear
before after Tag in the document."""
return self._fetch(name, attrs, text, limit, self.nextGenerator)
def findNextSibling(self, name=None, attrs={}, text=None):
"""Returns the closest sibling to this Tag that matches the
given criteria and appears after this Tag in the document."""
return self._first(self.fetchNextSiblings, name, attrs, text)
firstNextSibling = findNextSibling
def fetchNextSiblings(self, name=None, attrs={}, text=None, limit=None):
"""Returns the siblings of this Tag that match the given
criteria and appear after this Tag in the document."""
return self._fetch(name, attrs, text, limit, self.nextSiblingGenerator)
def findPrevious(self, name=None, attrs={}, text=None):
"""Returns the first item that matches the given criteria and
appears before this Tag in the document."""
return self._first(self.fetchPrevious, name, attrs, text)
def fetchPrevious(self, name=None, attrs={}, text=None, limit=None):
"""Returns all items that match the given criteria and appear
before this Tag in the document."""
return self._fetch(name, attrs, text, limit, self.previousGenerator)
firstPrevious = findPrevious
def findPreviousSibling(self, name=None, attrs={}, text=None):
"""Returns the closest sibling to this Tag that matches the
given criteria and appears before this Tag in the document."""
return self._first(self.fetchPreviousSiblings, name, attrs, text)
firstPreviousSibling = findPreviousSibling
def fetchPreviousSiblings(self, name=None, attrs={}, text=None,
limit=None):
"""Returns the siblings of this Tag that match the given
criteria and appear before this Tag in the document."""
return self._fetch(name, attrs, text, limit,
self.previousSiblingGenerator)
def findParent(self, name=None, attrs={}):
"""Returns the closest parent of this Tag that matches the given
criteria."""
r = Null
l = self.fetchParents(name, attrs, 1)
if l:
r = l[0]
return r
firstParent = findParent
def fetchParents(self, name=None, attrs={}, limit=None):
"""Returns the parents of this Tag that match the given
criteria."""
return self._fetch(name, attrs, None, limit, self.parentGenerator)
#These methods do the real heavy lifting.
def _first(self, method, name, attrs, text):
r = Null
l = method(name, attrs, text, 1)
if l:
r = l[0]
return r
def _fetch(self, name, attrs, text, limit, generator):
"Iterates over a generator looking for things that match."
if not hasattr(attrs, 'items'):
attrs = {'class' : attrs}
results = []
g = generator()
while True:
try:
i = g.next()
except StopIteration:
break
found = None
if isinstance(i, Tag):
if not text:
if not name or self._matches(i, name):
match = True
for attr, matchAgainst in attrs.items():
check = i.get(attr)
if not self._matches(check, matchAgainst):
match = False
break
if match:
found = i
elif text:
if self._matches(i, text):
found = i
if found:
results.append(found)
if limit and len(results) >= limit:
break
return results
#Generators that can be used to navigate starting from both
#NavigableTexts and Tags.
def nextGenerator(self):
i = self
while i:
i = i.next
yield i
def nextSiblingGenerator(self):
i = self
while i:
i = i.nextSibling
yield i
def previousGenerator(self):
i = self
while i:
i = i.previous
yield i
def previousSiblingGenerator(self):
i = self
while i:
i = i.previousSibling
yield i
def parentGenerator(self):
i = self
while i:
i = i.parent
yield i
def _matches(self, chunk, howToMatch):
#print 'looking for %s in %s' % (howToMatch, chunk)
#
# If given a list of items, return true if the list contains a
# text element that matches.
if isList(chunk) and not isinstance(chunk, Tag):
for tag in chunk:
if isinstance(tag, NavigableText) and self._matches(tag, howToMatch):
return True
return False
if callable(howToMatch):
return howToMatch(chunk)
if isinstance(chunk, Tag):
#Custom match methods take the tag as an argument, but all other
#ways of matching match the tag name as a string
chunk = chunk.name
#Now we know that chunk is a string
if not isinstance(chunk, basestring):
chunk = str(chunk)
if hasattr(howToMatch, 'match'):
# It's a regexp object.
return howToMatch.search(chunk)
if isList(howToMatch):
return chunk in howToMatch
if hasattr(howToMatch, 'items'):
return howToMatch.has_key(chunk)
#It's just a string
return str(howToMatch) == chunk
class NavigableText(PageElement):
def __getattr__(self, attr):
"For backwards compatibility, text.string gives you text"
if attr == 'string':
return self
else:
raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
class NavigableString(str, NavigableText):
pass
class NavigableUnicodeString(unicode, NavigableText):
pass
class Tag(PageElement):
"""Represents a found HTML tag with its attributes and contents."""
def __init__(self, name, attrs=None, parent=Null, previous=Null):
"Basic constructor."
self.name = name
if attrs == None:
attrs = []
self.attrs = attrs
self.contents = []
self.setup(parent, previous)
self.hidden = False
def get(self, key, default=None):
"""Returns the value of the 'key' attribute for the tag, or
the value given for 'default' if it doesn't have that
attribute."""
return self._getAttrMap().get(key, default)
def __getitem__(self, key):
"""tag[key] returns the value of the 'key' attribute for the tag,
and throws an exception if it's not there."""
return self._getAttrMap()[key]
def __iter__(self):
"Iterating over a tag iterates over its contents."
return iter(self.contents)
def __len__(self):
"The length of a tag is the length of its list of contents."
return len(self.contents)
def __contains__(self, x):
return x in self.contents
def __nonzero__(self):
"A tag is non-None even if it has no contents."
return True
def __setitem__(self, key, value):
"""Setting tag[key] sets the value of the 'key' attribute for the
tag."""
self._getAttrMap()
self.attrMap[key] = value
found = False
for i in range(0, len(self.attrs)):
if self.attrs[i][0] == key:
self.attrs[i] = (key, value)
found = True
if not found:
self.attrs.append((key, value))
self._getAttrMap()[key] = value
def __delitem__(self, key):
"Deleting tag[key] deletes all 'key' attributes for the tag."
for item in self.attrs:
if item[0] == key:
self.attrs.remove(item)
#We don't break because bad HTML can define the same
#attribute multiple times.
self._getAttrMap()
if self.attrMap.has_key(key):
del self.attrMap[key]
def __call__(self, *args, **kwargs):
"""Calling a tag like a function is the same as calling its
fetch() method. Eg. tag('a') returns a list of all the A tags
found within this tag."""
return apply(self.fetch, args, kwargs)
def __getattr__(self, tag):
if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3:
return self.first(tag[:-3])
elif tag.find('__') != 0:
return self.first(tag)
def __eq__(self, other):
"""Returns true iff this tag has the same name, the same attributes,
and the same contents (recursively) as the given tag.
NOTE: right now this will return false if two tags have the
same attributes in a different order. Should this be fixed?"""
if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other):
return False
for i in range(0, len(self.contents)):
if self.contents[i] != other.contents[i]:
return False
return True
def __ne__(self, other):
"""Returns true iff this tag is not identical to the other tag,
as defined in __eq__."""
return not self == other
def __repr__(self):
"""Renders this tag as a string."""
return str(self)
def __unicode__(self):
return self.__str__(1)
def __str__(self, needUnicode=None, showStructureIndent=None):
"""Returns a string or Unicode representation of this tag and
its contents.
NOTE: since Python's HTML parser consumes whitespace, this
method is not certain to reproduce the whitespace present in
the original string."""
attrs = []
if self.attrs:
for key, val in self.attrs:
attrs.append('%s="%s"' % (key, val))
close = ''
closeTag = ''
if self.isSelfClosing():
close = ' /'
else:
closeTag = '</%s>' % self.name
indentIncrement = None
if showStructureIndent != None:
indentIncrement = showStructureIndent
if not self.hidden:
indentIncrement += 1
contents = self.renderContents(indentIncrement, needUnicode=needUnicode)
if showStructureIndent:
space = '\n%s' % (' ' * showStructureIndent)
if self.hidden:
s = contents
else:
s = []
attributeString = ''
if attrs:
attributeString = ' ' + ' '.join(attrs)
if showStructureIndent:
s.append(space)
s.append('<%s%s%s>' % (self.name, attributeString, close))
s.append(contents)
if closeTag and showStructureIndent != None:
s.append(space)
s.append(closeTag)
s = ''.join(s)
isUnicode = type(s) == types.UnicodeType
if needUnicode and not isUnicode:
s = unicode(s)
elif isUnicode and needUnicode==False:
s = str(s)
return s
def prettify(self, needUnicode=None):
return self.__str__(needUnicode, showStructureIndent=True)
def renderContents(self, showStructureIndent=None, needUnicode=None):
"""Renders the contents of this tag as a (possibly Unicode)
string."""
s=[]
for c in self:
text = None
if isinstance(c, NavigableUnicodeString) or type(c) == types.UnicodeType:
text = unicode(c)
elif isinstance(c, Tag):
s.append(c.__str__(needUnicode, showStructureIndent))
elif needUnicode:
text = unicode(c)
else:
text = str(c)
if text:
if showStructureIndent != None:
if text[-1] == '\n':
text = text[:-1]
s.append(text)
return ''.join(s)
#Soup methods
def firstText(self, text, recursive=True):
"""Convenience method to retrieve the first piece of text matching the
given criteria. 'text' can be a string, a regular expression object,
a callable that takes a string and returns whether or not the
string 'matches', etc."""
return self.first(recursive=recursive, text=text)
def fetchText(self, text, recursive=True, limit=None):
"""Convenience method to retrieve all pieces of text matching the
given criteria. 'text' can be a string, a regular expression object,
a callable that takes a string and returns whether or not the
string 'matches', etc."""
return self.fetch(recursive=recursive, text=text, limit=limit)
def first(self, name=None, attrs={}, recursive=True, text=None):
"""Return only the first child of this
Tag matching the given criteria."""
r = Null
l = self.fetch(name, attrs, recursive, text, 1)
if l:
r = l[0]
return r
findChild = first
def fetch(self, name=None, attrs={}, recursive=True, text=None,
limit=None):
"""Extracts a list of Tag objects that match the given
criteria. You can specify the name of the Tag and any
attributes you want the Tag to have.
The value of a key-value pair in the 'attrs' map can be a
string, a list of strings, a regular expression object, or a
callable that takes a string and returns whether or not the
string matches for some custom definition of 'matches'. The
same is true of the tag name."""
generator = self.recursiveChildGenerator
if not recursive:
generator = self.childGenerator
return self._fetch(name, attrs, text, limit, generator)
fetchChildren = fetch
#Utility methods
def isSelfClosing(self):
"""Returns true iff this is a self-closing tag as defined in the HTML
standard.
TODO: This is specific to BeautifulSoup and its subclasses, but it's
used by __str__"""
return self.name in BeautifulSoup.SELF_CLOSING_TAGS
def append(self, tag):
"""Appends the given tag to the contents of this tag."""
self.contents.append(tag)
#Private methods
def _getAttrMap(self):
"""Initializes a map representation of this tag's attributes,
if not already initialized."""
if not getattr(self, 'attrMap'):
self.attrMap = {}
for (key, value) in self.attrs:
self.attrMap[key] = value
return self.attrMap
#Generator methods
def childGenerator(self):
for i in range(0, len(self.contents)):
yield self.contents[i]
raise StopIteration
def recursiveChildGenerator(self):
stack = [(self, 0)]
while stack:
tag, start = stack.pop()
if isinstance(tag, Tag):
for i in range(start, len(tag.contents)):
a = tag.contents[i]
yield a
if isinstance(a, Tag) and tag.contents:
if i < len(tag.contents) - 1:
stack.append((tag, i+1))
stack.append((a, 0))
break
raise StopIteration
def isList(l):
"""Convenience method that works with all 2.x versions of Python
to determine whether or not something is listlike."""
return hasattr(l, '__iter__') \
or (type(l) in (types.ListType, types.TupleType))
def buildTagMap(default, *args):
"""Turns a list of maps, lists, or scalars into a single map.
Used to build the SELF_CLOSING_TAGS and NESTABLE_TAGS maps out
of lists and partial maps."""
built = {}
for portion in args:
if hasattr(portion, 'items'):
#It's a map. Merge it.
for k,v in portion.items():
built[k] = v
elif isList(portion):
#It's a list. Map each item to the default.
for k in portion:
built[k] = default
else:
#It's a scalar. Map it to the default.
built[portion] = default
return built
class BeautifulStoneSoup(Tag, SGMLParser):
"""This class contains the basic parser and fetch code. It defines
a parser that knows nothing about tag behavior except for the
following:
You can't close a tag without closing all the tags it encloses.
That is, "<foo><bar></foo>" actually means
"<foo><bar></bar></foo>".
[Another possible explanation is "<foo><bar /></foo>", but since
this class defines no SELF_CLOSING_TAGS, it will never use that
explanation.]
This class is useful for parsing XML or made-up markup languages,
or when BeautifulSoup makes an assumption counter to what you were
expecting."""
SELF_CLOSING_TAGS = {}
NESTABLE_TAGS = {}
RESET_NESTING_TAGS = {}
QUOTE_TAGS = {}
#As a public service we will by default silently replace MS smart quotes
#and similar characters with their HTML or ASCII equivalents.
MS_CHARS = { '\x80' : '€',
'\x81' : ' ',
'\x82' : '‚',
'\x83' : 'ƒ',
'\x84' : '„',
'\x85' : '…',
'\x86' : '†',
'\x87' : '‡',
'\x88' : '⁁',
'\x89' : '%',
'\x8A' : 'Š',
'\x8B' : '<',
'\x8C' : 'Œ',
'\x8D' : '?',
'\x8E' : 'Z',
'\x8F' : '?',
'\x90' : '?',
'\x91' : '‘',
'\x92' : '’',
'\x93' : '“',
'\x94' : '”',
'\x95' : '•',
'\x96' : '–',
'\x97' : '—',
'\x98' : '˜',
'\x99' : '™',
'\x9a' : 'š',
'\x9b' : '>',
'\x9c' : 'œ',
'\x9d' : '?',
'\x9e' : 'z',
'\x9f' : 'Ÿ',}
PARSER_MASSAGE = [(re.compile('(<[^<>]*)/>'),
lambda(x):x.group(1) + ' />'),
(re.compile('<!\s+([^<>]*)>'),
lambda(x):'<!' + x.group(1) + '>'),
(re.compile("([\x80-\x9f])"),
lambda(x): BeautifulStoneSoup.MS_CHARS.get(x.group(1)))
]
ROOT_TAG_NAME = '[document]'
def __init__(self, text=None, avoidParserProblems=True,
initialTextIsEverything=True):
"""Initialize this as the 'root tag' and feed in any text to
the parser.
NOTE about avoidParserProblems: sgmllib will process most bad
HTML, and BeautifulSoup has tricks for dealing with some HTML
that kills sgmllib, but Beautiful Soup can nonetheless choke
or lose data if your data uses self-closing tags or
declarations incorrectly. By default, Beautiful Soup sanitizes
its input to avoid the vast majority of these problems. The
problems are relatively rare, even in bad HTML, so feel free
to pass in False to avoidParserProblems if they don't apply to
you, and you'll get better performance. The only reason I have
this turned on by default is so I don't get so many tech
support questions.
The two most common instances of invalid HTML that will choke
sgmllib are fixed by the default parser massage techniques:
<br/> (No space between name of closing tag and tag close)
<! --Comment--> (Extraneous whitespace in declaration)
You can pass in a custom list of (RE object, replace method)
tuples to get Beautiful Soup to scrub your input the way you
want."""
Tag.__init__(self, self.ROOT_TAG_NAME)
if avoidParserProblems \
and not isList(avoidParserProblems):
avoidParserProblems = self.PARSER_MASSAGE
self.avoidParserProblems = avoidParserProblems
SGMLParser.__init__(self)
self.quoteStack = []
self.hidden = 1
self.reset()
if hasattr(text, 'read'):
#It's a file-type object.
text = text.read()
if text:
self.feed(text)
if initialTextIsEverything:
self.done()
def __getattr__(self, methodName):
"""This method routes method call requests to either the SGMLParser
superclass or the Tag superclass, depending on the method name."""
if methodName.find('start_') == 0 or methodName.find('end_') == 0 \
or methodName.find('do_') == 0:
return SGMLParser.__getattr__(self, methodName)
elif methodName.find('__') != 0:
return Tag.__getattr__(self, methodName)
else:
raise AttributeError
def feed(self, text):
if self.avoidParserProblems:
for fix, m in self.avoidParserProblems:
text = fix.sub(m, text)
SGMLParser.feed(self, text)
def done(self):
"""Called when you're done parsing, so that the unclosed tags can be
correctly processed."""
self.endData() #NEW
while self.currentTag.name != self.ROOT_TAG_NAME:
self.popTag()
def reset(self):
SGMLParser.reset(self)
self.currentData = []
self.currentTag = None
self.tagStack = []
self.pushTag(self)
def popTag(self):
tag = self.tagStack.pop()
# Tags with just one string-owning child get the child as a
# 'string' property, so that soup.tag.string is shorthand for
# soup.tag.contents[0]
if len(self.currentTag.contents) == 1 and \
isinstance(self.currentTag.contents[0], NavigableText):
self.currentTag.string = self.currentTag.contents[0]
#print "Pop", tag.name
if self.tagStack:
self.currentTag = self.tagStack[-1]
return self.currentTag
def pushTag(self, tag):
#print "Push", tag.name
if self.currentTag:
self.currentTag.append(tag)
self.tagStack.append(tag)
self.currentTag = self.tagStack[-1]
def endData(self):
currentData = ''.join(self.currentData)
if currentData:
if not currentData.strip():
if '\n' in currentData:
currentData = '\n'
else:
currentData = ' '
c = NavigableString
if type(currentData) == types.UnicodeType:
c = NavigableUnicodeString
o = c(currentData)
o.setup(self.currentTag, self.previous)
if self.previous:
self.previous.next = o
self.previous = o
self.currentTag.contents.append(o)
self.currentData = []
def _popToTag(self, name, inclusivePop=True):
"""Pops the tag stack up to and including the most recent
instance of the given tag. If inclusivePop is false, pops the tag
stack up to but *not* including the most recent instqance of
the given tag."""
if name == self.ROOT_TAG_NAME:
return
numPops = 0
mostRecentTag = None
for i in range(len(self.tagStack)-1, 0, -1):
if name == self.tagStack[i].name:
numPops = len(self.tagStack)-i
break
if not inclusivePop:
numPops = numPops - 1
for i in range(0, numPops):
mostRecentTag = self.popTag()
return mostRecentTag
def _smartPop(self, name):
"""We need to pop up to the previous tag of this type, unless
one of this tag's nesting reset triggers comes between this
tag and the previous tag of this type, OR unless this tag is a
generic nesting trigger and another generic nesting trigger
comes between this tag and the previous tag of this type.
Examples:
<p>Foo<b>Bar<p> should pop to 'p', not 'b'.
<p>Foo<table>Bar<p> should pop to 'table', not 'p'.
<p>Foo<table><tr>Bar<p> should pop to 'tr', not 'p'.
<p>Foo<b>Bar<p> should pop to 'p', not 'b'.
<li><ul><li> *<li>* should pop to 'ul', not the first 'li'.
<tr><table><tr> *<tr>* should pop to 'table', not the first 'tr'
<td><tr><td> *<td>* should pop to 'tr', not the first 'td'
"""
nestingResetTriggers = self.NESTABLE_TAGS.get(name)
isNestable = nestingResetTriggers != None
isResetNesting = self.RESET_NESTING_TAGS.has_key(name)
popTo = None
inclusive = True
for i in range(len(self.tagStack)-1, 0, -1):
p = self.tagStack[i]
if (not p or p.name == name) and not isNestable:
#Non-nestable tags get popped to the top or to their
#last occurance.
popTo = name
break
if (nestingResetTriggers != None
and p.name in nestingResetTriggers) \
or (nestingResetTriggers == None and isResetNesting
and self.RESET_NESTING_TAGS.has_key(p.name)):
#If we encounter one of the nesting reset triggers
#peculiar to this tag, or we encounter another tag
#that causes nesting to reset, pop up to but not
#including that tag.
popTo = p.name
inclusive = False
break
p = p.parent
if popTo:
self._popToTag(popTo, inclusive)
def unknown_starttag(self, name, attrs, selfClosing=0):
#print "Start tag %s" % name
if self.quoteStack:
#This is not a real tag.
#print "<%s> is not real!" % name
attrs = ''.join(map(lambda(x, y): ' %s="%s"' % (x, y), attrs))
self.handle_data('<%s%s>' % (name, attrs))
return
self.endData()
if not name in self.SELF_CLOSING_TAGS and not selfClosing:
self._smartPop(name)
tag = Tag(name, attrs, self.currentTag, self.previous)
if self.previous:
self.previous.next = tag
self.previous = tag
self.pushTag(tag)
if selfClosing or name in self.SELF_CLOSING_TAGS:
self.popTag()
if name in self.QUOTE_TAGS:
#print "Beginning quote (%s)" % name
self.quoteStack.append(name)
self.literal = 1
def unknown_endtag(self, name):
if self.quoteStack and self.quoteStack[-1] != name:
#This is not a real end tag.
#print "</%s> is not real!" % name
self.handle_data('</%s>' % name)
return
self.endData()
self._popToTag(name)
if self.quoteStack and self.quoteStack[-1] == name:
self.quoteStack.pop()
self.literal = (len(self.quoteStack) > 0)
def handle_data(self, data):
self.currentData.append(data)
def handle_pi(self, text):
"Propagate processing instructions right through."
self.handle_data("<?%s>" % text)
def handle_comment(self, text):
"Propagate comments right through."
self.handle_data("<!--%s-->" % text)
def handle_charref(self, ref):
"Propagate char refs right through."
self.handle_data('&#%s;' % ref)
def handle_entityref(self, ref):
"Propagate entity refs right through."
self.handle_data('&%s;' % ref)
def handle_decl(self, data):
"Propagate DOCTYPEs and the like right through."
self.handle_data('<!%s>' % data)
def parse_declaration(self, i):
"""Treat a bogus SGML declaration as raw data. Treat a CDATA
declaration as regular data."""
j = None
if self.rawdata[i:i+9] == '<![CDATA[':
k = self.rawdata.find(']]>', i)
if k == -1:
k = len(self.rawdata)
self.handle_data(self.rawdata[i+9:k])
j = k+3
else:
try:
j = SGMLParser.parse_declaration(self, i)
except SGMLParseError:
toHandle = self.rawdata[i:]
self.handle_data(toHandle)
j = i + len(toHandle)
return j
class BeautifulSoup(BeautifulStoneSoup):
"""This parser knows the following facts about HTML:
* Some tags have no closing tag and should be interpreted as being
closed as soon as they are encountered.
* The text inside some tags (ie. 'script') may contain tags which
are not really part of the document and which should be parsed
as text, not tags. If you want to parse the text as tags, you can
always fetch it and parse it explicitly.
* Tag nesting rules:
Most tags can't be nested at all. For instance, the occurance of
a <p> tag should implicitly close the previous <p> tag.
<p>Para1<p>Para2
should be transformed into:
<p>Para1</p><p>Para2
Some tags can be nested arbitrarily. For instance, the occurance
of a <blockquote> tag should _not_ implicitly close the previous
<blockquote> tag.
Alice said: <blockquote>Bob said: <blockquote>Blah
should NOT be transformed into:
Alice said: <blockquote>Bob said: </blockquote><blockquote>Blah
Some tags can be nested, but the nesting is reset by the
interposition of other tags. For instance, a <tr> tag should
implicitly close the previous <tr> tag within the same <table>,
but not close a <tr> tag in another table.
<table><tr>Blah<tr>Blah
should be transformed into:
<table><tr>Blah</tr><tr>Blah
but,
<tr>Blah<table><tr>Blah
should NOT be transformed into
<tr>Blah<table></tr><tr>Blah
Differing assumptions about tag nesting rules are a major source
of problems with the BeautifulSoup class. If BeautifulSoup is not
treating as nestable a tag your page author treats as nestable,
try ICantBelieveItsBeautifulSoup before writing your own
subclass."""
SELF_CLOSING_TAGS = buildTagMap(None, ['br' , 'hr', 'input', 'img', 'meta',
'spacer', 'link', 'frame', 'base'])
QUOTE_TAGS = {'script': None}
#According to the HTML standard, each of these inline tags can
#contain another tag of the same type. Furthermore, it's common
#to actually use these tags this way.
NESTABLE_INLINE_TAGS = ['span', 'font', 'q', 'object', 'bdo', 'sub', 'sup',
'center']
#According to the HTML standard, these block tags can contain
#another tag of the same type. Furthermore, it's common
#to actually use these tags this way.
NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
#Lists can contain other lists, but there are restrictions.
NESTABLE_LIST_TAGS = { 'ol' : [],
'ul' : [],
'li' : ['ul', 'ol'],
'dl' : [],
'dd' : ['dl'],
'dt' : ['dl'] }
#Tables can contain other tables, but there are restrictions.
NESTABLE_TABLE_TAGS = {'table' : [],
'tr' : ['table', 'tbody', 'tfoot', 'thead'],
'td' : ['tr'],
'th' : ['tr'],
}
NON_NESTABLE_BLOCK_TAGS = ['address', 'form', 'p', 'pre']
#If one of these tags is encountered, all tags up to the next tag of
#this type are popped.
RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript',
NON_NESTABLE_BLOCK_TAGS,
NESTABLE_LIST_TAGS,
NESTABLE_TABLE_TAGS)
NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS,
NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS)
class ICantBelieveItsBeautifulSoup(BeautifulSoup):
"""The BeautifulSoup class is oriented towards skipping over
common HTML errors like unclosed tags. However, sometimes it makes
errors of its own. For instance, consider this fragment:
<b>Foo<b>Bar</b></b>
This is perfectly valid (if bizarre) HTML. However, the
BeautifulSoup class will implicitly close the first b tag when it
encounters the second 'b'. It will think the author wrote
"<b>Foo<b>Bar", and didn't close the first 'b' tag, because
there's no real-world reason to bold something that's already
bold. When it encounters '</b></b>' it will close two more 'b'
tags, for a grand total of three tags closed instead of two. This
can throw off the rest of your document structure. The same is
true of a number of other tags, listed below.
It's much more common for someone to forget to close (eg.) a 'b'
tag than to actually use nested 'b' tags, and the BeautifulSoup
class handles the common case. This class handles the
not-co-common case: where you can't believe someone wrote what
they did, but it's valid HTML and BeautifulSoup screwed up by
assuming it wouldn't be.
If this doesn't do what you need, try subclassing this class or
BeautifulSoup, and providing your own list of NESTABLE_TAGS."""
I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \
['em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong',
'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b',
'big']
I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ['noscript']
NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS,
I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS,
I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS)
class BeautifulSOAP(BeautifulStoneSoup):
"""This class will push a tag with only a single string child into
the tag's parent as an attribute. The attribute's name is the tag
name, and the value is the string child. An example should give
the flavor of the change:
<foo><bar>baz</bar></foo>
=>
<foo bar="baz"><bar>baz</bar></foo>
You can then access fooTag['bar'] instead of fooTag.barTag.string.
This is, of course, useful for scraping structures that tend to
use subelements instead of attributes, such as SOAP messages. Note
that it modifies its input, so don't print the modified version
out.
I'm not sure how many people really want to use this class; let me
know if you do. Mainly I like the name."""
def popTag(self):
if len(self.tagStack) > 1:
tag = self.tagStack[-1]
parent = self.tagStack[-2]
parent._getAttrMap()
if (isinstance(tag, Tag) and len(tag.contents) == 1 and
isinstance(tag.contents[0], NavigableText) and
not parent.attrMap.has_key(tag.name)):
parent[tag.name] = tag.contents[0]
BeautifulStoneSoup.popTag(self)
#Enterprise class names! It has come to our attention that some people
#think the names of the Beautiful Soup parser classes are too silly
#and "unprofessional" for use in enterprise screen-scraping. We feel
#your pain! For such-minded folk, the Beautiful Soup Consortium And
#All-Night Kosher Bakery recommends renaming this file to
#"RobustParser.py" (or, in cases of extreme enterprisitude,
#"RobustParserBeanInterface.class") and using the following
#enterprise-friendly class aliases:
class RobustXMLParser(BeautifulStoneSoup):
pass
class RobustHTMLParser(BeautifulSoup):
pass
class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
pass
class SimplifyingSOAPParser(BeautifulSOAP):
pass
###
#By default, act as an HTML pretty-printer.
if __name__ == '__main__':
import sys
soup = BeautifulStoneSoup(sys.stdin.read())
print soup.prettify()
================================================
FILE: BruteXSS/mechanize/_clientcookie.py
================================================
"""HTTP cookie handling for web clients.
This module originally developed from my port of Gisle Aas' Perl module
HTTP::Cookies, from the libwww-perl library.
Docstrings, comments and debug strings in this code refer to the
attributes of the HTTP cookie system as cookie-attributes, to distinguish
them clearly from Python attributes.
CookieJar____
/ \ \
FileCookieJar \ \
/ | \ \ \
MozillaCookieJar | LWPCookieJar \ \
| | \
| ---MSIEBase | \
| / | | \
| / MSIEDBCookieJar BSDDBCookieJar
|/
MSIECookieJar
Comments to John J Lee <jjl@pobox.com>.
Copyright 2002-2006 John J Lee <jjl@pobox.com>
Copyright 1997-1999 Gisle Aas (original libwww-perl code)
Copyright 2002-2003 Johnny Lee (original MSIE Perl code)
This code is free software; you can redistribute it and/or modify it
under the terms of the BSD or ZPL 2.1 licenses (see the file
COPYING.txt included with the distribution).
"""
import sys, re, copy, time, urllib, types, logging
try:
import threading
_threading = threading; del threading
except ImportError:
import dummy_threading
_threading = dummy_threading; del dummy_threading
MISSING_FILENAME_TEXT = ("a filename was not supplied (nor was the CookieJar "
"instance initialised with one)")
DEFAULT_HTTP_PORT = "80"
from _headersutil import split_header_words, parse_ns_headers
from _util import isstringlike
import _rfc3986
debug = logging.getLogger("mechanize.cookies").debug
def reraise_unmasked_exceptions(unmasked=()):
# There are a few catch-all except: statements in this module, for
# catching input that's bad in unexpected ways.
# This function re-raises some exceptions we don't want to trap.
import mechanize, warnings
if not mechanize.USE_BARE_EXCEPT:
raise
unmasked = unmasked + (KeyboardInterrupt, SystemExit, MemoryError)
etype = sys.exc_info()[0]
if issubclass(etype, unmasked):
raise
# swallowed an exception
import traceback, StringIO
f = StringIO.StringIO()
traceback.print_exc(None, f)
msg = f.getvalue()
warnings.warn("mechanize bug!\n%s" % msg, stacklevel=2)
IPV4_RE = re.compile(r"\.\d+$")
def is_HDN(text):
"""Return True if text is a host domain name."""
# XXX
# This may well be wrong. Which RFC is HDN defined in, if any (for
# the purposes of RFC 2965)?
# For the current implementation, what about IPv6? Remember to look
# at other uses of IPV4_RE also, if change this.
return not (IPV4_RE.search(text) or
text == "" or
text[0] == "." or text[-1] == ".")
def domain_match(A, B):
"""Return True if domain A domain-matches domain B, according to RFC 2965.
A and B may be host domain names or IP addresses.
RFC 2965, section 1:
Host names can be specified either as an IP address or a HDN string.
Sometimes we compare one host name with another. (Such comparisons SHALL
be case-insensitive.) Host A's name domain-matches host B's if
* their host name strings string-compare equal; or
* A is a HDN string and has the form NB, where N is a non-empty
name string, B has the form .B', and B' is a HDN string. (So,
x.y.com domain-matches .Y.com but not Y.com.)
Note that domain-match is not a commutative operation: a.b.c.com
domain-matches .c.com, but not the reverse.
"""
# Note that, if A or B are IP addresses, the only relevant part of the
# definition of the domain-match algorithm is the direct string-compare.
A = A.lower()
B = B.lower()
if A == B:
return True
if not is_HDN(A):
return False
i = A.rfind(B)
has_form_nb = not (i == -1 or i == 0)
return (
has_form_nb and
B.startswith(".") and
is_HDN(B[1:])
)
def liberal_is_HDN(text):
"""Return True if text is a sort-of-like a host domain name.
For accepting/blocking domains.
"""
return not IPV4_RE.search(text)
def user_domain_match(A, B):
"""For blocking/accepting domains.
A and B may be host domain names or IP addresses.
"""
A = A.lower()
B = B.lower()
if not (liberal_is_HDN(A) and liberal_is_HDN(B)):
if A == B:
# equal IP addresses
return True
return False
initial_dot = B.startswith(".")
if initial_dot and A.endswith(B):
return True
if not initial_dot and A == B:
return True
return False
cut_port_re = re.compile(r":\d+$")
def request_host(request):
"""Return request-host, as defined by RFC 2965.
Variation from RFC: returned value is lowercased, for convenient
comparison.
"""
url = request.get_full_url()
host = _rfc3986.urlsplit(url)[1]
if host is None:
host = request.get_header("Host", "")
# remove port, if present
return cut_port_re.sub("", host, 1)
def request_host_lc(request):
return request_host(request).lower()
def eff_request_host(request):
"""Return a tuple (request-host, effective request-host name)."""
erhn = req_host = request_host(request)
if req_host.find(".") == -1 and not IPV4_RE.search(req_host):
erhn = req_host + ".local"
return req_host, erhn
def eff_request_host_lc(request):
req_host, erhn = eff_request_host(request)
return req_host.lower(), erhn.lower()
def effective_request_host(request):
"""Return the effective request-host, as defined by RFC 2965."""
return eff_request_host(request)[1]
def request_path(request):
"""Return path component of request-URI, as defined by RFC 2965."""
url = request.get_full_url()
path = escape_path(_rfc3986.urlsplit(url)[2])
if not path.startswith("/"):
path = "/" + path
return path
def request_port(request):
host = request.get_host()
i = host.find(':')
if i >= 0:
port = host[i+1:]
try:
int(port)
except ValueError:
debug("nonnumeric port: '%s'", port)
return None
else:
port = DEFAULT_HTTP_PORT
return port
def request_is_unverifiable(request):
try:
return request.is_unverifiable()
except AttributeError:
if hasattr(request, "unverifiable"):
return request.unverifiable
else:
raise
# Characters in addition to A-Z, a-z, 0-9, '_', '.', and '-' that don't
# need to be escaped to form a valid HTTP URL (RFCs 2396 and 1738).
HTTP_PATH_SAFE = "%/;:@&=+$,!~*'()"
ESCAPED_CHAR_RE = re.compile(r"%([0-9a-fA-F][0-9a-fA-F])")
def uppercase_escaped_char(match):
return "%%%s" % match.group(1).upper()
def escape_path(path):
"""Escape any invalid characters in HTTP URL, and uppercase all escapes."""
# There's no knowing what character encoding was used to create URLs
# containing %-escapes, but since we have to pick one to escape invalid
# path characters, we pick UTF-8, as recommended in the HTML 4.0
# specification:
# http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.1
# And here, kind of: draft-fielding-uri-rfc2396bis-03
# (And in draft IRI specification: draft-duerst-iri-05)
# (And here, for new URI schemes: RFC 2718)
if isinstance(path, types.UnicodeType):
path = path.encode("utf-8")
path = urllib.quote(path, HTTP_PATH_SAFE)
path = ESCAPED_CHAR_RE.sub(uppercase_escaped_char, path)
return path
def reach(h):
"""Return reach of host h, as defined by RFC 2965, section 1.
The reach R of a host name H is defined as follows:
* If
- H is the host domain name of a host; and,
- H has the form A.B; and
- A has no embedded (that is, interior) dots; and
- B has at least one embedded dot, or B is the string "local".
then the reach of H is .B.
* Otherwise, the reach of H is H.
>>> reach("www.acme.com")
'.acme.com'
>>> reach("acme.com")
'acme.com'
>>> reach("acme.local")
'.local'
"""
i = h.find(".")
if i >= 0:
#a = h[:i] # this line is only here to show what a is
b = h[i+1:]
i = b.find(".")
if is_HDN(h) and (i >= 0 or b == "local"):
return "."+b
return h
def is_third_party(request):
"""
RFC 2965, section 3.3.6:
An unverifiable transaction is to a third-party host if its request-
host U does not domain-match the reach R of the request-host O in the
origin transaction.
"""
req_host = request_host_lc(request)
# the origin request's request-host was stuffed into request by
# _urllib2_support.AbstractHTTPHandler
return not domain_match(req_host, reach(request.origin_req_host))
try:
all
except NameError:
# python 2.4
def all(iterable):
for x in iterable:
if not x:
return False
return True
class Cookie:
"""HTTP Cookie.
This class represents both Netscape and RFC 2965 cookies.
This is deliberately a very simple class. It just holds attributes. It's
possible to construct Cookie instances that don't comply with the cookie
standards. CookieJar.make_cookies is the factory function for Cookie
objects -- it deals with cookie parsing, supplying defaults, and
normalising to the representation used in this class. CookiePolicy is
responsible for checking them to see whether they should be accepted from
and returned to the server.
version: integer;
name: string;
value: string (may be None);
port: string; None indicates no attribute was supplied (e.g. "Port", rather
than eg. "Port=80"); otherwise, a port string (eg. "80") or a port list
string (e.g. "80,8080")
port_specified: boolean; true if a value was supplied with the Port
cookie-attribute
domain: string;
domain_specified: boolean; true if Domain was explicitly set
domain_initial_dot: boolean; true if Domain as set in HTTP header by server
started with a dot (yes, this really is necessary!)
path: string;
path_specified: boolean; true if Path was explicitly set
secure: boolean; true if should only be returned over secure connection
expires: integer; seconds since epoch (RFC 2965 cookies should calculate
this value from the Max-Age attribute)
discard: boolean, true if this is a session cookie; (if no expires value,
this should be true)
comment: string;
comment_url: string;
rfc2109: boolean; true if cookie arrived in a Set-Cookie: (not
Set-Cookie2:) header, but had a version cookie-attribute of 1
rest: mapping of other cookie-attributes
Note that the port may be present in the headers, but unspecified ("Port"
rather than"Port=80", for example); if this is the case, port is None.
"""
_attrs = ("version", "name", "value",
"port", "port_specified",
"domain", "domain_specified", "domain_initial_dot",
"path", "path_specified",
"secure", "expires", "discard", "comment", "comment_url",
"rfc2109", "_rest")
def __init__(self, version, name, value,
port, port_specified,
domain, domain_specified, domain_initial_dot,
path, path_specified,
secure,
expires,
discard,
comment,
comment_url,
rest,
rfc2109=False,
):
if version is not None: version = int(version)
if expires is not None: expires = int(expires)
if port is None and port_specified is True:
raise ValueError("if port is None, port_specified must be false")
self.version = version
self.name = name
self.value = value
self.port = port
self.port_specified = port_specified
# normalise case, as per RFC 2965 section 3.3.3
self.domain = domain.lower()
self.domain_specified = domain_specified
# Sigh. We need to know whether the domain given in the
# cookie-attribute had an initial dot, in order to follow RFC 2965
# (as clarified in draft errata). Needed for the returned $Domain
# value.
self.domain_initial_dot = domain_initial_dot
self.path = path
self.path_specified = path_specified
self.secure = secure
self.expires = expires
self.discard = discard
self.comment = comment
self.comment_url = comment_url
self.rfc2109 = rfc2109
self._rest = copy.copy(rest)
def has_nonstandard_attr(self, name):
return self._rest.has_key(name)
def get_nonstandard_attr(self, name, default=None):
return self._rest.get(name, default)
def set_nonstandard_attr(self, name, value):
self._rest[name] = value
def nonstandard_attr_keys(self):
return self._rest.keys()
def is_expired(self, now=None):
if now is None: now = time.time()
return (self.expires is not None) and (self.expires <= now)
def __eq__(self, other):
return all(getattr(self, a) == getattr(other, a) for a in self._attrs)
def __ne__(self, other):
return not (self == other)
def __str__(self):
if self.port is None: p = ""
else: p = ":"+self.port
limit = self.domain + p + self.path
if self.value is not None:
namevalue = "%s=%s" % (self.name, self.value)
else:
namevalue = self.name
return "<Cookie %s for %s>" % (namevalue, limit)
def __repr__(self):
args = []
for name in ["version", "name", "value",
"port", "port_specified",
"domain", "domain_specified", "domain_initial_dot",
"path", "path_specified",
"secure", "expires", "discard", "comment", "comment_url",
]:
attr = getattr(self, name)
args.append("%s=%s" % (name, repr(attr)))
args.append("rest=%s" % repr(self._rest))
args.append("rfc2109=%s" % repr(self.rfc2109))
return "Cookie(%s)" % ", ".join(args)
class CookiePolicy:
"""Defines which cookies get accepted from and returned to server.
May also modify cookies.
The subclass DefaultCookiePolicy defines the standard rules for Netscape
and RFC 2965 cookies -- override that if you want a customised policy.
As well as implementing set_ok and return_ok, implementations of this
interface must also supply the following attributes, indicating which
protocols should be used, and how. These can be read and set at any time,
though whether that makes complete sense from the protocol point of view is
doubtful.
Public attributes:
netscape: implement netscape protocol
rfc2965: implement RFC 2965 protocol
rfc2109_as_netscape:
WARNING: This argument will change or go away if is not accepted into
the Python standard library in this form!
If true, treat RFC 2109 cookies as though they were Netscape cookies. The
default is for this attribute to be None, which means treat 2109 cookies
as RFC 2965 cookies unless RFC 2965 handling is switched off (which it is,
by default), and as Netscape cookies otherwise.
hide_cookie2: don't add Cookie2 header to requests (the presence of
this header indicates to the server that we understand RFC 2965
cookies)
"""
def set_ok(self, cookie, request):
"""Return true if (and only if) cookie should be accepted from server.
Currently, pre-expired cookies never get this far -- the CookieJar
class deletes such cookies itself.
cookie: mechanize.Cookie object
request: object implementing the interface defined by
CookieJar.extract_cookies.__doc__
"""
raise NotImplementedError()
def return_ok(self, cookie, request):
"""Return true if (and only if) cookie should be returned to server.
cookie: mechanize.Cookie object
request: object implementing the interface defined by
CookieJar.add_cookie_header.__doc__
"""
raise NotImplementedError()
def domain_return_ok(self, domain, request):
"""Return false if cookies should not be returned, given cookie domain.
This is here as an optimization, to remove the need for checking every
cookie with a particular domain (which may involve reading many files).
The default implementations of domain_return_ok and path_return_ok
(return True) leave all the work to return_ok.
If domain_return_ok returns true for the cookie domain, path_return_ok
is called for the cookie path. Otherwise, path_return_ok and return_ok
are never called for that cookie domain. If path_return_ok returns
true, return_ok is called with the Cookie object itself for a full
check. Otherwise, return_ok is never called for that cookie path.
Note that domain_return_ok is called for every *cookie* domain, not
just for the *request* domain. For example, the function might be
called with both ".acme.com" and "www.acme.com" if the request domain
is "www.acme.com". The same goes for path_return_ok.
For argument documentation, see the docstring for return_ok.
"""
return True
def path_return_ok(self, path, request):
"""Return false if cookies should not be returned, given cookie path.
See the docstring for domain_return_ok.
"""
return True
class DefaultCookiePolicy(CookiePolicy):
"""Implements the standard rules for accepting and returning cookies.
Both RFC 2965 and Netscape cookies are covered. RFC 2965 handling is
switched off by default.
The easiest way to provide your own policy is to override this class and
call its methods in your overriden implementations before adding your own
additional checks.
import mechanize
class MyCookiePolicy(mechanize.DefaultCookiePolicy):
def set_ok(self, cookie, request):
if not mechanize.DefaultCookiePolicy.set_ok(
self, cookie, request):
return False
if i_dont_want_to_store_this_cookie():
return False
return True
In addition to the features required to implement the CookiePolicy
interface, this class allows you to block and allow domains from setting
and receiving cookies. There are also some strictness switches that allow
you to tighten up the rather loose Netscape protocol rules a little bit (at
the cost of blocking some benign cookies).
A domain blacklist and whitelist is provided (both off by default). Only
domains not in the blacklist and present in the whitelist (if the whitelist
is active) participate in cookie setting and returning. Use the
blocked_domains constructor argument, and blocked_domains and
set_blocked_domains methods (and the corresponding argument and methods for
allowed_domains). If you set a whitelist, you can turn it off again by
setting it to None.
Domains in block or allow lists that do not start with a dot must
string-compare equal. For example, "acme.com" matches a blacklist entry of
"acme.com", but "www.acme.com" does not. Domains that do start with a dot
are matched by more specific domains too. For example, both "www.acme.com"
and "www.munitions.acme.com" match ".acme.com" (but "acme.com" itself does
not). IP addresses are an exception, and must match exactly. For example,
if blocked_domains contains "192.168.1.2" and ".168.1.2" 192.168.1.2 is
blocked, but 193.168.1.2 is not.
Additional Public Attributes:
General strictness switches
strict_domain: don't allow sites to set two-component domains with
country-code top-level domains like .co.uk, .gov.uk, .co.nz. etc.
This is far from perfect and isn't guaranteed to work!
RFC 2965 protocol strictness switches
strict_rfc2965_unverifiable: follow RFC 2965 rules on unverifiable
transactions (usually, an unverifiable transaction is one resulting from
a redirect or an image hosted on another site); if this is false, cookies
are NEVER blocked on the basis of verifiability
Netscape protocol strictness switches
strict_ns_unverifiable: apply RFC 2965 rules on unverifiable transactions
even to Netscape cookies
strict_ns_domain: flags indicating how strict to be with domain-matching
rules for Netscape cookies:
DomainStrictNoDots: when setting cookies, host prefix must not contain a
dot (e.g. www.foo.bar.com can't set a cookie for .bar.com, because
www.foo contains a dot)
DomainStrictNonDomain: cookies that did not explicitly specify a Domain
cookie-attribute can only be returned to a domain that string-compares
equal to the domain that set the cookie (e.g. rockets.acme.com won't
be returned cookies from acme.com that had no Domain cookie-attribute)
DomainRFC2965Match: when setting cookies, require a full RFC 2965
domain-match
DomainLiberal and DomainStrict are the most useful combinations of the
above flags, for convenience
strict_ns_set_initial_dollar: ignore cookies in Set-Cookie: headers that
have names starting with '$'
strict_ns_set_path: don't allow setting cookies whose path doesn't
path-match request URI
"""
DomainStrictNoDots = 1
DomainStrictNonDomain = 2
DomainRFC2965Match = 4
DomainLiberal = 0
DomainStrict = DomainStrictNoDots|DomainStrictNonDomain
def __init__(self,
blocked_domains=None, allowed_domains=None,
netscape=True, rfc2965=False,
# WARNING: this argument will change or go away if is not
# accepted into the Python standard library in this form!
# default, ie. treat 2109 as netscape iff not rfc2965
rfc2109_as_netscape=None,
hide_cookie2=False,
strict_domain=False,
strict_rfc2965_unverifiable=True,
strict_ns_unverifiable=False,
strict_ns_domain=DomainLiberal,
strict_ns_set_initial_dollar=False,
strict_ns_set_path=False,
):
"""
Constructor arguments should be used as keyword arguments only.
blocked_domains: sequence of domain names that we never accept cookies
from, nor return cookies to
allowed_domains: if not None, this is a sequence of the only domains
for which we accept and return cookies
For other arguments, see CookiePolicy.__doc__ and
DefaultCookiePolicy.__doc__..
"""
self.netscape = netscape
self.rfc2965 = rfc2965
self.rfc2109_as_netscape = rfc2109_as_netscape
self.hide_cookie2 = hide_cookie2
self.strict_domain = strict_domain
self.strict_rfc2965_unverifiable = strict_rfc2965_unverifiable
self.strict_ns_unverifiable = strict_ns_unverifiable
self.strict_ns_domain = strict_ns_domain
self.strict_ns_set_initial_dollar = strict_ns_set_initial_dollar
self.strict_ns_set_path = strict_ns_set_path
if blocked_domains is not None:
self._blocked_domains = tuple(blocked_domains)
else:
self._blocked_domains = ()
if allowed_domains is not None:
allowed_domains = tuple(allowed_domains)
self._allowed_domains = allowed_domains
def blocked_domains(self):
"""Return the sequence of blocked domains (as a tuple)."""
return self._blocked_domains
def set_blocked_domains(self, blocked_domains):
"""Set the sequence of blocked domains."""
self._blocked_domains = tuple(blocked_domains)
def is_blocked(self, domain):
for blocked_domain in self._blocked_domains:
if user_domain_match(domain, blocked_domain):
return True
return False
def allowed_domains(self):
"""Return None, or the sequence of allowed domains (as a tuple)."""
return self._allowed_domains
def set_allowed_domains(self, allowed_domains):
"""Set the sequence of allowed domains, or None."""
if allowed_domains is not None:
allowed_domains = tuple(allowed_domains)
self._allowed_domains = allowed_domains
def is_not_allowed(self, domain):
if self._allowed_domains is None:
return False
for allowed_domain in self._allowed_domains:
if user_domain_match(domain, allowed_domain):
return False
return True
def set_ok(self, cookie, request):
"""
If you override set_ok, be sure to call this method. If it returns
false, so should your subclass (assuming your subclass wants to be more
strict about which cookies to accept).
"""
debug(" - checking cookie %s", cookie)
assert cookie.name is not None
for n in "version", "verifiability", "name", "path", "domain", "port":
fn_name = "set_ok_"+n
fn = getattr(self, fn_name)
if not fn(cookie, request):
return False
return True
def set_ok_version(self, cookie, request):
if cookie.version is None:
# Version is always set to 0 by parse_ns_headers if it's a Netscape
# cookie, so this must be an invalid RFC 2965 cookie.
debug(" Set-Cookie2 without version attribute (%s)", cookie)
return False
if cookie.version > 0 and not self.rfc2965:
debug(" RFC 2965 cookies are switched off")
return False
elif cookie.version == 0 and not self.netscape:
debug(" Netscape cookies are switched off")
return False
return True
def set_ok_verifiability(self, cookie, request):
if request_is_unverifiable(request) and is_third_party(request):
if cookie.version > 0 and self.strict_rfc2965_unverifiable:
debug(" third-party RFC 2965 cookie during "
"unverifiable transaction")
return False
elif cookie.version == 0 and self.strict_ns_unverifiable:
debug(" third-party Netscape cookie during "
"unverifiable transaction")
return False
return True
def set_ok_name(self, cookie, request):
# Try and stop servers setting V0 cookies designed to hack other
# servers that know both V0 and V1 protocols.
if (cookie.version == 0 and self.strict_ns_set_initial_dollar and
cookie.name.startswith("$")):
debug(" illegal name (starts with '$'): '%s'", cookie.name)
return False
return True
def set_ok_path(self, cookie, request):
if cookie.path_specified:
req_path = request_path(request)
if ((cookie.version > 0 or
(cookie.version == 0 and self.strict_ns_set_path)) and
not req_path.startswith(cookie.path)):
debug(" path attribute %s is not a prefix of request "
"path %s", cookie.path, req_path)
return False
return True
def set_ok_countrycode_domain(self, cookie, request):
"""Return False if explicit cookie domain is not acceptable.
Called by set_ok_domain, for convenience of overriding by
subclasses.
"""
if cookie.domain_specified and self.strict_domain:
domain = cookie.domain
# since domain was specified, we know that:
assert domain.startswith(".")
if domain.count(".") == 2:
# domain like .foo.bar
i = domain.rfind(".")
tld = domain[i+1:]
sld = domain[1:i]
if (sld.lower() in [
"co", "ac",
"com", "edu", "org", "net", "gov", "mil", "int",
"aero", "biz", "cat", "coop", "info", "jobs", "mobi",
"museum", "name", "pro", "travel",
] and
len(tld) == 2):
# domain like .co.uk
return False
return True
def set_ok_domain(self, cookie, request):
if self.is_blocked(cookie.domain):
debug(" domain %s is in user block-list", cookie.domain)
return False
if self.is_not_allowed(cookie.domain):
debug(" domain %s is not in user allow-list", cookie.domain)
return False
if not self.set_ok_countrycode_domain(cookie, request):
debug(" country-code second level domain %s", cookie.domain)
return False
if cookie.domain_specified:
req_host, erhn = eff_request_host_lc(request)
domain = cookie.domain
if domain.startswith("."):
undotted_domain = domain[1:]
else:
undotted_domain = domain
embedded_dots = (undotted_domain.find(".") >= 0)
if not embedded_dots and domain != ".local":
debug(" non-local domain %s contains no embedded dot",
domain)
return False
if cookie.version == 0:
if (not erhn.endswith(domain) and
(not erhn.startswith(".") and
not ("."+erhn).endswith(domain))):
debug(" effective request-host %s (even with added "
"initial dot) does not end end with %s",
erhn, domain)
return False
if (cookie.version > 0 or
(self.strict_ns_domain & self.DomainRFC2965Match)):
if not domain_match(erhn, domain):
debug(" effective request-host %s does not domain-match "
"%s", erhn, domain)
return False
if (cookie.version > 0 or
(self.strict_ns_domain & self.DomainStrictNoDots)):
host_prefix = req_host[:-len(domain)]
if (host_prefix.find(".") >= 0 and
not IPV4_RE.search(req_host)):
debug(" host prefix %s for domain %s contains a dot",
host_prefix, domain)
return False
return True
def set_ok_port(self, cookie, request):
if cookie.port_specified:
req_port = request_port(request)
if req_port is None:
req_port = "80"
else:
req_port = str(req_port)
for p in cookie.port.split(","):
try:
int(p)
except ValueError:
debug(" bad port %s (not numeric)", p)
return False
if p == req_port:
break
else:
debug(" request port (%s) not found in %s",
req_port, cookie.port)
return False
return True
def return_ok(self, cookie, request):
"""
If you override return_ok, be sure to call this method. If it returns
false, so should your subclass (assuming your subclass wants to be more
strict about which cookies to return).
"""
# Path has already been checked by path_return_ok, and domain blocking
# done by domain_return_ok.
debug(" - checking cookie %s", cookie)
for n in ("version", "verifiability", "secure", "expires", "port",
"domain"):
fn_name = "return_ok_"+n
fn = getattr(self, fn_name)
if not fn(cookie, request):
return False
return True
def return_ok_version(self, cookie, request):
if cookie.version > 0 and not self.rfc2965:
debug(" RFC 2965 cookies are switched off")
return False
elif cookie.version == 0 and not self.netscape:
debug(" Netscape cookies are switched off")
return False
return True
def return_ok_verifiability(self, cookie, request):
if request_is_unverifiable(request) and is_third_party(request):
if cookie.version > 0 and self.strict_rfc2965_unverifiable:
debug(" third-party RFC 2965 cookie during unverifiable "
"transaction")
return False
elif cookie.version == 0 and self.strict_ns_unverifiable:
debug(" third-party Netscape cookie during unverifiable "
"transaction")
return False
return True
def return_ok_secure(self, cookie, request):
if cookie.secure and request.get_type() != "https":
debug(" secure cookie with non-secure request")
return False
return True
def return_ok_expires(self, cookie, request):
if cookie.is_expired(self._now):
debug(" cookie expired")
return False
return True
def return_ok_port(self, cookie, request):
if cookie.port:
req_port = request_port(request)
if req_port is None:
req_port = "80"
for p in cookie.port.split(","):
if p == req_port:
break
else:
debug(" request port %s does not match cookie port %s",
req_port, cookie.port)
return False
return True
def return_ok_domain(self, cookie, request):
req_host, erhn = eff_request_host_lc(request)
domain = cookie.domain
# strict check of non-domain cookies: Mozilla does this, MSIE5 doesn't
if (cookie.version == 0 and
(self.strict_ns_domain & self.DomainStrictNonDomain) and
not cookie.domain_specified and domain != erhn):
debug(" cookie with unspecified domain does not string-compare "
"equal to request domain")
return False
if cookie.version > 0 and not domain_match(erhn, domain):
debug(" effective request-host name %s does not domain-match "
"RFC 2965 cookie domain %s", erhn, domain)
return False
if cookie.version == 0 and not ("."+erhn).endswith(domain):
debug(" request-host %s does not match Netscape cookie domain "
"%s", req_host, domain)
return False
return True
def domain_return_ok(self, domain, request):
# Liberal check of domain. This is here as an optimization to avoid
# having to load lots of MSIE cookie files unless necessary.
# Munge req_host and erhn to always start with a dot, so as to err on
# the side of letting cookies through.
dotted_req_host, dotted_erhn = eff_request_host_lc(request)
if not dotted_req_host.startswith("."):
dotted_req_host = "."+dotted_req_host
if not dotted_erhn.startswith("."):
dotted_erhn = "."+dotted_erhn
if not (dotted_req_host.endswith(domain) or
dotted_erhn.endswith(domain)):
#debug(" request domain %s does not match cookie domain %s",
# req_host, domain)
return False
if self.is_blocked(domain):
debug(" domain %s is in user block-list", domain)
return False
if self.is_not_allowed(domain):
debug(" domain %s is not in user allow-list", domain)
return False
return True
def path_return_ok(self, path, request):
debug("- checking cookie path=%s", path)
req_path = request_path(request)
if not req_path.startswith(path):
debug(" %s does not path-match %s", req_path, path)
return False
return True
def vals_sorted_by_key(adict):
keys = adict.keys()
keys.sort()
return map(adict.get, keys)
class MappingIterator:
"""Iterates over nested mapping, depth-first, in sorted order by key."""
def __init__(self, mapping):
self._s = [(vals_sorted_by_key(mapping), 0, None)] # LIFO stack
def __iter__(self): return self
def next(self):
# this is hairy because of lack of generators
while 1:
try:
vals, i, prev_item = self._s.pop()
except IndexError:
raise StopIteration()
if i < len(vals):
item = vals[i]
i = i + 1
self._s.append((vals, i, prev_item))
try:
item.items
except AttributeError:
# non-mapping
break
else:
# mapping
self._s.append((vals_sorted_by_key(item), 0, item))
continue
return item
# Used as second parameter to dict.get method, to distinguish absent
# dict key from one with a None value.
class Absent: pass
class CookieJar:
"""Collection of HTTP cookies.
You may not need to know about this class: try mechanize.urlopen().
The major methods are extract_cookies and add_cookie_header; these are all
you are likely to need.
CookieJar supports the iterator protocol:
for cookie in cookiejar:
# do something with cookie
Methods:
add_cookie_header(request)
extract_cookies(response, request)
get_policy()
set_policy(policy)
cookies_for_request(request)
make_cookies(response, request)
set_cookie_if_ok(cookie, request)
set_cookie(cookie)
clear_session_cookies()
clear_expired_cookies()
clear(domain=None, path=None, name=None)
Public attributes
policy: CookiePolicy object
"""
non_word_re = re.compile(r"\W")
quote_re = re.compile(r"([\"\\])")
strict_domain_re = re.compile(r"\.?[^.]*")
domain_re = re.compile(r"[^.]*")
dots_re = re.compile(r"^\.+")
def __init__(self, policy=None):
"""
See CookieJar.__doc__ for argument documentation.
"""
if policy is None:
policy = DefaultCookiePolicy()
self._policy = policy
self._cookies = {}
# for __getitem__ iteration in pre-2.2 Pythons
self._prev_getitem_index = 0
def get_policy(self):
return self._policy
def set_policy(self, policy):
self._policy = policy
def _cookies_for_domain(self, domain, request):
cookies = []
if not self._policy.domain_return_ok(domain, request):
return []
debug("Checking %s for cookies to return", domain)
cookies_by_path = self._cookies[domain]
for path in cookies_by_path.keys():
if not self._policy.path_return_ok(path, request):
continue
cookies_by_name = cookies_by_path[path]
for cookie in cookies_by_name.values():
if not self._policy.return_ok(cookie, request):
debug(" not returning cookie")
continue
debug(" it's a match")
cookies.append(cookie)
return cookies
def cookies_for_request(self, request):
"""Return a list of cookies to be returned to server.
The returned list of cookie instances is sorted in the order they
should appear in the Cookie: header for return to the server.
See add_cookie_header.__doc__ for the interface required of the
request argument.
New in version 0.1.10
"""
self._policy._now = self._now = int(time.time())
cookies = self._cookies_for_request(request)
# add cookies in order of most specific (i.e. longest) path first
def decreasing_size(a, b): return cmp(len(b.path), len(a.path))
cookies.sort(decreasing_size)
return cookies
def _cookies_for_request(self, request):
"""Return a list of cookies to be returned to server."""
# this method still exists (alongside cookies_for_request) because it
# is part of an implied protected interface for subclasses of cookiejar
# XXX document that implied interface, or provide another way of
# implementing cookiejars than subclassing
cookies = []
for domain in self._cookies.keys():
cookies.extend(self._cookies_for_domain(domain, request))
return cookies
def _cookie_attrs(self, cookies):
"""Return a list of cookie-attributes to be returned to server.
The $Version attribute is also added when appropriate (currently only
once per request).
>>> jar = CookieJar()
>>> ns_cookie = Cookie(0, "foo", '"bar"', None, False,
... "example.com", False, False,
... "/", False, False, None, True,
... None, None, {})
>>> jar._cookie_attrs([ns_cookie])
['foo="bar"']
>>> rfc2965_cookie = Cookie(1, "foo", "bar", None, False,
... ".example.com", True, False,
... "/", False, False, None, True,
... None, None, {})
>>> jar._cookie_attrs([rfc2965_cookie])
['$Version=1', 'foo=bar', '$Domain="example.com"']
"""
version_set = False
attrs = []
for cookie in cookies:
# set version of Cookie header
# XXX
# What should it be if multiple matching Set-Cookie headers have
# different versions themselves?
# Answer: there is no answer; was supposed to be settled by
# RFC 2965 errata, but that may never appear...
version = cookie.version
if not version_set:
version_set = True
if version > 0:
attrs.append("$Version=%s" % version)
# quote cookie value if necessary
# (not for Netscape protocol, which already has any quotes
# intact, due to the poorly-specified Netscape Cookie: syntax)
if ((cookie.value is not None) and
self.non_word_re.search(cookie.value) and version > 0):
value = self.quote_re.sub(r"\\\1", cookie.value)
else:
value = cookie.value
# add cookie-attributes to be returned in Cookie header
if cookie.value is None:
attrs.append(cookie.name)
else:
attrs.append("%s=%s" % (cookie.name, value))
if version > 0:
if cookie.path_specified:
attrs.append('$Path="%s"' % cookie.path)
if cookie.domain.startswith("."):
domain = cookie.domain
if (not cookie.domain_initial_dot and
domain.startswith(".")):
domain = domain[1:]
attrs.append('$Domain="%s"' % domain)
if cookie.port is not None:
p = "$Port"
if cookie.port_specified:
p = p + ('="%s"' % cookie.port)
attrs.append(p)
return attrs
def add_cookie_header(self, request):
"""Add correct Cookie: header to request (mechanize.Request object).
The Cookie2 header is also added unless policy.hide_cookie2 is true.
The request object (usually a mechanize.Request instance) must support
the methods get_full_url, get_host, is_unverifiable, get_type,
has_header, get_header, header_items and add_unredirected_header, as
documented by urllib2.
"""
debug("add_cookie_header")
cookies = self.cookies_for_request(request)
attrs = self._cookie_attrs(cookies)
if attrs:
if not request.has_header("Cookie"):
request.add_unredirected_header("Cookie", "; ".join(attrs))
# if necessary, advertise that we know RFC 2965
if self._policy.rfc2965 and not self._policy.hide_cookie2:
for cookie in cookies:
if cookie.version != 1 and not request.has_header("Cookie2"):
request.add_unredirected_header("Cookie2", '$Version="1"')
break
self.clear_expired_cookies()
def _normalized_cookie_tuples(self, attrs_set):
"""Return list of tuples containing normalised cookie information.
attrs_set is the list of lists of key,value pairs extracted from
the Set-Cookie or Set-Cookie2 headers.
Tuples are name, value, standard, rest, where name and value are the
cookie name and value, standard is a dictionary containing the standard
cookie-attributes (discard, secure, version, expires or max-age,
domain, path and port) and rest is a dictionary containing the rest of
the cookie-attributes.
"""
cookie_tuples = []
boolean_attrs = "discard", "secure"
value_attrs = ("version",
"expires", "max-age",
"domain", "path", "port",
"comment", "commenturl")
for cookie_attrs in attrs_set:
name, value = cookie_attrs[0]
# Build dictionary of standard cookie-attributes (standard) and
# dictionary of other cookie-attributes (rest).
# Note: expiry time is normalised to seconds since epoch. V0
# cookies should have the Expires cookie-attribute, and V1 cookies
# should have Max-Age, but since V1 includes RFC 2109 cookies (and
# since V0 cookies may be a mish-mash of Netscape and RFC 2109), we
# accept either (but prefer Max-Age).
max_age_set = False
bad_cookie = False
standard = {}
rest = {}
for k, v in cookie_attrs[1:]:
lc = k.lower()
# don't lose case distinction for unknown fields
if lc in value_attrs or lc in boolean_attrs:
k = lc
if k in boolean_attrs and v is None:
# boolean cookie-attribute is present, but has no value
# (like "discard", rather than "port=80")
v = True
if standard.has_key(k):
# only first value is significant
continue
if k == "domain":
if v is None:
debug(" missing value for domain attribute")
bad_cookie = True
break
# RFC 2965 section 3.3.3
v = v.lower()
if k == "expires":
if max_age_set:
# Prefer max-age to expires (like Mozilla)
continue
if v is None:
debug(" missing or invalid value for expires "
"attribute: treating as session cookie")
continue
if k == "max-age":
max_age_set = True
if v is None:
debug(" missing value for max-age attribute")
bad_cookie = True
break
try:
v = int(v)
except ValueError:
debug(" missing or invalid (non-numeric) value for "
"max-age attribute")
bad_cookie = True
break
# convert RFC 2965 Max-Age to seconds since epoch
# XXX Strictly you're supposed to follow RFC 2616
# age-calculation rules. Remember that zero Max-Age is a
# is a request to discard (old and new) cookie, though.
k = "expires"
v = self._now + v
if (k in value_attrs) or (k in boolean_attrs):
if (v is None and
k not in ["port", "comment", "commenturl"]):
debug(" missing value for %s attribute" % k)
bad_cookie = True
break
standard[k] = v
else:
rest[k] = v
if bad_cookie:
continue
cookie_tuples.append((name, value, standard, rest))
return cookie_tuples
def _cookie_from_cookie_tuple(self, tup, request):
# standard is dict of standard cookie-attributes, rest is dict of the
# rest of them
name, value, standard, rest = tup
domain = standard.get("domain", Absent)
path = standard.get("path", Absent)
port = standard.get("port", Absent)
expires = standard.get("expires", Absent)
# set the easy defaults
version = standard.get("version", None)
if version is not None:
try:
version = int(version)
except ValueError:
return None # invalid version, ignore cookie
secure = standard.get("secure", False)
# (discard is also set if expires is Absent)
discard = standard.get("discard", False)
comment = standard.get("comment", None)
comment_url = standard.get("commenturl", None)
# set default path
if path is not Absent and path != "":
path_specified = True
path = escape_path(path)
else:
path_specified = False
path = request_path(request)
i = path.rfind("/")
if i != -1:
if version == 0:
# Netscape spec parts company from reality here
path = path[:i]
else:
path = path[:i+1]
if len(path) == 0: path = "/"
# set default domain
domain_specified = domain is not Absent
# but first we have to remember whether it starts with a dot
domain_initial_dot = False
if domain_specified:
domain_initial_dot = bool(domain.startswith("."))
if domain is Absent:
req_host, erhn = eff_request_host_lc(request)
domain = erhn
elif not domain.startswith("."):
domain = "."+domain
# set default port
port_specified = False
if port is not Absent:
if port is None:
# Port attr present, but has no value: default to request port.
# Cookie should then only be sent back on that port.
port = request_port(request)
else:
port_specified = True
port = re.sub(r"\s+", "", port)
else:
# No port attr present. Cookie can be sent back on any port.
port = None
# set default expires and discard
if expires is Absent:
expires = None
discard = True
return Cookie(version,
name, value,
port, port_specified,
domain, domain_specified, domain_initial_dot,
path, path_specified,
secure,
expires,
discard,
comment,
comment_url,
rest)
def _cookies_from_attrs_set(self, attrs_set, request):
cookie_tuples = self._normalized_cookie_tuples(attrs_set)
cookies = []
for tup in cookie_tuples:
cookie = self._cookie_from_cookie_tuple(tup, request)
if cookie: cookies.append(cookie)
return cookies
def _process_rfc2109_cookies(self, cookies):
if self._policy.rfc2109_as_netscape is None:
rfc2109_as_netscape = not self._policy.rfc2965
else:
rfc2109_as_netscape = self._policy.rfc2109_as_netscape
for cookie in cookies:
if cookie.version == 1:
cookie.rfc2109 = True
if rfc2109_as_netscape:
# treat 2109 cookies as Netscape cookies rather than
# as RFC2965 cookies
cookie.version = 0
def _make_cookies(self, response, request):
# get cookie-attributes for RFC 2965 and Netscape protocols
headers = response.info()
rfc2965_hdrs = headers.getheaders("Set-Cookie2")
ns_hdrs = headers.getheaders("Set-Cookie")
rfc2965 = self._policy.rfc2965
netscape = self._policy.netscape
if ((not rfc2965_hdrs and not ns_hdrs) or
(not ns_hdrs and not rfc2965) or
(not rfc2965_hdrs and not netscape) or
(not netscape and not rfc2965)):
return [] # no relevant cookie headers: quick exit
try:
cookies = self._cookies_from_attrs_set(
split_header_words(rfc2965_hdrs), request)
except:
reraise_unmasked_exceptions()
cookies = []
if ns_hdrs and netscape:
try:
# RFC 2109 and Netscape cookies
ns_cookies = self._cookies_from_attrs_set(
parse_ns_headers(ns_hdrs), request)
except:
reraise_unmasked_exceptions()
ns_cookies = []
self._process_rfc2109_cookies(ns_cookies)
# Look for Netscape cookies (from Set-Cookie headers) that match
# corresponding RFC 2965 cookies (from Set-Cookie2 headers).
# For each match, keep the RFC 2965 cookie and ignore the Netscape
# cookie (RFC 2965 section 9.1). Actually, RFC 2109 cookies are
# bundled in with the Netscape cookies for this purpose, which is
# reasonable behaviour.
if rfc2965:
lookup = {}
for cookie in cookies:
lookup[(cookie.domain, cookie.path, cookie.name)] = None
def no_matching_rfc2965(ns_cookie, lookup=lookup):
key = ns_cookie.domain, ns_cookie.path, ns_cookie.name
return not lookup.has_key(key)
ns_cookies = filter(no_matching_rfc2965, ns_cookies)
if ns_cookies:
cookies.extend(ns_cookies)
return cookies
def make_cookies(self, response, request):
"""Return sequence of Cookie objects extracted from response object.
See extract_cookies.__doc__ for the interface required of the
response and request arguments.
"""
self._policy._now = self._now = int(time.time())
return [cookie for cookie in self._make_cookies(response, request)
if cookie.expires is None or not cookie.expires <= self._now]
def set_cookie_if_ok(self, cookie, request):
"""Set a cookie if policy says it's OK to do so.
cookie: mechanize.Cookie instance
request: see extract_cookies.__doc__ for the required interface
"""
self._policy._now = self._now = int(time.time())
if self._policy.set_ok(cookie, request):
self.set_cookie(cookie)
def set_cookie(self, cookie):
"""Set a cookie, without checking whether or not it should be set.
cookie: mechanize.Cookie instance
"""
c = self._cookies
if not c.has_key(cookie.domain): c[cookie.domain] = {}
c2 = c[cookie.domain]
if not c2.has_key(cookie.path): c2[cookie.path] = {}
c3 = c2[cookie.path]
c3[cookie.name] = cookie
def extract_cookies(self, response, request):
"""Extract cookies from response, where allowable given the request.
Look for allowable Set-Cookie: and Set-Cookie2: headers in the response
object passed as argument. Any of these headers that are found are
used to update the state of the object (subject to the policy.set_ok
method's approval).
The response object (usually be the result of a call to
mechanize.urlopen, or similar) should support an info method, which
returns a mimetools.Message object (in fact, the 'mimetools.Message
object' may be any object that provides a getheaders method).
The request object (usually a mechanize.Request instance) must support
the methods get_full_url, get_type, get_host, and is_unverifiable, as
documented by mechanize, and the port attribute (the port number). The
request is used to set default values for cookie-attributes as well as
for checking that the cookie is OK to be set.
"""
debug("extract_cookies: %s", response.info())
self._policy._now = self._now = int(time.time())
for cookie in self._make_cookies(response, request):
if cookie.expires is not None and cookie.expires <= self._now:
# Expiry date in past is request to delete cookie. This can't be
# in DefaultCookiePolicy, because can't delete cookies there.
try:
self.clear(cookie.domain, cookie.path, cookie.name)
except KeyError:
pass
debug("Expiring cookie, domain='%s', path='%s', name='%s'",
cookie.domain, cookie.path, cookie.name)
elif self._policy.set_ok(cookie, request):
debug(" setting cookie: %s", cookie)
self.set_cookie(cookie)
def clear(self, domain=None, path=None, name=None):
"""Clear some cookies.
Invoking this method without arguments will clear all cookies. If
given a single argument, only cookies belonging to that domain will be
removed. If given two arguments, cookies belonging to the specified
path within that domain are removed. If given three arguments, then
the cookie with the specified name, path and domain is removed.
Raises KeyError if no matching cookie exists.
"""
if name is not None:
if (domain is None) or (path is None):
raise ValueError(
"domain and path must be given to remove a cookie by name")
del self._cookies[domain][path][name]
elif path is not None:
if domain is None:
raise ValueError(
"domain must be given to remove cookies by path")
del self._cookies[domain][path]
elif domain is not None:
del self._cookies[domain]
else:
self._cookies = {}
def clear_session_cookies(self):
"""Discard all session cookies.
Discards all cookies held by object which had either no Max-Age or
Expires cookie-attribute or an explicit Discard cookie-attribute, or
which otherwise have ended up with a true discard attribute. For
interactive browsers, the end of a session usually corresponds to
closing the browser window.
Note that the save method won't save session cookies anyway, unless you
ask otherwise by passing a true ignore_discard argument.
"""
for cookie in self:
if cookie.discard:
self.clear(cookie.domain, cookie.path, cookie.name)
def clear_expired_cookies(self):
"""Discard all expired cookies.
You probably don't need to call this method: expired cookies are never
sent back to the server (provided you're using DefaultCookiePolicy),
this method is called by CookieJar itself every so often, and the save
method won't save expired cookies anyway (unless you ask otherwise by
passing a true ignore_expires argument).
"""
now = time.time()
for cookie in self:
if cookie.is_expired(now):
self.clear(cookie.domain, cookie.path, cookie.name)
def __getitem__(self, i):
if i == 0:
self._getitem_iterator = self.__iter__()
elif self._prev_getitem_index != i-1: raise IndexError(
"CookieJar.__getitem__ only supports sequential iteration")
self._prev_getitem_index = i
try:
return self._getitem_iterator.next()
except StopIteration:
raise IndexError()
def __iter__(self):
return MappingIterator(self._cookies)
def __len__(self):
"""Return number of contained cookies."""
i = 0
for cookie in self: i = i + 1
return i
def __repr__(self):
r = []
for cookie in self: r.append(repr(cookie))
return "<%s[%s]>" % (self.__class__, ", ".join(r))
def __str__(self):
r = []
for cookie in self: r.append(str(cookie))
return "<%s[%s]>" % (self.__class__, ", ".join(r))
class LoadError(Exception): pass
class FileCookieJar(CookieJar):
"""CookieJar that can be loaded from and saved to a file.
Additional methods
save(filename=None, ignore_discard=False, ignore_expires=False)
load(filename=None, ignore_discard=False, ignore_expires=False)
revert(filename=None, ignore_discard=False, ignore_expires=False)
Additional public attributes
filename: filename for loading and saving cookies
Additional public readable attributes
delayload: request that cookies are lazily loaded from disk; this is only
a hint since this only affects performance, not behaviour (unless the
cookies on disk are changing); a CookieJar object may ignore it (in fact,
only MSIECookieJar lazily loads cookies at the moment)
"""
def __init__(self, filename=None, delayload=False, policy=None):
"""
See FileCookieJar.__doc__ for argument documentation.
Cookies are NOT loaded from the named file until either the load or
revert method is called.
"""
CookieJar.__init__(self, policy)
if filename is not None and not isstringlike(filename):
raise ValueError("filename must be string-like")
self.filename = filename
self.delayload = bool(delayload)
def save(self, filename=None, ignore_discard=False, ignore_expires=False):
"""Save cookies to a file.
filename: name of file in which to save cookies
ignore_discard: save even cookies set to be discarded
ignore_expires: save even cookies that have expired
The file is overwritten if it already exists, thus wiping all its
cookies. Saved cookies can be restored later using the load or revert
methods. If filename is not specified, self.filename is used; if
self.filename is None, ValueError is raised.
"""
raise NotImplementedError()
def load(self, filename=None, ignore_discard=False, ignore_expires=False):
"""Load cookies from a file.
Old cookies are kept unless overwritten by newly loaded ones.
Arguments are as for .save().
If filename is not specified, self.filename is used; if self.filename
is None, ValueError is raised. The named file must be in the format
understood by the class, or LoadError will be raised. This format will
be identical to that written by the save method, unless the load format
is not sufficiently well understood (as is the case for MSIECookieJar).
"""
if filename is None:
if self.filename is not None: filename = self.filename
else: raise ValueError(MISSING_FILENAME_TEXT)
f = open(filename)
try:
self._really_load(f, filename, ignore_discard, ignore_expires)
finally:
f.close()
def revert(self, filename=None,
ignore_discard=False, ignore_expires=False):
"""Clear all cookies and reload cookies from a saved file.
Raises LoadError (or IOError) if reversion is not successful; the
object's state will not be altered if this happens.
"""
if filename is None:
if self.filename is not None: filename = self.filename
else: raise ValueError(MISSING_FILENAME_TEXT)
old_state = copy.deepcopy(self._cookies)
self._cookies = {}
try:
self.load(filename, ignore_discard, ignore_expires)
except (LoadError, IOError):
self._cookies = old_state
raise
================================================
FILE: BruteXSS/mechanize/_debug.py
================================================
import logging
from _response import response_seek_wrapper
from _urllib2_fork import BaseHandler
class HTTPResponseDebugProcessor(BaseHandler):
handler_order = 900 # before redirections, after everything else
def http_response(self, request, response):
if not hasattr(response, "seek"):
response = response_seek_wrapper(response)
info = logging.getLogger("mechanize.http_responses").info
try:
info(response.read())
finally:
response.seek(0)
info("*****************************************************")
return response
https_response = http_response
class HTTPRedirectDebugProcessor(BaseHandler):
def http_request(self, request):
if hasattr(request, "redirect_dict"):
info = logging.getLogger("mechanize.http_redirects").info
info("redirecting to %s", request.get_full_url())
return request
================================================
FILE: BruteXSS/mechanize/_firefox3cookiejar.py
================================================
"""Firefox 3 "cookies.sqlite" cookie persistence.
Copyright 2008 John J Lee <jjl@pobox.com>
This code is free software; you can redistribute it and/or modify it
under the terms of the BSD or ZPL 2.1 licenses (see the file
COPYING.txt included with the distribution).
"""
import logging
import time
from _clientcookie import CookieJar, Cookie, MappingIterator
from _util import isstringlike, experimental
debug = logging.getLogger("mechanize.cookies").debug
class Firefox3CookieJar(CookieJar):
"""Firefox 3 cookie jar.
The cookies are stored in Firefox 3's "cookies.sqlite" format.
Constructor arguments:
filename: filename of cookies.sqlite (typically found at the top level
of a firefox profile directory)
autoconnect: as a convenience, connect to the SQLite cookies database at
Firefox3CookieJar construction time (default True)
policy: an object satisfying the mechanize.CookiePolicy interface
Note that this is NOT a FileCookieJar, and there are no .load(),
.save() or .restore() methods. The database is in sync with the
cookiejar object's state after each public method call.
Following Firefox's own behaviour, session cookies are never saved to
the database.
The file is created, and an sqlite database written to it, if it does
not already exist. The moz_cookies database table is created if it does
not already exist.
"""
# XXX
# handle DatabaseError exceptions
# add a FileCookieJar (explicit .save() / .revert() / .load() methods)
def __init__(self, filename, autoconnect=True, policy=None):
experimental("Firefox3CookieJar is experimental code")
CookieJar.__init__(self, policy)
if filename is not None and not isstringlike(filename):
raise ValueError("filename must be string-like")
self.filename = filename
self._conn = None
if autoconnect:
self.connect()
def connect(self):
import sqlite3 # not available in Python 2.4 stdlib
self._conn = sqlite3.connect(self.filename)
self._conn.isolation_level = "DEFERRED"
self._create_table_if_necessary()
def close(self):
self._conn.close()
def _transaction(self, func):
try:
cur = self._conn.cursor()
try:
result = func(cur)
finally:
cur.close()
except:
self._conn.rollback()
raise
else:
self._conn.commit()
return result
def _execute(self, query, params=()):
return self._transaction(lambda cur: cur.execute(query, params))
def _query(self, query, params=()):
# XXX should we bother with a transaction?
cur = self._conn.cursor()
try:
cur.execute(query, params)
return cur.fetchall()
finally:
cur.close()
def _create_table_if_necessary(self):
self._execute("""\
CREATE TABLE IF NOT EXISTS moz_cookies (id INTEGER PRIMARY KEY, name TEXT,
value TEXT, host TEXT, path TEXT,expiry INTEGER,
lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER)""")
def _cookie_from_row(self, row):
(pk, name, value, domain, path, expires,
last_accessed, secure, http_only) = row
version = 0
domain = domain.encode("ascii", "ignore")
path = path.encode("ascii", "ignore")
name = name.encode("ascii", "ignore")
value = value.encode("ascii", "ignore")
secure = bool(secure)
# last_accessed isn't a cookie attribute, so isn't added to rest
rest = {}
if http_only:
rest["HttpOnly"] = None
if name == "":
name = value
value = None
initial_dot = domain.startswith(".")
domain_specified = initial_dot
discard = False
if expires == "":
expires = None
discard = True
return Cookie(version, name, value,
None, False,
domain, domain_specified, initial_dot,
path, False,
secure,
expires,
discard,
None,
None,
rest)
def clear(self, domain=None, path=None, name=None):
CookieJar.clear(self, domain, path, name)
where_parts = []
sql_params = []
if domain is not None:
where_parts.append("host = ?")
sql_params.append(domain)
if path is not None:
where_parts.append("path = ?")
sql_params.append(path)
if name is not None:
where_parts.append("name = ?")
sql_params.append(name)
where = " AND ".join(where_parts)
if where:
where = " WHERE " + where
def clear(cur):
cur.execute("DELETE FROM moz_cookies%s" % where,
tuple(sql_params))
self._transaction(clear)
def _row_from_cookie(self, cookie, cur):
expires = cookie.expires
if cookie.discard:
expires = ""
domain = unicode(cookie.domain)
path = unicode(cookie.path)
name = unicode(cookie.name)
value = unicode(cookie.value)
secure = bool(int(cookie.secure))
if value is None:
value = name
name = ""
last_accessed = int(time.time())
http_only = cookie.has_nonstandard_attr("HttpOnly")
query = cur.execute("""SELECT MAX(id) + 1 from moz_cookies""")
pk = query.fetchone()[0]
if pk is None:
pk = 1
return (pk, name, value, domain, path, expires,
last_accessed, secure, http_only)
def set_cookie(self, cookie):
if cookie.discard:
CookieJar.set_cookie(self, cookie)
return
def set_cookie(cur):
# XXX
# is this RFC 2965-correct?
# could this do an UPDATE instead?
row = self._row_from_cookie(cookie, cur)
name, unused, domain, path = row[1:5]
cur.execute("""\
DELETE FROM moz_cookies WHERE host = ? AND path = ? AND name = ?""",
(domain, path, name))
cur.execute("""\
INSERT INTO moz_cookies VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
""", row)
self._transaction(set_cookie)
def __iter__(self):
# session (non-persistent) cookies
for cookie in MappingIterator(self._cookies):
yield cookie
# persistent cookies
for row in self._query("""\
SELECT * FROM moz_cookies ORDER BY name, path, host"""):
yield self._cookie_from_row(row)
def _cookies_for_request(self, request):
session_cookies = CookieJar._cookies_for_request(self, request)
def get_cookies(cur):
query = cur.execute("SELECT host from moz_cookies")
domains = [row[0] for row in query.fetchall()]
cookies = []
for domain in domains:
cookies += self._persist
gitextract_q3uml0q4/
├── .gitignore
├── BruteXSS/
│ ├── License.txt
│ ├── README.md
│ ├── brutexss.py
│ ├── colorama/
│ │ ├── __init__.py
│ │ ├── ansi.py
│ │ ├── ansitowin32.py
│ │ ├── initialise.py
│ │ ├── win32.py
│ │ └── winterm.py
│ ├── mechanize/
│ │ ├── __init__.py
│ │ ├── _auth.py
│ │ ├── _beautifulsoup.py
│ │ ├── _clientcookie.py
│ │ ├── _debug.py
│ │ ├── _firefox3cookiejar.py
│ │ ├── _form.py
│ │ ├── _gzip.py
│ │ ├── _headersutil.py
│ │ ├── _html.py
│ │ ├── _http.py
│ │ ├── _lwpcookiejar.py
│ │ ├── _markupbase.py
│ │ ├── _mechanize.py
│ │ ├── _mozillacookiejar.py
│ │ ├── _msiecookiejar.py
│ │ ├── _opener.py
│ │ ├── _pullparser.py
│ │ ├── _request.py
│ │ ├── _response.py
│ │ ├── _rfc3986.py
│ │ ├── _sgmllib_copy.py
│ │ ├── _sockettimeout.py
│ │ ├── _testcase.py
│ │ ├── _urllib2.py
│ │ ├── _urllib2_fork.py
│ │ ├── _useragent.py
│ │ ├── _util.py
│ │ └── _version.py
│ ├── wordlist-huge.txt
│ ├── wordlist-medium.txt
│ ├── wordlist-small.txt
│ └── wordlist.txt
├── Burpsuite/
│ ├── BurpSuite_2021.bat
│ ├── README.MD
│ ├── Run Burp Suite_v1.7.37.bat
│ ├── download-link.txt
│ └── xray_run_with_burp.bat
├── DBScanner/
│ ├── .gitignore
│ ├── LICENSE
│ ├── README.md
│ ├── about oracle.txt
│ └── dbscan.py
├── Github_Leak/
│ ├── GitHack-master/
│ │ ├── GitHack.py
│ │ ├── README.md
│ │ └── lib/
│ │ ├── __init__.py
│ │ └── parser.py
│ └── Github-Hunter-master/
│ ├── GithubHunter.py
│ ├── README.md
│ ├── info.ini.example
│ └── requirements.txt
├── Linux_scripts/
│ ├── recover_ss.sh
│ ├── run_armitage.sh
│ ├── set_proxy.sh
│ └── siege_batchaccess.sh
├── README.md
├── Snorby_scripts/
│ ├── README.MD
│ ├── setup.sh
│ ├── start_ids.sh
│ └── stop_ids.sh
├── User Agents/
│ ├── LICENSE
│ ├── README.md
│ ├── SwitchyOmega/
│ │ ├── OmegaOptions.bak
│ │ └── SwitchyOmega_v2.2.11.crx
│ ├── csv/
│ │ ├── android-browser.csv
│ │ ├── chrome.csv
│ │ ├── firefox.csv
│ │ ├── internet-explorer.csv
│ │ ├── opera.csv
│ │ ├── safari.csv
│ │ ├── techpatterns_com_useragentswitcher.csv
│ │ └── ua_org_allagents.csv
│ ├── json/
│ │ ├── android-browser.json
│ │ ├── chrome.json
│ │ ├── firefox.json
│ │ ├── internet-explorer.json
│ │ ├── opera.json
│ │ ├── safari.json
│ │ ├── techpatterns_com_useragentswitcher.json
│ │ └── ua_org_allagents.json
│ ├── requirements.txt
│ ├── user agent example.txt
│ └── useragents.py
├── Weak_Password/
│ ├── Bruteforce/
│ │ ├── README.md
│ │ ├── bruteforce.py
│ │ ├── comm/
│ │ │ ├── __init__.py
│ │ │ ├── config.py
│ │ │ ├── portscan.py
│ │ │ └── printers.py
│ │ ├── conf/
│ │ │ ├── .svn/
│ │ │ │ ├── all-wcprops
│ │ │ │ ├── entries
│ │ │ │ └── text-base/
│ │ │ │ └── config.txt.svn-base
│ │ │ ├── ftp.conf
│ │ │ ├── ldapd.conf
│ │ │ ├── mongodb.conf
│ │ │ ├── mssql.conf
│ │ │ ├── mysql.conf
│ │ │ ├── pop3.conf
│ │ │ ├── postgres.conf
│ │ │ ├── signs.conf
│ │ │ ├── smb.conf
│ │ │ ├── snmp.conf
│ │ │ ├── ssh.conf
│ │ │ ├── tomcat.conf
│ │ │ ├── vnc.conf
│ │ │ └── web.conf
│ │ ├── factorys/
│ │ │ ├── __init__.py
│ │ │ └── pluginFactory.py
│ │ ├── plugins/
│ │ │ ├── __init__.py
│ │ │ ├── ftp.py
│ │ │ ├── ldapd.py
│ │ │ ├── mongodb.py
│ │ │ ├── mssql.py
│ │ │ ├── mysql.py
│ │ │ ├── pop3.py
│ │ │ ├── postgres.py
│ │ │ ├── redisexp.py
│ │ │ ├── rsync.py
│ │ │ ├── rsynclib.py
│ │ │ ├── smb.py
│ │ │ ├── snmp.py
│ │ │ ├── ssh.py
│ │ │ ├── ssltest.py
│ │ │ ├── vnc.py
│ │ │ ├── vnclib.py
│ │ │ └── web.py
│ │ └── requirements.txt
│ ├── Fuxi-Scanner/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── doc/
│ │ │ ├── INSTALL.en.md
│ │ │ ├── INSTALL.zh.md
│ │ │ └── README.zh.md
│ │ ├── fuxi/
│ │ │ ├── __init__.py
│ │ │ ├── app.py
│ │ │ ├── static/
│ │ │ │ ├── css/
│ │ │ │ │ ├── dropzone.css
│ │ │ │ │ ├── duallistbox/
│ │ │ │ │ │ ├── bootstrap-duallistbox.css
│ │ │ │ │ │ └── bootstrap-multiselect.css
│ │ │ │ │ ├── font-awesome-4.7.0/
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ └── font-awesome.css
│ │ │ │ │ │ └── fonts/
│ │ │ │ │ │ └── FontAwesome.otf
│ │ │ │ │ └── main.css
│ │ │ │ ├── download/
│ │ │ │ │ └── test
│ │ │ │ └── js/
│ │ │ │ ├── bootstrap/
│ │ │ │ │ └── bootstrap-multiselect.js
│ │ │ │ ├── jquery/
│ │ │ │ │ └── jquery.bootstrap-duallistbox.js
│ │ │ │ ├── main.js
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── Chart.js
│ │ │ │ │ ├── FeedEk.js
│ │ │ │ │ ├── bootstrap-datetimepicker.js
│ │ │ │ │ ├── dropzone.js
│ │ │ │ │ └── laydate/
│ │ │ │ │ ├── laydate.js
│ │ │ │ │ └── theme/
│ │ │ │ │ └── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ └── server/
│ │ │ │ ├── acunetix-scanner.js
│ │ │ │ ├── asset-management.js
│ │ │ │ ├── asset-services-list.js
│ │ │ │ ├── auth-tester-tasks.js
│ │ │ │ ├── checkbox.js
│ │ │ │ ├── dashboard.js
│ │ │ │ ├── new-asset.js
│ │ │ │ ├── new-auth-tester.js
│ │ │ │ ├── new-scan.js
│ │ │ │ ├── plugin-management.js
│ │ │ │ ├── port-scanner.js
│ │ │ │ ├── search.js
│ │ │ │ ├── settings.js
│ │ │ │ ├── subdomain-brute.js
│ │ │ │ ├── subdomain-list.js
│ │ │ │ ├── task-management.js
│ │ │ │ ├── update.js
│ │ │ │ ├── vulnerability.js
│ │ │ │ └── week-passwd-list.js
│ │ │ ├── templates/
│ │ │ │ ├── 404.html
│ │ │ │ ├── 500.html
│ │ │ │ ├── acunetix-scanner.html
│ │ │ │ ├── acunetix-tasks.html
│ │ │ │ ├── advanced-option.html
│ │ │ │ ├── asset-management.html
│ │ │ │ ├── asset-services.html
│ │ │ │ ├── auth-tester-tasks.html
│ │ │ │ ├── base.html
│ │ │ │ ├── dashboard.html
│ │ │ │ ├── index.html
│ │ │ │ ├── login.html
│ │ │ │ ├── new-asset.html
│ │ │ │ ├── new-auth-tester.html
│ │ │ │ ├── new-scan.html
│ │ │ │ ├── plugin-management.html
│ │ │ │ ├── port-scanner.html
│ │ │ │ ├── search.html
│ │ │ │ ├── subdomain-brute.html
│ │ │ │ ├── subdomain-list.html
│ │ │ │ ├── system-config.html
│ │ │ │ ├── task-management.html
│ │ │ │ ├── vulnerability.html
│ │ │ │ └── week-passwd-list.html
│ │ │ └── views/
│ │ │ ├── __init__.py
│ │ │ ├── acunetix_scanner.py
│ │ │ ├── asset_management.py
│ │ │ ├── auth_tester.py
│ │ │ ├── authenticate.py
│ │ │ ├── dashboard.py
│ │ │ ├── index.py
│ │ │ ├── lib/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── get_title.py
│ │ │ │ ├── mongo_db.py
│ │ │ │ └── parse_target.py
│ │ │ ├── modules/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── acunetix_scanner/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── awvs_api.py
│ │ │ │ ├── auth_tester/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── auth_scanner.py
│ │ │ │ │ └── hydra_plugin.py
│ │ │ │ ├── discovery/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── asset_discovery.py
│ │ │ │ ├── port_scanner/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── nmap_scanner.py
│ │ │ │ ├── scanner/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── parse_plugin.py
│ │ │ │ │ └── poc_scanner.py
│ │ │ │ └── subdomain/
│ │ │ │ ├── __init__.py
│ │ │ │ └── domain_brute.py
│ │ │ ├── plugin_management.py
│ │ │ ├── port_scanner.py
│ │ │ ├── settings.py
│ │ │ ├── subdomain_brute.py
│ │ │ └── vul_scanner.py
│ │ ├── fuxi_scanner.py
│ │ ├── migration/
│ │ │ ├── DataModels
│ │ │ └── start.py
│ │ ├── requirements.txt
│ │ └── run.sh
│ ├── Scrack/
│ │ ├── README.md
│ │ └── Scrack.py
│ └── fenghuangscanner/
│ ├── README.md
│ ├── comm/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ ├── portscan.py
│ │ └── printers.py
│ ├── conf/
│ │ ├── .svn/
│ │ │ ├── all-wcprops
│ │ │ ├── entries
│ │ │ └── text-base/
│ │ │ └── config.txt.svn-base
│ │ ├── ftp.conf
│ │ ├── ldapd.conf
│ │ ├── mongodb.conf
│ │ ├── mssql.conf
│ │ ├── mysql.conf
│ │ ├── pop3.conf
│ │ ├── postgres.conf
│ │ ├── signs.conf
│ │ ├── smb.conf
│ │ ├── snmp.conf
│ │ ├── ssh.conf
│ │ ├── tomcat.conf
│ │ ├── vnc.conf
│ │ └── web.conf
│ ├── factorys/
│ │ ├── __init__.py
│ │ └── pluginFactory.py
│ ├── main.py
│ ├── plugins/
│ │ ├── __init__.py
│ │ ├── ftp.py
│ │ ├── ldapd.py
│ │ ├── mongodb.py
│ │ ├── mssql.py
│ │ ├── mysql.py
│ │ ├── pop3.py
│ │ ├── postgres.py
│ │ ├── redisexp.py
│ │ ├── rsync.py
│ │ ├── rsynclib.py
│ │ ├── smb.py
│ │ ├── snmp.py
│ │ ├── ssh.py
│ │ ├── ssltest.py
│ │ ├── vnc.py
│ │ ├── vnclib.py
│ │ └── web.py
│ └── requirements.txt
├── Windows_scripts/
│ ├── AppScan_batch_scan/
│ │ ├── AppScan_batch.bat
│ │ ├── READ.ME
│ │ ├── batch.bat
│ │ └── urltoscan0.bat
│ ├── Armitage-FAQ.txt
│ ├── FolderHide.bat
│ ├── FolderUnhide.bat
│ ├── README.MD
│ ├── Windows-security-check/
│ │ ├── Windows-security-check.README
│ │ └── Windows-security-check.bat
│ ├── check_honeyport_status.bat
│ ├── init.bat
│ ├── ipreverse.py
│ ├── networking.txt
│ ├── ping_check_network.bat
│ ├── safedog.py
│ ├── smsbomb.py
│ ├── start_share_v1.2.bat
│ └── stop_share_v1.4.bat
├── antSword/
│ ├── .github/
│ │ └── ISSUE_TEMPLATE.md
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── README_CN.md
│ ├── app.js
│ ├── modules/
│ │ ├── cache.js
│ │ ├── config.js
│ │ ├── database.js
│ │ ├── logger.js
│ │ ├── menubar.js
│ │ ├── plugStore.js
│ │ ├── request.js
│ │ └── update.js
│ ├── package.json
│ ├── shells/
│ │ ├── README.md
│ │ ├── asp.net_custom_script_for_odbc.aspx
│ │ ├── asp.net_eval_script.aspx
│ │ ├── asp_eval_xxxx_script.asp
│ │ ├── jsp_custom_script_for_mysql.jsp
│ │ ├── jspx_custom_script_for_mysql.jspx
│ │ ├── php_assert_script.php
│ │ ├── php_create_function_script.php
│ │ └── php_custom_script_for_mysql.php
│ ├── source/
│ │ ├── app.entry.js
│ │ ├── base/
│ │ │ ├── cachemanager.js
│ │ │ ├── encodes.js
│ │ │ └── menubar.js
│ │ ├── core/
│ │ │ ├── README.md
│ │ │ ├── asp/
│ │ │ │ ├── encoder/
│ │ │ │ │ └── xxxxdog.js
│ │ │ │ ├── index.js
│ │ │ │ └── template/
│ │ │ │ ├── base.js
│ │ │ │ ├── command.js
│ │ │ │ ├── database/
│ │ │ │ │ ├── access.js
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── dsn.js
│ │ │ │ │ ├── microsoft_jet_oledb_4_0.js
│ │ │ │ │ ├── mysql.js
│ │ │ │ │ ├── oracle.js
│ │ │ │ │ ├── sqloledb_1.js
│ │ │ │ │ ├── sqloledb_1_sspi.js
│ │ │ │ │ └── sqlserver.js
│ │ │ │ └── filemanager.js
│ │ │ ├── aspx/
│ │ │ │ ├── encoder/
│ │ │ │ │ ├── base64.js
│ │ │ │ │ └── hex.js
│ │ │ │ ├── index.js
│ │ │ │ └── template/
│ │ │ │ ├── base.js
│ │ │ │ ├── command.js
│ │ │ │ ├── database/
│ │ │ │ │ ├── access.js
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── dsn.js
│ │ │ │ │ ├── microsoft_jet_oledb_4_0.js
│ │ │ │ │ ├── mysql.js
│ │ │ │ │ ├── oracle.js
│ │ │ │ │ ├── sqloledb_1.js
│ │ │ │ │ ├── sqloledb_1_sspi.js
│ │ │ │ │ └── sqlserver.js
│ │ │ │ └── filemanager.js
│ │ │ ├── base.js
│ │ │ ├── custom/
│ │ │ │ ├── encoder/
│ │ │ │ │ ├── base64.js
│ │ │ │ │ └── hex.js
│ │ │ │ ├── index.js
│ │ │ │ └── template/
│ │ │ │ ├── base.js
│ │ │ │ ├── command.js
│ │ │ │ ├── database/
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── mysql.js
│ │ │ │ │ ├── oracle.js
│ │ │ │ │ └── sqlserver.js
│ │ │ │ └── filemanager.js
│ │ │ ├── index.js
│ │ │ └── php/
│ │ │ ├── encoder/
│ │ │ │ ├── base64.js
│ │ │ │ ├── chr.js
│ │ │ │ ├── chr16.js
│ │ │ │ └── rot13.js
│ │ │ ├── index.js
│ │ │ └── template/
│ │ │ ├── base.js
│ │ │ ├── command.js
│ │ │ ├── database/
│ │ │ │ ├── informix.js
│ │ │ │ ├── mssql.js
│ │ │ │ ├── mysql.js
│ │ │ │ ├── mysqli.js
│ │ │ │ └── oracle.js
│ │ │ └── filemanager.js
│ │ ├── language/
│ │ │ ├── en.js
│ │ │ ├── index.js
│ │ │ └── zh.js
│ │ ├── load.entry.js
│ │ ├── modules/
│ │ │ ├── database/
│ │ │ │ ├── asp/
│ │ │ │ │ └── index.js
│ │ │ │ ├── aspx/
│ │ │ │ │ └── index.js
│ │ │ │ ├── custom/
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── php/
│ │ │ │ └── index.js
│ │ │ ├── filemanager/
│ │ │ │ ├── files.js
│ │ │ │ ├── folder.js
│ │ │ │ ├── index.js
│ │ │ │ └── tasks.js
│ │ │ ├── plugin/
│ │ │ │ └── index.js
│ │ │ ├── settings/
│ │ │ │ ├── about.js
│ │ │ │ ├── aproxy.js
│ │ │ │ ├── display.js
│ │ │ │ ├── encoders.js
│ │ │ │ ├── index.js
│ │ │ │ ├── language.js
│ │ │ │ └── update.js
│ │ │ ├── shellmanager/
│ │ │ │ ├── category/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── sidebar.js
│ │ │ │ │ └── toolbar.js
│ │ │ │ ├── data.js
│ │ │ │ ├── index.js
│ │ │ │ └── list/
│ │ │ │ ├── contextmenu.js
│ │ │ │ ├── form.js
│ │ │ │ ├── grid.js
│ │ │ │ └── index.js
│ │ │ ├── terminal/
│ │ │ │ └── index.js
│ │ │ └── viewsite/
│ │ │ ├── README.md
│ │ │ ├── cookiemgr.js
│ │ │ └── index.js
│ │ └── ui/
│ │ ├── README.md
│ │ ├── tabbar.js
│ │ └── window.js
│ ├── static/
│ │ ├── css/
│ │ │ └── index.css
│ │ └── libs/
│ │ ├── ace/
│ │ │ ├── ace.js
│ │ │ ├── ext-beautify.js
│ │ │ ├── ext-chromevox.js
│ │ │ ├── ext-elastic_tabstops_lite.js
│ │ │ ├── ext-emmet.js
│ │ │ ├── ext-error_marker.js
│ │ │ ├── ext-keybinding_menu.js
│ │ │ ├── ext-language_tools.js
│ │ │ ├── ext-linking.js
│ │ │ ├── ext-modelist.js
│ │ │ ├── ext-old_ie.js
│ │ │ ├── ext-searchbox.js
│ │ │ ├── ext-settings_menu.js
│ │ │ ├── ext-spellcheck.js
│ │ │ ├── ext-split.js
│ │ │ ├── ext-static_highlight.js
│ │ │ ├── ext-statusbar.js
│ │ │ ├── ext-textarea.js
│ │ │ ├── ext-themelist.js
│ │ │ ├── ext-whitespace.js
│ │ │ ├── keybinding-emacs.js
│ │ │ ├── keybinding-vim.js
│ │ │ ├── mode-abap.js
│ │ │ ├── mode-abc.js
│ │ │ ├── mode-actionscript.js
│ │ │ ├── mode-ada.js
│ │ │ ├── mode-apache_conf.js
│ │ │ ├── mode-applescript.js
│ │ │ ├── mode-asciidoc.js
│ │ │ ├── mode-assembly_x86.js
│ │ │ ├── mode-autohotkey.js
│ │ │ ├── mode-batchfile.js
│ │ │ ├── mode-c9search.js
│ │ │ ├── mode-c_cpp.js
│ │ │ ├── mode-cirru.js
│ │ │ ├── mode-clojure.js
│ │ │ ├── mode-cobol.js
│ │ │ ├── mode-coffee.js
│ │ │ ├── mode-coldfusion.js
│ │ │ ├── mode-csharp.js
│ │ │ ├── mode-css.js
│ │ │ ├── mode-curly.js
│ │ │ ├── mode-d.js
│ │ │ ├── mode-dart.js
│ │ │ ├── mode-diff.js
│ │ │ ├── mode-django.js
│ │ │ ├── mode-dockerfile.js
│ │ │ ├── mode-dot.js
│ │ │ ├── mode-eiffel.js
│ │ │ ├── mode-ejs.js
│ │ │ ├── mode-elixir.js
│ │ │ ├── mode-elm.js
│ │ │ ├── mode-erlang.js
│ │ │ ├── mode-forth.js
│ │ │ ├── mode-ftl.js
│ │ │ ├── mode-gcode.js
│ │ │ ├── mode-gherkin.js
│ │ │ ├── mode-gitignore.js
│ │ │ ├── mode-glsl.js
│ │ │ ├── mode-golang.js
│ │ │ ├── mode-groovy.js
│ │ │ ├── mode-haml.js
│ │ │ ├── mode-handlebars.js
│ │ │ ├── mode-haskell.js
│ │ │ ├── mode-haxe.js
│ │ │ ├── mode-html.js
│ │ │ ├── mode-html_ruby.js
│ │ │ ├── mode-ini.js
│ │ │ ├── mode-io.js
│ │ │ ├── mode-jack.js
│ │ │ ├── mode-jade.js
│ │ │ ├── mode-java.js
│ │ │ ├── mode-javascript.js
│ │ │ ├── mode-json.js
│ │ │ ├── mode-jsoniq.js
│ │ │ ├── mode-jsp.js
│ │ │ ├── mode-jsx.js
│ │ │ ├── mode-julia.js
│ │ │ ├── mode-latex.js
│ │ │ ├── mode-lean.js
│ │ │ ├── mode-less.js
│ │ │ ├── mode-liquid.js
│ │ │ ├── mode-lisp.js
│ │ │ ├── mode-live_script.js
│ │ │ ├── mode-livescript.js
│ │ │ ├── mode-logiql.js
│ │ │ ├── mode-lsl.js
│ │ │ ├── mode-lua.js
│ │ │ ├── mode-luapage.js
│ │ │ ├── mode-lucene.js
│ │ │ ├── mode-makefile.js
│ │ │ ├── mode-markdown.js
│ │ │ ├── mode-mask.js
│ │ │ ├── mode-matlab.js
│ │ │ ├── mode-maze.js
│ │ │ ├── mode-mel.js
│ │ │ ├── mode-mips_assembler.js
│ │ │ ├── mode-mipsassembler.js
│ │ │ ├── mode-mushcode.js
│ │ │ ├── mode-mysql.js
│ │ │ ├── mode-nix.js
│ │ │ ├── mode-objectivec.js
│ │ │ ├── mode-ocaml.js
│ │ │ ├── mode-pascal.js
│ │ │ ├── mode-perl.js
│ │ │ ├── mode-pgsql.js
│ │ │ ├── mode-php.js
│ │ │ ├── mode-plain_text.js
│ │ │ ├── mode-powershell.js
│ │ │ ├── mode-praat.js
│ │ │ ├── mode-prolog.js
│ │ │ ├── mode-properties.js
│ │ │ ├── mode-protobuf.js
│ │ │ ├── mode-python.js
│ │ │ ├── mode-r.js
│ │ │ ├── mode-rdoc.js
│ │ │ ├── mode-rhtml.js
│ │ │ ├── mode-ruby.js
│ │ │ ├── mode-rust.js
│ │ │ ├── mode-sass.js
│ │ │ ├── mode-scad.js
│ │ │ ├── mode-scala.js
│ │ │ ├── mode-scheme.js
│ │ │ ├── mode-scss.js
│ │ │ ├── mode-sh.js
│ │ │ ├── mode-sjs.js
│ │ │ ├── mode-smarty.js
│ │ │ ├── mode-snippets.js
│ │ │ ├── mode-soy_template.js
│ │ │ ├── mode-space.js
│ │ │ ├── mode-sql.js
│ │ │ ├── mode-sqlserver.js
│ │ │ ├── mode-stylus.js
│ │ │ ├── mode-svg.js
│ │ │ ├── mode-tcl.js
│ │ │ ├── mode-tex.js
│ │ │ ├── mode-text.js
│ │ │ ├── mode-textile.js
│ │ │ ├── mode-toml.js
│ │ │ ├── mode-twig.js
│ │ │ ├── mode-typescript.js
│ │ │ ├── mode-vala.js
│ │ │ ├── mode-vbscript.js
│ │ │ ├── mode-velocity.js
│ │ │ ├── mode-verilog.js
│ │ │ ├── mode-vhdl.js
│ │ │ ├── mode-xml.js
│ │ │ ├── mode-xquery.js
│ │ │ ├── mode-yaml.js
│ │ │ ├── snippets/
│ │ │ │ ├── abap.js
│ │ │ │ ├── abc.js
│ │ │ │ ├── actionscript.js
│ │ │ │ ├── ada.js
│ │ │ │ ├── apache_conf.js
│ │ │ │ ├── applescript.js
│ │ │ │ ├── asciidoc.js
│ │ │ │ ├── assembly_x86.js
│ │ │ │ ├── autohotkey.js
│ │ │ │ ├── batchfile.js
│ │ │ │ ├── c9search.js
│ │ │ │ ├── c_cpp.js
│ │ │ │ ├── cirru.js
│ │ │ │ ├── clojure.js
│ │ │ │ ├── cobol.js
│ │ │ │ ├── coffee.js
│ │ │ │ ├── coldfusion.js
│ │ │ │ ├── csharp.js
│ │ │ │ ├── css.js
│ │ │ │ ├── curly.js
│ │ │ │ ├── d.js
│ │ │ │ ├── dart.js
│ │ │ │ ├── diff.js
│ │ │ │ ├── django.js
│ │ │ │ ├── dockerfile.js
│ │ │ │ ├── dot.js
│ │ │ │ ├── eiffel.js
│ │ │ │ ├── ejs.js
│ │ │ │ ├── elixir.js
│ │ │ │ ├── elm.js
│ │ │ │ ├── erlang.js
│ │ │ │ ├── forth.js
│ │ │ │ ├── ftl.js
│ │ │ │ ├── gcode.js
│ │ │ │ ├── gherkin.js
│ │ │ │ ├── gitignore.js
│ │ │ │ ├── glsl.js
│ │ │ │ ├── golang.js
│ │ │ │ ├── groovy.js
│ │ │ │ ├── haml.js
│ │ │ │ ├── handlebars.js
│ │ │ │ ├── haskell.js
│ │ │ │ ├── haxe.js
│ │ │ │ ├── html.js
│ │ │ │ ├── html_ruby.js
│ │ │ │ ├── ini.js
│ │ │ │ ├── io.js
│ │ │ │ ├── jack.js
│ │ │ │ ├── jade.js
│ │ │ │ ├── java.js
│ │ │ │ ├── javascript.js
│ │ │ │ ├── json.js
│ │ │ │ ├── jsoniq.js
│ │ │ │ ├── jsp.js
│ │ │ │ ├── jsx.js
│ │ │ │ ├── julia.js
│ │ │ │ ├── latex.js
│ │ │ │ ├── lean.js
│ │ │ │ ├── less.js
│ │ │ │ ├── liquid.js
│ │ │ │ ├── lisp.js
│ │ │ │ ├── live_script.js
│ │ │ │ ├── livescript.js
│ │ │ │ ├── logiql.js
│ │ │ │ ├── lsl.js
│ │ │ │ ├── lua.js
│ │ │ │ ├── luapage.js
│ │ │ │ ├── lucene.js
│ │ │ │ ├── makefile.js
│ │ │ │ ├── markdown.js
│ │ │ │ ├── mask.js
│ │ │ │ ├── matlab.js
│ │ │ │ ├── maze.js
│ │ │ │ ├── mel.js
│ │ │ │ ├── mips_assembler.js
│ │ │ │ ├── mipsassembler.js
│ │ │ │ ├── mushcode.js
│ │ │ │ ├── mysql.js
│ │ │ │ ├── nix.js
│ │ │ │ ├── objectivec.js
│ │ │ │ ├── ocaml.js
│ │ │ │ ├── pascal.js
│ │ │ │ ├── perl.js
│ │ │ │ ├── pgsql.js
│ │ │ │ ├── php.js
│ │ │ │ ├── plain_text.js
│ │ │ │ ├── powershell.js
│ │ │ │ ├── praat.js
│ │ │ │ ├── prolog.js
│ │ │ │ ├── properties.js
│ │ │ │ ├── protobuf.js
│ │ │ │ ├── python.js
│ │ │ │ ├── r.js
│ │ │ │ ├── rdoc.js
│ │ │ │ ├── rhtml.js
│ │ │ │ ├── ruby.js
│ │ │ │ ├── rust.js
│ │ │ │ ├── sass.js
│ │ │ │ ├── scad.js
│ │ │ │ ├── scala.js
│ │ │ │ ├── scheme.js
│ │ │ │ ├── scss.js
│ │ │ │ ├── sh.js
│ │ │ │ ├── sjs.js
│ │ │ │ ├── smarty.js
│ │ │ │ ├── snippets.js
│ │ │ │ ├── soy_template.js
│ │ │ │ ├── space.js
│ │ │ │ ├── sql.js
│ │ │ │ ├── sqlserver.js
│ │ │ │ ├── stylus.js
│ │ │ │ ├── svg.js
│ │ │ │ ├── tcl.js
│ │ │ │ ├── tex.js
│ │ │ │ ├── text.js
│ │ │ │ ├── textile.js
│ │ │ │ ├── toml.js
│ │ │ │ ├── twig.js
│ │ │ │ ├── typescript.js
│ │ │ │ ├── vala.js
│ │ │ │ ├── vbscript.js
│ │ │ │ ├── velocity.js
│ │ │ │ ├── verilog.js
│ │ │ │ ├── vhdl.js
│ │ │ │ ├── xml.js
│ │ │ │ ├── xquery.js
│ │ │ │ └── yaml.js
│ │ │ ├── theme-ambiance.js
│ │ │ ├── theme-chaos.js
│ │ │ ├── theme-chrome.js
│ │ │ ├── theme-clouds.js
│ │ │ ├── theme-clouds_midnight.js
│ │ │ ├── theme-cobalt.js
│ │ │ ├── theme-crimson_editor.js
│ │ │ ├── theme-dawn.js
│ │ │ ├── theme-dreamweaver.js
│ │ │ ├── theme-eclipse.js
│ │ │ ├── theme-github.js
│ │ │ ├── theme-idle_fingers.js
│ │ │ ├── theme-iplastic.js
│ │ │ ├── theme-katzenmilch.js
│ │ │ ├── theme-kr_theme.js
│ │ │ ├── theme-kuroir.js
│ │ │ ├── theme-merbivore.js
│ │ │ ├── theme-merbivore_soft.js
│ │ │ ├── theme-mono_industrial.js
│ │ │ ├── theme-monokai.js
│ │ │ ├── theme-pastel_on_dark.js
│ │ │ ├── theme-solarized_dark.js
│ │ │ ├── theme-solarized_light.js
│ │ │ ├── theme-sqlserver.js
│ │ │ ├── theme-terminal.js
│ │ │ ├── theme-textmate.js
│ │ │ ├── theme-tomorrow.js
│ │ │ ├── theme-tomorrow_night.js
│ │ │ ├── theme-tomorrow_night_blue.js
│ │ │ ├── theme-tomorrow_night_bright.js
│ │ │ ├── theme-tomorrow_night_eighties.js
│ │ │ ├── theme-twilight.js
│ │ │ ├── theme-vibrant_ink.js
│ │ │ ├── theme-xcode.js
│ │ │ ├── worker-coffee.js
│ │ │ ├── worker-css.js
│ │ │ ├── worker-html.js
│ │ │ ├── worker-javascript.js
│ │ │ ├── worker-json.js
│ │ │ ├── worker-lua.js
│ │ │ ├── worker-php.js
│ │ │ ├── worker-xml.js
│ │ │ └── worker-xquery.js
│ │ ├── bmenu/
│ │ │ ├── bmenu.css
│ │ │ └── bmenu.js
│ │ ├── dhtmlx/
│ │ │ ├── codebase/
│ │ │ │ ├── dhtmlx.css
│ │ │ │ ├── dhtmlx.js
│ │ │ │ ├── dhtmlx_deprecated.js
│ │ │ │ ├── ext/
│ │ │ │ │ ├── dhxupload.xap
│ │ │ │ │ ├── swfobject.js
│ │ │ │ │ └── uploader.swf
│ │ │ │ ├── imgs/
│ │ │ │ │ └── dhxgrid_skyblue/
│ │ │ │ │ └── tree/
│ │ │ │ │ └── Control panel_files/
│ │ │ │ │ ├── category(1).js
│ │ │ │ │ ├── category.js
│ │ │ │ │ ├── countdata.js
│ │ │ │ │ ├── dhtmlx_pro.js
│ │ │ │ │ ├── editor.js
│ │ │ │ │ ├── hostdata.js
│ │ │ │ │ ├── index(1).js
│ │ │ │ │ ├── index(2).js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logger.js
│ │ │ │ │ ├── main.js
│ │ │ │ │ └── require.js
│ │ │ │ └── thirdparty/
│ │ │ │ └── excanvas/
│ │ │ │ ├── AUTHORS
│ │ │ │ ├── COPYING
│ │ │ │ ├── README
│ │ │ │ └── excanvas.js
│ │ │ └── skins/
│ │ │ └── mytheme/
│ │ │ ├── dhtmlx.css
│ │ │ ├── imgs/
│ │ │ │ └── dhxvault_skyblue/
│ │ │ │ └── icons_licence.txt
│ │ │ └── readme.txt
│ │ ├── font-awesome/
│ │ │ └── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── jquery/
│ │ │ └── jquery.js
│ │ ├── laydate/
│ │ │ ├── README.md
│ │ │ ├── laydate.dev.js
│ │ │ ├── laydate.js
│ │ │ ├── need/
│ │ │ │ └── laydate.css
│ │ │ ├── skins/
│ │ │ │ ├── dahong/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── danlan/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── molv/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── qianhuang/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── yahui/
│ │ │ │ │ └── laydate.css
│ │ │ │ └── yalan/
│ │ │ │ └── laydate.css
│ │ │ └── test/
│ │ │ ├── demo1.html
│ │ │ ├── demo2.html
│ │ │ └── demo2.js
│ │ ├── layer/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── GruntFile.js
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── extend/
│ │ │ │ └── layer.ext.js
│ │ │ ├── layer.js
│ │ │ ├── mobile/
│ │ │ │ ├── README.md
│ │ │ │ ├── layer.js
│ │ │ │ └── need/
│ │ │ │ └── layer.css
│ │ │ ├── package.json
│ │ │ ├── skin/
│ │ │ │ ├── layer.css
│ │ │ │ └── layer.ext.css
│ │ │ ├── src/
│ │ │ │ ├── README.md
│ │ │ │ ├── extend/
│ │ │ │ │ └── layer.ext.js
│ │ │ │ ├── layer.js
│ │ │ │ ├── mobile/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── layer.js
│ │ │ │ │ └── need/
│ │ │ │ │ └── layer.css
│ │ │ │ └── skin/
│ │ │ │ ├── layer.css
│ │ │ │ └── layer.ext.css
│ │ │ └── test/
│ │ │ └── demo.html
│ │ ├── react/
│ │ │ ├── react-dom.js
│ │ │ └── react.js
│ │ ├── semanticui/
│ │ │ ├── semantic.css
│ │ │ ├── semantic.js
│ │ │ └── themes/
│ │ │ └── default/
│ │ │ └── assets/
│ │ │ └── fonts/
│ │ │ └── icons.otf
│ │ ├── terminal/
│ │ │ ├── .gitignore
│ │ │ ├── .gitmodules
│ │ │ ├── css/
│ │ │ │ ├── jquery.terminal-1.1.1.css
│ │ │ │ └── jquery.terminal.css
│ │ │ └── js/
│ │ │ ├── jquery.terminal-min-1.1.1.js
│ │ │ └── jquery.terminal-min.js
│ │ └── toastr/
│ │ └── toastr.js
│ └── views/
│ ├── index.html
│ └── plugin.html
├── rainmap-lite/
│ ├── INSTALL.md
│ ├── LICENSE
│ ├── README.md
│ ├── manage.py
│ ├── nmaper/
│ │ ├── admin/
│ │ │ ├── __init__.py
│ │ │ └── views.py
│ │ ├── apps.py
│ │ ├── fixtures/
│ │ │ └── nmapprofiles.json
│ │ ├── forms.py
│ │ ├── migrations/
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_nmapscan_email_text.py
│ │ │ ├── 0003_nmapprofile.py
│ │ │ ├── 0004_nmapscan_status_text.py
│ │ │ ├── 0005_nmapprofile_profilename_text.py
│ │ │ ├── 0006_auto_20160108_0128.py
│ │ │ ├── 0007_nmapscan_slug_text.py
│ │ │ ├── 0008_auto_20160108_0558.py
│ │ │ ├── 0009_auto_20160108_0613.py
│ │ │ ├── 0010_auto_20160108_0650.py
│ │ │ ├── 0011_auto_20160108_0702.py
│ │ │ ├── 0012_auto_20160109_0540.py
│ │ │ └── 0013_auto_20160111_0011.py
│ │ ├── models.py
│ │ ├── static/
│ │ │ ├── admin/
│ │ │ │ └── css/
│ │ │ │ ├── base.css
│ │ │ │ └── widgets.css
│ │ │ ├── css/
│ │ │ │ ├── ie8.css
│ │ │ │ ├── ie9.css
│ │ │ │ └── main.css
│ │ │ ├── fonts/
│ │ │ │ └── FontAwesome.otf
│ │ │ ├── js/
│ │ │ │ ├── ie/
│ │ │ │ │ └── html5shiv.js
│ │ │ │ ├── main.js
│ │ │ │ └── util.js
│ │ │ ├── results/
│ │ │ │ └── README.txt
│ │ │ └── sass/
│ │ │ ├── base/
│ │ │ │ ├── _page.scss
│ │ │ │ └── _typography.scss
│ │ │ ├── components/
│ │ │ │ ├── _box.scss
│ │ │ │ ├── _button.scss
│ │ │ │ ├── _features.scss
│ │ │ │ ├── _form.scss
│ │ │ │ ├── _icon.scss
│ │ │ │ ├── _image.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _section.scss
│ │ │ │ ├── _split.scss
│ │ │ │ ├── _spotlights.scss
│ │ │ │ ├── _table.scss
│ │ │ │ └── _wrapper.scss
│ │ │ ├── ie8.scss
│ │ │ ├── ie9.scss
│ │ │ ├── layout/
│ │ │ │ ├── _footer.scss
│ │ │ │ ├── _header.scss
│ │ │ │ ├── _intro.scss
│ │ │ │ ├── _sidebar.scss
│ │ │ │ └── _wrapper.scss
│ │ │ ├── libs/
│ │ │ │ ├── _functions.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _skel.scss
│ │ │ │ └── _vars.scss
│ │ │ └── main.scss
│ │ ├── templates/
│ │ │ ├── admin/
│ │ │ │ ├── base_site.html
│ │ │ │ ├── index.html
│ │ │ │ └── nmaper/
│ │ │ │ ├── nmap_scan/
│ │ │ │ │ └── change_list.html
│ │ │ │ └── nmapscan/
│ │ │ │ └── change_list.html
│ │ │ ├── index.html
│ │ │ └── registration/
│ │ │ └── login.html
│ │ ├── tests.py
│ │ └── views.py
│ ├── nmaper-cronjob.py
│ └── scandere/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── 乌云技术文章/
└── readme
Showing preview only (440K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5163 symbols across 264 files)
FILE: BruteXSS/brutexss.py
function brutexss (line 37) | def brutexss():
FILE: BruteXSS/colorama/ansi.py
function code_to_chars (line 12) | def code_to_chars(code):
function set_title (line 15) | def set_title(title):
function clear_screen (line 18) | def clear_screen(mode=2):
function clear_line (line 21) | def clear_line(mode=2):
class AnsiCodes (line 25) | class AnsiCodes(object):
method __init__ (line 26) | def __init__(self):
class AnsiCursor (line 36) | class AnsiCursor(object):
method UP (line 37) | def UP(self, n=1):
method DOWN (line 39) | def DOWN(self, n=1):
method FORWARD (line 41) | def FORWARD(self, n=1):
method BACK (line 43) | def BACK(self, n=1):
method POS (line 45) | def POS(self, x=1, y=1):
class AnsiFore (line 49) | class AnsiFore(AnsiCodes):
class AnsiBack (line 71) | class AnsiBack(AnsiCodes):
class AnsiStyle (line 93) | class AnsiStyle(AnsiCodes):
FILE: BruteXSS/colorama/ansitowin32.py
function is_stream_closed (line 16) | def is_stream_closed(stream):
function is_a_tty (line 20) | def is_a_tty(stream):
class StreamWrapper (line 24) | class StreamWrapper(object):
method __init__ (line 30) | def __init__(self, wrapped, converter):
method __getattr__ (line 36) | def __getattr__(self, name):
method write (line 39) | def write(self, text):
class AnsiToWin32 (line 43) | class AnsiToWin32(object):
method __init__ (line 52) | def __init__(self, wrapped, convert=None, strip=None, autoreset=False):
method should_wrap (line 85) | def should_wrap(self):
method get_win32_calls (line 95) | def get_win32_calls(self):
method write (line 139) | def write(self, text):
method reset_all (line 149) | def reset_all(self):
method write_and_convert (line 156) | def write_and_convert(self, text):
method write_plain_text (line 172) | def write_plain_text(self, text, start, end):
method convert_ansi (line 178) | def convert_ansi(self, paramstring, command):
method extract_params (line 184) | def extract_params(self, command, paramstring):
method call_win32 (line 202) | def call_win32(self, command, params):
method convert_osc (line 224) | def convert_osc(self, text):
FILE: BruteXSS/colorama/initialise.py
function reset_all (line 18) | def reset_all():
function init (line 23) | def init(autoreset=False, convert=None, strip=None, wrap=True):
function deinit (line 51) | def deinit():
function colorama_text (line 59) | def colorama_text(*args, **kwargs):
function reinit (line 67) | def reinit():
function wrap_stream (line 74) | def wrap_stream(stream, convert, strip, autoreset, wrap):
FILE: BruteXSS/colorama/win32.py
class CONSOLE_SCREEN_BUFFER_INFO (line 21) | class CONSOLE_SCREEN_BUFFER_INFO(Structure):
method __str__ (line 30) | def __str__(self):
function winapi_test (line 97) | def winapi_test():
function GetConsoleScreenBufferInfo (line 104) | def GetConsoleScreenBufferInfo(stream_id=STDOUT):
function SetConsoleTextAttribute (line 111) | def SetConsoleTextAttribute(stream_id, attrs):
function SetConsoleCursorPosition (line 115) | def SetConsoleCursorPosition(stream_id, position, adjust=True):
function FillConsoleOutputCharacter (line 133) | def FillConsoleOutputCharacter(stream_id, char, length, start):
function FillConsoleOutputAttribute (line 143) | def FillConsoleOutputAttribute(stream_id, attr, length, start):
function SetConsoleTitle (line 153) | def SetConsoleTitle(title):
FILE: BruteXSS/colorama/winterm.py
class WinColor (line 6) | class WinColor(object):
class WinStyle (line 17) | class WinStyle(object):
class WinTerm (line 22) | class WinTerm(object):
method __init__ (line 24) | def __init__(self):
method get_attrs (line 36) | def get_attrs(self):
method set_attrs (line 39) | def set_attrs(self, value):
method reset_all (line 44) | def reset_all(self, on_stderr=None):
method fore (line 48) | def fore(self, fore=None, light=False, on_stderr=False):
method back (line 59) | def back(self, back=None, light=False, on_stderr=False):
method style (line 70) | def style(self, style=None, on_stderr=False):
method set_console (line 76) | def set_console(self, attrs=None, on_stderr=False):
method get_position (line 84) | def get_position(self, handle):
method set_cursor_position (line 92) | def set_cursor_position(self, position=None, on_stderr=False):
method cursor_adjust (line 102) | def cursor_adjust(self, x, y, on_stderr=False):
method erase_screen (line 110) | def erase_screen(self, mode=0, on_stderr=False):
method erase_line (line 139) | def erase_line(self, mode=0, on_stderr=False):
method set_title (line 161) | def set_title(self, title):
FILE: BruteXSS/mechanize/_auth.py
class HTTPProxyPasswordMgr (line 16) | class HTTPProxyPasswordMgr(HTTPPasswordMgr):
method add_password (line 18) | def add_password(self, realm, uri, user, passwd):
method find_user_password (line 30) | def find_user_password(self, realm, authuri):
method reduce_uri (line 50) | def reduce_uri(self, uri, default_port=True):
method is_suburi (line 55) | def is_suburi(self, base, test):
class HTTPSClientCertMgr (line 63) | class HTTPSClientCertMgr(HTTPPasswordMgr):
method add_key_cert (line 65) | def add_key_cert(self, uri, key_file, cert_file):
method find_key_cert (line 67) | def find_key_cert(self, authuri):
FILE: BruteXSS/mechanize/_beautifulsoup.py
class NullType (line 54) | class NullType(object):
method __new__ (line 65) | def __new__(cls): return Null
method __call__ (line 66) | def __call__(self, *args, **kwargs): return Null
method __getattr__ (line 68) | def __getattr__(self, attr): return Null
method __getitem__ (line 69) | def __getitem__(self, item): return Null
method __setattr__ (line 70) | def __setattr__(self, attr, value): pass
method __setitem__ (line 71) | def __setitem__(self, item, value): pass
method __len__ (line 72) | def __len__(self): return 0
method __iter__ (line 75) | def __iter__(self): return iter([])
method __contains__ (line 76) | def __contains__(self, item): return False
method __repr__ (line 77) | def __repr__(self): return "Null"
class PageElement (line 80) | class PageElement:
method setup (line 84) | def setup(self, parent=Null, previous=Null):
method findNext (line 96) | def findNext(self, name=None, attrs={}, text=None):
method fetchNext (line 102) | def fetchNext(self, name=None, attrs={}, text=None, limit=None):
method findNextSibling (line 107) | def findNextSibling(self, name=None, attrs={}, text=None):
method fetchNextSiblings (line 113) | def fetchNextSiblings(self, name=None, attrs={}, text=None, limit=None):
method findPrevious (line 118) | def findPrevious(self, name=None, attrs={}, text=None):
method fetchPrevious (line 123) | def fetchPrevious(self, name=None, attrs={}, text=None, limit=None):
method findPreviousSibling (line 129) | def findPreviousSibling(self, name=None, attrs={}, text=None):
method fetchPreviousSiblings (line 135) | def fetchPreviousSiblings(self, name=None, attrs={}, text=None,
method findParent (line 142) | def findParent(self, name=None, attrs={}):
method fetchParents (line 152) | def fetchParents(self, name=None, attrs={}, limit=None):
method _first (line 159) | def _first(self, method, name, attrs, text):
method _fetch (line 166) | def _fetch(self, name, attrs, text, limit, generator):
method nextGenerator (line 201) | def nextGenerator(self):
method nextSiblingGenerator (line 207) | def nextSiblingGenerator(self):
method previousGenerator (line 213) | def previousGenerator(self):
method previousSiblingGenerator (line 219) | def previousSiblingGenerator(self):
method parentGenerator (line 225) | def parentGenerator(self):
method _matches (line 231) | def _matches(self, chunk, howToMatch):
class NavigableText (line 260) | class NavigableText(PageElement):
method __getattr__ (line 262) | def __getattr__(self, attr):
class NavigableString (line 269) | class NavigableString(str, NavigableText):
class NavigableUnicodeString (line 272) | class NavigableUnicodeString(unicode, NavigableText):
class Tag (line 275) | class Tag(PageElement):
method __init__ (line 279) | def __init__(self, name, attrs=None, parent=Null, previous=Null):
method get (line 289) | def get(self, key, default=None):
method __getitem__ (line 295) | def __getitem__(self, key):
method __iter__ (line 300) | def __iter__(self):
method __len__ (line 304) | def __len__(self):
method __contains__ (line 308) | def __contains__(self, x):
method __nonzero__ (line 311) | def __nonzero__(self):
method __setitem__ (line 315) | def __setitem__(self, key, value):
method __delitem__ (line 329) | def __delitem__(self, key):
method __call__ (line 340) | def __call__(self, *args, **kwargs):
method __getattr__ (line 346) | def __getattr__(self, tag):
method __eq__ (line 352) | def __eq__(self, other):
method __ne__ (line 365) | def __ne__(self, other):
method __repr__ (line 370) | def __repr__(self):
method __unicode__ (line 374) | def __unicode__(self):
method __str__ (line 377) | def __str__(self, needUnicode=None, showStructureIndent=None):
method prettify (line 425) | def prettify(self, needUnicode=None):
method renderContents (line 428) | def renderContents(self, showStructureIndent=None, needUnicode=None):
method firstText (line 451) | def firstText(self, text, recursive=True):
method fetchText (line 458) | def fetchText(self, text, recursive=True, limit=None):
method first (line 465) | def first(self, name=None, attrs={}, recursive=True, text=None):
method fetch (line 475) | def fetch(self, name=None, attrs={}, recursive=True, text=None,
method isSelfClosing (line 494) | def isSelfClosing(self):
method append (line 502) | def append(self, tag):
method _getAttrMap (line 508) | def _getAttrMap(self):
method childGenerator (line 518) | def childGenerator(self):
method recursiveChildGenerator (line 523) | def recursiveChildGenerator(self):
function isList (line 539) | def isList(l):
function buildTagMap (line 545) | def buildTagMap(default, *args):
class BeautifulStoneSoup (line 564) | class BeautifulStoneSoup(Tag, SGMLParser):
method __init__ (line 632) | def __init__(self, text=None, avoidParserProblems=True,
method __getattr__ (line 675) | def __getattr__(self, methodName):
method feed (line 686) | def feed(self, text):
method done (line 692) | def done(self):
method reset (line 699) | def reset(self):
method popTag (line 706) | def popTag(self):
method pushTag (line 720) | def pushTag(self, tag):
method endData (line 727) | def endData(self):
method _popToTag (line 746) | def _popToTag(self, name, inclusivePop=True):
method _smartPop (line 767) | def _smartPop(self, name):
method unknown_starttag (line 815) | def unknown_starttag(self, name, attrs, selfClosing=0):
method unknown_endtag (line 838) | def unknown_endtag(self, name):
method handle_data (line 850) | def handle_data(self, data):
method handle_pi (line 853) | def handle_pi(self, text):
method handle_comment (line 857) | def handle_comment(self, text):
method handle_charref (line 861) | def handle_charref(self, ref):
method handle_entityref (line 865) | def handle_entityref(self, ref):
method handle_decl (line 869) | def handle_decl(self, data):
method parse_declaration (line 873) | def parse_declaration(self, i):
class BeautifulSoup (line 892) | class BeautifulSoup(BeautifulStoneSoup):
class ICantBelieveItsBeautifulSoup (line 983) | class ICantBelieveItsBeautifulSoup(BeautifulSoup):
class BeautifulSOAP (line 1022) | class BeautifulSOAP(BeautifulStoneSoup):
method popTag (line 1042) | def popTag(self):
class RobustXMLParser (line 1061) | class RobustXMLParser(BeautifulStoneSoup):
class RobustHTMLParser (line 1063) | class RobustHTMLParser(BeautifulSoup):
class RobustWackAssHTMLParser (line 1065) | class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
class SimplifyingSOAPParser (line 1067) | class SimplifyingSOAPParser(BeautifulSOAP):
FILE: BruteXSS/mechanize/_clientcookie.py
function reraise_unmasked_exceptions (line 54) | def reraise_unmasked_exceptions(unmasked=()):
function is_HDN (line 74) | def is_HDN(text):
function domain_match (line 85) | def domain_match(A, B):
function liberal_is_HDN (line 122) | def liberal_is_HDN(text):
function user_domain_match (line 130) | def user_domain_match(A, B):
function request_host (line 151) | def request_host(request):
function request_host_lc (line 165) | def request_host_lc(request):
function eff_request_host (line 168) | def eff_request_host(request):
function eff_request_host_lc (line 175) | def eff_request_host_lc(request):
function effective_request_host (line 179) | def effective_request_host(request):
function request_path (line 183) | def request_path(request):
function request_port (line 191) | def request_port(request):
function request_is_unverifiable (line 205) | def request_is_unverifiable(request):
function uppercase_escaped_char (line 218) | def uppercase_escaped_char(match):
function escape_path (line 220) | def escape_path(path):
function reach (line 236) | def reach(h):
function is_third_party (line 271) | def is_third_party(request):
function all (line 291) | def all(iterable):
class Cookie (line 298) | class Cookie:
method __init__ (line 349) | def __init__(self, version, name, value,
method has_nonstandard_attr (line 391) | def has_nonstandard_attr(self, name):
method get_nonstandard_attr (line 393) | def get_nonstandard_attr(self, name, default=None):
method set_nonstandard_attr (line 395) | def set_nonstandard_attr(self, name, value):
method nonstandard_attr_keys (line 397) | def nonstandard_attr_keys(self):
method is_expired (line 400) | def is_expired(self, now=None):
method __eq__ (line 404) | def __eq__(self, other):
method __ne__ (line 407) | def __ne__(self, other):
method __str__ (line 410) | def __str__(self):
method __repr__ (line 420) | def __repr__(self):
class CookiePolicy (line 435) | class CookiePolicy:
method set_ok (line 465) | def set_ok(self, cookie, request):
method return_ok (line 478) | def return_ok(self, cookie, request):
method domain_return_ok (line 488) | def domain_return_ok(self, domain, request):
method path_return_ok (line 512) | def path_return_ok(self, path, request):
class DefaultCookiePolicy (line 521) | class DefaultCookiePolicy(CookiePolicy):
method __init__ (line 610) | def __init__(self,
method blocked_domains (line 657) | def blocked_domains(self):
method set_blocked_domains (line 660) | def set_blocked_domains(self, blocked_domains):
method is_blocked (line 664) | def is_blocked(self, domain):
method allowed_domains (line 670) | def allowed_domains(self):
method set_allowed_domains (line 673) | def set_allowed_domains(self, allowed_domains):
method is_not_allowed (line 679) | def is_not_allowed(self, domain):
method set_ok (line 687) | def set_ok(self, cookie, request):
method set_ok_version (line 706) | def set_ok_version(self, cookie, request):
method set_ok_verifiability (line 720) | def set_ok_verifiability(self, cookie, request):
method set_ok_name (line 732) | def set_ok_name(self, cookie, request):
method set_ok_path (line 741) | def set_ok_path(self, cookie, request):
method set_ok_countrycode_domain (line 752) | def set_ok_countrycode_domain(self, cookie, request):
method set_ok_domain (line 779) | def set_ok_domain(self, cookie, request):
method set_ok_port (line 825) | def set_ok_port(self, cookie, request):
method return_ok (line 846) | def return_ok(self, cookie, request):
method return_ok_version (line 865) | def return_ok_version(self, cookie, request):
method return_ok_verifiability (line 874) | def return_ok_verifiability(self, cookie, request):
method return_ok_secure (line 886) | def return_ok_secure(self, cookie, request):
method return_ok_expires (line 892) | def return_ok_expires(self, cookie, request):
method return_ok_port (line 898) | def return_ok_port(self, cookie, request):
method return_ok_domain (line 912) | def return_ok_domain(self, cookie, request):
method domain_return_ok (line 934) | def domain_return_ok(self, domain, request):
method path_return_ok (line 960) | def path_return_ok(self, path, request):
function vals_sorted_by_key (line 969) | def vals_sorted_by_key(adict):
class MappingIterator (line 974) | class MappingIterator:
method __init__ (line 976) | def __init__(self, mapping):
method __iter__ (line 979) | def __iter__(self): return self
method next (line 981) | def next(self):
class Absent (line 1006) | class Absent: pass
class CookieJar (line 1008) | class CookieJar:
method __init__ (line 1047) | def __init__(self, policy=None):
method get_policy (line 1061) | def get_policy(self):
method set_policy (line 1064) | def set_policy(self, policy):
method _cookies_for_domain (line 1067) | def _cookies_for_domain(self, domain, request):
method cookies_for_request (line 1085) | def cookies_for_request(self, request):
method _cookies_for_request (line 1104) | def _cookies_for_request(self, request):
method _cookie_attrs (line 1115) | def _cookie_attrs(self, cookies):
method add_cookie_header (line 1183) | def add_cookie_header(self, request):
method _normalized_cookie_tuples (line 1210) | def _normalized_cookie_tuples(self, attrs_set):
method _cookie_from_cookie_tuple (line 1311) | def _cookie_from_cookie_tuple(self, tup, request):
method _cookies_from_attrs_set (line 1393) | def _cookies_from_attrs_set(self, attrs_set, request):
method _process_rfc2109_cookies (line 1402) | def _process_rfc2109_cookies(self, cookies):
method _make_cookies (line 1415) | def _make_cookies(self, response, request):
method make_cookies (line 1468) | def make_cookies(self, response, request):
method set_cookie_if_ok (line 1479) | def set_cookie_if_ok(self, cookie, request):
method set_cookie (line 1491) | def set_cookie(self, cookie):
method extract_cookies (line 1503) | def extract_cookies(self, response, request):
method clear (line 1540) | def clear(self, domain=None, path=None, name=None):
method clear_session_cookies (line 1567) | def clear_session_cookies(self):
method clear_expired_cookies (line 1584) | def clear_expired_cookies(self):
method __getitem__ (line 1599) | def __getitem__(self, i):
method __iter__ (line 1610) | def __iter__(self):
method __len__ (line 1613) | def __len__(self):
method __repr__ (line 1619) | def __repr__(self):
method __str__ (line 1624) | def __str__(self):
class LoadError (line 1630) | class LoadError(Exception): pass
class FileCookieJar (line 1632) | class FileCookieJar(CookieJar):
method __init__ (line 1654) | def __init__(self, filename=None, delayload=False, policy=None):
method save (line 1668) | def save(self, filename=None, ignore_discard=False, ignore_expires=Fal...
method load (line 1683) | def load(self, filename=None, ignore_discard=False, ignore_expires=Fal...
method revert (line 1707) | def revert(self, filename=None,
FILE: BruteXSS/mechanize/_debug.py
class HTTPResponseDebugProcessor (line 7) | class HTTPResponseDebugProcessor(BaseHandler):
method http_response (line 10) | def http_response(self, request, response):
class HTTPRedirectDebugProcessor (line 23) | class HTTPRedirectDebugProcessor(BaseHandler):
method http_request (line 24) | def http_request(self, request):
FILE: BruteXSS/mechanize/_firefox3cookiejar.py
class Firefox3CookieJar (line 19) | class Firefox3CookieJar(CookieJar):
method __init__ (line 49) | def __init__(self, filename, autoconnect=True, policy=None):
method connect (line 59) | def connect(self):
method close (line 65) | def close(self):
method _transaction (line 68) | def _transaction(self, func):
method _execute (line 82) | def _execute(self, query, params=()):
method _query (line 85) | def _query(self, query, params=()):
method _create_table_if_necessary (line 94) | def _create_table_if_necessary(self):
method _cookie_from_row (line 100) | def _cookie_from_row(self, row):
method clear (line 139) | def clear(self, domain=None, path=None, name=None):
method _row_from_cookie (line 160) | def _row_from_cookie(self, cookie, cur):
method set_cookie (line 186) | def set_cookie(self, cookie):
method __iter__ (line 205) | def __iter__(self):
method _cookies_for_request (line 214) | def _cookies_for_request(self, request):
method _persistent_cookies_for_domain (line 227) | def _persistent_cookies_for_domain(self, domain, request, cur):
FILE: BruteXSS/mechanize/_form.py
function debug (line 91) | def debug(msg, *args, **kwds):
function _show_debug_messages (line 100) | def _show_debug_messages():
function deprecation (line 109) | def deprecation(message, stack_offset=0):
class Missing (line 113) | class Missing: pass
function compress_text (line 116) | def compress_text(text): return _compress_re.sub(" ", text.strip())
function normalize_line_endings (line 118) | def normalize_line_endings(text):
function unescape (line 122) | def unescape(data, entities, encoding=DEFAULT_ENCODING):
function unescape_charref (line 145) | def unescape_charref(data, encoding):
function get_entitydefs (line 159) | def get_entitydefs():
function issequence (line 178) | def issequence(x):
function isstringlike (line 187) | def isstringlike(x):
function choose_boundary (line 193) | def choose_boundary():
class MimeWriter (line 202) | class MimeWriter:
method __init__ (line 272) | def __init__(self, fp, http_hdrs=None):
method addheader (line 279) | def addheader(self, key, value, prefix=0,
method flushheaders (line 301) | def flushheaders(self):
method startbody (line 305) | def startbody(self, ctype=None, plist=[], prefix=1,
method startmultipartbody (line 320) | def startmultipartbody(self, subtype, boundary=None, plist=[], prefix=1,
method nextpart (line 330) | def nextpart(self):
method lastpart (line 339) | def lastpart(self):
class LocateError (line 346) | class LocateError(ValueError): pass
class AmbiguityError (line 347) | class AmbiguityError(LocateError): pass
class ControlNotFoundError (line 348) | class ControlNotFoundError(LocateError): pass
class ItemNotFoundError (line 349) | class ItemNotFoundError(LocateError): pass
class ItemCountError (line 351) | class ItemCountError(ValueError): pass
class ParseError (line 356) | class ParseError(sgmllib.SGMLParseError,
method __init__ (line 359) | def __init__(self, *args, **kwds):
method __str__ (line 362) | def __str__(self):
class _AbstractFormParser (line 366) | class _AbstractFormParser:
method __init__ (line 369) | def __init__(self, entitydefs=None, encoding=DEFAULT_ENCODING):
method do_base (line 392) | def do_base(self, attrs):
method end_body (line 398) | def end_body(self):
method start_form (line 405) | def start_form(self, attrs):
method end_form (line 427) | def end_form(self):
method start_select (line 436) | def start_select(self, attrs):
method end_select (line 451) | def end_select(self):
method start_optgroup (line 461) | def start_optgroup(self, attrs):
method end_optgroup (line 471) | def end_optgroup(self):
method _start_option (line 477) | def _start_option(self, attrs):
method _end_option (line 494) | def _end_option(self):
method _append_select_control (line 511) | def _append_select_control(self, attrs):
method start_textarea (line 517) | def start_textarea(self, attrs):
method end_textarea (line 530) | def end_textarea(self):
method start_label (line 539) | def start_label(self, attrs):
method end_label (line 553) | def end_label(self):
method _add_label (line 563) | def _add_label(self, d):
method handle_data (line 570) | def handle_data(self, data):
method do_button (line 605) | def do_button(self, attrs):
method do_input (line 623) | def do_input(self, attrs):
method do_isindex (line 636) | def do_isindex(self, attrs):
method handle_entityref (line 647) | def handle_entityref(self, name):
method handle_charref (line 652) | def handle_charref(self, name):
method unescape_attr (line 656) | def unescape_attr(self, name):
method unescape_attrs (line 660) | def unescape_attrs(self, attrs):
method unknown_entityref (line 673) | def unknown_entityref(self, ref): self.handle_data("&%s;" % ref)
method unknown_charref (line 674) | def unknown_charref(self, ref): self.handle_data("&#%s;" % ref)
class XHTMLCompatibleFormParser (line 677) | class XHTMLCompatibleFormParser(_AbstractFormParser, HTMLParser.HTMLPars...
method __init__ (line 680) | def __init__(self, entitydefs=None, encoding=DEFAULT_ENCODING):
method feed (line 684) | def feed(self, data):
method start_option (line 690) | def start_option(self, attrs):
method end_option (line 693) | def end_option(self):
method handle_starttag (line 696) | def handle_starttag(self, tag, attrs):
method handle_endtag (line 709) | def handle_endtag(self, tag):
method unescape (line 717) | def unescape(self, name):
method unescape_attr_if_required (line 722) | def unescape_attr_if_required(self, name):
method unescape_attrs_if_required (line 724) | def unescape_attrs_if_required(self, attrs):
method close (line 727) | def close(self):
class _AbstractSgmllibParser (line 732) | class _AbstractSgmllibParser(_AbstractFormParser):
method do_option (line 734) | def do_option(self, attrs):
method convert_entityref (line 740) | def convert_entityref(self, name):
method convert_charref (line 742) | def convert_charref(self, name):
method unescape_attr_if_required (line 744) | def unescape_attr_if_required(self, name):
method unescape_attrs_if_required (line 746) | def unescape_attrs_if_required(self, attrs):
class FormParser (line 750) | class FormParser(_AbstractSgmllibParser, _sgmllib_copy.SGMLParser):
method __init__ (line 752) | def __init__(self, entitydefs=None, encoding=DEFAULT_ENCODING):
method feed (line 756) | def feed(self, data):
method close (line 762) | def close(self):
class _AbstractBSFormParser (line 767) | class _AbstractBSFormParser(_AbstractSgmllibParser):
method __init__ (line 771) | def __init__(self, entitydefs=None, encoding=DEFAULT_ENCODING):
method handle_data (line 775) | def handle_data(self, data):
method feed (line 779) | def feed(self, data):
method close (line 785) | def close(self):
class RobustFormParser (line 790) | class RobustFormParser(_AbstractBSFormParser, _beautifulsoup.BeautifulSo...
class NestingRobustFormParser (line 797) | class NestingRobustFormParser(_AbstractBSFormParser,
function ParseResponseEx (line 813) | def ParseResponseEx(response,
function ParseFileEx (line 847) | def ParseFileEx(file, base_uri,
function ParseString (line 881) | def ParseString(text, base_uri, *args, **kwds):
function ParseResponse (line 885) | def ParseResponse(response, *args, **kwds):
function ParseFile (line 947) | def ParseFile(file, base_uri, *args, **kwds):
function _ParseFileEx (line 963) | def _ParseFileEx(file, base_uri,
class Label (line 1024) | class Label:
method __init__ (line 1025) | def __init__(self, attrs):
method __getattr__ (line 1032) | def __getattr__(self, name):
method __setattr__ (line 1040) | def __setattr__(self, name, value):
method __str__ (line 1046) | def __str__(self):
function _get_label (line 1050) | def _get_label(attrs):
class Control (line 1057) | class Control:
method __init__ (line 1109) | def __init__(self, type, name, attrs, index=None):
method add_to_form (line 1119) | def add_to_form(self, form):
method fixup (line 1123) | def fixup(self):
method is_of_kind (line 1126) | def is_of_kind(self, kind):
method clear (line 1129) | def clear(self):
method __getattr__ (line 1132) | def __getattr__(self, name): raise NotImplementedError()
method __setattr__ (line 1133) | def __setattr__(self, name, value): raise NotImplementedError()
method pairs (line 1135) | def pairs(self):
method _totally_ordered_pairs (line 1140) | def _totally_ordered_pairs(self):
method _write_mime_data (line 1149) | def _write_mime_data(self, mw, name, value):
method __str__ (line 1158) | def __str__(self):
method get_labels (line 1161) | def get_labels(self):
class ScalarControl (line 1178) | class ScalarControl(Control):
method __init__ (line 1190) | def __init__(self, type, name, attrs, index=None):
method __getattr__ (line 1207) | def __getattr__(self, name):
method __setattr__ (line 1214) | def __setattr__(self, name, value):
method _totally_ordered_pairs (line 1228) | def _totally_ordered_pairs(self):
method clear (line 1235) | def clear(self):
method __str__ (line 1240) | def __str__(self):
class TextControl (line 1256) | class TextControl(ScalarControl):
method __init__ (line 1267) | def __init__(self, type, name, attrs, index=None):
method is_of_kind (line 1273) | def is_of_kind(self, kind): return kind == "text"
class FileControl (line 1276) | class FileControl(ScalarControl):
method __init__ (line 1285) | def __init__(self, type, name, attrs, index=None):
method is_of_kind (line 1290) | def is_of_kind(self, kind): return kind == "file"
method clear (line 1292) | def clear(self):
method __setattr__ (line 1297) | def __setattr__(self, name, value):
method add_file (line 1303) | def add_file(self, file_object, content_type=None, filename=None):
method _totally_ordered_pairs (line 1314) | def _totally_ordered_pairs(self):
method _write_mime_data (line 1324) | def _write_mime_data(self, mw, _name, _value):
method __str__ (line 1359) | def __str__(self):
class IsindexControl (line 1384) | class IsindexControl(ScalarControl):
method __init__ (line 1411) | def __init__(self, type, name, attrs, index=None):
method is_of_kind (line 1416) | def is_of_kind(self, kind): return kind in ["text", "clickable"]
method _totally_ordered_pairs (line 1418) | def _totally_ordered_pairs(self):
method _click (line 1421) | def _click(self, form, coord, return_type, request_class=_request.Requ...
method __str__ (line 1440) | def __str__(self):
class IgnoreControl (line 1454) | class IgnoreControl(ScalarControl):
method __init__ (line 1472) | def __init__(self, type, name, attrs, index=None):
method is_of_kind (line 1476) | def is_of_kind(self, kind): return False
method __setattr__ (line 1478) | def __setattr__(self, name, value):
class Item (line 1493) | class Item:
method __init__ (line 1494) | def __init__(self, control, attrs, index=None):
method get_labels (line 1508) | def get_labels(self):
method __getattr__ (line 1531) | def __getattr__(self, name):
method __setattr__ (line 1536) | def __setattr__(self, name, value):
method __str__ (line 1544) | def __str__(self):
method __repr__ (line 1552) | def __repr__(self):
function disambiguate (line 1561) | def disambiguate(items, nr, **kwds):
class ListControl (line 1576) | class ListControl(Control):
method __init__ (line 1651) | def __init__(self, type, name, attrs={}, select_default=False,
method clear (line 1680) | def clear(self):
method is_of_kind (line 1683) | def is_of_kind(self, kind):
method get_items (line 1693) | def get_items(self, name=None, label=None, id=None,
method get (line 1725) | def get(self, name=None, label=None, id=None, nr=None,
method _get (line 1758) | def _get(self, name, by_label=False, nr=None, exclude_disabled=False):
method toggle (line 1766) | def toggle(self, name, by_label=False, nr=None):
method set (line 1782) | def set(self, selected, name, by_label=False, nr=None):
method _set_selected_state (line 1797) | def _set_selected_state(self, item, action):
method toggle_single (line 1822) | def toggle_single(self, by_label=None):
method set_single (line 1839) | def set_single(self, selected, by_label=None):
method get_item_disabled (line 1855) | def get_item_disabled(self, name, by_label=False, nr=None):
method set_item_disabled (line 1861) | def set_item_disabled(self, disabled, name, by_label=False, nr=None):
method set_all_items_disabled (line 1871) | def set_all_items_disabled(self, disabled):
method get_item_attrs (line 1880) | def get_item_attrs(self, name, by_label=False, nr=None):
method close_control (line 1897) | def close_control(self):
method add_to_form (line 1900) | def add_to_form(self, form):
method merge_control (line 1919) | def merge_control(self, control):
method fixup (line 1924) | def fixup(self):
method __getattr__ (line 1960) | def __getattr__(self, name):
method __setattr__ (line 1971) | def __setattr__(self, name, value):
method _set_value (line 1983) | def _set_value(self, value):
method _get_items (line 2000) | def _get_items(self, name, target=1):
method _single_set_value (line 2019) | def _single_set_value(self, value):
method _multiple_set_value (line 2026) | def _multiple_set_value(self, value):
method set_value_by_label (line 2053) | def set_value_by_label(self, value):
method get_value_by_label (line 2099) | def get_value_by_label(self):
method possible_items (line 2113) | def possible_items(self, by_label=False):
method _totally_ordered_pairs (line 2133) | def _totally_ordered_pairs(self):
method __str__ (line 2140) | def __str__(self):
class RadioControl (line 2156) | class RadioControl(ListControl):
method __init__ (line 2163) | def __init__(self, type, name, attrs, select_default=False, index=None):
method fixup (line 2171) | def fixup(self):
method get_labels (line 2186) | def get_labels(self):
class CheckboxControl (line 2189) | class CheckboxControl(ListControl):
method __init__ (line 2196) | def __init__(self, type, name, attrs, select_default=False, index=None):
method get_labels (line 2204) | def get_labels(self):
class SelectControl (line 2208) | class SelectControl(ListControl):
method __init__ (line 2264) | def __init__(self, type, name, attrs, select_default=False, index=None):
method fixup (line 2298) | def fixup(self):
class SubmitControl (line 2323) | class SubmitControl(ScalarControl):
method __init__ (line 2331) | def __init__(self, type, name, attrs, index=None):
method get_labels (line 2339) | def get_labels(self):
method is_of_kind (line 2346) | def is_of_kind(self, kind): return kind == "clickable"
method _click (line 2348) | def _click(self, form, coord, return_type, request_class=_request.Requ...
method _totally_ordered_pairs (line 2354) | def _totally_ordered_pairs(self):
class ImageControl (line 2361) | class ImageControl(SubmitControl):
method __init__ (line 2370) | def __init__(self, type, name, attrs, index=None):
method _totally_ordered_pairs (line 2374) | def _totally_ordered_pairs(self):
class PasswordControl (line 2392) | class PasswordControl(TextControl): pass
class HiddenControl (line 2393) | class HiddenControl(TextControl): pass
class TextareaControl (line 2394) | class TextareaControl(TextControl): pass
class SubmitButtonControl (line 2395) | class SubmitButtonControl(SubmitControl): pass
function is_listcontrol (line 2398) | def is_listcontrol(control): return control.is_of_kind("list")
class HTMLForm (line 2401) | class HTMLForm:
method __init__ (line 2641) | def __init__(self, action, method="GET",
method __getattr__ (line 2679) | def __getattr__(self, name):
method __setattr__ (line 2684) | def __setattr__(self, name, value):
method new_control (line 2700) | def new_control(self, type, name, attrs,
method fixup (line 2748) | def fixup(self):
method __str__ (line 2763) | def __str__(self):
method __getitem__ (line 2775) | def __getitem__(self, name):
method __contains__ (line 2777) | def __contains__(self, name):
method __setitem__ (line 2779) | def __setitem__(self, name, value):
method get_value (line 2786) | def get_value(self,
method set_value (line 2810) | def set_value(self, value,
method get_value_by_label (line 2834) | def get_value_by_label(
method set_value_by_label (line 2844) | def set_value_by_label(
method set_all_readonly (line 2855) | def set_all_readonly(self, readonly):
method clear_all (line 2859) | def clear_all(self):
method clear (line 2868) | def clear(self,
method possible_items (line 2883) | def possible_items(self, # deprecated
method set (line 2890) | def set(self, selected, item_name, # deprecated
method toggle (line 2900) | def toggle(self, item_name, # deprecated
method set_single (line 2907) | def set_single(self, selected, # deprecated
method toggle_single (line 2927) | def toggle_single(self, name=None, type=None, kind=None, id=None,
method add_file (line 2939) | def add_file(self, file_object, content_type=None, filename=None,
method click (line 2974) | def click(self, name=None, type=None, id=None, nr=0, coord=(1,1),
method click_request_data (line 3001) | def click_request_data(self,
method click_pairs (line 3035) | def click_pairs(self, name=None, type=None, id=None,
method find_control (line 3056) | def find_control(self,
method _find_list_control (line 3106) | def _find_list_control(self,
method _find_control (line 3117) | def _find_control(self, name, type, kind, id, label, predicate, nr):
method _click (line 3188) | def _click(self, name, type, id, label, nr, coord, return_type,
method _pairs (line 3203) | def _pairs(self):
method _pairs_and_controls (line 3208) | def _pairs_and_controls(self):
method _request_data (line 3225) | def _request_data(self):
method _switch_click (line 3261) | def _switch_click(self, return_type, request_class=_request.Request):
FILE: BruteXSS/mechanize/_gzip.py
class GzipConsumer (line 8) | class GzipConsumer:
method __init__ (line 10) | def __init__(self, consumer):
method __getattr__ (line 15) | def __getattr__(self, key):
method feed (line 18) | def feed(self, data):
method close (line 53) | def close(self):
class stupid_gzip_consumer (line 66) | class stupid_gzip_consumer:
method __init__ (line 67) | def __init__(self): self.data = []
method feed (line 68) | def feed(self, data): self.data.append(data)
class stupid_gzip_wrapper (line 70) | class stupid_gzip_wrapper(_response.closeable_response):
method __init__ (line 71) | def __init__(self, response):
method read (line 79) | def read(self, size=-1):
method readline (line 81) | def readline(self, size=-1):
method readlines (line 83) | def readlines(self, sizehint=-1):
method __getattr__ (line 86) | def __getattr__(self, name):
class HTTPGzipProcessor (line 90) | class HTTPGzipProcessor(_urllib2_fork.BaseHandler):
method http_request (line 93) | def http_request(self, request):
method http_response (line 97) | def http_response(self, request, response):
FILE: BruteXSS/mechanize/_headersutil.py
function is_html_file_extension (line 21) | def is_html_file_extension(url, allow_xhtml):
function is_html (line 29) | def is_html(ct_headers, url, allow_xhtml=False):
function unmatched (line 52) | def unmatched(match):
function split_header_words (line 61) | def split_header_words(header_values):
function join_header_words (line 147) | def join_header_words(lists):
function strip_quotes (line 175) | def strip_quotes(text):
function parse_ns_headers (line 182) | def parse_ns_headers(ns_headers):
function _test (line 236) | def _test():
FILE: BruteXSS/mechanize/_html.py
class CachingGeneratorFunction (line 29) | class CachingGeneratorFunction(object):
method __init__ (line 32) | def __init__(self, iterable):
method __call__ (line 38) | def __call__(self):
class EncodingFinder (line 47) | class EncodingFinder:
method __init__ (line 48) | def __init__(self, default_encoding):
method encoding (line 50) | def encoding(self, response):
class ResponseTypeFinder (line 67) | class ResponseTypeFinder:
method __init__ (line 68) | def __init__(self, allow_xhtml):
method is_html (line 70) | def is_html(self, response, encoding):
class Args (line 77) | class Args(object):
method __init__ (line 81) | def __init__(self, args_map):
method __getattr__ (line 84) | def __getattr__(self, key):
method __setattr__ (line 90) | def __setattr__(self, key, value):
function form_parser_args (line 96) | def form_parser_args(
class Link (line 105) | class Link:
method __init__ (line 106) | def __init__(self, base_url, url, text, tag, attrs):
method __cmp__ (line 111) | def __cmp__(self, other):
method __repr__ (line 119) | def __repr__(self):
class LinksFactory (line 124) | class LinksFactory:
method __init__ (line 126) | def __init__(self,
method set_response (line 147) | def set_response(self, response, base_url, encoding):
method links (line 152) | def links(self):
class FormsFactory (line 194) | class FormsFactory:
method __init__ (line 204) | def __init__(self,
method set_response (line 222) | def set_response(self, response, encoding):
method forms (line 227) | def forms(self):
class TitleFactory (line 242) | class TitleFactory:
method __init__ (line 243) | def __init__(self):
method set_response (line 246) | def set_response(self, response, encoding):
method _get_title_text (line 250) | def _get_title_text(self, parser):
method title (line 275) | def title(self):
function unescape (line 290) | def unescape(data, entities, encoding):
function unescape_charref (line 313) | def unescape_charref(data, encoding):
class MechanizeBs (line 328) | class MechanizeBs(_beautifulsoup.BeautifulSoup):
method __init__ (line 337) | def __init__(self, encoding, text=None, avoidParserProblems=True,
method handle_charref (line 343) | def handle_charref(self, ref):
method handle_entityref (line 346) | def handle_entityref(self, ref):
method unescape_attrs (line 349) | def unescape_attrs(self, attrs):
class RobustLinksFactory (line 356) | class RobustLinksFactory:
method __init__ (line 360) | def __init__(self,
method set_soup (line 381) | def set_soup(self, soup, base_url, encoding):
method links (line 386) | def links(self):
class RobustFormsFactory (line 418) | class RobustFormsFactory(FormsFactory):
method __init__ (line 419) | def __init__(self, *args, **kwds):
method set_response (line 425) | def set_response(self, response, encoding):
class RobustTitleFactory (line 430) | class RobustTitleFactory:
method __init__ (line 431) | def __init__(self):
method set_soup (line 434) | def set_soup(self, soup, encoding):
method title (line 438) | def title(self):
class Factory (line 447) | class Factory:
method __init__ (line 477) | def __init__(self, forms_factory, links_factory, title_factory,
method set_request_class (line 500) | def set_request_class(self, request_class):
method set_response (line 509) | def set_response(self, response):
method __getattr__ (line 525) | def __getattr__(self, name):
method forms (line 547) | def forms(self):
method links (line 565) | def links(self):
class DefaultFactory (line 579) | class DefaultFactory(Factory):
method __init__ (line 581) | def __init__(self, i_want_broken_xhtml_support=False):
method set_response (line 591) | def set_response(self, response):
class RobustFactory (line 601) | class RobustFactory(Factory):
method __init__ (line 606) | def __init__(self, i_want_broken_xhtml_support=False,
method set_response (line 620) | def set_response(self, response):
FILE: BruteXSS/mechanize/_http.py
class EndOfHeadError (line 48) | class EndOfHeadError(Exception): pass
class AbstractHeadParser (line 49) | class AbstractHeadParser:
method __init__ (line 57) | def __init__(self):
method start_meta (line 60) | def start_meta(self, attrs):
method end_head (line 70) | def end_head(self):
method handle_entityref (line 73) | def handle_entityref(self, name):
method handle_charref (line 78) | def handle_charref(self, name):
method unescape_attr (line 82) | def unescape_attr(self, name):
method unescape_attrs (line 86) | def unescape_attrs(self, attrs):
method unknown_entityref (line 93) | def unknown_entityref(self, ref):
method unknown_charref (line 96) | def unknown_charref(self, ref):
class XHTMLCompatibleHeadParser (line 100) | class XHTMLCompatibleHeadParser(AbstractHeadParser,
method __init__ (line 102) | def __init__(self):
method handle_starttag (line 106) | def handle_starttag(self, tag, attrs):
method handle_endtag (line 121) | def handle_endtag(self, tag):
method unescape (line 131) | def unescape(self, name):
method unescape_attr_if_required (line 136) | def unescape_attr_if_required(self, name):
class HeadParser (line 139) | class HeadParser(AbstractHeadParser, sgmllib.SGMLParser):
method _not_called (line 141) | def _not_called(self):
method __init__ (line 144) | def __init__(self):
method handle_starttag (line 148) | def handle_starttag(self, tag, method, attrs):
method unknown_starttag (line 154) | def unknown_starttag(self, tag, attrs):
method handle_endtag (line 157) | def handle_endtag(self, tag, method):
method unescape_attr_if_required (line 163) | def unescape_attr_if_required(self, name):
function parse_head (line 166) | def parse_head(fileobj, parser):
class HTTPEquivProcessor (line 180) | class HTTPEquivProcessor(BaseHandler):
method __init__ (line 185) | def __init__(self, head_parser_class=HeadParser,
method http_response (line 191) | def http_response(self, request, response):
class MechanizeRobotFileParser (line 219) | class MechanizeRobotFileParser(robotparser.RobotFileParser):
method __init__ (line 221) | def __init__(self, url='', opener=None):
method set_opener (line 226) | def set_opener(self, opener=None):
method set_timeout (line 232) | def set_timeout(self, timeout):
method read (line 235) | def read(self):
class RobotExclusionError (line 265) | class RobotExclusionError(HTTPError):
method __init__ (line 266) | def __init__(self, request, *args):
class HTTPRobotRulesProcessor (line 270) | class HTTPRobotRulesProcessor(BaseHandler):
method __init__ (line 282) | def __init__(self, rfp_class=MechanizeRobotFileParser):
method http_request (line 287) | def http_request(self, request):
class HTTPRefererProcessor (line 333) | class HTTPRefererProcessor(BaseHandler):
method __init__ (line 344) | def __init__(self):
method http_request (line 347) | def http_request(self, request):
method http_response (line 353) | def http_response(self, request, response):
function clean_refresh_url (line 361) | def clean_refresh_url(url):
function parse_refresh_header (line 368) | def parse_refresh_header(refresh):
class HTTPRefreshProcessor (line 396) | class HTTPRefreshProcessor(BaseHandler):
method __init__ (line 416) | def __init__(self, max_time=0, honor_time=True):
method http_response (line 421) | def http_response(self, request, response):
FILE: BruteXSS/mechanize/_lwpcookiejar.py
function lwp_cookie_str (line 31) | def lwp_cookie_str(cookie):
class LWPCookieJar (line 61) | class LWPCookieJar(FileCookieJar):
method as_lwp_str (line 76) | def as_lwp_str(self, ignore_discard=True, ignore_expires=True):
method save (line 94) | def save(self, filename=None, ignore_discard=False, ignore_expires=Fal...
method _really_load (line 110) | def _really_load(self, f, filename, ignore_discard, ignore_expires):
FILE: BruteXSS/mechanize/_markupbase.py
class ParserBase (line 25) | class ParserBase:
method __init__ (line 29) | def __init__(self):
method error (line 34) | def error(self, message):
method reset (line 38) | def reset(self):
method getpos (line 42) | def getpos(self):
method updatepos (line 50) | def updatepos(self, i, j):
method parse_declaration (line 66) | def parse_declaration(self, i):
method parse_marked_section (line 144) | def parse_marked_section(self, i, report=1):
method parse_comment (line 166) | def parse_comment(self, i, report=1):
method _parse_doctype_subset (line 180) | def _parse_doctype_subset(self, i, declstartpos):
method _parse_doctype_element (line 247) | def _parse_doctype_element(self, i, declstartpos):
method _parse_doctype_attlist (line 258) | def _parse_doctype_attlist(self, i, declstartpos):
method _parse_doctype_notation (line 315) | def _parse_doctype_notation(self, i, declstartpos):
method _parse_doctype_entity (line 338) | def _parse_doctype_entity(self, i, declstartpos):
method _scan_name (line 374) | def _scan_name(self, i, declstartpos):
method unknown_decl (line 392) | def unknown_decl(self, data):
FILE: BruteXSS/mechanize/_mechanize.py
class BrowserStateError (line 22) | class BrowserStateError(Exception): pass
class LinkNotFoundError (line 23) | class LinkNotFoundError(Exception): pass
class FormNotFoundError (line 24) | class FormNotFoundError(Exception): pass
function sanepathname2url (line 27) | def sanepathname2url(path):
class History (line 35) | class History:
method __init__ (line 41) | def __init__(self):
method add (line 43) | def add(self, request, response):
method back (line 45) | def back(self, n, _response):
method clear (line 54) | def clear(self):
method close (line 56) | def close(self):
class HTTPRefererProcessor (line 63) | class HTTPRefererProcessor(_urllib2_fork.BaseHandler):
method http_request (line 64) | def http_request(self, request):
class Browser (line 78) | class Browser(UserAgentBase):
method __init__ (line 98) | def __init__(self,
method close (line 142) | def close(self):
method set_handle_referer (line 160) | def set_handle_referer(self, handle):
method _add_referer_header (line 165) | def _add_referer_header(self, request, origin_request=True):
method open_novisit (line 185) | def open_novisit(self, url, data=None,
method open (line 201) | def open(self, url, data=None,
method _mech_open (line 205) | def _mech_open(self, url, data=None, update_history=True, visit=None,
method __str__ (line 258) | def __str__(self):
method response (line 270) | def response(self):
method open_local_file (line 279) | def open_local_file(self, filename):
method set_response (line 284) | def set_response(self, response):
method _set_response (line 293) | def _set_response(self, response, close_current):
method visit_response (line 310) | def visit_response(self, response, request=None):
method _visit_request (line 321) | def _visit_request(self, request, update_history):
method geturl (line 331) | def geturl(self):
method reload (line 337) | def reload(self):
method back (line 345) | def back(self, n=1):
method clear_history (line 359) | def clear_history(self):
method set_cookie (line 362) | def set_cookie(self, cookie_string):
method links (line 402) | def links(self, **kwds):
method forms (line 412) | def forms(self):
method global_form (line 422) | def global_form(self):
method viewing_html (line 440) | def viewing_html(self):
method encoding (line 446) | def encoding(self):
method title (line 451) | def title(self):
method select_form (line 462) | def select_form(self, name=None, predicate=None, nr=None):
method click (line 526) | def click(self, *args, **kwds):
method submit (line 533) | def submit(self, *args, **kwds):
method click_link (line 543) | def click_link(self, link=None, **kwds):
method follow_link (line 561) | def follow_link(self, link=None, **kwds):
method find_link (line 571) | def find_link(self, **kwds):
method __getattr__ (line 622) | def __getattr__(self, name):
method _filter_links (line 631) | def _filter_links(self, links,
FILE: BruteXSS/mechanize/_mozillacookiejar.py
class MozillaCookieJar (line 19) | class MozillaCookieJar(FileCookieJar):
method _really_load (line 58) | def _really_load(self, f, filename, ignore_discard, ignore_expires):
method save (line 122) | def save(self, filename=None, ignore_discard=False, ignore_expires=Fal...
FILE: BruteXSS/mechanize/_msiecookiejar.py
function regload (line 24) | def regload(path, leaf):
function epoch_time_offset_from_win32_filetime (line 35) | def epoch_time_offset_from_win32_filetime(filetime):
function binary_to_char (line 51) | def binary_to_char(c): return "%02X" % ord(c)
function binary_to_str (line 52) | def binary_to_str(d): return "".join(map(binary_to_char, list(d)))
class MSIEBase (line 54) | class MSIEBase:
method __init__ (line 67) | def __init__(self):
method _delayload_domain (line 70) | def _delayload_domain(self, domain):
method _load_cookies_from_file (line 83) | def _load_cookies_from_file(self, filename):
method load_cookie_data (line 127) | def load_cookie_data(self, filename,
method load_from_registry (line 189) | def load_from_registry(self, ignore_discard=False, ignore_expires=False,
method _really_load (line 199) | def _really_load(self, index, filename, ignore_discard, ignore_expires,
class MSIECookieJar (line 300) | class MSIECookieJar(MSIEBase, FileCookieJar):
method __init__ (line 336) | def __init__(self, filename=None, delayload=False, policy=None):
method set_cookie (line 340) | def set_cookie(self, cookie):
method _cookies_for_request (line 345) | def _cookies_for_request(self, request):
method _cookies_for_domain (line 356) | def _cookies_for_domain(self, domain, request):
method read_all_cookies (line 364) | def read_all_cookies(self):
method load (line 370) | def load(self, filename, ignore_discard=False, ignore_expires=False,
FILE: BruteXSS/mechanize/_opener.py
class ContentTooShortError (line 32) | class ContentTooShortError(urllib2.URLError):
method __init__ (line 33) | def __init__(self, reason, result):
function set_request_attr (line 38) | def set_request_attr(req, name, value, default):
class OpenerDirector (line 47) | class OpenerDirector(_urllib2_fork.OpenerDirector):
method __init__ (line 48) | def __init__(self):
method add_handler (line 59) | def add_handler(self, handler):
method _maybe_reindex_handlers (line 71) | def _maybe_reindex_handlers(self):
method _request (line 155) | def _request(self, url_or_req, data, visit,
method open (line 170) | def open(self, fullurl, data=None,
method error (line 208) | def error(self, proto, *args):
method retrieve (line 230) | def retrieve(self, fullurl, filename=None, reporthook=None, data=None,
method close (line 300) | def close(self):
function wrapped_open (line 315) | def wrapped_open(urlopen, process_response_object, fullurl, data=None,
class ResponseProcessingOpener (line 333) | class ResponseProcessingOpener(OpenerDirector):
method open (line 335) | def open(self, fullurl, data=None,
method process_response_object (line 343) | def process_response_object(self, response):
class SeekableResponseOpener (line 347) | class SeekableResponseOpener(ResponseProcessingOpener):
method process_response_object (line 348) | def process_response_object(self, response):
function isclass (line 352) | def isclass(obj):
class OpenerFactory (line 356) | class OpenerFactory:
method __init__ (line 377) | def __init__(self, klass=OpenerDirector):
method build_opener (line 380) | def build_opener(self, *handlers):
function urlopen (line 417) | def urlopen(url, data=None, timeout=_sockettimeout._GLOBAL_DEFAULT_TIMEO...
function urlretrieve (line 428) | def urlretrieve(url, filename=None, reporthook=None, data=None,
function install_opener (line 440) | def install_opener(opener):
FILE: BruteXSS/mechanize/_pullparser.py
class NoMoreTokensError (line 44) | class NoMoreTokensError(Exception): pass
class Token (line 46) | class Token:
method __init__ (line 71) | def __init__(self, type, data, attrs=None):
method __iter__ (line 75) | def __iter__(self):
method __eq__ (line 77) | def __eq__(self, other):
method __ne__ (line 85) | def __ne__(self, other): return not self.__eq__(other)
method __repr__ (line 86) | def __repr__(self):
method __str__ (line 90) | def __str__(self):
function iter_until_exception (line 144) | def iter_until_exception(fn, exception, *args, **kwds):
class _AbstractParser (line 152) | class _AbstractParser:
method __init__ (line 155) | def __init__(self, fh, textify={"img": "alt", "applet": "alt"},
method __iter__ (line 203) | def __iter__(self): return self
method tags (line 205) | def tags(self, *names):
method tokens (line 208) | def tokens(self, *tokentypes):
method next (line 212) | def next(self):
method get_token (line 218) | def get_token(self, *tokentypes):
method unget_token (line 241) | def unget_token(self, token):
method get_tag (line 245) | def get_tag(self, *names):
method get_text (line 265) | def get_text(self, endat=None):
method get_compressed_text (line 324) | def get_compressed_text(self, *args, **kwds):
method handle_startendtag (line 335) | def handle_startendtag(self, tag, attrs):
method handle_starttag (line 337) | def handle_starttag(self, tag, attrs):
method handle_endtag (line 339) | def handle_endtag(self, tag):
method handle_charref (line 341) | def handle_charref(self, name):
method handle_entityref (line 343) | def handle_entityref(self, name):
method handle_data (line 345) | def handle_data(self, data):
method handle_comment (line 347) | def handle_comment(self, data):
method handle_decl (line 349) | def handle_decl(self, decl):
method unknown_decl (line 351) | def unknown_decl(self, data):
method handle_pi (line 355) | def handle_pi(self, data):
method unescape_attr (line 358) | def unescape_attr(self, name):
method unescape_attrs (line 360) | def unescape_attrs(self, attrs):
class PullParser (line 366) | class PullParser(_AbstractParser, HTMLParser.HTMLParser):
method __init__ (line 367) | def __init__(self, *args, **kwds):
method unescape (line 370) | def unescape(self, name):
class TolerantPullParser (line 375) | class TolerantPullParser(_AbstractParser, sgmllib.SGMLParser):
method __init__ (line 376) | def __init__(self, *args, **kwds):
method unknown_starttag (line 379) | def unknown_starttag(self, tag, attrs):
method unknown_endtag (line 382) | def unknown_endtag(self, tag):
function _test (line 386) | def _test():
FILE: BruteXSS/mechanize/_request.py
class Request (line 20) | class Request(_urllib2_fork.Request):
method __init__ (line 21) | def __init__(self, url, data=None, headers={},
method __str__ (line 39) | def __str__(self):
FILE: BruteXSS/mechanize/_response.py
function len_of_seekable (line 23) | def len_of_seekable(file_):
class seek_wrapper (line 46) | class seek_wrapper:
method __init__ (line 73) | def __init__(self, wrapped):
method invariant (line 81) | def invariant(self):
method close (line 87) | def close(self):
method __getattr__ (line 91) | def __getattr__(self, name):
method __setattr__ (line 103) | def __setattr__(self, name, value):
method seek (line 112) | def seek(self, offset, whence=0):
method tell (line 158) | def tell(self):
method __copy__ (line 161) | def __copy__(self):
method get_data (line 168) | def get_data(self):
method read (line 176) | def read(self, size=-1):
method readline (line 207) | def readline(self, size=-1):
method readlines (line 231) | def readlines(self, sizehint=-1):
method __iter__ (line 241) | def __iter__(self): return self
method next (line 242) | def next(self):
method __repr__ (line 249) | def __repr__(self):
class response_seek_wrapper (line 254) | class response_seek_wrapper(seek_wrapper):
method __init__ (line 261) | def __init__(self, wrapped):
method __copy__ (line 265) | def __copy__(self):
method info (line 277) | def info(self):
method geturl (line 280) | def geturl(self):
method set_data (line 283) | def set_data(self, data):
class eoffile (line 292) | class eoffile:
method read (line 294) | def read(self, size=-1): return ""
method readline (line 295) | def readline(self, size=-1): return ""
method __iter__ (line 296) | def __iter__(self): return self
method next (line 297) | def next(self): return ""
method close (line 298) | def close(self): pass
class eofresponse (line 300) | class eofresponse(eoffile):
method __init__ (line 301) | def __init__(self, url, headers, code, msg):
method geturl (line 306) | def geturl(self): return self._url
method info (line 307) | def info(self): return self._headers
class closeable_response (line 310) | class closeable_response:
method __init__ (line 337) | def __init__(self, fp, headers, url, code, msg):
method _set_fp (line 344) | def _set_fp(self, fp):
method __repr__ (line 356) | def __repr__(self):
method info (line 360) | def info(self):
method geturl (line 363) | def geturl(self):
method close (line 366) | def close(self):
method __getstate__ (line 373) | def __getstate__(self):
function test_response (line 395) | def test_response(data='test data', headers=[],
function test_html_response (line 399) | def test_html_response(data='test data', headers=[],
function make_response (line 404) | def make_response(data, headers, url, code, msg):
function make_headers (line 419) | def make_headers(headers):
function get_seek_wrapper_class (line 432) | def get_seek_wrapper_class(response):
function seek_wrapped_response (line 467) | def seek_wrapped_response(response):
function upgrade_response (line 482) | def upgrade_response(response):
FILE: BruteXSS/mechanize/_rfc3986.py
function clean_url (line 30) | def clean_url(url, encoding):
function is_clean_uri (line 45) | def is_clean_uri(uri):
function urlsplit (line 67) | def urlsplit(absolute_uri):
function urlunsplit (line 74) | def urlunsplit(parts):
function urljoin (line 93) | def urljoin(base_uri, uri_reference):
function urljoin_parts (line 130) | def urljoin_parts(base_parts, reference_parts):
function remove_dot_segments (line 183) | def remove_dot_segments(path):
function merge (line 231) | def merge(base_authority, base_path, ref_path):
FILE: BruteXSS/mechanize/_sgmllib_copy.py
class SGMLParseError (line 50) | class SGMLParseError(RuntimeError):
class SGMLParser (line 66) | class SGMLParser(markupbase.ParserBase):
method __init__ (line 72) | def __init__(self, verbose=0):
method reset (line 77) | def reset(self):
method setnomoretags (line 87) | def setnomoretags(self):
method setliteral (line 94) | def setliteral(self, *args):
method feed (line 101) | def feed(self, data):
method close (line 112) | def close(self):
method error (line 116) | def error(self, message):
method goahead (line 122) | def goahead(self, end):
method parse_pi (line 228) | def parse_pi(self, i):
method get_starttag_text (line 240) | def get_starttag_text(self):
method parse_starttag (line 244) | def parse_starttag(self, i):
method _convert_ref (line 306) | def _convert_ref(self, match):
method parse_endtag (line 317) | def parse_endtag(self, i):
method finish_shorttag (line 330) | def finish_shorttag(self, tag, data):
method finish_starttag (line 337) | def finish_starttag(self, tag, attrs):
method finish_endtag (line 355) | def finish_endtag(self, tag):
method handle_starttag (line 386) | def handle_starttag(self, tag, method, attrs):
method handle_endtag (line 390) | def handle_endtag(self, tag, method):
method report_unbalanced (line 394) | def report_unbalanced(self, tag):
method convert_charref (line 399) | def convert_charref(self, name):
method convert_codepoint (line 409) | def convert_codepoint(self, codepoint):
method handle_charref (line 412) | def handle_charref(self, name):
method convert_entityref (line 424) | def convert_entityref(self, name):
method handle_entityref (line 436) | def handle_entityref(self, name):
method handle_data (line 445) | def handle_data(self, data):
method handle_comment (line 449) | def handle_comment(self, data):
method handle_decl (line 453) | def handle_decl(self, decl):
method handle_pi (line 457) | def handle_pi(self, data):
method unknown_starttag (line 461) | def unknown_starttag(self, tag, attrs): pass
method unknown_endtag (line 462) | def unknown_endtag(self, tag): pass
method unknown_charref (line 463) | def unknown_charref(self, ref): pass
method unknown_entityref (line 464) | def unknown_entityref(self, ref): pass
class TestSGMLParser (line 467) | class TestSGMLParser(SGMLParser):
method __init__ (line 469) | def __init__(self, verbose=0):
method handle_data (line 473) | def handle_data(self, data):
method flush (line 478) | def flush(self):
method handle_comment (line 484) | def handle_comment(self, data):
method unknown_starttag (line 491) | def unknown_starttag(self, tag, attrs):
method unknown_endtag (line 501) | def unknown_endtag(self, tag):
method unknown_entityref (line 505) | def unknown_entityref(self, ref):
method unknown_charref (line 509) | def unknown_charref(self, ref):
method unknown_decl (line 513) | def unknown_decl(self, data):
method close (line 517) | def close(self):
function test (line 522) | def test(args = None):
FILE: BruteXSS/mechanize/_testcase.py
class SetupStack (line 8) | class SetupStack(object):
method __init__ (line 10) | def __init__(self):
method add_teardown (line 13) | def add_teardown(self, teardown):
method tear_down (line 16) | def tear_down(self):
class TearDownConvenience (line 21) | class TearDownConvenience(object):
method __init__ (line 23) | def __init__(self, setup_stack=None):
method tear_down (line 30) | def tear_down(self):
class TempDirMaker (line 35) | class TempDirMaker(TearDownConvenience):
method make_temp_dir (line 37) | def make_temp_dir(self, dir_=None):
class MonkeyPatcher (line 46) | class MonkeyPatcher(TearDownConvenience):
method monkey_patch (line 50) | def monkey_patch(self, obj, name, value):
method _set_environ (line 57) | def _set_environ(self, env, name, value):
method monkey_patch_environ (line 66) | def monkey_patch_environ(self, name, value, env=os.environ):
class FixtureFactory (line 74) | class FixtureFactory(object):
method __init__ (line 76) | def __init__(self):
method register_context_manager (line 81) | def register_context_manager(self, name, context_manager):
method get_fixture (line 84) | def get_fixture(self, name, add_teardown):
method get_cached_fixture (line 90) | def get_cached_fixture(self, name):
method tear_down (line 97) | def tear_down(self):
class TestCase (line 101) | class TestCase(unittest.TestCase):
method setUp (line 103) | def setUp(self):
method tearDown (line 107) | def tearDown(self):
method register_context_manager (line 110) | def register_context_manager(self, name, context_manager):
method get_fixture (line 114) | def get_fixture(self, name):
method get_cached_fixture (line 117) | def get_cached_fixture(self, name):
method add_teardown (line 120) | def add_teardown(self, *args, **kwds):
method make_temp_dir (line 123) | def make_temp_dir(self, *args, **kwds):
method monkey_patch (line 126) | def monkey_patch(self, *args, **kwds):
method monkey_patch_environ (line 129) | def monkey_patch_environ(self, *args, **kwds):
method assert_contains (line 132) | def assert_contains(self, container, containee):
method assert_less_than (line 136) | def assert_less_than(self, got, expected):
class GoldenTestCase (line 143) | class GoldenTestCase(TestCase):
method assert_golden (line 147) | def assert_golden(self, dir_got, dir_expect):
FILE: BruteXSS/mechanize/_urllib2_fork.py
function sha1_digest (line 58) | def sha1_digest(bytes):
function md5_digest (line 60) | def md5_digest(bytes):
function sha1_digest (line 63) | def sha1_digest(bytes):
function md5_digest (line 65) | def md5_digest(bytes):
function create_readline_wrapper (line 75) | def create_readline_wrapper(fh):
function splithost (line 81) | def splithost(url):
function urlopen (line 114) | def urlopen(url, data=None, timeout=_sockettimeout._GLOBAL_DEFAULT_TIMEO...
function install_opener (line 120) | def install_opener(opener):
function request_host (line 126) | def request_host(request):
class Request (line 142) | class Request:
method __init__ (line 144) | def __init__(self, url, data=None, headers={},
method __getattr__ (line 163) | def __getattr__(self, attr):
method get_method (line 175) | def get_method(self):
method add_data (line 183) | def add_data(self, data):
method has_data (line 186) | def has_data(self):
method get_data (line 189) | def get_data(self):
method get_full_url (line 192) | def get_full_url(self):
method get_type (line 195) | def get_type(self):
method get_host (line 202) | def get_host(self):
method get_selector (line 209) | def get_selector(self):
method set_proxy (line 217) | def set_proxy(self, host, type):
method has_proxy (line 227) | def has_proxy(self):
method get_origin_req_host (line 232) | def get_origin_req_host(self):
method is_unverifiable (line 235) | def is_unverifiable(self):
method add_header (line 238) | def add_header(self, key, val):
method add_unredirected_header (line 242) | def add_unredirected_header(self, key, val):
method has_header (line 246) | def has_header(self, header_name):
method get_header (line 250) | def get_header(self, header_name, default=None):
method header_items (line 255) | def header_items(self):
class OpenerDirector (line 260) | class OpenerDirector:
method __init__ (line 261) | def __init__(self):
method add_handler (line 271) | def add_handler(self, handler):
method close (line 320) | def close(self):
method _call_chain (line 324) | def _call_chain(self, chain, kind, meth_name, *args):
method _open (line 336) | def _open(self, req, data=None):
method error (line 351) | def error(self, proto, *args):
function build_opener (line 376) | def build_opener(*handlers):
class BaseHandler (line 415) | class BaseHandler:
method add_parent (line 418) | def add_parent(self, parent):
method close (line 421) | def close(self):
method __lt__ (line 425) | def __lt__(self, other):
class HTTPErrorProcessor (line 434) | class HTTPErrorProcessor(BaseHandler):
method http_response (line 449) | def http_response(self, request, response):
class HTTPDefaultErrorHandler (line 463) | class HTTPDefaultErrorHandler(BaseHandler):
method http_error_default (line 464) | def http_error_default(self, req, fp, code, msg, hdrs):
class HTTPRedirectHandler (line 479) | class HTTPRedirectHandler(BaseHandler):
method redirect_request (line 504) | def redirect_request(self, req, fp, code, msg, headers, newurl):
method http_error_302 (line 535) | def http_error_302(self, req, fp, code, msg, headers):
function _parse_proxy (line 581) | def _parse_proxy(proxy):
class ProxyHandler (line 653) | class ProxyHandler(BaseHandler):
method __init__ (line 657) | def __init__(self, proxies=None, proxy_bypass=None):
method proxy_open (line 671) | def proxy_open(self, req, proxy, type):
class HTTPPasswordMgr (line 700) | class HTTPPasswordMgr:
method __init__ (line 702) | def __init__(self):
method add_password (line 705) | def add_password(self, realm, uri, user, passwd):
method find_user_password (line 716) | def find_user_password(self, realm, authuri):
method reduce_uri (line 726) | def reduce_uri(self, uri, default_port=True):
method is_suburi (line 749) | def is_suburi(self, base, test):
class HTTPPasswordMgrWithDefaultRealm (line 764) | class HTTPPasswordMgrWithDefaultRealm(HTTPPasswordMgr):
method find_user_password (line 766) | def find_user_password(self, realm, authuri):
class AbstractBasicAuthHandler (line 774) | class AbstractBasicAuthHandler:
method __init__ (line 788) | def __init__(self, password_mgr=None):
method http_error_auth_reqed (line 794) | def http_error_auth_reqed(self, authreq, host, req, headers):
method retry_http_basic_auth (line 806) | def retry_http_basic_auth(self, host, req, realm):
class HTTPBasicAuthHandler (line 821) | class HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
method http_error_401 (line 825) | def http_error_401(self, req, fp, code, msg, headers):
class ProxyBasicAuthHandler (line 831) | class ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
method http_error_407 (line 835) | def http_error_407(self, req, fp, code, msg, headers):
function randombytes (line 845) | def randombytes(n):
class AbstractDigestAuthHandler (line 859) | class AbstractDigestAuthHandler:
method __init__ (line 870) | def __init__(self, passwd=None):
method reset_retry_count (line 879) | def reset_retry_count(self):
method http_error_auth_reqed (line 882) | def http_error_auth_reqed(self, auth_header, host, req, headers):
method retry_http_digest_auth (line 899) | def retry_http_digest_auth(self, req, auth):
method get_cnonce (line 912) | def get_cnonce(self, nonce):
method get_authorization (line 922) | def get_authorization(self, req, chal):
method get_algorithm_impls (line 986) | def get_algorithm_impls(self, algorithm):
method get_entity_digest (line 997) | def get_entity_digest(self, data, chal):
class HTTPDigestAuthHandler (line 1002) | class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
method http_error_401 (line 1012) | def http_error_401(self, req, fp, code, msg, headers):
class ProxyDigestAuthHandler (line 1020) | class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
method http_error_407 (line 1025) | def http_error_407(self, req, fp, code, msg, headers):
class AbstractHTTPHandler (line 1032) | class AbstractHTTPHandler(BaseHandler):
method __init__ (line 1034) | def __init__(self, debuglevel=0):
method set_http_debuglevel (line 1037) | def set_http_debuglevel(self, level):
method do_request_ (line 1040) | def do_request_(self, request):
method do_open (line 1069) | def do_open(self, http_class, req):
class HTTPHandler (line 1139) | class HTTPHandler(AbstractHTTPHandler):
method http_open (line 1141) | def http_open(self, req):
class HTTPSConnectionFactory (line 1148) | class HTTPSConnectionFactory:
method __init__ (line 1149) | def __init__(self, key_file, cert_file):
method __call__ (line 1152) | def __call__(self, hostport):
class HTTPSHandler (line 1157) | class HTTPSHandler(AbstractHTTPHandler):
method __init__ (line 1159) | def __init__(self, client_cert_manager=None):
method https_open (line 1163) | def https_open(self, req):
class HTTPCookieProcessor (line 1174) | class HTTPCookieProcessor(BaseHandler):
method __init__ (line 1182) | def __init__(self, cookiejar=None):
method http_request (line 1187) | def http_request(self, request):
method http_response (line 1191) | def http_response(self, request, response):
class UnknownHandler (line 1198) | class UnknownHandler(BaseHandler):
method unknown_open (line 1199) | def unknown_open(self, req):
function parse_keqv_list (line 1203) | def parse_keqv_list(l):
function parse_http_list (line 1213) | def parse_http_list(s):
class FileHandler (line 1256) | class FileHandler(BaseHandler):
method file_open (line 1258) | def file_open(self, req):
method get_names (line 1268) | def get_names(self):
method open_local_file (line 1278) | def open_local_file(self, req):
class FTPHandler (line 1307) | class FTPHandler(BaseHandler):
method ftp_open (line 1308) | def ftp_open(self, req):
method connect_ftp (line 1361) | def connect_ftp(self, user, passwd, host, port, dirs, timeout):
class CacheFTPHandler (line 1370) | class CacheFTPHandler(FTPHandler):
method __init__ (line 1373) | def __init__(self):
method setTimeout (line 1380) | def setTimeout(self, t):
method setMaxConns (line 1383) | def setMaxConns(self, m):
method connect_ftp (line 1386) | def connect_ftp(self, user, passwd, host, port, dirs, timeout):
method check_cache (line 1396) | def check_cache(self):
FILE: BruteXSS/mechanize/_useragent.py
class UserAgentBase (line 24) | class UserAgentBase(_opener.OpenerDirector):
method __init__ (line 91) | def __init__(self):
method close (line 124) | def close(self):
method set_handled_schemes (line 137) | def set_handled_schemes(self, schemes):
method set_cookiejar (line 165) | def set_cookiejar(self, cookiejar):
method set_proxies (line 171) | def set_proxies(self, proxies=None, proxy_bypass=None):
method add_password (line 198) | def add_password(self, url, user, password, realm=None):
method add_proxy_password (line 200) | def add_proxy_password(self, user, password, hostport=None, realm=None):
method add_client_certificate (line 204) | def add_client_certificate(self, url, key_file, cert_file):
method set_password_manager (line 225) | def set_password_manager(self, password_manager):
method set_proxy_password_manager (line 230) | def set_proxy_password_manager(self, password_manager):
method set_client_cert_manager (line 235) | def set_client_cert_manager(self, cert_manager):
method set_handle_robots (line 242) | def set_handle_robots(self, handle):
method set_handle_redirect (line 245) | def set_handle_redirect(self, handle):
method set_handle_refresh (line 248) | def set_handle_refresh(self, handle, max_time=None, honor_time=True):
method set_handle_equiv (line 252) | def set_handle_equiv(self, handle, head_parser_class=None):
method set_handle_gzip (line 264) | def set_handle_gzip(self, handle):
method set_debug_redirects (line 272) | def set_debug_redirects(self, handle):
method set_debug_responses (line 298) | def set_debug_responses(self, handle):
method set_debug_http (line 308) | def set_debug_http(self, handle):
method _set_handler (line 316) | def _set_handler(self, name, handle=None, obj=None,
method _replace_handler (line 331) | def _replace_handler(self, name, newhandler=None):
class UserAgent (line 346) | class UserAgent(UserAgentBase):
method __init__ (line 348) | def __init__(self):
method set_seekable_responses (line 352) | def set_seekable_responses(self, handle):
method open (line 356) | def open(self, fullurl, data=None,
FILE: BruteXSS/mechanize/_util.py
class ExperimentalWarning (line 15) | class ExperimentalWarning(UserWarning):
function experimental (line 18) | def experimental(message):
function hide_experimental_warnings (line 20) | def hide_experimental_warnings():
function reset_experimental_warnings (line 22) | def reset_experimental_warnings():
function deprecation (line 25) | def deprecation(message):
function hide_deprecations (line 27) | def hide_deprecations():
function reset_deprecations (line 29) | def reset_deprecations():
function write_file (line 33) | def write_file(filename, data):
function get1 (line 41) | def get1(sequence):
function isstringlike (line 46) | def isstringlike(x):
function my_timegm (line 64) | def my_timegm(tt):
function time2isoz (line 79) | def time2isoz(t=None):
function time2netscape (line 96) | def time2netscape(t=None):
function offset_from_tz_string (line 116) | def offset_from_tz_string(tz):
function _str2time (line 130) | def _str2time(day, mon, yr, hr, min, sec, tz):
function http2time (line 205) | def http2time(text):
function iso2time (line 278) | def iso2time(text):
FILE: DBScanner/dbscan.py
class DBScanner (line 18) | class DBScanner(object):
method __init__ (line 19) | def __init__(self, target, thread):
method get_ip (line 29) | def get_ip(self):
method get_port (line 34) | def get_port(self):
method scan (line 37) | def scan(self, ip, port):
method handle (line 48) | def handle(self, ip, port):
method start (line 68) | def start(self, ip):
method run (line 77) | def run(self):
function banner (line 92) | def banner():
function main (line 103) | def main():
FILE: Github_Leak/GitHack-master/GitHack.py
class Scanner (line 29) | class Scanner(object):
method __init__ (line 30) | def __init__(self):
method get_back_file (line 47) | def get_back_file(self):
method exit_thread (line 74) | def exit_thread(self):
method scan (line 79) | def scan(self):
FILE: Github_Leak/GitHack-master/lib/parser.py
function check (line 13) | def check(boolean, message):
function parse (line 20) | def parse(filename, pretty=True):
FILE: Github_Leak/Github-Hunter-master/GithubHunter.py
function login_github (line 31) | def login_github(username,password):#登陆Github
function hunter (line 56) | def hunter(gUser, gPass, keywords):#根据关键词获取想要查询的内容
function insert_DB (line 110) | def insert_DB(url, code):
function compare_DB_Url (line 124) | def compare_DB_Url(url):
function error_Record (line 138) | def error_Record(error, tb):
function send_mail (line 149) | def send_mail(host, username, password, sender, receivers, message):
FILE: User Agents/useragents.py
function get_xml_lists (line 48) | def get_xml_lists(save_path):
function gen_from_xml (line 70) | def gen_from_xml(xml_dir, csv_dir=CSV_DUMP, json_dir=JSON_DUMP):
function xml_lists (line 115) | def xml_lists(raw_lists_path, csv_dir=CSV_DUMP, json_dir=JSON_DUMP):
function mine_dev_whatismybrowser (line 126) | def mine_dev_whatismybrowser(browser, save_path=RAW_LISTS, to_page=30):
function wimb_page_order (line 159) | def wimb_page_order(ua_page):
function collect_ua_whatismybrowser (line 168) | def collect_ua_whatismybrowser(
function whatismybrowser (line 198) | def whatismybrowser(raw_list_dir, to_page=30,
FILE: Weak_Password/Bruteforce/comm/config.py
class config (line 6) | class config(object):
method getips (line 8) | def getips(self,ip):
method file2list (line 28) | def file2list(self,file):
method write_file (line 42) | def write_file(self,file,contents):
FILE: Weak_Password/Bruteforce/comm/portscan.py
class portscan (line 18) | class portscan():
method __init__ (line 21) | def __init__(self,c,user_ports):
method getports (line 71) | def getports(self,user_ports):
method pinger (line 92) | def pinger(self):
method pingscan (line 129) | def pingscan(self,isping,threads,ips):
function prepsigns (line 157) | def prepsigns(self):
function matchbanner (line 165) | def matchbanner(self,banner,slist):
function scanports (line 176) | def scanports(self):
function portsscan (line 226) | def portsscan(self,threads,file):
function handleunknown (line 249) | def handleunknown(self):
function run (line 285) | def run(self,isping,threads,ips,file):
FILE: Weak_Password/Bruteforce/comm/printers.py
class colors (line 5) | class colors:
function printRed (line 26) | def printRed(mess):
function printPink (line 30) | def printPink(mess):
function printGreen (line 34) | def printGreen(mess):
function set_cmd_text_color (line 58) | def set_cmd_text_color(color, handle=std_out_handle):
function resetColor (line 62) | def resetColor():
function printRed (line 65) | def printRed(mess):
function printPink (line 70) | def printPink(mess):
function printGreen (line 75) | def printGreen(mess):
FILE: Weak_Password/Bruteforce/factorys/pluginFactory.py
function ftpburp (line 22) | def ftpburp(c):
function smbburp (line 26) | def smbburp(c):
function mysqlburp (line 30) | def mysqlburp(c):
function mssqlburp (line 34) | def mssqlburp(c):
function ldapburp (line 38) | def ldapburp(c):
function mongodbburp (line 42) | def mongodbburp(c):
function redisburp (line 46) | def redisburp(c):
function rsyncburp (line 50) | def rsyncburp(c):
function snmpburp (line 54) | def snmpburp(c):
function sshburp (line 58) | def sshburp(c):
function sslburp (line 62) | def sslburp(c):
function vncburp (line 66) | def vncburp(c):
function webburp (line 70) | def webburp(c):
class pluginFactory (line 74) | class pluginFactory():
method __init__ (line 75) | def __init__(self,c):
method get_pluginList (line 96) | def get_pluginList(self):
FILE: Weak_Password/Bruteforce/plugins/ftp.py
class ftp_burp (line 9) | class ftp_burp(object):
method __init__ (line 11) | def __init__(self,c):
method ftp_connect (line 18) | def ftp_connect(self,ip,username,password,port):
method ftp_l (line 33) | def ftp_l(self,ip,port):
method run (line 47) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/ldapd.py
class ldap_burp (line 8) | class ldap_burp(object):
method __init__ (line 10) | def __init__(self,c):
method ldap_connect (line 17) | def ldap_connect(self,ip,username,password,port):
method ldap_creak (line 31) | def ldap_creak(self,ip,port):
method run (line 57) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/mongodb.py
class mongodb_burp (line 9) | class mongodb_burp(object):
method __init__ (line 11) | def __init__(self,c):
method mongoDB_connect (line 18) | def mongoDB_connect(self,ip,username,password,port):
method mongoDB (line 51) | def mongoDB(self,ip,port):
method run (line 70) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/mssql.py
class mssql_burp (line 10) | class mssql_burp(object):
method __init__ (line 12) | def __init__(self,c):
method mssql_connect (line 18) | def mssql_connect(self,ip,username,password,port):
method mssq1 (line 32) | def mssq1(self,ip,port):
method run (line 50) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/mysql.py
class mysql_burp (line 9) | class mysql_burp(object):
method __init__ (line 10) | def __init__(self,c):
method mysql_connect (line 16) | def mysql_connect(self,ip,username,password,port):
method mysq1 (line 35) | def mysq1(self,ip,port):
method run (line 53) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/pop3.py
function pop3_Connection (line 8) | def pop3_Connection(ip,username,password,port):
function pop3_l (line 28) | def pop3_l(ip,port):
function pop_main (line 41) | def pop_main(ipdict,threads):
FILE: Weak_Password/Bruteforce/plugins/postgres.py
function postgres_connect (line 10) | def postgres_connect(ip,username,password,port):
function postgreS (line 31) | def postgreS(ip,port):
function postgres_main (line 54) | def postgres_main(ipdict,threads):
FILE: Weak_Password/Bruteforce/plugins/redisexp.py
class redis_burp (line 9) | class redis_burp(object):
method __init__ (line 11) | def __init__(self,c):
method redisexp (line 18) | def redisexp(self):
method run (line 34) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/rsync.py
class rsync_burp (line 16) | class rsync_burp(object):
method __init__ (line 18) | def __init__(self,c):
method get_ver (line 24) | def get_ver(self,host):
method rsync_connect (line 31) | def rsync_connect(self,ip,port):
method rsync_creak (line 62) | def rsync_creak(self,ip,port):
method run (line 69) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/rsynclib.py
class Error (line 33) | class Error(Exception): pass
class rsync (line 45) | class rsync:
method __init__ (line 66) | def __init__(self, host='', module='', user='', passwd='',port=873,
method connect (line 74) | def connect(self, host='', port=0, timeout=-999):
method set_debuglevel (line 93) | def set_debuglevel(self, level):
method putline (line 103) | def putline(self, line):
method getline (line 110) | def getline(self):
method getmultiline (line 125) | def getmultiline(self):
method getresp (line 131) | def getresp(self):
method sendcmd (line 139) | def sendcmd(self, cmd):
method login (line 144) | def login(self, module='', user = '', passwd = ''):
method getModules (line 175) | def getModules(self):
method close (line 186) | def close(self):
FILE: Weak_Password/Bruteforce/plugins/smb.py
class smb_burp (line 10) | class smb_burp(object):
method __init__ (line 12) | def __init__(self,c):
method smb_connect (line 18) | def smb_connect(self,ip,username,password):
method smb_l (line 31) | def smb_l(self,ip,port):
method run (line 45) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/snmp.py
class snmp_burp (line 9) | class snmp_burp(object):
method __init__ (line 11) | def __init__(self,c):
method snmp_connect (line 17) | def snmp_connect(self,ip,key):
method snmp_l (line 32) | def snmp_l(self,ip,port):
method run (line 49) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/ssh.py
class ssh_burp (line 9) | class ssh_burp(object):
method __init__ (line 11) | def __init__(self,c):
method ssh_connect (line 17) | def ssh_connect(self,ip,username,password,port):
method ssh_l (line 37) | def ssh_l(self,ip,port):
method run (line 54) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/ssltest.py
class ssl_burp (line 11) | class ssl_burp(object):
method __init__ (line 13) | def __init__(self,c):
method h2bin (line 42) | def h2bin(self,x):
method recvall (line 46) | def recvall(self,s, length, timeout=8):
method recvmsg (line 64) | def recvmsg(self,s):
method hit_hb (line 73) | def hit_hb(self,s,ip,port):
method openssl_test (line 96) | def openssl_test(self,ip,port):
method run (line 119) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/vnc.py
class vnc_burp (line 8) | class vnc_burp(object):
method __init__ (line 11) | def __init__(self,c):
method vnc_connect (line 17) | def vnc_connect(self,ip,port,password):
method vnc_l (line 30) | def vnc_l(self,ip,port):
method run (line 53) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Bruteforce/plugins/vnclib.py
class VNC_Error (line 6) | class VNC_Error(Exception):
class VNC (line 8) | class VNC:
method connect (line 9) | def connect(self, host, port, timeout):
method login (line 20) | def login(self, password):
method gen_key (line 84) | def gen_key(self, key):
FILE: Weak_Password/Bruteforce/plugins/web.py
class web_burp (line 15) | class web_burp(object):
method __init__ (line 17) | def __init__(self,c):
method weblogin (line 24) | def weblogin(self,url,ip,port,username,password):
method webmain (line 48) | def webmain(self,ip,port):
method run (line 91) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/Fuxi-Scanner/fuxi/app.py
function page_not_fount (line 35) | def page_not_fount(e):
function internal_server_error (line 41) | def internal_server_error(e):
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/bootstrap/bootstrap-multiselect.js
function forEach (line 125) | function forEach(array, callback) {
function Multiselect (line 138) | function Multiselect(select, options) {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/jquery/jquery.bootstrap-duallistbox.js
function BootstrapDualListbox (line 40) | function BootstrapDualListbox(element, options) {
function triggerChangeEvent (line 52) | function triggerChangeEvent(dualListbox) {
function updateSelectionStates (line 56) | function updateSelectionStates(dualListbox) {
function changeSelectionState (line 68) | function changeSelectionState(dualListbox, original_index, selected) {
function formatString (line 77) | function formatString(s, args) {
function refreshInfo (line 83) | function refreshInfo(dualListbox) {
function refreshSelects (line 117) | function refreshSelects(dualListbox) {
function filter (line 140) | function filter(dualListbox, selectIndex) {
function saveSelections (line 171) | function saveSelections(dualListbox, selectIndex) {
function sortOptions (line 179) | function sortOptions(select) {
function clearSelections (line 185) | function clearSelections(dualListbox) {
function move (line 191) | function move(dualListbox) {
function remove (line 211) | function remove(dualListbox) {
function moveAll (line 231) | function moveAll(dualListbox) {
function removeAll (line 250) | function removeAll(dualListbox) {
function bindEvents (line 269) | function bindEvents(dualListbox) {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/Chart.js
function e (line 10) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function getRgba (line 35) | function getRgba(string) {
function getHsla (line 95) | function getHsla(string) {
function getHwb (line 111) | function getHwb(string) {
function getRgb (line 127) | function getRgb(string) {
function getHsl (line 132) | function getHsl(string) {
function getAlpha (line 137) | function getAlpha(string) {
function hexString (line 151) | function hexString(rgb) {
function rgbString (line 156) | function rgbString(rgba, alpha) {
function rgbaString (line 163) | function rgbaString(rgba, alpha) {
function percentString (line 171) | function percentString(rgba, alpha) {
function percentaString (line 182) | function percentaString(rgba, alpha) {
function hslString (line 189) | function hslString(hsla, alpha) {
function hslaString (line 196) | function hslaString(hsla, alpha) {
function hwbString (line 206) | function hwbString(hwb, alpha) {
function keyword (line 214) | function keyword(rgb) {
function scale (line 219) | function scale(num, min, max) {
function hexDouble (line 223) | function hexDouble(num) {
function rgb2hsl (line 781) | function rgb2hsl(rgb) {
function rgb2hsv (line 816) | function rgb2hsv(rgb) {
function rgb2hwb (line 849) | function rgb2hwb(rgb) {
function rgb2cmyk (line 860) | function rgb2cmyk(rgb) {
function rgb2keyword (line 873) | function rgb2keyword(rgb) {
function rgb2xyz (line 877) | function rgb2xyz(rgb) {
function rgb2lab (line 894) | function rgb2lab(rgb) {
function rgb2lch (line 916) | function rgb2lch(args) {
function hsl2rgb (line 920) | function hsl2rgb(hsl) {
function hsl2hsv (line 958) | function hsl2hsv(hsl) {
function hsl2hwb (line 977) | function hsl2hwb(args) {
function hsl2cmyk (line 981) | function hsl2cmyk(args) {
function hsl2keyword (line 985) | function hsl2keyword(args) {
function hsv2rgb (line 990) | function hsv2rgb(hsv) {
function hsv2hsl (line 1018) | function hsv2hsl(hsv) {
function hsv2hwb (line 1032) | function hsv2hwb(args) {
function hsv2cmyk (line 1036) | function hsv2cmyk(args) {
function hsv2keyword (line 1040) | function hsv2keyword(args) {
function hwb2rgb (line 1045) | function hwb2rgb(hwb) {
function hwb2hsl (line 1080) | function hwb2hsl(args) {
function hwb2hsv (line 1084) | function hwb2hsv(args) {
function hwb2cmyk (line 1088) | function hwb2cmyk(args) {
function hwb2keyword (line 1092) | function hwb2keyword(args) {
function cmyk2rgb (line 1096) | function cmyk2rgb(cmyk) {
function cmyk2hsl (line 1109) | function cmyk2hsl(args) {
function cmyk2hsv (line 1113) | function cmyk2hsv(args) {
function cmyk2hwb (line 1117) | function cmyk2hwb(args) {
function cmyk2keyword (line 1121) | function cmyk2keyword(args) {
function xyz2rgb (line 1126) | function xyz2rgb(xyz) {
function xyz2lab (line 1153) | function xyz2lab(xyz) {
function xyz2lch (line 1174) | function xyz2lch(args) {
function lab2xyz (line 1178) | function lab2xyz(lab) {
function lab2lch (line 1199) | function lab2lch(lab) {
function lab2rgb (line 1214) | function lab2rgb(args) {
function lch2lab (line 1218) | function lch2lab(lch) {
function lch2xyz (line 1230) | function lch2xyz(args) {
function lch2rgb (line 1234) | function lch2rgb(args) {
function keyword2rgb (line 1238) | function keyword2rgb(keyword) {
function keyword2hsl (line 1242) | function keyword2hsl(args) {
function keyword2hsv (line 1246) | function keyword2hsv(args) {
function keyword2hwb (line 1250) | function keyword2hwb(args) {
function keyword2cmyk (line 1254) | function keyword2cmyk(args) {
function keyword2lab (line 1258) | function keyword2lab(args) {
function keyword2xyz (line 1262) | function keyword2xyz(args) {
function computeMinSampleSize (line 1982) | function computeMinSampleSize(scale, pixels) {
function computeFitCategoryTraits (line 2006) | function computeFitCategoryTraits(index, ruler, options) {
function computeFlexCategoryTraits (line 2036) | function computeFlexCategoryTraits(index, ruler, options) {
function lineEnabled (line 2898) | function lineEnabled(dataset, options) {
function capControlPoint (line 3114) | function capControlPoint(pt, min, max) {
function initConfig (line 3841) | function initConfig(config) {
function updateConfig (line 3862) | function updateConfig(chart) {
function positionIsHorizontal (line 3882) | function positionIsHorizontal(position) {
function listenArrayEvents (line 4779) | function listenArrayEvents(array, listener) {
function unlistenArrayEvents (line 4820) | function unlistenArrayEvents(array, listener) {
function interpolate (line 5117) | function interpolate(start, view, model, ease) {
function parseMaxStyle (line 5649) | function parseMaxStyle(styleValue, node, parentProperty) {
function isConstrainedValue (line 5669) | function isConstrainedValue(value) {
function getConstraintDimension (line 5678) | function getConstraintDimension(domNode, maxStyle, percentageProperty) {
function getRelativePosition (line 5852) | function getRelativePosition(e, chart) {
function parseVisibleItems (line 5868) | function parseVisibleItems(chart, handler) {
function getIntersectItems (line 5893) | function getIntersectItems(chart, position) {
function getNearestItems (line 5913) | function getNearestItems(chart, position, intersect, distanceMetric) {
function getDistanceMetricForAxis (line 5942) | function getDistanceMetricForAxis(axis) {
function indexMode (line 5953) | function indexMode(chart, e, options) {
function filterByPosition (line 6229) | function filterByPosition(array, position) {
function sortByWeight (line 6235) | function sortByWeight(array, reverse) {
function getMinimumBoxSize (line 6411) | function getMinimumBoxSize(box) {
function fitBox (line 6463) | function fitBox(box) {
function finalFitVerticalBox (line 6509) | function finalFitVerticalBox(box) {
function placeBox (line 6594) | function placeBox(box) {
function labelsFromTicks (line 7097) | function labelsFromTicks(ticks) {
function getLineValue (line 7108) | function getLineValue(scale, index, offsetGridLines) {
function computeTextSize (line 7123) | function computeTextSize(context, tick, font) {
function parseFontOptions (line 7129) | function parseFontOptions(options) {
function parseLineHeight (line 7144) | function parseLineHeight(options) {
function mergeOpacity (line 8191) | function mergeOpacity(colorString, opacity) {
function pushOrConcat (line 8197) | function pushOrConcat(base, toPush) {
function createTooltipItem (line 8213) | function createTooltipItem(element) {
function getBaseModel (line 8233) | function getBaseModel(tooltipOpts) {
function getTooltipSize (line 8285) | function getTooltipSize(tooltip, model) {
function determineAlignment (line 8353) | function determineAlignment(tooltip, size) {
function getBackgroundPoint (line 8426) | function getBackgroundPoint(vm, size, alignment, chart) {
function xRange (line 9264) | function xRange(mouseX) {
function yRange (line 9269) | function yRange(mouseY) {
function isVertical (line 9364) | function isVertical(bar) {
function getBarBounds (line 9374) | function getBarBounds(bar) {
function cornerAt (line 9475) | function cornerAt(index) {
function readUsedSize (line 10548) | function readUsedSize(element, property) {
function initCanvas (line 10559) | function initCanvas(canvas, config) {
function addEventListener (line 10633) | function addEventListener(node, type, listener) {
function removeEventListener (line 10637) | function removeEventListener(node, type, listener) {
function createEvent (line 10641) | function createEvent(type, chart, x, y, nativeEvent) {
function fromNativeEvent (line 10651) | function fromNativeEvent(event, chart) {
function throttled (line 10657) | function throttled(fn, thisArg) {
function createResizer (line 10676) | function createResizer(handler) {
function watchForRender (line 10734) | function watchForRender(node, handler) {
function unwatchForRender (line 10756) | function unwatchForRender(node) {
function addResizeListener (line 10771) | function addResizeListener(node, listener, chart) {
function removeResizeListener (line 10796) | function removeResizeListener(node) {
function injectCSS (line 10808) | function injectCSS(platform, css) {
function decodeFill (line 11100) | function decodeFill(el, index, count) {
function computeBoundary (line 11149) | function computeBoundary(source) {
function resolveTarget (line 11193) | function resolveTarget(sources, index, propagate) {
function createMapper (line 11224) | function createMapper(source) {
function isDrawable (line 11239) | function isDrawable(point) {
function drawArea (line 11243) | function drawArea(ctx, curve0, curve1, len0, len1) {
function doFill (line 11265) | function doFill(ctx, points, mapper, view, color, loop) {
function getBoxWidth (line 11461) | function getBoxWidth(labelOpts, fontSize) {
function createNewLegendAndAttach (line 11889) | function createNewLegendAndAttach(chart, legendOpts) {
function createNewTitleBlockAndAttach (line 12150) | function createNewTitleBlockAndAttach(chart, titleOpts) {
function IDMatches (line 12365) | function IDMatches(meta) {
function generateTicks (line 12541) | function generateTicks(generationOptions, dataRange) {
function generateTicks (line 12730) | function generateTicks(generationOptions, dataRange) {
function IDMatches (line 12795) | function IDMatches(meta) {
function getValueCount (line 13126) | function getValueCount(scale) {
function getPointLabelFontOptions (line 13131) | function getPointLabelFontOptions(scale) {
function measureLabelSize (line 13146) | function measureLabelSize(ctx, fontSize, label) {
function determineLimits (line 13160) | function determineLimits(angle, pos, size, min, max) {
function fitWithPointLabels (line 13182) | function fitWithPointLabels(scale) {
function fit (line 13267) | function fit(scale) {
function getTextAlignForAngle (line 13273) | function getTextAlignForAngle(angle) {
function fillText (line 13283) | function fillText(ctx, text, position, fontSize) {
function adjustPointPositionForLabelHeight (line 13297) | function adjustPointPositionForLabelHeight(angle, textSize, position) {
function drawPointLabels (line 13305) | function drawPointLabels(scale) {
function drawRadiusLine (line 13349) | function drawRadiusLine(scale, gridLineOpts, radius, index) {
function numberOrZero (line 13382) | function numberOrZero(param) {
function sorter (line 13661) | function sorter(a, b) {
function arrayUnique (line 13665) | function arrayUnique(items) {
function buildLookupTable (line 13696) | function buildLookupTable(timestamps, min, max, distribution) {
function lookup (line 13732) | function lookup(table, key, value) {
function interpolate (line 13764) | function interpolate(table, skey, sval, tkey) {
function momentify (line 13782) | function momentify(value, options) {
function parse (line 13811) | function parse(input, scale) {
function determineStepSize (line 13833) | function determineStepSize(min, max, unit, capacity) {
function determineUnitForAutoTicks (line 13857) | function determineUnitForAutoTicks(minUnit, min, max, capacity) {
function determineUnitForFormatting (line 13876) | function determineUnitForFormatting(ticks, minUnit, min, max) {
function determineMajorUnit (line 13891) | function determineMajorUnit(unit) {
function generate (line 13905) | function generate(min, max, capacity, options) {
function computeOffsets (line 13960) | function computeOffsets(table, ticks, min, max, options) {
function ticksFromTimestamps (line 13987) | function ticksFromTimestamps(values, majorUnit) {
function determineLabelFormat (line 14004) | function determineLabelFormat(data, timeOpts) {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/bootstrap-datetimepicker.js
function timeZoneAbbreviation (line 54) | function timeZoneAbbreviation() {
function UTCDate (line 71) | function UTCDate() {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/dropzone.js
function defineProperties (line 3) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _possibleConstructorReturn (line 5) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
function _inherits (line 7) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
function _classCallCheck (line 9) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Emitter (line 42) | function Emitter() {
function Dropzone (line 1011) | function Dropzone(el, options) {
function ExifRestore (line 3287) | function ExifRestore() {
function __guard__ (line 3517) | function __guard__(value, transform) {
function __guardMethod__ (line 3520) | function __guardMethod__(obj, methodName, transform) {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/acunetix-scanner.js
function delete_scan (line 38) | function delete_scan(nid){
function report_url (line 72) | function report_url(nid){
function delete_task (line 84) | function delete_task(nid){
function down_report (line 118) | function down_report(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/asset-management.js
function delete_asset (line 119) | function delete_asset(nid){
function asset_info (line 146) | function asset_info(nid){
function get_asset_host (line 172) | function get_asset_host(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/asset-services-list.js
function server_info (line 39) | function server_info(nid){
function selectAll (line 57) | function selectAll()
function newScan (line 77) | function newScan() {
function get_server_host (line 89) | function get_server_host(server_list){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/auth-tester-tasks.js
function get_target_host (line 5) | function get_target_host(nid){
function delete_task (line 14) | function delete_task(nid){
function rescan_task (line 41) | function rescan_task(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/checkbox.js
function selectAll (line 1) | function selectAll()
function getAll (line 21) | function getAll() {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/plugin-management.js
function delete_plugin (line 1) | function delete_plugin(nid){
function plugin_info (line 27) | function plugin_info(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/port-scanner.js
function reflush (line 67) | function reflush() {
function port_result (line 79) | function port_result(nid){
function result_delete (line 96) | function result_delete(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/search.js
function newServiceScan (line 96) | function newServiceScan() {
function newAuthTester (line 108) | function newAuthTester() {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/subdomain-brute.js
function delete_domain (line 106) | function delete_domain(nid){
function get_domain_host (line 132) | function get_domain_host(nid){
function get_domain_awvs (line 148) | function get_domain_awvs(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/task-management.js
function rescan_task (line 39) | function rescan_task(nid){
function task_edit_id (line 66) | function task_edit_id(nid){
function task_delete (line 88) | function task_delete(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/update.js
function readVersion (line 24) | function readVersion() {
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/vulnerability.js
function vul_result (line 6) | function vul_result(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/static/js/server/week-passwd-list.js
function delete_result (line 5) | function delete_result(nid){
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/acunetix_scanner.py
function acunetix_view (line 22) | def acunetix_view():
function acunetix_tasks (line 70) | def acunetix_tasks():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/asset_management.py
function new_asset (line 31) | def new_asset():
function asset_view (line 70) | def asset_view():
function asset_server (line 154) | def asset_server():
function search_view (line 188) | def search_view():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/auth_tester.py
function view_new_auth_tester (line 25) | def view_new_auth_tester():
function new_auth_tester (line 37) | def new_auth_tester():
function task_management (line 70) | def task_management():
function week_passwd_list (line 108) | def week_passwd_list():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/authenticate.py
function login_view (line 19) | def login_view():
function login_out (line 38) | def login_out():
function login_check (line 44) | def login_check(f):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/dashboard.py
function view_dashboard (line 28) | def view_dashboard():
function get_count (line 50) | def get_count():
function vul_trend (line 64) | def vul_trend():
function host_trend (line 80) | def host_trend():
function server_trend (line 96) | def server_trend():
function week_passwd_trend (line 111) | def week_passwd_trend():
function vul_dist (line 124) | def vul_dist():
function week_passwd_dist (line 141) | def week_passwd_dist():
function asset_server (line 155) | def asset_server():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/index.py
function view_index (line 16) | def view_index():
function view_base (line 22) | def view_base():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/lib/get_title.py
class TitleParser (line 12) | class TitleParser:
method __init__ (line 13) | def __init__(self, target):
method parser_title (line 17) | def parser_title(self):
function get_title (line 30) | def get_title(target, subdomain_id):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/lib/mongo_db.py
function connectiondb (line 22) | def connectiondb(collection):
function db_management (line 30) | def db_management(command):
function db_name_conf (line 39) | def db_name_conf():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/lib/parse_target.py
function parse_target (line 12) | def parse_target(host_list):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/acunetix_scanner/awvs_api.py
class AcunetixScanner (line 23) | class AcunetixScanner:
method __init__ (line 25) | def __init__(self):
method new_scan (line 37) | def new_scan(self, target, desc):
method start_task (line 51) | def start_task(self, target, desc, profile_id):
method get_all (line 74) | def get_all(self):
method delete_scan (line 97) | def delete_scan(self, scan_id):
method delete_target (line 109) | def delete_target(self, target_id):
method reports (line 121) | def reports(self, id_list, list_type, task_name):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/auth_tester/auth_scanner.py
function hydra_scanner (line 23) | def hydra_scanner(args):
function host_check (line 29) | def host_check(args):
class AuthCrack (line 35) | class AuthCrack:
method __init__ (line 37) | def __init__(self, task_id):
method start_scan (line 52) | def start_scan(self):
method save_result (line 87) | def save_result(self, target, service, username, password):
method _args_parse (line 101) | def _args_parse(self, service, opt):
class AuthTesterLoop (line 150) | class AuthTesterLoop:
method __init__ (line 152) | def __init__(self):
method task_schedule (line 158) | def task_schedule(self):
method _get_task (line 166) | def _get_task(self):
method start_loop_scan (line 192) | def start_loop_scan(self):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/auth_tester/hydra_plugin.py
class HydraScanner (line 12) | class HydraScanner:
method __init__ (line 14) | def __init__(self, args):
method scanner (line 30) | def scanner(self):
method host_check (line 51) | def host_check(self):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/discovery/asset_discovery.py
class AssetDiscovery (line 22) | class AssetDiscovery:
method __init__ (line 23) | def __init__(self, asset_id):
method set_discovery (line 32) | def set_discovery(self):
method save_result (line 49) | def save_result(self):
function port_scanner (line 61) | def port_scanner(host, port_list):
class DiscoveryLoop (line 102) | class DiscoveryLoop:
method __init__ (line 104) | def __init__(self):
method task_schedule (line 109) | def task_schedule(self):
method _get_task (line 118) | def _get_task(self):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/port_scanner/nmap_scanner.py
class NmapScanner (line 14) | class NmapScanner:
method __init__ (line 15) | def __init__(self, target, arguments, scan_id):
method scan (line 22) | def scan(self):
method port_result (line 30) | def port_result(self):
function nmap_scanner (line 42) | def nmap_scanner(target_val, option_val, scan_id):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/scanner/parse_plugin.py
function parse_plugin (line 18) | def parse_plugin(plugin_filename):
function local_install (line 48) | def local_install():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/scanner/poc_scanner.py
function verify_poc (line 30) | def verify_poc(scan_data):
class PocsuiteScanner (line 61) | class PocsuiteScanner:
method __init__ (line 63) | def __init__(self, task_id):
method set_scanner (line 72) | def set_scanner(self):
class PoCScannerLoop (line 102) | class PoCScannerLoop:
method __init__ (line 103) | def __init__(self):
method task_schedule (line 109) | def task_schedule(self):
method _get_task (line 117) | def _get_task(self):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/modules/subdomain/domain_brute.py
function resolution (line 24) | def resolution(domain):
class DomainBrute (line 44) | class DomainBrute:
method __init__ (line 46) | def __init__(self, domain, domain_id):
method domain_handle (line 58) | def domain_handle(self):
method resolver_check (line 68) | def resolver_check(self):
method multi_brute (line 79) | def multi_brute(self):
function start_domain_brute (line 111) | def start_domain_brute(domain, domain_id):
function get_domain_title (line 124) | def get_domain_title(domain_id):
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/plugin_management.py
function new_plugin (line 35) | def new_plugin():
function plugin_view (line 41) | def plugin_view():
function plugin_upload (line 72) | def plugin_upload():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/port_scanner.py
function port_view (line 25) | def port_view():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/settings.py
function config_view (line 20) | def config_view():
function option_view (line 26) | def option_view():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/subdomain_brute.py
function subdomain_view (line 25) | def subdomain_view():
function subdomain_list (line 85) | def subdomain_list():
FILE: Weak_Password/Fuxi-Scanner/fuxi/views/vul_scanner.py
function tasks_view (line 29) | def tasks_view():
function tasks_edit (line 68) | def tasks_edit():
function scan_view (line 93) | def scan_view():
function add_task (line 102) | def add_task():
function vulnerability_view (line 168) | def vulnerability_view():
FILE: Weak_Password/Fuxi-Scanner/fuxi_scanner.py
function web_server (line 25) | def web_server():
function scanner_loop (line 30) | def scanner_loop():
function auth_tester_loop (line 34) | def auth_tester_loop():
function discovery_loop (line 38) | def discovery_loop():
FILE: Weak_Password/Fuxi-Scanner/migration/start.py
function config (line 24) | def config():
FILE: Weak_Password/Scrack/Scrack.py
class Crack (line 36) | class Crack():
method __init__ (line 37) | def __init__(self,ip,port,server,timeout):
method run (line 42) | def run(self):
method ftp (line 51) | def ftp(self,user,pass_):
method mysql (line 60) | def mysql(self,user,pass_):
method postgresql (line 71) | def postgresql(self,user,pass_):#author:hos@YSRC
method redis (line 98) | def redis(self,user,pass_):
method mssql (line 116) | def mssql(self,user,pass_):#author:hos@YSRC
method mongodb (line 151) | def mongodb(self,user,pass_):
method memcached (line 167) | def memcached(self,user,pass_):
method elasticsearch (line 174) | def elasticsearch(self,user,pass_):
method telnet (line 181) | def telnet(self,user,pass_):
method get_hash (line 226) | def get_hash(self,password, scramble):
method get_scramble (line 233) | def get_scramble(self,packet):
method get_auth_data (line 247) | def get_auth_data(self,user,password,scramble,plugin):
method make_response (line 255) | def make_response(self,buf,username,password,salt):
class SendPingThr (line 259) | class SendPingThr(threading.Thread):
method __init__ (line 260) | def __init__(self, ipPool, icmpPacket, icmpSocket, timeout=3):
method run (line 267) | def run(self):
class Nscan (line 276) | class Nscan:
method __init__ (line 277) | def __init__(self, timeout=3):
method __icmpSocket (line 283) | def __icmpSocket(self):
method __inCksum (line 287) | def __inCksum(self, packet):
method __icmpPacket (line 299) | def __icmpPacket(self):
method mPing (line 306) | def mPing(self, ipPool):
function get_ac_ip (line 325) | def get_ac_ip(ip_list):
class ThreadNum (line 333) | class ThreadNum(threading.Thread):
method __init__ (line 334) | def __init__(self,queue):
method run (line 337) | def run(self):
function scan_port (line 358) | def scan_port(host,port):
function log (line 380) | def log(scan_type,host,port,info=''):
function server_discern (line 396) | def server_discern(host,port,data):
function pass_crack (line 409) | def pass_crack(server_type,host,port):
function get_password_dic (line 412) | def get_password_dic(path):
function get_ip_list (line 422) | def get_ip_list(ip):
function t_join (line 458) | def t_join(m_count):
function put_queue (line 477) | def put_queue(ip_list,port_list):
FILE: Weak_Password/fenghuangscanner/comm/config.py
class config (line 6) | class config(object):
method getips (line 8) | def getips(self,ip):
method file2list (line 28) | def file2list(self,file):
method write_file (line 42) | def write_file(self,file,contents):
FILE: Weak_Password/fenghuangscanner/comm/portscan.py
class portscan (line 18) | class portscan():
method __init__ (line 21) | def __init__(self,c,user_ports):
method getports (line 71) | def getports(self,user_ports):
method pinger (line 92) | def pinger(self):
method pingscan (line 129) | def pingscan(self,isping,threads,ips):
function prepsigns (line 157) | def prepsigns(self):
function matchbanner (line 165) | def matchbanner(self,banner,slist):
function scanports (line 176) | def scanports(self):
function portsscan (line 226) | def portsscan(self,threads,file):
function handleunknown (line 249) | def handleunknown(self):
function run (line 285) | def run(self,isping,threads,ips,file):
FILE: Weak_Password/fenghuangscanner/comm/printers.py
class colors (line 5) | class colors:
function printRed (line 26) | def printRed(mess):
function printPink (line 30) | def printPink(mess):
function printGreen (line 34) | def printGreen(mess):
function set_cmd_text_color (line 58) | def set_cmd_text_color(color, handle=std_out_handle):
function resetColor (line 62) | def resetColor():
function printRed (line 65) | def printRed(mess):
function printPink (line 70) | def printPink(mess):
function printGreen (line 75) | def printGreen(mess):
FILE: Weak_Password/fenghuangscanner/factorys/pluginFactory.py
function ftpburp (line 22) | def ftpburp(c):
function smbburp (line 26) | def smbburp(c):
function mysqlburp (line 30) | def mysqlburp(c):
function mssqlburp (line 34) | def mssqlburp(c):
function ldapburp (line 38) | def ldapburp(c):
function mongodbburp (line 42) | def mongodbburp(c):
function redisburp (line 46) | def redisburp(c):
function rsyncburp (line 50) | def rsyncburp(c):
function snmpburp (line 54) | def snmpburp(c):
function sshburp (line 58) | def sshburp(c):
function sslburp (line 62) | def sslburp(c):
function vncburp (line 66) | def vncburp(c):
function webburp (line 70) | def webburp(c):
class pluginFactory (line 74) | class pluginFactory():
method __init__ (line 75) | def __init__(self,c):
method get_pluginList (line 96) | def get_pluginList(self):
FILE: Weak_Password/fenghuangscanner/plugins/ftp.py
class ftp_burp (line 9) | class ftp_burp(object):
method __init__ (line 11) | def __init__(self,c):
method ftp_connect (line 18) | def ftp_connect(self,ip,username,password,port):
method ftp_l (line 33) | def ftp_l(self,ip,port):
method run (line 47) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/ldapd.py
class ldap_burp (line 8) | class ldap_burp(object):
method __init__ (line 10) | def __init__(self,c):
method ldap_connect (line 17) | def ldap_connect(self,ip,username,password,port):
method ldap_creak (line 31) | def ldap_creak(self,ip,port):
method run (line 57) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/mongodb.py
class mongodb_burp (line 9) | class mongodb_burp(object):
method __init__ (line 11) | def __init__(self,c):
method mongoDB_connect (line 18) | def mongoDB_connect(self,ip,username,password,port):
method mongoDB (line 51) | def mongoDB(self,ip,port):
method run (line 70) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/mssql.py
class mssql_burp (line 10) | class mssql_burp(object):
method __init__ (line 12) | def __init__(self,c):
method mssql_connect (line 18) | def mssql_connect(self,ip,username,password,port):
method mssq1 (line 32) | def mssq1(self,ip,port):
method run (line 50) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/mysql.py
class mysql_burp (line 9) | class mysql_burp(object):
method __init__ (line 10) | def __init__(self,c):
method mysql_connect (line 16) | def mysql_connect(self,ip,username,password,port):
method mysq1 (line 35) | def mysq1(self,ip,port):
method run (line 53) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/pop3.py
function pop3_Connection (line 8) | def pop3_Connection(ip,username,password,port):
function pop3_l (line 28) | def pop3_l(ip,port):
function pop_main (line 41) | def pop_main(ipdict,threads):
FILE: Weak_Password/fenghuangscanner/plugins/postgres.py
function postgres_connect (line 10) | def postgres_connect(ip,username,password,port):
function postgreS (line 31) | def postgreS(ip,port):
function postgres_main (line 54) | def postgres_main(ipdict,threads):
FILE: Weak_Password/fenghuangscanner/plugins/redisexp.py
class redis_burp (line 9) | class redis_burp(object):
method __init__ (line 11) | def __init__(self,c):
method redisexp (line 18) | def redisexp(self):
method run (line 34) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/rsync.py
class rsync_burp (line 16) | class rsync_burp(object):
method __init__ (line 18) | def __init__(self,c):
method get_ver (line 24) | def get_ver(self,host):
method rsync_connect (line 31) | def rsync_connect(self,ip,port):
method rsync_creak (line 62) | def rsync_creak(self,ip,port):
method run (line 69) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/rsynclib.py
class Error (line 33) | class Error(Exception): pass
class rsync (line 45) | class rsync:
method __init__ (line 66) | def __init__(self, host='', module='', user='', passwd='',port=873,
method connect (line 74) | def connect(self, host='', port=0, timeout=-999):
method set_debuglevel (line 93) | def set_debuglevel(self, level):
method putline (line 103) | def putline(self, line):
method getline (line 110) | def getline(self):
method getmultiline (line 125) | def getmultiline(self):
method getresp (line 131) | def getresp(self):
method sendcmd (line 139) | def sendcmd(self, cmd):
method login (line 144) | def login(self, module='', user = '', passwd = ''):
method getModules (line 175) | def getModules(self):
method close (line 186) | def close(self):
FILE: Weak_Password/fenghuangscanner/plugins/smb.py
class smb_burp (line 10) | class smb_burp(object):
method __init__ (line 12) | def __init__(self,c):
method smb_connect (line 18) | def smb_connect(self,ip,username,password):
method smb_l (line 31) | def smb_l(self,ip,port):
method run (line 45) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/snmp.py
class snmp_burp (line 9) | class snmp_burp(object):
method __init__ (line 11) | def __init__(self,c):
method snmp_connect (line 17) | def snmp_connect(self,ip,key):
method snmp_l (line 32) | def snmp_l(self,ip,port):
method run (line 49) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/ssh.py
class ssh_burp (line 9) | class ssh_burp(object):
method __init__ (line 11) | def __init__(self,c):
method ssh_connect (line 17) | def ssh_connect(self,ip,username,password,port):
method ssh_l (line 37) | def ssh_l(self,ip,port):
method run (line 54) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/ssltest.py
class ssl_burp (line 11) | class ssl_burp(object):
method __init__ (line 13) | def __init__(self,c):
method h2bin (line 42) | def h2bin(self,x):
method recvall (line 46) | def recvall(self,s, length, timeout=8):
method recvmsg (line 64) | def recvmsg(self,s):
method hit_hb (line 73) | def hit_hb(self,s,ip,port):
method openssl_test (line 96) | def openssl_test(self,ip,port):
method run (line 119) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/vnc.py
class vnc_burp (line 8) | class vnc_burp(object):
method __init__ (line 11) | def __init__(self,c):
method vnc_connect (line 17) | def vnc_connect(self,ip,port,password):
method vnc_l (line 30) | def vnc_l(self,ip,port):
method run (line 53) | def run(self,ipdict,pinglist,threads,file):
FILE: Weak_Password/fenghuangscanner/plugins/vnclib.py
class VNC_Error (line 6) | class VNC_Error(Exception):
class VNC (line 8) | class VNC:
method connect (line 9) | def connect(self, host, port, timeout):
method login (line 20) | def login(self, password):
method gen_key (line 84) | def gen_key(self, key):
FILE: Weak_Password/fenghuangscanner/plugins/web.py
class web_burp (line 15) | class web_burp(object):
method __init__ (line 17) | def __init__(self,c):
method weblogin (line 24) | def weblogin(self,url,ip,port,username,password):
method webmain (line 48) | def webmain(self,ip,port):
method run (line 91) | def run(self,ipdict,pinglist,threads,file):
FILE: Windows_scripts/safedog.py
function dependencies (line 11) | def dependencies():
function tamper (line 14) | def tamper(payload, **kwargs):
FILE: Windows_scripts/smsbomb.py
function oupeng (line 46) | def oupeng(phone: object) -> object:
function hongxiu (line 64) | def hongxiu(phone):
FILE: antSword/modules/cache.js
constant CONF (line 9) | const fs = require('fs'),
class Cache (line 16) | class Cache {
method constructor (line 23) | constructor(electron) {
method createDB (line 39) | createDB(id = String(+new Date)) {
method addCache (line 51) | addCache(event, opts) {
method setCache (line 66) | setCache(event, opts) {
method getCache (line 85) | getCache(event, opts) {
method delCache (line 100) | delCache(event, opts) {
method clearCache (line 115) | clearCache(event, opts) {
method clearAllCache (line 131) | clearAllCache(event, opts) {
FILE: antSword/modules/config.js
class Conf (line 14) | class Conf {
method constructor (line 16) | constructor() {
method dataPath (line 47) | get dataPath() {
method cachePath (line 55) | get cachePath() {
method plugPath (line 67) | get plugPath() {
method tmpPath (line 78) | get tmpPath() {
method package (line 88) | get package() {
FILE: antSword/modules/database.js
constant CONF (line 8) | const fs = require('fs'),
class Database (line 17) | class Database {
method constructor (line 24) | constructor(electron) {
method findShell (line 53) | findShell(event, opts = {}) {
method findOneShell (line 71) | findOneShell(event, opts) {
method _url2ip (line 86) | _url2ip(url) {
method addShell (line 115) | addShell(event, opts) {
method editShell (line 149) | editShell(event, opts) {
method updateHttpConf (line 188) | updateHttpConf(event, opt = {}) {
method delShell (line 209) | delShell(event, opts) {
method clearShell (line 228) | clearShell(event, opts) {
method renameShellCategory (line 245) | renameShellCategory(event, opts) {
method moveShell (line 266) | moveShell(event, opts) {
method addDataConf (line 289) | addDataConf(event, opts) {
method editDataConf (line 319) | editDataConf(event, opts) {
method delDataConf (line 348) | delDataConf(event, opts) {
method getDataConf (line 377) | getDataConf(event, opts) {
FILE: antSword/modules/logger.js
class Logger (line 12) | class Logger {
method constructor (line 13) | constructor(tag) {
method parseLog (line 23) | parseLog(type, logs) {
method debug (line 33) | debug() {
method info (line 41) | info() {
method warn (line 49) | warn() {
method fatal (line 57) | fatal() {
FILE: antSword/modules/menubar.js
class Menubar (line 7) | class Menubar {
method constructor (line 9) | constructor(electron, app, mainWindow) {
method reload (line 39) | reload(event, LANG) {
FILE: antSword/modules/plugStore.js
constant CONF (line 10) | const CONF = require('./config');
constant UNZIP (line 11) | const UNZIP = require('extract-zip');
class PlugStore (line 13) | class PlugStore {
method constructor (line 15) | constructor(electron, app, mainWindow) {
method listenDownload (line 51) | listenDownload(mainWindow) {
method rmdir (line 105) | rmdir(dir) {
FILE: antSword/modules/request.js
constant USER_AGENT (line 16) | const USER_AGENT = 'antSword/v2.0';
constant REQ_TIMEOUT (line 19) | const REQ_TIMEOUT = 10000;
constant APROXY_CONF (line 22) | const APROXY_CONF = {
class Request (line 27) | class Request {
method constructor (line 29) | constructor(electron) {
method onAproxy (line 46) | onAproxy(event, opts) {
method onAproxyTest (line 67) | onAproxyTest(event, opts) {
method onRequest (line 93) | onRequest(event, opts) {
method onDownlaod (line 139) | onDownlaod(event, opts) {
method parse (line 204) | parse(tag_s, tag_e, chunkCallBack, res, callback) {
FILE: antSword/modules/update.js
class Update (line 15) | class Update {
method constructor (line 16) | constructor(electron) {
method checkUpdate (line 28) | checkUpdate(event) {
method CompVersion (line 59) | CompVersion(curVer, newVer) {
method onDownlaod (line 83) | onDownlaod(event, opt) {
FILE: antSword/shells/php_custom_script_for_mysql.php
function EC (line 46) | function EC($s){
function decode (line 62) | function decode($s){
function showDatabases (line 82) | function showDatabases($encode, $conf){
function showTables (line 88) | function showTables($encode, $conf, $dbname){
function showColumns (line 95) | function showColumns($encode, $conf, $dbname, $table){
function query (line 102) | function query($encode, $conf, $sql){
function executeSQL (line 108) | function executeSQL($encode, $conf, $sql, $columnsep, $rowsep, $needcolu...
function BaseInfo (line 156) | function BaseInfo(){
function FileTreeCode (line 176) | function FileTreeCode($D){
function ReadFileCode (line 200) | function ReadFileCode($F){
function WriteFileCode (line 211) | function WriteFileCode($path, $content){
function DeleteFileOrDirCode (line 214) | function DeleteFileOrDirCode($fileOrDirPath){
function DownloadFileCode (line 241) | function DownloadFileCode($filePath){
function UploadFileCode (line 251) | function UploadFileCode($path, $content){
function CopyFileOrDirCode (line 261) | function CopyFileOrDirCode($path, $content){
function RenameFileOrDirCode (line 291) | function RenameFileOrDirCode($oldName, $newName){
function CreateDirCode (line 297) | function CreateDirCode($name){
function ModifyFileOrDirTimeCode (line 302) | function ModifyFileOrDirTimeCode($fileOrDirPath, $newTime){
function WgetCode (line 313) | function WgetCode($urlPath, $savePath){
function ExecuteCommandCode (line 329) | function ExecuteCommandCode($cmdPath, $command){
FILE: antSword/source/app.entry.js
method reloadPlug (line 85) | reloadPlug() {
FILE: antSword/source/base/cachemanager.js
class CacheManager (line 6) | class CacheManager {
method constructor (line 8) | constructor(id) {
method get (line 14) | get(tag) {
method set (line 23) | set(tag, cache) {
method del (line 32) | del(tag) {
method clear (line 40) | clear() {
FILE: antSword/source/base/encodes.js
constant ENCODES (line 5) | const ENCODES = [
FILE: antSword/source/base/menubar.js
class Menubar (line 5) | class Menubar {
method constructor (line 7) | constructor() {
method reg (line 45) | reg(name, event) {
method run (line 49) | run(name) {
FILE: antSword/source/core/asp/index.js
class ASP (line 12) | class ASP extends Base {
method constructor (line 14) | constructor(opts) {
method encoders (line 36) | get encoders() {
method complete (line 45) | complete(data) {
FILE: antSword/source/core/aspx/index.js
class ASPX (line 16) | class ASPX extends Base {
method constructor (line 17) | constructor(opts) {
method encoders (line 39) | get encoders() {
method complete (line 48) | complete(data) {
FILE: antSword/source/core/base.js
class Base (line 11) | class Base {
method constructor (line 18) | constructor(opts) {
method argv (line 64) | argv() {
method format (line 80) | format(encode) {
method parseTemplate (line 118) | parseTemplate(tpl) {
method parseEncoder (line 183) | parseEncoder(enc) {
method encodeComplete (line 196) | encodeComplete(tag_s, tag_e, data) {
method request (line 216) | request(code, chunkCallBack) {
method download (line 261) | download(savePath, postCode, progressCallback) {
FILE: antSword/source/core/custom/index.js
class CUSTOM (line 12) | class CUSTOM extends Base {
method constructor (line 13) | constructor(opts) {
method encoders (line 32) | get encoders() {
method complete (line 41) | complete(data) {
FILE: antSword/source/core/index.js
class Core (line 9) | class Core {
method constructor (line 14) | constructor() {
FILE: antSword/source/core/php/index.js
class PHP (line 12) | class PHP extends Base {
method constructor (line 13) | constructor(opts) {
method encoders (line 37) | get encoders() {
method complete (line 46) | complete(data) {
FILE: antSword/source/load.entry.js
constant APP_START_TIME (line 17) | let APP_START_TIME = +new Date;
function loadJS (line 64) | function loadJS(js) {
function loadCSS (line 78) | function loadCSS(css) {
FILE: antSword/source/modules/database/asp/index.js
constant LANG (line 6) | const LANG = antSword['language']['database'];
constant LANG_T (line 7) | const LANG_T = antSword['language']['toastr'];
class ASP (line 9) | class ASP {
method constructor (line 11) | constructor(opt) {
method parse (line 118) | parse() {
method addConf (line 148) | addConf() {
method editConf (line 233) | editConf() {
method delConf (line 318) | delConf() {
method getDatabases (line 344) | getDatabases(id) {
method getTables (line 387) | getTables(id, db) {
method getColumns (line 429) | getColumns(id, db, table) {
method execSQL (line 476) | execSQL(sql) {
method updateResult (line 496) | updateResult(data) {
method disableToolbar (line 548) | disableToolbar() {
method enableToolbar (line 554) | enableToolbar() {
method disableEditor (line 560) | disableEditor() {
method enableEditor (line 568) | enableEditor() {
FILE: antSword/source/modules/database/custom/index.js
constant LANG (line 6) | const LANG = antSword['language']['database'];
constant LANG_T (line 7) | const LANG_T = antSword['language']['toastr'];
class CUSTOM (line 9) | class CUSTOM {
method constructor (line 11) | constructor(opt) {
method parse (line 114) | parse() {
method addConf (line 144) | addConf() {
method editConf (line 229) | editConf() {
method delConf (line 315) | delConf() {
method getDatabases (line 341) | getDatabases(id) {
method getTables (line 383) | getTables(id, db) {
method getColumns (line 426) | getColumns(id, db, table) {
method execSQL (line 475) | execSQL(sql) {
method updateResult (line 496) | updateResult(data) {
method disableToolbar (line 548) | disableToolbar() {
method enableToolbar (line 554) | enableToolbar() {
method disableEditor (line 560) | disableEditor() {
method enableEditor (line 568) | enableEditor() {
FILE: antSword/source/modules/database/index.js
constant LANG (line 9) | const LANG = antSword['language']['database'];
class Database (line 11) | class Database {
method constructor (line 13) | constructor(opt) {
method initList (line 48) | initList(layout) {
method initQuery (line 94) | initQuery(layout) {
method initResult (line 157) | initResult(layout) {
method createWin (line 173) | createWin(opts) {
FILE: antSword/source/modules/database/php/index.js
constant LANG (line 6) | const LANG = antSword['language']['database'];
constant LANG_T (line 7) | const LANG_T = antSword['language']['toastr'];
class PHP (line 9) | class PHP {
method constructor (line 11) | constructor(opt) {
method parse (line 106) | parse() {
method addConf (line 135) | addConf() {
method editConf (line 264) | editConf(){
method delConf (line 396) | delConf() {
method getDatabases (line 422) | getDatabases(id) {
method getTables (line 464) | getTables(id, db) {
method getColumns (line 507) | getColumns(id, db, table) {
method execSQL (line 553) | execSQL(sql) {
method updateResult (line 577) | updateResult(data) {
method disableToolbar (line 627) | disableToolbar() {
method enableToolbar (line 633) | enableToolbar() {
method disableEditor (line 639) | disableEditor() {
method enableEditor (line 647) | enableEditor() {
FILE: antSword/source/modules/filemanager/files.js
constant LANG_T (line 5) | const LANG_T = antSword['language']['toastr'];
constant LANG (line 6) | const LANG = antSword['language']['filemanager']['files'];
class Files (line 8) | class Files {
method constructor (line 13) | constructor(cell, manager) {
method checkPreview (line 429) | checkPreview(name) {
method refreshPath (line 442) | refreshPath(p) {
method gotoPath (line 456) | gotoPath(path) {
method parse (line 472) | parse(files) {
method fileSize (line 511) | fileSize(t) {
method fileIcon (line 520) | fileIcon(name) {
FILE: antSword/source/modules/filemanager/folder.js
constant LANG_T (line 5) | const LANG_T = antSword['language']['toastr'];
constant LANG (line 6) | const LANG = antSword['language']['filemanager']['folder'];
class Folder (line 8) | class Folder {
method constructor (line 12) | constructor(cell, manager) {
method parse (line 29) | parse(files) {
method setTitle (line 110) | setTitle(num) {
FILE: antSword/source/modules/filemanager/index.js
constant ENCODES (line 11) | const ENCODES = require('../../base/encodes');
constant PATH (line 17) | const PATH = require("path");
constant LANG (line 21) | const LANG = antSword['language']['filemanager'];
constant LANG_T (line 22) | const LANG_T = antSword['language']['toastr'];
class FileManager (line 24) | class FileManager {
method constructor (line 26) | constructor(opts) {
method initUI (line 82) | initUI(ret) {
method storage (line 121) | storage(key) {
method getFiles (line 132) | getFiles(p, callback) {
method changePath (line 235) | changePath(path) {
method deleteFile (line 268) | deleteFile(files) {
method pasteFile (line 328) | pasteFile(source, name) {
method renameFile (line 356) | renameFile(name) {
method createFolder (line 385) | createFolder() {
method createFile (line 412) | createFile() {
method retimeFile (line 442) | retimeFile(name, oldtime) {
method previewFile (line 473) | previewFile(name, size) {
method downloadFile (line 518) | downloadFile(name, size) {
method wgetFile (line 565) | wgetFile() {
method uploadFile (line 621) | uploadFile(_filePaths) {
method editFile (line 726) | editFile(name) {
method createWin (line 876) | createWin(opts) {
FILE: antSword/source/modules/filemanager/tasks.js
constant LANG_T (line 13) | const LANG_T = antSword['language']['toastr'];
constant LANG (line 14) | const LANG = antSword['language']['filemanager']['tasks'];
class Tasks (line 16) | class Tasks {
method constructor (line 18) | constructor(cell, manager) {
method new (line 48) | new(name, desc, progress) {
FILE: antSword/source/modules/plugin/index.js
class Plugin (line 12) | class Plugin {
method constructor (line 13) | constructor() {
method initWin (line 27) | initWin(url) {
FILE: antSword/source/modules/settings/about.js
constant LANG (line 5) | const LANG = antSword['language']['settings']['about'];
class About (line 7) | class About {
method constructor (line 9) | constructor(sidebar) {
FILE: antSword/source/modules/settings/aproxy.js
constant LANG (line 5) | const LANG = antSword['language']['settings']['aproxy'];
constant LANG_T (line 6) | const LANG_T = antSword['language']['toastr'];
class AProxy (line 8) | class AProxy {
method constructor (line 10) | constructor(sidebar) {
FILE: antSword/source/modules/settings/display.js
constant LANG (line 5) | const LANG = antSword['language']['settings']['display'];
constant LANG_T (line 6) | const LANG_T = antSword['language']['toastr'];
class Display (line 8) | class Display {
method constructor (line 10) | constructor(sidebar) {
FILE: antSword/source/modules/settings/encoders.js
constant LANG (line 9) | const LANG = antSword['language']['settings']['encoders'];
constant LANG_T (line 10) | const LANG_T = antSword['language']['toastr'];
constant WIN (line 13) | const WIN = require("../../ui/window");
class Encoders (line 15) | class Encoders {
method constructor (line 17) | constructor(sidebar) {
method createEncoder (line 132) | createEncoder(t) {
method editEncoder (line 167) | editEncoder() {
method deleteEncoder (line 248) | deleteEncoder() {
method default_template (line 273) | get default_template() {
method _checkname (line 308) | _checkname(name,t) {
method parseData (line 313) | parseData() {
method syncencoders (line 342) | syncencoders() {
FILE: antSword/source/modules/settings/index.js
class Settings (line 16) | class Settings {
method constructor (line 18) | constructor() {
method open (line 26) | open() {
method setActive (line 56) | setActive(id) {
FILE: antSword/source/modules/settings/language.js
constant LANG (line 5) | const LANG = antSword['language']['settings']['language'];
constant LANG_T (line 6) | const LANG_T = antSword['language']['toastr'];
class Language (line 8) | class Language {
method constructor (line 10) | constructor(sidebar) {
FILE: antSword/source/modules/settings/update.js
constant LANG (line 5) | const LANG = antSword['language']['settings']['update'];
constant LANG_T (line 6) | const LANG_T = antSword['language']['toastr'];
class Update (line 8) | class Update {
method constructor (line 9) | constructor(sidebar) {
method checkUpdate (line 49) | checkUpdate() {
method updateLoading (line 130) | updateLoading() {
method updateFail (line 151) | updateFail(tip) {
method updateSuccess (line 166) | updateSuccess() {
FILE: antSword/source/modules/shellmanager/category/index.js
constant LANG (line 5) | const LANG = antSword['language']['shellmanager']['category'];
class Category (line 9) | class Category {
method constructor (line 16) | constructor(cell, top) {
method updateHeader (line 33) | updateHeader() {
FILE: antSword/source/modules/shellmanager/category/sidebar.js
constant LANG (line 5) | const LANG = antSword['language']['shellmanager']['category'];
class Sidebar (line 7) | class Sidebar {
method constructor (line 14) | constructor(cell, top) {
method _onSelect (line 38) | _onSelect(id) {
FILE: antSword/source/modules/shellmanager/category/toolbar.js
constant LANG (line 5) | const LANG = antSword['language']['shellmanager']['category'];
constant LANG_T (line 6) | const LANG_T = antSword['language']['toastr'];
class Toolbar (line 8) | class Toolbar {
method constructor (line 15) | constructor(cell, top) {
method parseToolbar (line 28) | parseToolbar(toolbar) {
method _onClick (line 63) | _onClick(id) {
method _delCategory (line 81) | _delCategory() {
method _addCategory (line 112) | _addCategory() {
method _renameCategory (line 124) | _renameCategory() {
method categoryForm (line 170) | categoryForm(title, value = new Date().format('yyyyMMdd')) {
FILE: antSword/source/modules/shellmanager/index.js
class ShellManager (line 10) | class ShellManager {
method constructor (line 11) | constructor() {
method reloadData (line 33) | reloadData(arg = {}) {
FILE: antSword/source/modules/shellmanager/list/contextmenu.js
constant LANG (line 11) | const LANG = antSword['language']['shellmanager'];
constant LANG_T (line 12) | const LANG_T = antSword['language']['toastr'];
class ContextMenu (line 14) | class ContextMenu {
method constructor (line 21) | constructor(data, event, id, ids) {
method parsePlugContextMenu (line 87) | parsePlugContextMenu(data) {
method parseMoveCategoryMenu (line 154) | parseMoveCategoryMenu(ids) {
method addData (line 189) | addData() {
method editData (line 218) | editData(info) {
method delData (line 248) | delData(ids) {
method searchData (line 272) | searchData() {
method clearCache (line 281) | clearCache(id) {
method clearAllCache (line 307) | clearAllCache() {
FILE: antSword/source/modules/shellmanager/list/form.js
constant LANG_T (line 5) | const LANG_T = antSword['language']['toastr'];
constant LANG (line 6) | const LANG = antSword['language']['shellmanager'];
constant ENCODES (line 7) | const ENCODES = require('../../../base/encodes');
class Form (line 9) | class Form {
method constructor (line 16) | constructor(opt, arg = {}, callback = false) {
method _createWin (line 68) | _createWin(opts = {}) {
method _createToolbar (line 98) | _createToolbar(win, opt) {
method _createAccordion (line 121) | _createAccordion(win) {
method _createBaseForm (line 141) | _createBaseForm(arg) {
method _parseEncodes (line 179) | _parseEncodes(_default = 'utf8') {
method _parseTypes (line 196) | _parseTypes(_default = 'php', _encoder = 'default') {
method _parseFormData (line 237) | _parseFormData(base, http, other) {
method _createOtherForm (line 276) | _createOtherForm(arg) {
method _createHttpForm (line 349) | _createHttpForm(arg) {
FILE: antSword/source/modules/shellmanager/list/grid.js
constant LANG (line 7) | const LANG = antSword['language']['shellmanager']['list']['grid'];
class Grid (line 10) | class Grid {
method constructor (line 17) | constructor(cell, top) {
method _onRightClick (line 63) | _onRightClick(id, lid, event) {
method _onRowDblClicked (line 95) | _onRowDblClicked(id, event) {
FILE: antSword/source/modules/shellmanager/list/index.js
constant LANG (line 7) | const LANG = antSword['language']['shellmanager']['list'];
class List (line 9) | class List {
method constructor (line 16) | constructor(cell, top) {
method updateHeader (line 30) | updateHeader(num = 0) {
FILE: antSword/source/modules/terminal/index.js
constant LANG (line 7) | const LANG = antSword['language']['terminal'];
constant LANG_T (line 8) | const LANG_T = antSword['language']['toastr'];
class Terminal (line 10) | class Terminal {
method constructor (line 12) | constructor(opts) {
method getInformation (line 61) | getInformation() {
method initTerminal (line 97) | initTerminal(ret, dom) {
method parseCmd (line 227) | parseCmd(cmd, path) {
method parsePrompt (line 240) | parsePrompt(user) {
FILE: antSword/source/modules/viewsite/index.js
constant LANG (line 7) | const LANG = antSword.language['viewsite'];
constant LANG_T (line 8) | const LANG_T = antSword.language['toastr'];
class ViewSite (line 10) | class ViewSite {
method constructor (line 11) | constructor(opts) {
method _initToolbar (line 51) | _initToolbar() {
method _initGrid (line 75) | _initGrid() {
method _refreshCookie (line 92) | _refreshCookie() {
method _saveCookie (line 120) | _saveCookie() {
method _loadURL (line 151) | _loadURL(url) {
FILE: antSword/source/ui/tabbar.js
class Tabbar (line 11) | class Tabbar {
method constructor (line 12) | constructor(opts) {
method active (line 30) | active() {
method close (line 39) | close() {
method setTitle (line 49) | setTitle(title = 'New Title') {
method safeHTML (line 60) | safeHTML(html = "") {
method showLoading (line 77) | showLoading(loading = true) {
FILE: antSword/source/ui/window.js
class Window (line 11) | class Window {
method constructor (line 17) | constructor(opts) {
method close (line 49) | close() {
method setTitle (line 57) | setTitle(title = 'New Title') {
FILE: antSword/static/libs/ace/ace.js
function o (line 1) | function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.defin...
function o (line 1) | function o(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline...
function u (line 1) | function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(v...
function r (line 1) | function r(){}
function w (line 1) | function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentine...
function H (line 1) | function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-...
function B (line 1) | function B(e){var t=typeof e;return e===null||t==="undefined"||t==="bool...
function j (line 1) | function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="funct...
function e (line 1) | function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}
function o (line 1) | function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.a...
function f (line 1) | function f(e){u=Object.create(null)}
function i (line 1) | function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0...
function b (line 1) | function b(e){if(h)return;h=!0;if(k)t=0,r=e?0:n.value.length-1;else var ...
function w (line 1) | function w(){if(h)return;n.value=f,i.isWebKit&&y.schedule()}
function R (line 1) | function R(){clearTimeout(q),q=setTimeout(function(){p&&(n.style.cssText...
function u (line 1) | function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler(...
function a (line 1) | function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}
function f (line 1) | function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.colum...
function s (line 1) | function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}
function u (line 1) | function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annota...
function a (line 1) | function a(e){o.call(this,e)}
function f (line 1) | function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||...
function l (line 1) | function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}
function o (line 1) | function o(e){typeof console!="undefined"&&console.warn&&console.warn.ap...
function u (line 1) | function u(e,t){var n=new Error(e);n.data=t,typeof console=="object"&&co...
function f (line 1) | function f(r){a.packaged=r||e.packaged||n.packaged||u.define&&define.pac...
function l (line 1) | function l(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCas...
function r (line 1) | function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e...
function i (line 1) | function i(s){var o=r[s];o.processed=!0;for(var u=0;u<o.length;u++){var ...
function r (line 1) | function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n...
function w (line 1) | function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}
function r (line 1) | function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}
function i (line 1) | function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=...
function s (line 1) | function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.actio...
function e (line 1) | function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e....
function t (line 1) | function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start...
function i (line 1) | function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.fol...
function u (line 1) | function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}
function a (line 1) | function a(e,t){u(e.start,t),u(e.end,t)}
function f (line 1) | function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}
function l (line 1) | function l(e,t){f(e.start,t),f(e.end,t)}
function u (line 1) | function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if...
function s (line 1) | function s(){this.findMatchingBracket=function(e,t){if(e.column==0)retur...
function m (line 1) | function m(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=46...
function r (line 1) | function r(e){return t?e.action!=="insert":e.action==="insert"}
function g (line 1) | function g(){var t=0;if(m===0)return t;if(h)for(var n=0;n<e.length;n++){...
function y (line 1) | function y(t){var n=e.slice(a,t),r=n.length;n.join("").replace(/12/g,fun...
function o (line 1) | function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},...
function u (line 1) | function u(e,t){o.call(this,e,t),this.$singleCommand=!1}
function e (line 1) | function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}
function o (line 1) | function o(e,t){return{win:e,mac:t}}
function e (line 1) | function e(e){return e[e.length-1]}
function e (line 1) | function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lin...
function t (line 1) | function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lin...
function n (line 1) | function n(e,t){var n=new Array(e.length);for(var r=0;r<e.length;r++){va...
function e (line 1) | function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}
function i (line 1) | function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value...
function o (line 1) | function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.imp...
function s (line 1) | function s(e,t){return e.row==t.row&&e.column==t.column}
function o (line 1) | function o(e){var t=e.domEvent,n=t.altKey,o=t.shiftKey,u=t.ctrlKey,a=e.g...
function h (line 1) | function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$optio...
function v (line 1) | function v(e,t){return e.row==t.row&&e.column==t.column}
function m (line 1) | function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$o...
function g (line 1) | function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}var ...
function u (line 1) | function u(e){return a.stringRepeat(" ",e)}
function f (line 1) | function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([...
function l (line 1) | function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(...
function c (line 1) | function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "...
function o (line 1) | function o(e){this.session=e,this.session.widgetManager=this,this.sessio...
function o (line 1) | function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[...
function u (line 1) | function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.l...
FILE: antSword/static/libs/ace/ext-chromevox.js
function gt (line 1) | function gt(){return typeof cvox!="undefined"&&cvox&&cvox.Api}
function wt (line 1) | function wt(e){if(gt())mt(e);else{yt++;if(yt>=bt)return;window.setTimeou...
FILE: antSword/static/libs/ace/ext-emmet.js
function e (line 1) | function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatStrin...
function t (line 1) | function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}
function o (line 1) | function o(t){var n=e.indexOf(t,r+1);n!=-1&&(r=n)}
function f (line 1) | function f(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof ...
function o (line 1) | function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")")...
function u (line 1) | function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(...
function a (line 1) | function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={}...
function i (line 1) | function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var ...
function f (line 1) | function f(){}
FILE: antSword/static/libs/ace/ext-keybinding_menu.js
function l (line 1) | function l(e){e.keyCode===27&&a.click()}
function i (line 1) | function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./...
FILE: antSword/static/libs/ace/ext-language_tools.js
function e (line 1) | function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatStrin...
function t (line 1) | function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}
function o (line 1) | function o(t){var n=e.indexOf(t,r+1);n!=-1&&(r=n)}
function f (line 1) | function f(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof ...
function o (line 1) | function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")")...
function u (line 1) | function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(...
function a (line 1) | function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={}...
function i (line 1) | function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var ...
function s (line 1) | function s(e,t){var n=e.getTextRange(r.fromPoints({row:0,column:0},t));r...
function o (line 1) | function o(e,t){var n=s(e,t),r=e.getValue().split(i),o=Object.create(nul...
function m (line 1) | function m(e){var t=e.getCursorPosition(),n=e.session.getLine(t.row),r;r...
FILE: antSword/static/libs/ace/ext-linking.js
function i (line 1) | function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e....
function s (line 1) | function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e....
FILE: antSword/static/libs/ace/ext-modelist.js
function i (line 1) | function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.len...
FILE: antSword/static/libs/ace/ext-old_ie.js
function patch (line 1) | function patch(obj,name,regexp,replacement){eval("obj['"+name+"']="+obj[...
FILE: antSword/static/libs/ace/ext-settings_menu.js
function i (line 1) | function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.len...
function o (line 1) | function o(){n.sort(function(e,t){var n=e.getAttribute("contains"),r=t.g...
function u (line 1) | function u(){var e=document.createElement("div");e.setAttribute("id","ac...
function a (line 1) | function a(e,n,i,s){var o,u=document.createElement("div");return u.setAt...
function f (line 1) | function f(e,n,r,i){var s=t.menuOptions[e],o=n[i]();return typeof o=="ob...
function l (line 1) | function l(e){var r=e.functionName,i=e.parentObj,s=e.parentName,o,u=r.re...
function l (line 1) | function l(e){e.keyCode===27&&a.click()}
function s (line 1) | function s(e){var t=document.getElementById("ace_settingsmenu");t||i(e,r...
FILE: antSword/static/libs/ace/ext-split.js
function l (line 1) | function l(e,t){this.$u=e,this.$doc=t}
FILE: antSword/static/libs/ace/ext-static_highlight.js
function h (line 1) | function h(){var r=f.renderSync(e,t,n,i,s);return u?u(r):r}
FILE: antSword/static/libs/ace/ext-statusbar.js
function n (line 1) | function n(e,n){e&&t.push(e,n||"|")}
FILE: antSword/static/libs/ace/ext-textarea.js
function a (line 1) | function a(e,t){for(var n in t)e.style[n]=t[n]}
function f (line 1) | function f(e,t){if(e.type!="textarea")throw new Error("Textarea required...
function l (line 1) | function l(t,n,r){s.loadScript(t,function(){e([n],r)})}
function c (line 1) | function c(e,t,n,r,i,s){function a(e){return e==="true"||e==1}var o=e.ge...
function h (line 1) | function h(e,n,i){function f(e,t,n,r){if(!n){e.push("<input type='checkb...
FILE: antSword/static/libs/ace/ext-whitespace.js
function c (line 1) | function c(e){var t=0;for(var r=e;r<n.length;r+=e)t+=n[r]||0;return t}
FILE: antSword/static/libs/ace/keybinding-emacs.js
function a (line 1) | function a(){}
function f (line 1) | function f(){}
function u (line 1) | function u(e){this.$iSearch=e}
function f (line 1) | function f(){this.$options={wrap:!1,skipCurrent:!1},this.$keyboardHandle...
function l (line 1) | function l(e){return e instanceof RegExp}
function c (line 1) | function c(e){var t=String(e),n=t.indexOf("/"),r=t.lastIndexOf("/");retu...
function h (line 1) | function h(e,t){try{return new RegExp(e,t)}catch(n){return e}}
function p (line 1) | function p(e){return h(e.expression,e.flags)}
function u (line 1) | function u(){var t=e.popEmacsMark();t&&e.moveCursorToPosition(t)}
function t (line 1) | function t(){var t=e.selection,n=t.getRange(),i=t.isBackwards()?n.end:n....
FILE: antSword/static/libs/ace/keybinding-vim.js
function r (line 1) | function r(){function t(e){return typeof e!="object"?e+"":"line"in e?e.l...
function m (line 1) | function m(e){return{row:e.line,column:e.ch}}
function g (line 1) | function g(e){return new E(e.row,e.column)}
function x (line 1) | function x(e){e.setOption("disableInput",!0),e.setOption("showCursorWhen...
function T (line 1) | function T(e){e.setOption("disableInput",!1),e.off("cursorActivity",Jn),...
function N (line 1) | function N(e,t){this==v.keyMap.vim&&v.rmClass(e.getWrapperElement(),"cm-...
function C (line 1) | function C(e,t){this==v.keyMap.vim&&v.addClass(e.getWrapperElement(),"cm...
function k (line 1) | function k(e,t){if(!t)return undefined;var n=O(e);if(!n)return!1;var r=v...
function O (line 1) | function O(e){if(e.charAt(0)=="'")return e.charAt(1);var t=e.split("-");...
function M (line 1) | function M(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=functio...
function H (line 1) | function H(e,t){var n=[];for(var r=e;r<e+t;r++)n.push(String.fromCharCod...
function R (line 1) | function R(e,t){return t>=e.firstLine()&&t<=e.lastLine()}
function U (line 1) | function U(e){return/^[a-z]$/.test(e)}
function z (line 1) | function z(e){return"()[]{}".indexOf(e)!=-1}
function W (line 1) | function W(e){return _.test(e)}
function X (line 1) | function X(e){return/^[A-Z]$/.test(e)}
function V (line 1) | function V(e){return/^\s*$/.test(e)}
function $ (line 1) | function $(e,t){for(var n=0;n<t.length;n++)if(t[n]==e)return!0;return!1}
function K (line 1) | function K(e,t,n,r,i){if(t===undefined&&!i)throw Error("defaultValue is ...
function Q (line 1) | function Q(e,t,n,r){var i=J[e];r=r||{};var s=r.scope;if(!i)throw Error("...
function G (line 1) | function G(e,t,n){var r=J[e];n=n||{};var i=n.scope;if(!r)throw Error("Un...
function et (line 1) | function et(){this.latestRegister=undefined,this.isPlaying=!1,this.isRec...
function tt (line 1) | function tt(e){return e.state.vim||(e.state.vim={inputState:new ot,lastE...
function rt (line 1) | function rt(){nt={searchQuery:null,searchIsReversed:!1,lastSubstituteRep...
function ot (line 1) | function ot(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=nu...
function ut (line 1) | function ut(e,t){e.state.vim.inputState=new ot,v.signal(e,"vim-command-d...
function at (line 1) | function at(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeCh...
function ft (line 1) | function ft(e,t){var n=nt.registerController.registers[e];if(!e||e.lengt...
function lt (line 1) | function lt(e){this.registers=e,this.unnamedRegister=e['"']=new at,e["."...
function ct (line 1) | function ct(){this.historyBuffer=[],this.iterator,this.initialPrefix=null}
function dt (line 1) | function dt(e,t){pt[e]=t}
function vt (line 1) | function vt(e,t){var n=[];for(var r=0;r<t;r++)n.push(e);return n}
function gt (line 1) | function gt(e,t){mt[e]=t}
function bt (line 1) | function bt(e,t){yt[e]=t}
function wt (line 1) | function wt(e,t,n){var r=Math.min(Math.max(e.firstLine(),t.line),e.lastL...
function Et (line 1) | function Et(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);...
function St (line 1) | function St(e,t,n){return typeof t=="object"&&(n=t.ch,t=t.line),E(e.line...
function xt (line 1) | function xt(e,t){return{line:t.line-e.line,ch:t.line-e.line}}
function Tt (line 1) | function Tt(e,t,n,r){var i,s=[],o=[];for(var u=0;u<t.length;u++){var a=t...
function Nt (line 1) | function Nt(e,t){if(t.slice(-11)=="<character>"){var n=t.length-11,r=e.s...
function Ct (line 1) | function Ct(e){var t=/^.*(<[\w\-]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n...
function kt (line 1) | function kt(e,t,n){return function(){for(var r=0;r<n;r++)t(e)}}
function Lt (line 1) | function Lt(e){return E(e.line,e.ch)}
function At (line 1) | function At(e,t){return e.ch==t.ch&&e.line==t.line}
function Ot (line 1) | function Ot(e,t){return e.line<t.line?!0:e.line==t.line&&e.ch<t.ch?!0:!1}
function Mt (line 1) | function Mt(e,t){return arguments.length>2&&(t=Mt.apply(undefined,Array....
function _t (line 1) | function _t(e,t){return arguments.length>2&&(t=_t.apply(undefined,Array....
function Dt (line 1) | function Dt(e,t,n){var r=Ot(e,t),i=Ot(t,n);return r&&i}
function Pt (line 1) | function Pt(e,t){return e.getLine(t).length}
function Ht (line 1) | function Ht(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}
function Bt (line 1) | function Bt(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}
function jt (line 1) | function jt(e,t,n){var r=Pt(e,t),i=(new Array(n-r+1)).join(" ");e.setCur...
function Ft (line 1) | function Ft(e,t){var n=[],r=e.listSelections(),i=Lt(e.clipPos(t)),s=!At(...
function It (line 1) | function It(e,t,n){var r=[];for(var i=0;i<n;i++){var s=St(t,i,0);r.push(...
function qt (line 1) | function qt(e,t,n){for(var r=0;r<e.length;r++){var i=n!="head"&&At(e[r]....
function Rt (line 1) | function Rt(e,t){var n=t.lastSelection,r=function(){var t=e.listSelectio...
function Ut (line 1) | function Ut(e,t){var n=t.sel.anchor,r=t.sel.head;t.lastPastedText&&(r=e....
function zt (line 1) | function zt(e,t,n){var r=e.state.vim.sel,i=r.head,s=r.anchor,o;return Ot...
function Wt (line 1) | function Wt(e,t,n){var r=e.state.vim;t=t||r.sel;var n=n||r.visualLine?"l...
function Xt (line 1) | function Xt(e,t,n,r){var i=Lt(t.head),s=Lt(t.anchor);if(n=="char"){var o...
function Vt (line 1) | function Vt(e){var t=e.getCursor("head");return e.getSelection().length=...
function $t (line 1) | function $t(e,t){var n=e.state.vim;t!==!1&&e.setCursor(wt(e,n.sel.head))...
function Jt (line 1) | function Jt(e,t,n){var r=e.getRange(t,n);if(/\n\s*$/.test(r)){var i=r.sp...
function Kt (line 1) | function Kt(e,t,n){t.ch=0,n.ch=0,n.line++}
function Qt (line 1) | function Qt(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}
function Gt (line 1) | function Gt(e,t,n,r,i){var s=Vt(e),o=e.getLine(s.line),u=s.ch,a=i?D[0]:P...
function Yt (line 1) | function Yt(e,t,n){At(t,n)||nt.jumpList.add(e,t,n)}
function Zt (line 1) | function Zt(e,t){nt.lastChararacterSearch.increment=e,nt.lastChararacter...
function nn (line 1) | function nn(e,t,n,r){var i=Lt(e.getCursor()),s=n?1:-1,o=n?e.lineCount():...
function rn (line 1) | function rn(e,t,n,r,i){var s=t.line,o=t.ch,u=e.getLine(s),a=n?1:-1,f=r?P...
function sn (line 1) | function sn(e,t,n,r,i,s){var o=Lt(t),u=[];(r&&!i||!r&&i)&&n++;var a=!r||...
function on (line 1) | function on(e,t,n,r){var i=e.getCursor(),s=i.ch,o;for(var u=0;u<t;u++){v...
function un (line 1) | function un(e,t){var n=e.getCursor().line;return wt(e,E(n,t-1))}
function an (line 1) | function an(e,t,n,r){if(!$(n,I))return;t.marks[n]&&t.marks[n].clear(),t....
function fn (line 1) | function fn(e,t,n,r,i){var s;return r?(s=t.indexOf(n,e+1),s!=-1&&!i&&(s-...
function ln (line 1) | function ln(e,t,n,r,i){function c(t){return!/\S/.test(e.getLine(t))}func...
function cn (line 1) | function cn(e,t,n,r){var i=t,s,o,u={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]...
function hn (line 1) | function hn(e,t,n,r){var i=Lt(t),s=e.getLine(i.line),o=s.split(""),u,a,f...
function pn (line 1) | function pn(){}
function dn (line 1) | function dn(e){var t=e.state.vim;return t.searchState_||(t.searchState_=...
function vn (line 1) | function vn(e,t,n,r,i){e.openDialog?e.openDialog(t,r,{bottom:!0,value:i....
function mn (line 1) | function mn(e){var t=gn(e)||[];if(!t.length)return[];var n=[];if(t[0]!==...
function gn (line 1) | function gn(e){var t=!1,n=[];for(var r=0;r<e.length;r++){var i=e.charAt(...
function yn (line 1) | function yn(e){var t="|(){",n="}",r=!1,i=[];for(var s=-1;s<e.length;s++)...
function wn (line 1) | function wn(e){var t=!1,n=[];for(var r=-1;r<e.length;r++){var i=e.charAt...
function Sn (line 1) | function Sn(e){var t=new v.StringStream(e),n=[];while(!t.eol()){while(t....
function xn (line 1) | function xn(e,t,n){var r=nt.registerController.getRegister("/");r.setTex...
function Tn (line 1) | function Tn(e,t){e.openNotification?e.openNotification('<span style="col...
function Nn (line 1) | function Nn(e,t){var n="";return e&&(n+='<span style="font-family: monos...
function kn (line 1) | function kn(e,t){var n=(t.prefix||"")+" "+(t.desc||""),r=Nn(t.prefix,t.d...
function Ln (line 1) | function Ln(e,t){if(e instanceof RegExp&&t instanceof RegExp){var n=["gl...
function An (line 1) | function An(e,t,n,r){if(!t)return;var i=dn(e),s=xn(t,!!n,!!r);if(!s)retu...
function On (line 1) | function On(e){if(e.source.charAt(0)=="^")var t=!0;return{token:function...
function Mn (line 1) | function Mn(e,t){var n=dn(e),r=n.getOverlay();if(!r||t!=r.query)r&&e.rem...
function _n (line 1) | function _n(e,t,n,r){return r===undefined&&(r=1),e.operation(function(){...
function Dn (line 1) | function Dn(e){var t=dn(e);e.removeOverlay(dn(e).getOverlay()),t.setOver...
function Pn (line 1) | function Pn(e,t,n){return typeof e!="number"&&(e=e.line),t instanceof Ar...
function Hn (line 1) | function Hn(e){var t=e.ace.renderer;return{top:t.getFirstFullyVisibleRow...
function In (line 1) | function In(e,t,n,r,i,s,o,u,a){function c(){e.operation(function(){while...
function qn (line 1) | function qn(e){var t=e.state.vim,n=nt.macroModeState,r=nt.registerContro...
function Rn (line 1) | function Rn(e){b.unshift(e)}
function Un (line 1) | function Un(e,t,n,r,i){var s={keys:e,type:t};s[t]=n,s[t+"Args"]=r;for(va...
function zn (line 1) | function zn(e,t,n,r){var i=nt.registerController.getRegister(r);if(r==":...
function Wn (line 1) | function Wn(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=nt.regis...
function Xn (line 1) | function Xn(e){if(e.isPlaying)return;var t=e.latestRegister,n=nt.registe...
function Vn (line 1) | function Vn(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=nt.regis...
function $n (line 1) | function $n(e,t){var n=nt.macroModeState,r=n.lastInsertModeChanges;if(!n...
function Jn (line 1) | function Jn(e){var t=e.state.vim;if(t.insertMode){var n=nt.macroModeStat...
function Kn (line 1) | function Kn(e){var t=e.state.vim,n=wt(e,Lt(t.sel.head)),r=St(n,0,1);t.fa...
function Qn (line 1) | function Qn(e,t){var n=e.getCursor("anchor"),r=e.getCursor("head");t.vis...
function Gn (line 1) | function Gn(e){this.keyName=e}
function Yn (line 1) | function Yn(e){function i(){return n.changes.push(new Gn(r)),!0}var t=nt...
function Zn (line 1) | function Zn(e,t,n,r){function u(){s?ht.processAction(e,t,t.lastEditActio...
function er (line 1) | function er(e,t,n){function r(t){return typeof t=="string"?v.commands[t]...
function nr (line 1) | function nr(e,t,n){t.length>1&&t[0]=="n"&&(t=t.replace("numpad","")),t=t...
function ir (line 1) | function ir(e){var t=new e.constructor;return Object.keys(e).forEach(fun...
function sr (line 1) | function sr(e,t,n){var r=!1,i=S.maybeInitVimState_(e),s=i.visualBlock||i...
function ar (line 1) | function ar(e,t){t.off("beforeEndOperation",ar);var n=t.state.cm.vimCmd;...
function e (line 1) | function e(e,t,n){var r=e.ace.container,i;return i=r.appendChild(documen...
function t (line 1) | function t(e,t){e.state.currentNotificationClose&&e.state.currentNotific...
function a (line 1) | function a(e){if(typeof e=="string")f.value=e;else{if(o)return;o=!0,s.pa...
function a (line 1) | function a(){if(s)return;s=!0,clearTimeout(o),i.parentNode.removeChild(i)}
function s (line 1) | function s(s,o,u){function l(n){var r=++t%e,o=i[r];o&&o.clear(),i[r]=s.s...
function o (line 1) | function o(s,o){t+=o,t>n?t=n:t<r&&(t=r);var u=i[(e+t)%e];if(u&&!u.find()...
function i (line 1) | function i(){var r=nt.macroModeState;if(r.isRecording){if(t=="q")return ...
function s (line 1) | function s(){if(t=="<Esc>")return ut(e),r.visualMode?$t(e):r.insertMode&...
function o (line 1) | function o(n){var r;while(n)r=/<\w+-.+?>|<\w+>|./.exec(n),t=r[0],n=n.sub...
function u (line 1) | function u(){if(s())return!0;var n=r.inputState.keyBuffer=r.inputState.k...
function a (line 1) | function a(){if(i()||s())return!0;var n=r.inputState.keyBuffer=r.inputSt...
function a (line 1) | function a(r,i,s){nt.searchHistoryController.pushInput(r),nt.searchHisto...
function f (line 1) | function f(t){e.scrollTo(u.left,u.top),a(t,!0,!0);var n=nt.macroModeStat...
function l (line 1) | function l(t,n,i){var s=v.keyName(t),o;s=="Up"||s=="Down"?(o=s=="Up"?!0:...
function c (line 1) | function c(t,n,r){var i=v.keyName(t);i=="Esc"||i=="Ctrl-C"||i=="Ctrl-["|...
function r (line 1) | function r(t){nt.exCommandHistoryController.pushInput(t),nt.exCommandHis...
function i (line 1) | function i(t,n,r){var i=v.keyName(t),s;if(i=="Esc"||i=="Ctrl-C"||i=="Ctr...
function o (line 1) | function o(){if(t.argString){var e=new v.StringStream(t.argString);e.eat...
function b (line 1) | function b(e,t){if(n){var i;i=e,e=t,t=i}r&&(e=e.toLowerCase(),t=t.toLowe...
FILE: antSword/static/libs/ace/mode-abap.js
function a (line 1) | function a(){this.HighlightRules=r,this.foldingRules=new i}
FILE: antSword/static/libs/ace/mode-asciidoc.js
function t (line 1) | function t(e){var t=/\w/.test(e)?"\\b":"(?:\\B|^)";return t+e+"[^"+e+"]....
function l (line 1) | function l(t){return f=e.getTokens(t)[0],f&&f.type}
function d (line 1) | function d(){var t=f.value.match(p);if(t)return t[0].length;var r=c.inde...
FILE: antSword/static/libs/ace/mode-c9search.js
function o (line 1) | function o(e,t){try{return new RegExp(e,t)}catch(n){}}
FILE: antSword/static/libs/ace/mode-coffee.js
function s (line 1) | function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this...
function l (line 1) | function l(){this.HighlightRules=r,this.$outdent=new i,this.foldingRules...
FILE: antSword/static/libs/ace/mode-coldfusion.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-curly.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-django.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-ejs.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-handlebars.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
function s (line 1) | function s(e,t){return t.splice(0,3),t.shift()||"start"}
FILE: antSword/static/libs/ace/mode-html.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-html_ruby.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-jade.js
function c (line 1) | function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*...
function s (line 1) | function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this...
function l (line 1) | function l(e,t){return{token:"entity.name.function.jade",regex:"^\\s*\\:...
FILE: antSword/static/libs/ace/mode-jsoniq.js
function s (line 1) | function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&...
function r (line 1) | function r(e,t){E=t,S=e,x=e.length,s(0,0,0)}
function s (line 1) | function s(e,t,n){m=t,g=t,y=e,b=t,w=n,N=n,E.reset(S)}
function o (line 1) | function o(){E.startNonterminal("EQName",g);switch(y){case 80:f(80);brea...
function u (line 1) | function u(){E.startNonterminal("FunctionName",g);switch(y){case 17:f(17...
function a (line 1) | function a(){E.startNonterminal("NCName",g);switch(y){case 28:f(28);brea...
function f (line 1) | function f(e){y==e?(l(),E.terminal(i.TOKEN[y],b,w>x?x:w),m=b,g=w,y=0):d(...
function l (line 1) | function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}
function c (line 1) | function c(e){var t;for(;;){t=C(e);if(t!=30)break}return t}
function h (line 1) | function h(e){y==0&&(y=c(e),b=T,w=N)}
function p (line 1) | function p(e){y==0&&(y=C(e),b=T,w=N)}
function d (line 1) | function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}
function C (line 1) | function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o...
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function a (line 1) | function a(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.for...
function u (line 1) | function u(i){r&&t.removeMarker(r),o.row=n.row;if(e.pos.sc!==undefined&&...
FILE: antSword/static/libs/ace/mode-jsx.js
function f (line 1) | function f(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=n...
FILE: antSword/static/libs/ace/mode-livescript.js
function u (line 1) | function u(e,t){function n(){}return n.prototype=(e.superclass=t).protot...
function a (line 1) | function a(e,t){var n={}.hasOwnProperty;for(var r in t)n.call(t,r)&&(e[r...
function o (line 1) | function o(){var t;this.$tokenizer=new(e("../tokenizer").Tokenizer)(o.Ru...
FILE: antSword/static/libs/ace/mode-lsl.js
function s (line 1) | function s(){var e=this.createKeywordMapper({"constant.language.float.ls...
FILE: antSword/static/libs/ace/mode-lua.js
function n (line 1) | function n(t){var n=0;for(var r=0;r<t.length;r++){var i=t[r];i.type=="ke...
FILE: antSword/static/libs/ace/mode-luapage.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
function n (line 1) | function n(t){var n=0;for(var r=0;r<t.length;r++){var i=t[r];i.type=="ke...
FILE: antSword/static/libs/ace/mode-markdown.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
function c (line 1) | function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*...
function l (line 1) | function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}
function h (line 1) | function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(...
FILE: antSword/static/libs/ace/mode-mask.js
function c (line 1) | function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*...
function N (line 1) | function N(){function t(e,t,n){var r="js-"+e+"-",i=e==="block"?["start"]...
function k (line 1) | function k(e,t,n){var r,i,s;return arguments.length===4?(r=n,i=arguments...
FILE: antSword/static/libs/ace/mode-mysql.js
function i (line 1) | function i(e){var t=e.start,n=e.escape;return{token:"string.start",regex...
FILE: antSword/static/libs/ace/mode-php.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-rhtml.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-smarty.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-soy_template.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-svg.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
FILE: antSword/static/libs/ace/mode-twig.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-velocity.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function f (line 1) | function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();whil...
FILE: antSword/static/libs/ace/mode-xml.js
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function l (line 1) | function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}
FILE: antSword/static/libs/ace/mode-xquery.js
function s (line 1) | function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&...
function r (line 1) | function r(e,t){E=t,S=e,x=e.length,s(0,0,0)}
function s (line 1) | function s(e,t,n){m=t,g=t,y=e,b=t,w=n,N=n,E.reset(S)}
function o (line 1) | function o(){E.startNonterminal("EQName",g);switch(y){case 77:f(77);brea...
function u (line 1) | function u(){E.startNonterminal("FunctionName",g);switch(y){case 14:f(14...
function a (line 1) | function a(){E.startNonterminal("NCName",g);switch(y){case 26:f(26);brea...
function f (line 1) | function f(e){y==e?(l(),E.terminal(i.TOKEN[y],b,w>x?x:w),m=b,g=w,y=0):d(...
function l (line 1) | function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}
function c (line 1) | function c(e){var t;for(;;){t=C(e);if(t!=28)break}return t}
function h (line 1) | function h(e){y==0&&(y=c(e),b=T,w=N)}
function p (line 1) | function p(e){y==0&&(y=C(e),b=T,w=N)}
function d (line 1) | function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}
function C (line 1) | function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o...
function u (line 1) | function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}
function a (line 1) | function a(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.for...
function u (line 1) | function u(i){r&&t.removeMarker(r),o.row=n.row;if(e.pos.sc!==undefined&&...
FILE: antSword/static/libs/ace/worker-coffee.js
function t (line 1) | function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")r...
function r (line 1) | function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}
function i (line 1) | function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=...
function s (line 1) | function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.actio...
function e (line 1) | function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e....
function t (line 1) | function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start...
function define (line 1) | function ace.define(e){module.exports=e()}
function _dereq_ (line 1) | function _dereq_(e){return _dereq_[e]}
function e (line 1) | function e(){}
function e (line 1) | function e(){}
function e (line 1) | function e(){this.yy={}}
function t (line 1) | function t(){var e;return e=d.lex()||h,"number"!=typeof e&&(e=n.symbols_...
function e (line 1) | function e(e,t,n,r){var i,s;this.parent=e,this.expressions=t,this.method...
function n (line 1) | function n(){this.constructor=e}
function e (line 1) | function e(e,t){var n;this.code=""+t,this.locationData=null!=e?e.locatio...
function e (line 1) | function e(){}
function t (line 1) | function t(e){this.expressions=et(it(e||[]))}
function t (line 1) | function t(e){this.value=e}
function t (line 1) | function t(){return t.__super__.constructor.apply(this,arguments)}
function t (line 1) | function t(){return t.__super__.constructor.apply(this,arguments)}
function t (line 1) | function t(e){this.val=e}
function t (line 1) | function t(e){this.expression=e}
function t (line 1) | function t(e,n,r){return!n&&e instanceof t?e:(this.base=e,this.propertie...
function t (line 1) | function t(e){this.comment=e}
function n (line 1) | function n(e,t,n){this.args=null!=t?t:[],this.soak=n,this.isNew=!1,this....
function t (line 1) | function t(e,t){this.child=e,this.parent=t}
function t (line 1) | function t(e,t){this.name=e,this.name.asKey=!0,this.soak="soak"===t}
function t (line 1) | function t(e){this.index=e}
function t (line 1) | function t(e,t,n){this.from=e,this.to=t,this.exclusive="exclusive"===n,t...
function t (line 1) | function t(e){this.range=e,t.__super__.constructor.call(this)}
function n (line 1) | function n(e,t){this.generated=null!=t?t:!1,this.objects=this.properties...
function t (line 1) | function t(e){this.objects=e||[]}
function n (line 1) | function n(e,t,n){this.variable=e,this.parent=t,this.body=null!=n?n:new ...
function n (line 1) | function n(e,t,n,r){var i,s,o;this.variable=e,this.value=t,this.context=...
function t (line 1) | function t(e,t,n){this.params=e||[],this.body=t||new s,this.bound="bound...
function t (line 1) | function t(e,t,n){var r,i;this.name=e,this.value=t,this.splat=n,i=r=this...
function t (line 1) | function t(e){this.name=e.compile?e:new L(e)}
function t (line 1) | function t(){return t.__super__.constructor.apply(this,arguments)}
function t (line 1) | function t(e,t){this.condition=(null!=t?t.invert:void 0)?e.invert():e,th...
function n (line 1) | function n(e,t,n,r){if("in"===e)return new w(t,n);if("do"===e)return thi...
function t (line 1) | function t(e,t){this.object=e,this.array=t}
function t (line 1) | function t(e,t,n,r){this.attempt=e,this.errorVariable=t,this.recovery=n,...
function t (line 1) | function t(e){this.expression=e}
function t (line 1) | function t(e){this.expression=e}
function t (line 1) | function t(e){this.body=e}
function t (line 1) | function t(e,t){var n;this.source=t.source,this.guard=t.guard,this.step=...
function t (line 1) | function t(e,t,n){this.subject=e,this.cases=t,this.otherwise=n}
function t (line 1) | function t(e,t,n){this.body=t,null==n&&(n={}),this.condition="unless"===...
function e (line 1) | function e(e){this.line=e,this.columns=[]}
function t (line 1) | function t(){this.lines=[]}
function r (line 1) | function r(){}
function w (line 1) | function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentine...
function H (line 1) | function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-...
function B (line 1) | function B(e){var t=typeof e;return e===null||t==="undefined"||t==="bool...
function j (line 1) | function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="funct...
function e (line 1) | function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}
FILE: antSword/static/libs/ace/worker-css.js
function t (line 1) | function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")r...
function r (line 1) | function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}
function i (line 1) | function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=...
function s (line 1) | function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.actio...
function e (line 1) | function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e....
function t (line 1) | function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start...
function objectToString (line 1) | function objectToString(e){return Object.prototype.toString.call(e)}
function clone (line 1) | function clone(e,t,n,r){function u(e,n){if(e===null)return null;if(n==0)...
function Reporter (line 1) | function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this....
function e (line 1) | function e(){this._listeners={}}
function t (line 1) | function t(e){this._input=e.replace(/\n\r?/g,"\n"),this._line=1,this._co...
function n (line 1) | function n(e,t,n){this.col=n,this.line=t,this.message=e}
function r (line 1) | function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}
function i (line 1) | function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null...
function Combinator (line 1) | function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_...
function MediaFeature (line 1) | function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:""...
function MediaQuery (line 1) | function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:""...
function Parser (line 1) | function Parser(e){EventTarget.call(this),this.options=e||{},this._token...
function PropertyName (line 1) | function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERT...
function PropertyValue (line 1) | function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parse...
function PropertyValueIterator (line 1) | function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._ma...
function PropertyValuePart (line 1) | function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line...
function Selector (line 1) | function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SEL...
function SelectorPart (line 1) | function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELEC...
function SelectorSubPart (line 1) | function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELE...
function Specificity (line 1) | function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}
function isHexDigit (line 1) | function isHexDigit(e){return e!==null&&h.test(e)}
function isDigit (line 1) | function isDigit(e){return e!==null&&/\d/.test(e)}
function isWhitespace (line 1) | function isWhitespace(e){return e!==null&&/\s/.test(e)}
function isNewLine (line 1) | function isNewLine(e){return e!==null&&nl.test(e)}
function isNameStart (line 1) | function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}
function isNameChar (line 1) | function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.tes...
function isIdentStart (line 1) | function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}
function mix (line 1) | function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}
function TokenStream (line 1) | function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}
function ValidationError (line 1) | function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}
function u (line 1) | function u(e){var t,n,r,a,f=e.elementName?e.elementName.text:"",l;f&&f.c...
function i (line 1) | function i(e,t){var r,i=e&&e.match(n),s=i&&i[1];return s&&(r={"true":2,"...
function u (line 1) | function u(){s={},o=!1}
function a (line 1) | function a(){var e,u;if(!o){if(s.height)for(e in i)i.hasOwnProperty(e)&&...
function s (line 1) | function s(e,s,o){i[e]&&(typeof r[e]!="string"||i[e].value.toLowerCase()...
function o (line 1) | function o(){i={}}
function u (line 1) | function u(){var e=i.display?i.display.value:null;if(e)switch(e){case"in...
function s (line 1) | function s(){r={}}
function o (line 1) | function o(){s={},r=null}
function i (line 1) | function i(e){e.selectors?r={line:e.line,col:e.col,selectors:e.selectors...
function s (line 1) | function s(){r&&r.outline&&(r.selectors.toString().toLowerCase().indexOf...
function r (line 1) | function r(e){var r,i,s,o,u,a,f,l,c,h,p,d=e.selectors;for(r=0,i=d.length...
function f (line 1) | function f(){u={}}
function l (line 1) | function l(e){var r,i,s,o;for(r in a)if(a.hasOwnProperty(r)){o=0;for(i=0...
function s (line 1) | function s(){r=!1,i="inherit"}
function o (line 1) | function o(){r&&i!=="ltr"&&t.report("Negative text-indent doesn't work w...
function o (line 1) | function o(){r={},i=1}
function u (line 1) | function u(){var e,i,o,u,a,f=[];for(e in r)s[e]&&f.push({actual:e,needed...
function r (line 1) | function r(){}
function w (line 1) | function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentine...
function H (line 1) | function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-...
function B (line 1) | function B(e){var t=typeof e;return e===null||t==="undefined"||t==="bool...
function j (line 1) | function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="funct...
function e (line 1) | function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}
FILE: antSword/static/libs/
Copy disabled (too large)
Download .json
Condensed preview — 898 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,641K chars).
[
{
"path": ".gitignore",
"chars": 29,
"preview": "*.sh linguist-language= bash\n"
},
{
"path": "BruteXSS/License.txt",
"chars": 35141,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "BruteXSS/README.md",
"chars": 3295,
"preview": "#BruteXSS \n#The redistribute version is at https://github.com/ym2011/penetration/tree/master/BruteXSS \n#there are more"
},
{
"path": "BruteXSS/brutexss.py",
"chars": 11361,
"preview": "#!/usr/bin/env python\n#!BruteXSS\n#!Cross-Site Scripting Bruteforcer\n#!Author: Shawar Khan\n#!Site: https://shawarkhan.com"
},
{
"path": "BruteXSS/colorama/__init__.py",
"chars": 240,
"preview": "# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.\nfrom .initialise import init, deinit, reinit,"
},
{
"path": "BruteXSS/colorama/ansi.py",
"chars": 2524,
"preview": "# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.\n'''\nThis module generates ANSI character code"
},
{
"path": "BruteXSS/colorama/ansitowin32.py",
"chars": 9668,
"preview": "# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.\nimport re\nimport sys\nimport os\n\nfrom .ansi im"
},
{
"path": "BruteXSS/colorama/initialise.py",
"chars": 1917,
"preview": "# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.\nimport atexit\nimport contextlib\nimport sys\n\nf"
},
{
"path": "BruteXSS/colorama/win32.py",
"chars": 5365,
"preview": "# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.\n\n# from winbase.h\nSTDOUT = -11\nSTDERR = -12\n\n"
},
{
"path": "BruteXSS/colorama/winterm.py",
"chars": 6290,
"preview": "# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.\nfrom . import win32\n\n\n# from wincon.h\nclass W"
},
{
"path": "BruteXSS/mechanize/__init__.py",
"chars": 5098,
"preview": "__all__ = [\n 'AbstractBasicAuthHandler',\n 'AbstractDigestAuthHandler',\n 'BaseHandler',\n 'Browser',\n 'Brow"
},
{
"path": "BruteXSS/mechanize/_auth.py",
"chars": 2576,
"preview": "\"\"\"HTTP Authentication and Proxy support.\n\n\nCopyright 2006 John J. Lee <jjl@pobox.com>\n\nThis code is free software; you "
},
{
"path": "BruteXSS/mechanize/_beautifulsoup.py",
"chars": 40725,
"preview": "\"\"\"Beautiful Soup\nElixir and Tonic\n\"The Screen-Scraper's Friend\"\nv2.1.1\nhttp://www.crummy.com/software/BeautifulSoup/\n\nB"
},
{
"path": "BruteXSS/mechanize/_clientcookie.py",
"chars": 65502,
"preview": "\"\"\"HTTP cookie handling for web clients.\n\nThis module originally developed from my port of Gisle Aas' Perl module\nHTTP::"
},
{
"path": "BruteXSS/mechanize/_debug.py",
"chars": 938,
"preview": "import logging\n\nfrom _response import response_seek_wrapper\nfrom _urllib2_fork import BaseHandler\n\n\nclass HTTPResponseDe"
},
{
"path": "BruteXSS/mechanize/_firefox3cookiejar.py",
"chars": 8345,
"preview": "\"\"\"Firefox 3 \"cookies.sqlite\" cookie persistence.\n\nCopyright 2008 John J Lee <jjl@pobox.com>\n\nThis code is free software"
},
{
"path": "BruteXSS/mechanize/_form.py",
"chars": 120863,
"preview": "\"\"\"HTML form handling for web clients.\n\nHTML form handling for web clients: useful for parsing HTML forms, filling them\n"
},
{
"path": "BruteXSS/mechanize/_gzip.py",
"chars": 3317,
"preview": "from cStringIO import StringIO\n\nimport _response\nimport _urllib2_fork\n\n\n# GzipConsumer was taken from Fredrik Lundh's ef"
},
{
"path": "BruteXSS/mechanize/_headersutil.py",
"chars": 8371,
"preview": "\"\"\"Utility functions for HTTP header value parsing and construction.\n\nCopyright 1997-1998, Gisle Aas\nCopyright 2002-2006"
},
{
"path": "BruteXSS/mechanize/_html.py",
"chars": 20888,
"preview": "\"\"\"HTML handling.\n\nCopyright 2003-2006 John J. Lee <jjl@pobox.com>\n\nThis code is free software; you can redistribute it "
},
{
"path": "BruteXSS/mechanize/_http.py",
"chars": 14354,
"preview": "\"\"\"HTTP related handlers.\n\nNote that some other HTTP handlers live in more specific modules: _auth.py,\n_gzip.py, etc.\n\n\n"
},
{
"path": "BruteXSS/mechanize/_lwpcookiejar.py",
"chars": 7147,
"preview": "\"\"\"Load / save to libwww-perl (LWP) format files.\n\nActually, the format is slightly extended from that used by LWP's\n(li"
},
{
"path": "BruteXSS/mechanize/_markupbase.py",
"chars": 14399,
"preview": "# Taken from Python 2.6.4 for use by _sgmllib.py\n\"\"\"Shared support for scanning document type declarations in HTML and X"
},
{
"path": "BruteXSS/mechanize/_mechanize.py",
"chars": 24916,
"preview": "\"\"\"Stateful programmatic WWW navigation, after Perl's WWW::Mechanize.\n\nCopyright 2003-2006 John J. Lee <jjl@pobox.com>\nC"
},
{
"path": "BruteXSS/mechanize/_mozillacookiejar.py",
"chars": 6321,
"preview": "\"\"\"Mozilla / Netscape cookie loading / saving.\n\nCopyright 2002-2006 John J Lee <jjl@pobox.com>\nCopyright 1997-1999 Gisle"
},
{
"path": "BruteXSS/mechanize/_msiecookiejar.py",
"chars": 14694,
"preview": "\"\"\"Microsoft Internet Explorer cookie loading on Windows.\n\nCopyright 2002-2003 Johnny Lee <typo_pl@hotmail.com> (MSIE Pe"
},
{
"path": "BruteXSS/mechanize/_opener.py",
"chars": 14763,
"preview": "\"\"\"URL opener.\n\nCopyright 2004-2006 John J Lee <jjl@pobox.com>\n\nThis code is free software; you can redistribute it and/"
},
{
"path": "BruteXSS/mechanize/_pullparser.py",
"chars": 14352,
"preview": "\"\"\"A simple \"pull API\" for HTML parsing, after Perl's HTML::TokeParser.\n\nExamples\n\nThis program extracts all links from "
},
{
"path": "BruteXSS/mechanize/_request.py",
"chars": 1561,
"preview": "\"\"\"Integration with Python standard library module urllib2: Request class.\n\nCopyright 2004-2006 John J Lee <jjl@pobox.co"
},
{
"path": "BruteXSS/mechanize/_response.py",
"chars": 17803,
"preview": "\"\"\"Response classes.\n\nThe seek_wrapper code is not used if you're using UserAgent with\n.set_seekable_responses(False), o"
},
{
"path": "BruteXSS/mechanize/_rfc3986.py",
"chars": 7665,
"preview": "\"\"\"RFC 3986 URI parsing and relative reference resolution / absolutization.\n\n(aka splitting and joining)\n\nCopyright 2006"
},
{
"path": "BruteXSS/mechanize/_sgmllib_copy.py",
"chars": 18248,
"preview": "# Taken from Python 2.6.4 and regexp module constants modified\n\"\"\"A parser for SGML, using the derived class as a static"
},
{
"path": "BruteXSS/mechanize/_sockettimeout.py",
"chars": 143,
"preview": "import socket\n\ntry:\n _GLOBAL_DEFAULT_TIMEOUT = socket._GLOBAL_DEFAULT_TIMEOUT\nexcept AttributeError:\n _GLOBAL_DEFA"
},
{
"path": "BruteXSS/mechanize/_testcase.py",
"chars": 5086,
"preview": "import os\nimport shutil\nimport subprocess\nimport tempfile\nimport unittest\n\n\nclass SetupStack(object):\n\n def __init__("
},
{
"path": "BruteXSS/mechanize/_urllib2.py",
"chars": 1299,
"preview": "# urllib2 work-alike interface\n# ...from urllib2...\nfrom urllib2 import \\\n URLError, \\\n HTTPError\n# ...and from "
},
{
"path": "BruteXSS/mechanize/_urllib2_fork.py",
"chars": 49067,
"preview": "\"\"\"Fork of urllib2.\n\nWhen reading this, don't assume that all code in here is reachable. Code in\nthe rest of mechanize "
},
{
"path": "BruteXSS/mechanize/_useragent.py",
"chars": 14312,
"preview": "\"\"\"Convenient HTTP UserAgent class.\n\nThis is a subclass of urllib2.OpenerDirector.\n\n\nCopyright 2003-2006 John J. Lee <jj"
},
{
"path": "BruteXSS/mechanize/_util.py",
"chars": 8992,
"preview": "\"\"\"Utility functions and date/time routines.\n\n Copyright 2002-2006 John J Lee <jjl@pobox.com>\n\nThis code is free softwar"
},
{
"path": "BruteXSS/mechanize/_version.py",
"chars": 44,
"preview": "\"0.2.5\"\n__version__ = (0, 2, 5, None, None)\n"
},
{
"path": "BruteXSS/wordlist-huge.txt",
"chars": 362720,
"preview": "''\">\r\n?><script>alert(?X?)</script>\r\n?><script>alert(1)</script>\r\n</ScrIpt><script>alert(1)</script>\r\n\"><script>alert(1"
},
{
"path": "BruteXSS/wordlist-medium.txt",
"chars": 8161,
"preview": "</ScrIpt><script>alert(1)</script>\n<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>\n<div onclick=\"alert('xss')\">\n<div styl"
},
{
"path": "BruteXSS/wordlist-small.txt",
"chars": 6794,
"preview": "<script>alert(1)</script>\r\n<scRipt>alErt(1)</scrIpt>\r\n<img src=x onerror=alert(1)>\r\n<script type=vbscript>MsgBox(0)</scr"
},
{
"path": "BruteXSS/wordlist.txt",
"chars": 1181,
"preview": "</script>\"><script>prompt(1)</script>\n</ScRiPt>\"><ScRiPt>prompt(1)</ScRiPt>\n\"><img src=x onerror=prompt(1)>\n\"><svg/onloa"
},
{
"path": "Burpsuite/BurpSuite_2021.bat",
"chars": 562,
"preview": ":: authour: ym2011\r\n:: time: 2020-8-19\r\n:: verison: 1.0\r\n@echo off\r\ntitle burpsuite runs...\r\necho **********************"
},
{
"path": "Burpsuite/README.MD",
"chars": 285,
"preview": "This is a folder collecting some useful extenders for burp suite \n\nJava-Deserialization-Scanner: https://github.com/fe"
},
{
"path": "Burpsuite/Run Burp Suite_v1.7.37.bat",
"chars": 329,
"preview": ":: authour: ym2011\r\n:: time: 2020-8-19\r\n:: verison: 1.0\r\n@echo off\r\ntitle burpsuite pro is runnig...\r\necho *************"
},
{
"path": "Burpsuite/download-link.txt",
"chars": 406,
"preview": "Professional / Community 2020.11.3 : \nhttps://portswigger.net/burp/releases/download?product=pro&version=2020.11.3&typ"
},
{
"path": "Burpsuite/xray_run_with_burp.bat",
"chars": 2071,
"preview": ":: authour: ym2011\r\n:: time: 2020-12-07\r\n:: verison: 1.1\r\n\r\n@echo off\r\ntitle xray run with burpsuite pro\r\n\r\nset YYYYmmdd"
},
{
"path": "DBScanner/.gitignore",
"chars": 1157,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "DBScanner/LICENSE",
"chars": 34520,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "DBScanner/README.md",
"chars": 185,
"preview": "# DBScanner\n自动扫描内网常见sql、no-sql数据库脚本(mysql、mssql、oracle、postgresql、redis、mongodb、memcached、elasticsearch),包含未授权访问及常规弱口令检测"
},
{
"path": "DBScanner/about oracle.txt",
"chars": 133,
"preview": "关于oracle需要安装客户端支持\n\nhttps://oracle.github.io/odpi/doc/installation.html#macos\nhttps://www.zhihu.com/question/19629769/ans"
},
{
"path": "DBScanner/dbscan.py",
"chars": 2686,
"preview": "#!/usr/bin/env python\n#coding:utf-8\n#Author:se55i0n\n#针对常见sql、No-sql数据库进行安全检查\nimport sys\nimport IPy\nimport time\nimport so"
},
{
"path": "Github_Leak/GitHack-master/GitHack.py",
"chars": 2734,
"preview": "#!/usr/bin/env python\n# -*- encoding: utf-8 -*-\n\nimport sys\nimport urllib2\nimport os\nimport urlparse\nimport zlib\nimport "
},
{
"path": "Github_Leak/GitHack-master/README.md",
"chars": 795,
"preview": "GitHack\n=\n\nGitHack is a `.git` folder disclosure exploit. \n\nIt rebuild source code from .git folder while keep directory"
},
{
"path": "Github_Leak/GitHack-master/lib/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "Github_Leak/GitHack-master/lib/parser.py",
"chars": 4547,
"preview": "#!/usr/bin/env python\n#\n# https://github.com/git/git/blob/master/Documentation/technical/index-format.txt\n#\n\nimport bina"
},
{
"path": "Github_Leak/Github-Hunter-master/GithubHunter.py",
"chars": 8819,
"preview": "# -*- coding: utf-8 -*-\n\nimport configparser\nimport os\nimport re\nimport smtplib\nimport sqlite3\nimport sys\nimport traceba"
},
{
"path": "Github_Leak/Github-Hunter-master/README.md",
"chars": 1842,
"preview": "# Github-Hunter v2.1\nThis tool is for sensitive information searching on Github.\nIt's new version of this tool.\n## Requi"
},
{
"path": "Github_Leak/Github-Hunter-master/info.ini.example",
"chars": 452,
"preview": "[KEYWORD]\nkeyword1 = your keyword here\nkeyword2 = your keyword here\nkeyword3 = your keyword here\n...\netc\n\n[EMAIL]\nhost ="
},
{
"path": "Github_Leak/Github-Hunter-master/requirements.txt",
"chars": 44,
"preview": "lxml==4.2.1 \ntqdm==4.23.0\nrequests==2.20.1\n"
},
{
"path": "Linux_scripts/recover_ss.sh",
"chars": 3494,
"preview": "#!/bin/bash\n# author\t:ym2011\n# date\t\t: 2019-10-08\n# version \t: 1.0\n# target \t: After restored Snapshots to the machine, "
},
{
"path": "Linux_scripts/run_armitage.sh",
"chars": 453,
"preview": "#!/bin/bash\necho \"execute the script to run armitage,typ the following command in the terminal:\nchmod 755 run_armitage.s"
},
{
"path": "Linux_scripts/set_proxy.sh",
"chars": 2773,
"preview": "#!/usr/bin/env bash\n\nfunction menu() \n{\necho -e \"\\033[1;31m ____________________________________________________________"
},
{
"path": "Linux_scripts/siege_batchaccess.sh",
"chars": 1610,
"preview": "# Edit this file to introduce tasks to be run by cron.\n#\n# Each task to run has to be defined through a single line\n# in"
},
{
"path": "README.md",
"chars": 66,
"preview": "# Penetration\nthere are some automatic scripts for penetration. \n"
},
{
"path": "Snorby_scripts/README.MD",
"chars": 895,
"preview": "# these is a very simple script for building an ids consisting of Suricata、Barnyard2 and Snorby.\n# as is known, the snor"
},
{
"path": "Snorby_scripts/setup.sh",
"chars": 9849,
"preview": "#!/usr/bin/env bash\n# author: ym2011\n# date: 2016-11-26\n# version: 0.8\n\necho \"it will install snorby,suricata,barnyard2 "
},
{
"path": "Snorby_scripts/start_ids.sh",
"chars": 915,
"preview": "#!/bin/sh\necho \"===========================================================================================\"\necho \"it wi"
},
{
"path": "Snorby_scripts/stop_ids.sh",
"chars": 660,
"preview": "#!/bin/sh\necho \"===========================================================================================\"\necho \"it wi"
},
{
"path": "User Agents/LICENSE",
"chars": 1067,
"preview": "MIT License\n\nCopyright (c) 2018 John Berlin\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
},
{
"path": "User Agents/README.md",
"chars": 2504,
"preview": "# User-Agent Lists\n\nSometimes you need change the _User-Agent_ string used when making **alot** of requests to the same "
},
{
"path": "User Agents/SwitchyOmega/OmegaOptions.bak",
"chars": 572871,
"preview": "{\"+Lantern for 8787\":{\"bypassList\":[{\"conditionType\":\"BypassCondition\",\"pattern\":\"<local>\"}],\"color\":\"#dd6633\",\"fallback"
},
{
"path": "User Agents/csv/android-browser.csv",
"chars": 225510,
"preview": "ua,version,commonality\n\"Mozilla/5.0 (Linux; U; Android 4.0.4; pt-br; MZ608 Build/7.7.1-141-7-FLEM-UMTS-LA) AppleWebKit/5"
},
{
"path": "User Agents/csv/chrome.csv",
"chars": 195249,
"preview": "ua,version,commonality\n\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.311"
},
{
"path": "User Agents/csv/firefox.csv",
"chars": 132027,
"preview": "ua,version,commonality\nMozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1,7,Very common\nMozilla/5.0 (Wi"
},
{
"path": "User Agents/csv/internet-explorer.csv",
"chars": 212947,
"preview": "ua,version,commonality\nMozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1),9,Very common\nMozilla/5.0 (Windows NT 6.1; WOW"
},
{
"path": "User Agents/csv/opera.csv",
"chars": 196558,
"preview": "ua,version,commonality\n\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 "
},
{
"path": "User Agents/csv/safari.csv",
"chars": 209181,
"preview": "ua,version,commonality\n\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/"
},
{
"path": "User Agents/csv/techpatterns_com_useragentswitcher.csv",
"chars": 120569,
"preview": "kind,description,ua\nBrowsers - Windows,Arora 0.6.0 - (Vista),\"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKi"
},
{
"path": "User Agents/csv/ua_org_allagents.csv",
"chars": 209752,
"preview": "description,ua\nSync2It bookmark management & clustering engine,!Susie (http://www.sync2it.com/susie)\nUnCHAOS search robo"
},
{
"path": "User Agents/json/android-browser.json",
"chars": 285593,
"preview": "[{\"commonality\":\"Common\",\"version\":\"4\",\"ua\":\"Mozilla\\/5.0 (Linux; U; Android 4.0.4; pt-br; MZ608 Build\\/7.7.1-141-7-FLEM"
},
{
"path": "User Agents/json/chrome.json",
"chars": 254131,
"preview": "[{\"commonality\":\"Very common\",\"version\":\"60\",\"ua\":\"Mozilla\\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\\/537.36 (KHTML"
},
{
"path": "User Agents/json/firefox.json",
"chars": 192130,
"preview": "[{\"commonality\":\"Very common\",\"version\":\"7\",\"ua\":\"Mozilla\\/5.0 (Windows NT 5.1; rv:7.0.1) Gecko\\/20100101 Firefox\\/7.0.1"
},
{
"path": "User Agents/json/internet-explorer.json",
"chars": 271448,
"preview": "[{\"commonality\":\"Very common\",\"version\":\"9\",\"ua\":\"Mozilla\\/4.0 (compatible; MSIE 9.0; Windows NT 6.1)\"},{\"commonality\":\""
},
{
"path": "User Agents/json/opera.json",
"chars": 256665,
"preview": "[{\"commonality\":\"Very common\",\"version\":\"43\",\"ua\":\"Mozilla\\/5.0 (Windows NT 10.0; WOW64) AppleWebKit\\/537.36 (KHTML, lik"
},
{
"path": "User Agents/json/safari.json",
"chars": 268471,
"preview": "[{\"commonality\":\"Very common\",\"version\":\"9.1\",\"ua\":\"Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\\/601.7."
},
{
"path": "User Agents/json/techpatterns_com_useragentswitcher.json",
"chars": 151227,
"preview": "[{\"description\":\"Arora 0.6.0 - (Vista)\",\"kind\":\"Browsers - Windows\",\"ua\":\"Mozilla\\/5.0 (Windows; U; Windows NT 6.0; en-U"
},
{
"path": "User Agents/json/ua_org_allagents.json",
"chars": 275969,
"preview": "[{\"description\":\"Sync2It bookmark management & clustering engine\",\"ua\":\"!Susie (http:\\/\\/www.sync2it.com\\/susie)\"},{\"des"
},
{
"path": "User Agents/requirements.txt",
"chars": 51,
"preview": "ujson==1.35\nrequests==2.18.4\nbeautifulsoup4==4.6.0\n"
},
{
"path": "User Agents/user agent example.txt",
"chars": 3424,
"preview": "1. Apple iOS (iPhone) - Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) "
},
{
"path": "User Agents/useragents.py",
"chars": 12000,
"preview": "__author__ = 'John Berlin (n0tan3rd@gmail.com)'\n__version__ = '1.0.0'\n__copyright__ = 'Copyright (c) 2018-Present John B"
},
{
"path": "Weak_Password/Bruteforce/README.md",
"chars": 565,
"preview": "# bruteforce weak password\n# ports&*weak password scanner.\n\n$ python bruteforce.py -h\n\n\nusage: main.py [-h] [--ip IP] [-"
},
{
"path": "Weak_Password/Bruteforce/bruteforce.py",
"chars": 1774,
"preview": "#coding=utf-8\n__author__ = 'unkonwn'\nimport argparse\nfrom comm.printers import printPink,printRed,printGreen\nfrom comm.c"
},
{
"path": "Weak_Password/Bruteforce/comm/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "Weak_Password/Bruteforce/comm/config.py",
"chars": 968,
"preview": "#coding=utf-8\n__author__ = 'wilson'\nfrom IPy import IP\nfrom comm.printers import printPink,printRed,printGreen\n\nclass co"
},
{
"path": "Weak_Password/Bruteforce/comm/portscan.py",
"chars": 11974,
"preview": "#coding=utf-8\n__author__ = 'wilson'\nimport sys\nsys.path.append(\"../\")\nfrom comm.config import *\nfrom comm.printers impor"
},
{
"path": "Weak_Password/Bruteforce/comm/printers.py",
"chars": 2532,
"preview": "import ctypes,sys\nimport platform\n\nif platform.system()=='Linux' or platform.system()=='Darwin':\n class colors:\n "
},
{
"path": "Weak_Password/Bruteforce/conf/.svn/all-wcprops",
"chars": 190,
"preview": "K 25\nsvn:wc:ra_dav:version-url\nV 43\n/svn/asoc/!svn/ver/2793/trunk/portScan/conf\nEND\nconfig.txt\nK 25\nsvn:wc:ra_dav:versio"
},
{
"path": "Weak_Password/Bruteforce/conf/.svn/entries",
"chars": 376,
"preview": "10\n\ndir\n3928\nhttp://weisen.cws@sources.alipay.net/svn/asoc/trunk/portScan/conf\nhttp://weisen.cws@sources.alipay.net/svn/"
},
{
"path": "Weak_Password/Bruteforce/conf/.svn/text-base/config.txt.svn-base",
"chars": 72,
"preview": "<task> \n[global] \ntask_type = 1\n\n<log>\n[global]\nlogfile = ./log/log.txt\n"
},
{
"path": "Weak_Password/Bruteforce/conf/ftp.conf",
"chars": 877,
"preview": "ftp:ftp@163.com\nftp:ftp\nftp:1\nftp:12\nftp:123\nftp:1234\nftp:12345\nftp:123456\nftp:1234567\nftp:12345678\nftp:123456789\nftp:12"
},
{
"path": "Weak_Password/Bruteforce/conf/ldapd.conf",
"chars": 404,
"preview": "Anonymous:\nManager:123456\nManager:secret\nManager:1\nManager:12\nManager:123\nManager:1234\nManager:12345\nManager:123456\nMana"
},
{
"path": "Weak_Password/Bruteforce/conf/mongodb.conf",
"chars": 1525,
"preview": "anonymous:\nmongodb:1\nmongodb:12\nmongodb:123\nmongodb:1234\nmongodb:12345\nmongodb:123456\nmongodb:1234567\nmongodb:12345678\nm"
},
{
"path": "Weak_Password/Bruteforce/conf/mssql.conf",
"chars": 333,
"preview": "sa:1\nsa:\nsa:sa\nsa:sa123\nsa:12\nsa:123\nsa:1234\nsa:12345\nsa:123456\nsa:1234567\nsa:12345678\nsa:123456789\nsa:1234567890\nsa:654"
},
{
"path": "Weak_Password/Bruteforce/conf/mysql.conf",
"chars": 954,
"preview": "root:1\nroot:12\nroot:123\nroot:1234\nroot:12345\nroot:123456\nroot:1234567\nroot:12345678\nroot:123456789\nroot:1234567890\nroot:"
},
{
"path": "Weak_Password/Bruteforce/conf/pop3.conf",
"chars": 0,
"preview": ""
},
{
"path": "Weak_Password/Bruteforce/conf/postgres.conf",
"chars": 953,
"preview": "root:1\nroot:12\nroot:123\nroot:x90x00\nroot:1234\nroot:12345\nroot:123456\nroot:1234567\nroot:12345678\nroot:123456789\nroot:1234"
},
{
"path": "Weak_Password/Bruteforce/conf/signs.conf",
"chars": 2037,
"preview": "http|^HTTP.*\nhttp|^HTTP/0.\nhttp|^HTTP/1.\nhttp|<HEAD>.*<BODY>\nhttp|<HTML>.*\nhttp|<html>.*\nhttp|<!DOCTYPE.*\nhttp|^Invalid "
},
{
"path": "Weak_Password/Bruteforce/conf/smb.conf",
"chars": 1073,
"preview": "administrator:1\nadministrator:12\nadministrator:\nadministrator:administrator\nadministrator:123\nadministrator:1234\nadminis"
},
{
"path": "Weak_Password/Bruteforce/conf/snmp.conf",
"chars": 6,
"preview": "public"
},
{
"path": "Weak_Password/Bruteforce/conf/ssh.conf",
"chars": 1078,
"preview": "root:1\nroot:12\nroot:root\nroot:root123\nroot:root123456\nroot:123\nroot:1234\nroot:12345\nroot:123456\nroot:1234567\nroot:123456"
},
{
"path": "Weak_Password/Bruteforce/conf/tomcat.conf",
"chars": 927,
"preview": "tomcat:1\ntomcat:12\ntomcat:tomcat\ntomcat:tomcat123\ntomcat:tomcat123456\ntomcat:123\ntomcat:1234\ntomcat:12345\ntomcat:123456\n"
},
{
"path": "Weak_Password/Bruteforce/conf/vnc.conf",
"chars": 274,
"preview": "root\nvnc\nvnc123\nvncpass\nvnc123456\nvncpassword\nvncpasswd\n123\n1234\n12345\n123456\n1234567\n12345678\n123456789\n1234567890\n6543"
},
{
"path": "Weak_Password/Bruteforce/conf/web.conf",
"chars": 901,
"preview": "cisco:1\ncisco:12\ncisco:cisco\ncisco:123\ncisco:1234\ncisco:12345\ncisco:123456\ncisco:1234567\ncisco:12345678\ncisco:123456789\n"
},
{
"path": "Weak_Password/Bruteforce/factorys/__init__.py",
"chars": 18,
"preview": "#!/usr/bin/python\n"
},
{
"path": "Weak_Password/Bruteforce/factorys/pluginFactory.py",
"chars": 1614,
"preview": "# coding: utf-8\n__author__=\"wilson\"\nimport os\nimport sys\n\nsys.path.append(\"../\")\n\nfrom plugins.ftp import *\nfrom plugins"
},
{
"path": "Weak_Password/Bruteforce/plugins/__init__.py",
"chars": 22,
"preview": "__author__ = 'wilson'\n"
},
{
"path": "Weak_Password/Bruteforce/plugins/ftp.py",
"chars": 2417,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom multiprocessing.dummy import Pool\nfrom printers import printPink,printGr"
},
{
"path": "Weak_Password/Bruteforce/plugins/ldapd.py",
"chars": 2874,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printGreen\nfrom multiprocessing.dummy import P"
},
{
"path": "Weak_Password/Bruteforce/plugins/mongodb.py",
"chars": 3376,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printRed,printGreen\nfrom multiprocessing.dummy"
},
{
"path": "Weak_Password/Bruteforce/plugins/mssql.py",
"chars": 2285,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printGreen\nfrom multiprocessing.dummy import P"
},
{
"path": "Weak_Password/Bruteforce/plugins/mysql.py",
"chars": 2715,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printGreen\nfrom multiprocessing.dummy import P"
},
{
"path": "Weak_Password/Bruteforce/plugins/pop3.py",
"chars": 1790,
"preview": "#coding=utf-8\nimport time\nfrom printers import printPink,printGreen\nimport threading\nfrom multiprocessing.dummy import P"
},
{
"path": "Weak_Password/Bruteforce/plugins/postgres.py",
"chars": 2215,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printGreen\nfrom multiprocessing.dummy import P"
},
{
"path": "Weak_Password/Bruteforce/plugins/redisexp.py",
"chars": 2004,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom threading import Thread\nfrom printers import printPink,printGreen\nfrom Q"
},
{
"path": "Weak_Password/Bruteforce/plugins/rsync.py",
"chars": 2858,
"preview": "# -*- coding: utf-8 -*-\nimport threading\nfrom printers import printPink,printRed,printGreen\nfrom multiprocessing.dummy i"
},
{
"path": "Weak_Password/Bruteforce/plugins/rsynclib.py",
"chars": 5971,
"preview": "import base64\nimport re\ntry:\n import hashlib\n hash_md4 = hashlib.new(\"md4\")\n hash_md5 = hashlib.md5()\nexcept Im"
},
{
"path": "Weak_Password/Bruteforce/plugins/smb.py",
"chars": 2435,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printGreen\nfrom impacket.smbconnection import "
},
{
"path": "Weak_Password/Bruteforce/plugins/snmp.py",
"chars": 2161,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom printers import printPink,printGreen\nfrom multiprocessing.dummy import P"
},
{
"path": "Weak_Password/Bruteforce/plugins/ssh.py",
"chars": 2838,
"preview": "#coding=utf-8\nimport time\nimport threading\nfrom multiprocessing.dummy import Pool\nfrom printers import printPink,printGr"
},
{
"path": "Weak_Password/Bruteforce/plugins/ssltest.py",
"chars": 4930,
"preview": "#!/usr/bin/python\nimport sys\nimport struct\nimport socket\nimport select\nimport time\nimport threading\nfrom printers import"
},
{
"path": "Weak_Password/Bruteforce/plugins/vnc.py",
"chars": 2402,
"preview": "from printers import printPink,printGreen\nimport time\nimport threading\nfrom multiprocessing.dummy import Pool\nfrom vncli"
},
{
"path": "Weak_Password/Bruteforce/plugins/vnclib.py",
"chars": 2300,
"preview": "__author__ = 'wilson'\nfrom Crypto.Cipher import DES\nfrom sys import version_info\nimport time\n\nclass VNC_Error(Exception)"
},
{
"path": "Weak_Password/Bruteforce/plugins/web.py",
"chars": 4170,
"preview": "#coding=utf-8\nimport threading\nfrom printers import printPink,printRed,printGreen\nfrom multiprocessing.dummy import Pool"
},
{
"path": "Weak_Password/Bruteforce/requirements.txt",
"chars": 150,
"preview": "MySQL-python 1.2.4\npymssql 2.1.1 \nimpacket\nrequests\npysnmp 4.2.5\npycrypto 2.6.1 \nparamiko 1.1.5 \npython-ldap 2.4.13 \npy"
},
{
"path": "Weak_Password/Fuxi-Scanner/.gitattributes",
"chars": 93,
"preview": "*.js linguist-language=python\n*.css linguist-language=python\n*.html linguist-language=python\n"
},
{
"path": "Weak_Password/Fuxi-Scanner/.gitignore",
"chars": 80,
"preview": "*.pyc\n.idea/\ntests/\nfuxi/views/modules/scanner/pocsuite_plugin/\nlogs/\ninstance/\n"
},
{
"path": "Weak_Password/Fuxi-Scanner/LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "Weak_Password/Fuxi-Scanner/README.md",
"chars": 4053,
"preview": "# Fuxi-Scanner\n\n[](https://www.python.org/)\n[ 或者 [zip](https://github.com/jeffzh3ng/"
},
{
"path": "Weak_Password/Fuxi-Scanner/doc/README.zh.md",
"chars": 3233,
"preview": "# 伏羲\n\n[](https://www.python.org/)\n[ 2012 Matias Meno <m@tias.me>\n */\n@-webkit-keyframes passing-through {\n 0% {\n "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/css/duallistbox/bootstrap-duallistbox.css",
"chars": 1981,
"preview": "/*\n * Bootstrap Duallistbox - v3.0.5\n * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/css/duallistbox/bootstrap-multiselect.css",
"chars": 1148,
"preview": ".multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{mar"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/css/font-awesome-4.7.0/css/font-awesome.css",
"chars": 37414,
"preview": "/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/lice"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/css/main.css",
"chars": 321066,
"preview": "@charset \"UTF-8\";\n/*!\n * Vali Admin\n * Author: Pratik Borsadiya\n * ================================*/\n@import url(https:"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/download/test",
"chars": 0,
"preview": ""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/bootstrap/bootstrap-multiselect.js",
"chars": 54680,
"preview": "/**\n * Bootstrap Multiselect (https://github.com/davidstutz/bootstrap-multiselect)\n * \n * Apache License, Version 2.0:\n "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/jquery/jquery.bootstrap-duallistbox.js",
"chars": 27079,
"preview": "/*\n * Bootstrap Duallistbox - v3.0.5\n * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/main.js",
"chars": 719,
"preview": "(function () {\n\t\"use strict\";\n\n\tvar treeviewMenu = $('.app-menu');\n\n\t// Toggle Sidebar\n\t$('[data-toggle=\"sidebar\"]').cli"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/Chart.js",
"chars": 403788,
"preview": "/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.2\n *\n * Copyright 2018 Chart.js Contributors\n * Released under th"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/FeedEk.js",
"chars": 2822,
"preview": "/*\n* FeedEk jQuery RSS/ATOM Feed Plugin v3.0 with YQL API\n* http://jquery-plugins.net/FeedEk/FeedEk.html https://github"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/bootstrap-datetimepicker.js",
"chars": 70104,
"preview": "/* =========================================================\n * bootstrap-datetimepicker.js\n * ========================"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/dropzone.js",
"chars": 121297,
"preview": "\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.len"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/laydate/laydate.js",
"chars": 27036,
"preview": "/*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */\n ;!function(){\"use strict\";var e=window."
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/plugins/laydate/theme/default/laydate.css",
"chars": 7961,
"preview": "/*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */\n.laydate-set-ym,.layui-laydate,.layui-la"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/acunetix-scanner.js",
"chars": 4683,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n $(\".new-scan\").click(function () {\n const task_name = $('["
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/asset-management.js",
"chars": 6689,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n\n var demo1 = $('select[name=\"plugin_list\"]').bootstrapDualListbox"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/asset-services-list.js",
"chars": 2789,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n var demo1 = $('select[name=\"plugin_list\"]').bootstrapDualListbox("
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/auth-tester-tasks.js",
"chars": 1542,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n});\n\nfunction get_target_host(nid){\n $.post('/auth-tester-tasks', "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/checkbox.js",
"chars": 730,
"preview": "function selectAll()\n{\n var allMails = document.getElementsByName(\"allSelect\")[0];\n var mails = document.getElemen"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/dashboard.js",
"chars": 0,
"preview": ""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/new-asset.js",
"chars": 1437,
"preview": "$(function () {\n $(\"#newAsset\").click(function () {\n const asset_name = $('[name=\"asset_name\"]').val();\n "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/new-auth-tester.js",
"chars": 1731,
"preview": "$(function () {\n var demo1 = $('select[name=\"service_list\"]').bootstrapDualListbox();\n\n $(\"#newAuth\").click(functi"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/new-scan.js",
"chars": 1433,
"preview": "$(function () {\n var demo1 = $('select[name=\"plugin_list\"]').bootstrapDualListbox();\n\n $(\"#showConfig\").click(func"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/plugin-management.js",
"chars": 2582,
"preview": "function delete_plugin(nid){\n const data = {\n \"delete\": nid,\n };\n swal({\n title: \"Are you sur"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/port-scanner.js",
"chars": 3489,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n setTimeout('reflush()',5000);\n\n $(\".port-update\").click(functi"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/search.js",
"chars": 4262,
"preview": "var demo1 = $('select[name=\"plugin_list\"]').bootstrapDualListbox();\nvar demo2 = $('select[name=\"auth_service_list\"]').bo"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/settings.js",
"chars": 4932,
"preview": "$(function () {\n $(\".update-thread-config\").click(function () {\n const poc_thread = $('[id=\"poc_thread\"]').val"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/subdomain-brute.js",
"chars": 5441,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n var demo1 = $('select[name=\"plugin_list\"]').bootstrapDualListbox("
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/subdomain-list.js",
"chars": 55,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n});\n"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/task-management.js",
"chars": 3142,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n\n\n $(\".task-update\").click(function () {\n const taskname_va"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/update.js",
"chars": 1737,
"preview": "$(function () {\n $.ajax({\n type: 'GET',\n url: '/update',\n success: function (response) {\n "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/vulnerability.js",
"chars": 486,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n\n});\n\nfunction vul_result(nid){\n const data = {\n \"result\": "
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/static/js/server/week-passwd-list.js",
"chars": 669,
"preview": "$(function () {\n $('#sampleTable').DataTable();\n});\n\nfunction delete_result(nid){\n const data = {\n \"delete\""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/404.html",
"chars": 460,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n\n<main class=\"app-content\">\n <div class="
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/500.html",
"chars": 452,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n \n<main class=\"app-content\">\n <div cl"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/acunetix-scanner.html",
"chars": 11173,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n<main class=\"app-content\">\n <div class=\""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/acunetix-tasks.html",
"chars": 6185,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n<main class=\"app-content\">\n <div class=\""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/advanced-option.html",
"chars": 7984,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/asset-management.html",
"chars": 17858,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/asset-services.html",
"chars": 9158,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/auth-tester-tasks.html",
"chars": 5533,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n<main class=\"app-content\">\n <div class=\""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/base.html",
"chars": 8679,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>Fuxi Scanner</title>\n <meta charset=\"utf-8\">\n <meta http-equiv="
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/dashboard.html",
"chars": 11226,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/index.html",
"chars": 0,
"preview": ""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/login.html",
"chars": 3313,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/new-asset.html",
"chars": 3693,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n\n<main class=\"app-content\">\n <div class="
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/new-auth-tester.html",
"chars": 5264,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/new-scan.html",
"chars": 3874,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/plugin-management.html",
"chars": 6079,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/dropzone.css\" rel=\"stylesheet\">\n{% endblock %}\n{% b"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/port-scanner.html",
"chars": 11618,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n{% endblock %}\n{% block content %}\n<main class=\"app-content\">\n <div class=\""
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/search.html",
"chars": 12910,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/subdomain-brute.html",
"chars": 16248,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n <link href=\"static/css/duallistbox/bootstrap-duallistbox.css\" rel=\"stylesh"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/subdomain-list.html",
"chars": 2544,
"preview": "{% extends \"base.html\" %}\n{% block css %}\n\n{% endblock %}\n{% block content %}\n<main class=\"app-content\">\n <div clas"
},
{
"path": "Weak_Password/Fuxi-Scanner/fuxi/templates/system-config.html",
"chars": 0,
"preview": ""
}
]
// ... and 698 more files (download for full content)
About this extraction
This page contains the full source code of the ym2011/PEST GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 898 files (18.8 MB), approximately 5.0M tokens, and a symbol index with 5163 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.