{"id":13843900,"url":"https://github.com/AbelChe/macos-all","last_synced_at":"2025-07-11T20:30:50.727Z","repository":{"id":53903878,"uuid":"428099884","full_name":"AbelChe/macos-all","owner":"AbelChe","description":"macos all, 关于macos的实用内容 不仅是macos...还有各种常用的渗透、命令行技巧","archived":false,"fork":false,"pushed_at":"2023-11-26T09:17:10.000Z","size":182,"stargazers_count":66,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-21T15:39:37.169Z","etag":null,"topics":["macos","sec","skill","usefull"],"latest_commit_sha":null,"homepage":"https://abelche.github.io/macos-all","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbelChe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-11-15T02:38:37.000Z","updated_at":"2024-11-05T06:20:47.000Z","dependencies_parsed_at":"2023-11-26T10:24:26.870Z","dependency_job_id":"6d72e14c-deaf-483d-b128-c4eff45574b8","html_url":"https://github.com/AbelChe/macos-all","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AbelChe/macos-all","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbelChe%2Fmacos-all","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbelChe%2Fmacos-all/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbelChe%2Fmacos-all/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbelChe%2Fmacos-all/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbelChe","download_url":"https://codeload.github.com/AbelChe/macos-all/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbelChe%2Fmacos-all/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264892028,"owners_count":23679208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["macos","sec","skill","usefull"],"created_at":"2024-08-04T17:02:30.286Z","updated_at":"2025-07-11T20:30:50.455Z","avatar_url":"https://github.com/AbelChe.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# macos-all\n\n关于macos的实用内容。\n\n* [macos-all](#macos-all)\n  * [杀掉可恶的adobe进程](#杀掉可恶的adobe进程)\n  * [重启vmware虚拟机的网络服务](#重启vmware虚拟机的网络服务)\n  * [删除docker悬空镜像](#删除docker悬空镜像)\n  * [java 程序命令行启动设置代理](#java-程序命令行启动设置代理)\n  * [命令行多线程下载工具](#命令行多线程下载工具)\n  * [nessus 破解](#nessus-破解)\n  * [chrome系浏览器提示https打不开](#chrome系浏览器提示https打不开)\n  * [一行命令解密VNC](#一行命令解密vnc)\n  * [burpsuite 关闭http/2](#burpsuite-关闭http2)\n  * [获取16进制字符串](#获取文件16进制字符串)\n  * [生成md文档目录](#生成md文档目录)\n  * [frp内网穿透配置](#frp内网穿透配置)\n  * [搜索各种key的正则](#搜索各种key的正则)\n  * [vim使用粘贴模式](#vim使用粘贴模式)\n  * [python一行代码生成随机字符串](#python一行代码生成随机字符串)\n  * [git清除已提交的敏感信息](#git清除已提交的敏感信息)\n  * [python3编码utf8导致的异或xor问题](#python3编码utf8导致的异或xor问题)\n  * [python实用的迭代器](#python实用的迭代器)\n  * [MacForge为扩展添加单独黑名单](#MacForge为扩展添加单独黑名单)\n  * [ToDesk Server进程自启问题](#ToDesk-server进程自启问题)\n  * [Navicat连接sqlserver数据库不显示系统库](#Navicat连接sqlserver数据库不显示系统库)\n  * [一行命令查询fofa](#一行命令查询fofa)\n  * [搜索可用的socks5代理](#搜索可用的socks5代理)\n  * [空格预览关联自定义文件类型](#空格预览关联自定义文件类型)\n  * [MacOS端微信小程序反编译](#MacOS端微信小程序反编译)\n  * [编译安全（防止信息泄漏）](#编译安全（防止信息泄漏）)\n  * [MacOS深色主题下应用程序标题栏的适配问题](MacOS深色主题下应用程序标题栏的适配问题)\n\n## 杀掉可恶的adobe进程\n\n```sh\n#! /bin/bash\nps -efh | grep Adobe | awk 'NR\u003e1{print p, p1}{p=$2;p1=$8}'\nps -efh | grep Adobe | awk 'NR\u003e1{print p}{p=$2}' | xargs kill \ncd ~/Library/LaunchAgents \u0026\u0026 ls -l | grep com.adobe | awk '{print $9}' | xargs rm -rf\ncd /Library/LaunchAgents \u0026\u0026 ls -l | grep com.adobe | awk '{print $9}' | xargs rm -rf\ncd /Library/LaunchDaemons \u0026\u0026 ls -l | grep com.adobe | awk '{print $9}' | xargs rm -rf\nrm -rf /Applications/Utilities/Adobe\\ Creative\\ Cloud/CCLibrary\nrm -rf /Applications/Utilities/Adobe\\ Creative\\ Cloud/CCXProcess\nrm -rf /Applications/Utilities/Adobe\\ Creative\\ Cloud/CoreSync\n```\n\n## 重启vmware虚拟机的网络服务\n\n- 需要root权限\n\n```sh\nsudo /Applications/VMware\\ Fusion.app/Contents/Library/vmnet-cli --stop\nsudo /Applications/VMware\\ Fusion.app/Contents/Library/vmnet-cli --start\n```\n\n## 删除docker悬空镜像\n\n```sh\n# fish shell\ndocker rmi (docker images -f \"dangling=true\" -q)\n# bash shell\ndocker rmi $(docker images -f \"dangling=true\" -q)\n```\n\n## java 程序命令行启动设置代理\n\n```sh\njava -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8080 -jar xxx.jar\n```\n\n## 命令行多线程下载工具\n\n```sh\nbrew install axel\n\naxel -n 20 http://xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n## nessus 破解\n\nmacos下脚本命名为 `patch.sh` 与 `all-2.0.tar.gz` `nessus-fetch.rc`一同放到`/Library/Nessus/run/sbin/`目录下\n\n```sh\n#!/bin/bash\n\n# Check root\nif [ \"$(whoami)\" != \"root\" ]\nthen\n    echo \"[!] Please use root, sudo ./patch.sh\"\n    exit\nfi\n\ncd /Library/Nessus/run/sbin\necho '[...] Now updating from package...'\n./nessuscli update ./all-2.0.tar.gz \u003e nessuspatch.log\ncp nessus-fetch.rc /Library/Nessus/run/etc/nessus/nessus-fetch.rc\nVERSION=$(cat nessuspatch.log | grep -Eo '\\d{12}' | head -n 1)\n\necho \"[+] Get version: $VERSION\"\n\necho '[...] Please restart nessus by manual...'\nflag=n\nwhile [ \"$flag\" != \"y\" ] \u0026\u0026 [ \"$flag\" != \"Y\" ]\ndo\n    read -r -p 'restart over?(y/n)\u003e ' flag\ndone\n\nVERSION=$(cat nessuspatch.log | grep -Eo '\\d{12}' | head -n 1)\ncat \u003e /Library/Nessus/run/var/nessus/plugin_feed_info.inc \u003c\u003cEOF\nPLUGIN_SET = \"$VERSION\";\nPLUGIN_FEED = \"ProfessionalFeed (Direct)\";\n\nPLUGIN_FEED_TRANSPORT = \"Tenable Network Security Lightning\";\nEOF\n\necho '[+] Write to file success: /Library/Nessus/run/var/nessus/plugin_feed_info.inc'\ncat /Library/Nessus/run/var/nessus/plugin_feed_info.inc\n\nrm -rf /Library/Nessus/run/lib/nessus/plugins/plugin_feed_info.inc\necho '[+] Remove /Library/Nessus/run/lib/nessus/plugins/plugin_feed_info.inc success'\n\necho '[+] Patch Done, please restart nessus by manual...'\n```\n\n```sh\ncd /Library/Nessus/run/sbin/\nsudo chmod +x patch.sh\nsudo ./patch.sh\n```\n\nmacos的nessus没法通过shell脚本没法完全控制nessus服务启停，破解过程中需要手动重启一下nessus，注意脚本运行提示。\n\n## chrome系浏览器提示https打不开\n\n问题页面键盘直接敲`thisisunsafe`\n\n## 一行命令解密VNC\n\n`6bcf2a4b6e5aca0f` 解密: `sT333ve2`\n\n```sh\necho -n 6bcf2a4b6e5aca0f | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d\n```\n\n## burpsuite 关闭http/2\n\nProject options ==\u003e HTTP ==\u003e HTTP/2\n取消勾选http2支持\n\n## 获取16进制字符串\n\n```sh\necho \"test strxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.....\" | xxd -c 1000000 -p -l 1000000\n# 746573742073747278787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878782e2e2e2e2e0a\n```\n\n## 生成md文档目录\n\n```sh\n# 下载\ncurl https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-toc -o gh-md-toc\nchmod a+x gh-md-toc\n# 使用\ngh-md-toc file.md\ngh-md-toc https://github.com/AbelChe/macos-all\n```\n\n## frp内网穿透配置\n\nfrps.ini\n\n```ini\n[common]\nbind_port = 21234\nbind_addr = 0.0.0.0\n```\n\nfrpc.ini\n\n```ini\n[common]\nserver_addr = vpsip\nserver_port = 21234\n\n[http_proxy]\ntype = tcp\nremote_port = 7777\nplugin = socks5\n```\n\n挂socks5://vpsip:7777\n\n## 搜索各种key的正则\n\nburp使用\n\n```text\n(?i)((access_key|access_token|admin_pass|admin_user|algolia_admin_key|algolia_api_key|alias_pass|alicloud_access_key|amazon_secret_access_key|amazonaws|ansible_vault_password|aos_key|api_key|api_key_secret|api_key_sid|api_secret|api.googlemaps AIza|apidocs|apikey|apiSecret|app_debug|app_id|app_key|app_log_level|app_secret|appkey|appkeysecret|application_key|appsecret|appspot|auth_token|authorizationToken|authsecret|aws_access|aws_access_key_id|aws_bucket|aws_key|aws_secret|aws_secret_key|aws_token|AWSSecretKey|b2_app_key|bashrc password|bintray_apikey|bintray_gpg_password|bintray_key|bintraykey|bluemix_api_key|bluemix_pass|browserstack_access_key|bucket_password|bucketeer_aws_access_key_id|bucketeer_aws_secret_access_key|built_branch_deploy_key|bx_password|cache_driver|cache_s3_secret_key|cattle_access_key|cattle_secret_key|certificate_password|ci_deploy_password|client_secret|client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key|cloudant_password|cloudflare_api_key|cloudflare_auth_key|cloudinary_api_secret|cloudinary_name|codecov_token|config|conn.login|connectionstring|consumer_key|consumer_secret|credentials|cypress_record_key|database_password|database_schema_test|datadog_api_key|datadog_app_key|db_password|db_server|db_username|dbpasswd|dbpassword|dbuser|deploy_password|digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd|docker_password|dockerhub_password|dockerhubpassword|dot-files|dotfiles|droplet_travis_password|dynamoaccesskeyid|dynamosecretaccesskey|elastica_host|elastica_port|elasticsearch_password|encryption_key|encryption_password|env.heroku_api_key|env.sonatype_password|eureka.awssecretkey)[a-z0-9_ .\\-,]{0,25})(=|\u003e|:=|\\|\\|:|\u003c=|=\u003e|:).{0,5}['\\\"]([0-9a-zA-Z\\-_=]{8,64})['\\\"]\n```\n\nvscode使用\n\n```text\n((access_key|access_token|admin_pass|admin_user|algolia_admin_key|algolia_api_key|alias_pass|alicloud_access_key|amazon_secret_access_key|amazonaws|ansible_vault_password|aos_key|api_key|api_key_secret|api_key_sid|api_secret|api.googlemaps AIza|apidocs|apikey|apiSecret|app_debug|app_id|app_key|app_log_level|app_secret|appkey|appkeysecret|application_key|appsecret|appspot|auth_token|authorizationToken|authsecret|aws_access|aws_access_key_id|aws_bucket|aws_key|aws_secret|aws_secret_key|aws_token|AWSSecretKey|b2_app_key|bashrc password|bintray_apikey|bintray_gpg_password|bintray_key|bintraykey|bluemix_api_key|bluemix_pass|browserstack_access_key|bucket_password|bucketeer_aws_access_key_id|bucketeer_aws_secret_access_key|built_branch_deploy_key|bx_password|cache_driver|cache_s3_secret_key|cattle_access_key|cattle_secret_key|certificate_password|ci_deploy_password|client_secret|client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key|cloudant_password|cloudflare_api_key|cloudflare_auth_key|cloudinary_api_secret|cloudinary_name|codecov_token|config|conn.login|connectionstring|consumer_key|consumer_secret|credentials|cypress_record_key|database_password|database_schema_test|datadog_api_key|datadog_app_key|db_password|db_server|db_username|dbpasswd|dbpassword|dbuser|deploy_password|digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd|docker_password|dockerhub_password|dockerhubpassword|dot-files|dotfiles|droplet_travis_password|dynamoaccesskeyid|dynamosecretaccesskey|elastica_host|elastica_port|elasticsearch_password|encryption_key|encryption_password|env.heroku_api_key|env.sonatype_password|eureka.awssecretkey)[a-z0-9_ .\\-,]{0,25})(=|\u003e|:=|\\|\\|:|\u003c=|=\u003e|:).{0,5}['\"]([0-9a-zA-Z\\-_=]{8,64})['\"]\n```\n\n## vim使用粘贴模式\n\n当使用vim粘贴大段文字、代码的时候，很可能由于vim的缩进规则导致粘贴进来的文本格式错乱，这时我们可以使用粘贴模式进行输入\n只需要使用如下指令，然后再次进入`INSERT`模式，可见到左下角的提示变更为`INSERT (paset)`，这时我们直接粘贴就可以保持原文格式了。\n\n```\n:set paste\n```\n\n## python一行代码生成随机字符串\n\n```python\nimport string\nimport random\n''.join(random.choice(string.ascii_letters + string.digits) for _ in range(32))\n```\n\n## git清除已提交的敏感信息\n\n```sh\ngit filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path/to/file_to_del.txt' --prune-empty --tag-name-filter cat -- --all\ngit push origin --force --all\n```\n\n## python3编码utf8导致的异或xor问题\n\npython3的编码一直以来都令人头疼，最近写东西，用到了python3的异或，逻辑没有问题，但是结果总是错误，几番折腾，发现是python3编码的问题，多方求助未果，遂上谷歌，找到了解决方案。\n感谢这位大佬剖析和解决方案：https://jiayu0x.com/2019/05/26/The_right_way_to_xor_encoding_with_python3/\n\n```\n# 第一种方案\ndef xor_crypt(data, key):\n    cipher_data = []\n    len_data = len(data)\n    len_key = len(key)\n    for idx in range(len_data):\n        bias = key[idx % len_key]\n        curr_byte = data[idx]\n        cipher_data.append(bias ^ curr_byte)\n    return bytearray(cipher_data)\n\n# 第二种方案\ndef XORCrypt(data, key):\n    return bytearray(a^b for a, b in zip(*map(bytearray, [data, key])))\n\n# key固定的情况下\nbytes(a^key for a in data_input)\n\n```\n\n## python实用的迭代器\n\n1. 从几个字符中生成所有组合\n\n```python\nimport itertools\n\nSEED = '12ab'\n\ndef strGenter(min, max):\n    for n in range(min, max):\n        for i in itertools.product(SEED, repeat=n):\n            yield i\n\n# 从12ab四个字符，生成长度为5的所有组合\nfor i in strGenter(5, 6):\n    print(i)\n    # (1, 1, 1, 1, 1) (1, 1, 1, 1, 2) (1, 1, 1, 1, 'a') ................('b', 'b', 'b', 'b', 'b')\n\n# 从12ab四个字符，生成长度为6、7、8、9的所有组合\nfor i in strGenter(6, 10):\n    print(i)\n```\n\n\n## MacForge为扩展添加单独黑名单\n\nMacForge是一款mac系统插件扩展工具，可以安装各种非常实用的扩展功能，比如moremenu\nmoremenu可以折叠起应用菜单栏，为顶栏释放更多空间，但是很多应用收起菜单栏之后可能会导致程序崩溃，比如`网易云音乐.app`\n因为其他插件能够正常使用，所以只需要屏蔽这一个插件即可\n只需要修改该插件包中的黑名单文件即可，比如网易云音乐，讲id添加进去即可`\u003cstring\u003ecom.netease.163music\u003c/string\u003e`\n`/Library/Application Support/MacEnhance/Plugins/moreMenu.bundle/Contents/Resources/globalBlacklist.plist`\n\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"\u003e\n\u003cplist version=\"1.0\"\u003e\n\u003carray\u003e\n\t\u003cstring\u003ecom.apple.loginwindow\u003c/string\u003e\n\t\u003cstring\u003ecom.netease.163music\u003c/string\u003e\n\u003c/array\u003e\n\u003c/plist\u003e\n\n```\n\n## ToDesk server进程自启问题\n\nToDesk server进程后台自启，kill之后还是会启动\n可以这样干掉\n\n```\nsudo launchctl unload /Library/LaunchDaemons/com.youqu.todesk.service.plist\n```\n\n## Navicat连接sqlserver数据库不显示系统库\n\nmacos版的设置和windows版的位置不同\n\nwindows版本，菜单栏“工具” “选项” “常规” 勾选“显示系统项目”\n\nmacos版本，菜单栏“查看”勾选“显示隐藏的项目”\n\n## 一行命令查询fofa\n\n```sh\necho -n 'app=\"Microsoft-Outlook\" \u0026\u0026 icon_hash=\"1768726119\" \u0026\u0026 country!=\"CN\"' | base64 | xargs -I '{}' curl -s 'https://fofa.info/api/v1/search/all?email=xxxxxx@xxx.xxx\u0026key=xxxxxxxxxxxxxxxxxxxxxxxx\u0026size=100\u0026fields=host\u0026qbase64={}' | jq '.results[]' | sed 's/\\\"//g'\n```\n\n## 搜索可用的socks5代理\n\n1. fofa\n   修改url中的email和key\n\n```sh\necho -n 'protocol=\"socks5\" \u0026\u0026 \"Version:5 Method:No Authentication(0x00)\" \u0026\u0026 after=\"2023-02-01\"' | \\\nbase64 | \\\nxargs -S 40960 -I '{}' curl -s 'https://fofa.info/api/v1/search/all?email=666666666@qq.com\u0026key=xxxxxxxxxxxxxxxxxxx\u0026size=500\u0026fields=host\u0026qbase64={}' | \\\njq -r '.results[]' | \\\nxargs -I \\{\\} \\\n  bash -c 'echo -n {} \u0026\u0026 ip=$(curl -s ipinfo.io --connect-timeout 3 -m 5 --proxy socks5://{} | jq -r \".ip\") \u0026\u0026 if [ $? -eq 0 ] \u0026\u0026 [ $ip ]; then printf \" OK\\n\";echo {} \u003e\u003e /tmp/proxylist.txt; else echo \"\"; fi'; \\\necho ----------------- \u0026\u0026 \\\nsort -k2n /tmp/proxylist.txt | sed '$!N; /^\\(.*\\)\\n\\1$/!P; D'\n```\n\n2. zoomeye\n   修改请求头中的API-KEY\n\n```sh\nfor i in `seq 1 15`; do \\\n  echo -n 'service:\"socks5\" +after:\"2023-02-01\" +banner:\"Version:5 Method:No Authentication(0x00)\"' | \\\n  xargs -S 40960 -I \\{\\} curl -s -G --data-urlencode \"query={}\" \"https://api.zoomeye.org/host/search?page=$i\" -H \"API-KEY:56xxxxxxxxxxxxxxxxxxxx86\" | \\\n  jq -r '.matches[] | [.ip, .portinfo.port] | join(\":\")' | \\\n  xargs -I \\{\\} \\\n    bash -c 'echo -n {} \u0026\u0026 ip=$(curl -s ipinfo.io --connect-timeout 3 -m 5 --proxy socks5://{} | jq -r \".ip\") \u0026\u0026 if [ $? -eq 0 ] \u0026\u0026 [ $ip ]; then printf \" OK\\n\";echo {} \u003e\u003e /tmp/proxylist.txt; else echo \"\"; fi'; \\\ndone; \\\necho ----------------- \u0026\u0026 \\\nsort -k2n /tmp/proxylist.txt | sed '$!N; /^\\(.*\\)\\n\\1$/!P; D'\n```\n\n3. 360 quake\n   修改请求头中的X-QuakeToken\n\n```sh\necho -n 'country: \"China\" AND service:\"socks5\" AND response:\"Version: 5 Accepted Auth Method: 0x0 (No authentication)\"' | \\\nawk '{ gsub(/\"/,\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\"); print $0 }' | \\\nxargs -S 40960 -I \\{\\} curl -s -X POST -H \"X-QuakeToken: xxxxxxxxxxxxxxxxxxxxxxx\" -H \"Content-Type: application/json\" https://quake.360.net/api/v3/search/quake_service -d '{\"query\": \"{}\", \"start\": 0, \"size\": 200}' | \\\njq -r '.data[] | [.ip,.port] | join(\":\")' | \\\nxargs -I \\{\\} \\\n  bash -c 'echo -n {} \u0026\u0026 ip=$(curl -s ipinfo.io --connect-timeout 3 -m 5 --proxy socks5://{} | jq -r \".ip\") \u0026\u0026 if [ $? -eq 0 ] \u0026\u0026 [ $ip ]; then printf \" OK\\n\";echo {} \u003e\u003e /tmp/proxylist.txt; else echo \"\"; fi'; \\\necho ----------------- \u0026\u0026 \\\nsort -k2n /tmp/proxylist.txt | sed '$!N; /^\\(.*\\)\\n\\1$/!P; D'\n```\n\n## 空格预览关联自定义文件类型\n\nMacOS安装[quick-look-plugins](https://github.com/sindresorhus/quick-look-plugins)之后仍然无法预览jsp asp等文件，解决方法参考：[https://www.jianshu.com/p/7a4dc9324fa7](https://www.jianshu.com/p/7a4dc9324fa7)\n\n获取扩展名对应的值\n\n```shell\nmdls -name kMDItemContentType ./file.xxx\n```\n\n留存一下我常用的后缀吧：\n\n```\n| name     | kMDItemContentType           |\n| :------- | :--------------------------- |\n| .aspx    | dyn.ah62d4rv4ge80c65uta      |\n| .asp     | dyn.ah62d4rv4ge80c65u        |\n| .jsp     | dyn.ah62d4rv4ge80y65u        |\n| .jspx    | dyn.ah62d4rv4ge80y65uta      |\n| .ashx    | dyn.ah62d4rv4ge80c65kta      |\n| .cna     | dyn.ah62d4rv4ge80g5xb        |\n| .nse     | dyn.ah62d4rv4ge80665f        |\n| .profile | dyn.ah62d4rv4ge81a6xtq3y023k |\n```\n\n打开`~/Library/QuickLook/QLColorCode.qlgenerator/Contents/Info.plist`，使用xcode或者文本编辑器都行\nxcode的话直接在`Document types \u003e Item 0 \u003e Document Content Type UTIs (CFBundleDocumentTypes \u003e Item 0 \u003e LSItemContentTypes`添加即可\n\n```shell\nopen ~/Library/QuickLook/QLColorCode.qlgenerator/Contents/Info.plist\n```\n\nvscode等文本编辑器的话，在`\u003ckey\u003eLSItemContentTypes\u003c/key\u003e`字段中添加如下\n\n```xml\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80c65uta\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80c65u\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80y65u\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80g5xb\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80665f\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80c65kta\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge80y65uta\u003c/string\u003e\n\t\t\t\t\u003cstring\u003edyn.ah62d4rv4ge81a6xtq3y023k\u003c/string\u003e\n```\n\n## MacOS端微信小程序反编译\n\n3.8以上版本的MacOS端的微信可以直接获取到未加密的微信小程序包，路径如下：\n```\n/Users/AbelChe/Library/Containers/com.tencent.xinWeChat/Data/.wxapplet/packages\n```\n\n直接使用wxappUnpacker解包即可\n\n\n## 编译安全（防止信息泄漏）\n\n各种编译类语言编译的可执行文件中默认会将我们的本地路径包含进去，看似无关紧要的信息有时可能会成为致命危害（比如编译的程序被分析，抓到ID，被溯源）\n\n这完全可以通过一些配置、参数将不必要的风险扼杀。\n\n最好的通杀解决方法就是不要使用带有自己ID的机器进行编译，比如可以使用虚拟机，但是这偶尔也会有环境搭建的重复工作。\n\n这里给出几种语言的解决方案\n\n### CSharp\n\n- 参考：https://www.saoniuhuo.com/question/detail-2577831.html\n\n以直接修改.csproj文件\n```\n\u003cProject\u003e\n\u003c!-- ... --\u003e\n  \u003cImport Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" /\u003e\n  \u003cPropertyGroup\u003e\n    \u003c!-- after 'Microsoft.CSharp.targets' for 'IntermediateOutputPath' to be defined --\u003e\n    \u003cPathMap\u003e$(MSBuildProjectDirectory)\\$(IntermediateOutputPath)=.\u003c/PathMap\u003e\n  \u003c/PropertyGroup\u003e\n\u003c/Project\u003e\n```\n\n### RUST\n\nMacOS上交叉编译去除符号链接，修改~/.cargo/config\n```\n[target.x86_64-pc-windows-gnu]\nrustflags = [\n  \"-C\", \"link-arg=-s\",\n]\n```\n\n但是仅仅这样并不能完全去除敏感路径信息，还会有一些依赖库文件的绝对路径暴露\n暴力一点，直接替换敏感信息字段吧，比如将“/Users/Name”全局替换为\"/Users/1234\"\n\nps:替换后的字符数量要和之前保持一致\n\n\n### GO\n\n## MacOS深色主题下应用程序标题栏的适配问题\n\n比如Burpsuite启动之后，修改burp主题，标题栏仍然是可恶的白色，可以在info.plist文件30行附近添加`NSRequiresAquaSystemAppearance`选项\n\n```xml\n\u003cdict\u003e\n......\n\u003ckey\u003eNSRequiresAquaSystemAppearance\u003c/key\u003e\n\u003cfalse/\u003e\n...\n\u003c/dict\u003e\n```\n\n其他java应用程序可以在命令行启动时候添加如下参数：\n```\n-Dapple.awt.application.appearance=system\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAbelChe%2Fmacos-all","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAbelChe%2Fmacos-all","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAbelChe%2Fmacos-all/lists"}