本地zshrc配置

admin 2025年4月26日21:42:18评论14 views字数 14633阅读48分46秒阅读模式
MAC以及经常使用的Linux系统基本都会使用zsh,关于zsh的相关介绍这里不在讨论,本文主要介绍本地的zshrc配置。在安装完zshrc之后就会在家目录生成zsh配置文件:~/.zshrc,其中常见的配置项有基本配置、软件版本配置、自定义函数配置、快捷方式配置、其他配置等等。

一、基本配置

基本配置里主要涉及软件更新、禁用自动更新、设置zsh主题和插件等。具体配置如下:

export HOMEBREW_NO_AUTO_UPDATE=1export ZSH="$HOME/.oh-my-zsh"export DISPLAY=:0 DISABLE_MAGIC_FUNCTIONS=truezstyle ':omz:update' mode disabledZSH_THEME="robbyrussell"plugins=(git z sudo autojump zsh-autosuggestions zsh-navigation-tools sublime history-substring-search zsh-syntax-highlighting msfvenom)source $ZSH/oh-my-zsh.sh

1. export HOMEBREW_NO_AUTO_UPDATE=1

禁用Homebrew的自动更新功能。当你不希望Homebrew频繁自动更新,或者希望手动控制更新时,可以使用这个设置。


2. export ZSH="$HOME/.oh-my-zsh"

设置Oh My Zsh的安装路径,安装了Oh My Zsh,这行代码是必须的,用于让Zsh知道Oh My Zsh的安装位置。


3. export DISPLAY=:0

设置DISPLAY环境变量,终端中运行图形界面程序(如xeyes、gedit等),或者通过SSH连接远程桌面时,需要正确设置DISPLAY变量。


4. DISABLE_MAGIC_FUNCTIONS=true

禁用Oh My Zsh中的“魔法函数”,希望减少Oh My Zsh的自动行为,或者希望手动控制这些功能,可以启用这个设置。


5. zstyle ':omz:update' mode disabled

禁用Oh My Zsh的自动更新功能。


6. ZSH_THEME="robbyrussell"

设置Zsh的主题,可以根据自己的喜好选择不同的主题,以改变Zsh的外观。


7. plugins=(git z sudo autojump zsh-autosuggestions zsh-navigation-tools sublime history-substring-search zsh-syntax-highlighting msfvenom)

启用Oh My Zsh的插件。插件列表中包含的插件及其功能如下:

    • git
      :提供Git相关的命令补全、别名和状态显示。
    • z
      :快速跳转到最近访问的目录。
    • sudo
      :提供sudo命令的自动补全和历史记录。
    • autojump
      :快速跳转到常用目录。
    • zsh-autosuggestions
      :在命令行中提供自动补全建议。
    • zsh-navigation-tools
      :增强导航功能,如快速跳转到文件和目录。
    • sublime
      :与Sublime Text编辑器集成,提供快捷命令。
    • history-substring-search
      :通过历史记录中的子字符串进行搜索。
    • zsh-syntax-highlighting
      :为命令行提供语法高亮。
    • msfvenom
      :为Metasploit的msfvenom工具提供支持。


8. source $ZSH/oh-my-zsh.sh

加载Oh My Zsh的主配置文件。



二、软件版本配置

在mac以及Linux中会安装go、node、java、python、ruby等软件,但是设计到多版本的情况,需要使用对应管理方法。具体配置如下:

#使用gvm管理Go版本[[ -s "/Users/cream/.gvm/scripts/gvm" ]] && source "/Users/cream/.gvm/scripts/gvm"
#使用nvm管理Node.js版本export NVM_DIR="$HOME/.nvm"  [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion
#使用jenv管理java版本export PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)"

#java安装路径#/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java#/Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
#使用pyenv管理python版本export PATH="$HOME/.pyenv/bin:$PATH"eval "$(pyenv init --path)"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"

#使用rbenv管理ruby版本eval "$(rbenv init -)"

1. 使用gvm管理Go版本

[[ -s "/Users/cream/.gvm/scripts/gvm" ]] && source "/Users/cream/.gvm/scripts/gvm"
加载gvm(Go Version Manager)的初始化脚本。你需要在开发中切换不同版本的Go时,使用gvm可以方便地管理这些版本。
本地zshrc配置
2. 使用nvm管理Node.js版本
export NVM_DIR="$HOME/.nvm"[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion
加载nvm(Node Version Manager)的初始化脚本,并设置nvm的目录。需要在开发中切换不同版本的Node.js时,使用nvm可以方便地管理这些版本。
本地zshrc配置
3. 使用jenv管理Java版本
export PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)"
加载jenv(Java Version Manager)的初始化脚本,并将其二进制文件路径添加到PATH环境变量中。需要在开发中切换不同版本的Java时,使用jenv可以方便地管理这些版本。
本地zshrc配置
4. Java安装路径(注释部分)
#/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java#/Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home#/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

这些是系统中已安装的Java版本的路径。这里只是做个记录,方便自己运行java程序。
5. 使用pyenv管理Python版本
export PATH="$HOME/.pyenv/bin:$PATH"eval "$(pyenv init --path)"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"
加载pyenv(Python Version Manager)的初始化脚本,并将其二进制文件路径添加到PATH环境变量中。需要在开发中切换不同版本的Python时,使用pyenv可以方便地管理这些版本。
本地zshrc配置
6. 使用rbenv管理Ruby版本
eval "$(rbenv init -)"
加载rbenv(Ruby Version Manager)的初始化脚本。需要在开发中切换不同版本的Ruby时,使用rbenv可以方便地管理这些版本。
本地zshrc配置




三、自定义函数配置

根据自己的需求配置自定义函数吧,我常用有代理相关的、编码、生成随机数、进程查询相关、IP和MAC查询等

#启用代理function setproxy() {    export http_proxy="http://127.0.0.1:6152"    export https_proxy="http://127.0.0.1:6152"    export all_proxy="socks5://127.0.0.1:6153"    echo "Proxy enabled"}
#取消代理function unsetproxy() {    unset http_proxy    unset https_proxy    unset all_proxy    echo "Proxy disabled"}
#抓取终端流量数据包function httpproxy(){    export http_proxy="http://127.0.0.1:8080"    export https_proxy="http://127.0.0.1:8080"    echo "Start packet capture"}
#取消抓取终端流量数据包function unhttpproxy(){    unset http_proxy    unset https_proxy    echo "Stop packet capture"}
#常见编码,如base64、MD5、SHA1、NTLMfunction encode() {    GREEN=$(tput setaf 2)    BLUE=$(tput setaf 4)    RED=$(tput setaf 1)    YELLOW=$(tput setaf 3)    CYAN=$(tput setaf 6)    BOLD=$(tput bold)    RESET=$(tput sgr0)    if [ -z "$1" ]; then        echo "${RED}错误: 请输入要加密的字符串!${RESET}"        return 1    fi    # 将输入字符串使用 printf 避免解析为选项    base64=$(printf "%s" "$1" | base64)
    hex_str=$(echo -n "$1" | od -A n -t x1 | tr -d ' n')    # 计算 32 位 MD5    md5_32=$(printf "%s" "$1" | md5sum | awk '{print $1}')
    # 计算 16 位 MD5(取 32 位结果的中间部分)    md5_16=$(echo "$md5_32" | awk '{print substr($0, 9, 16)}')
    # 计算 NTLM 哈希,正确传递字符串给 Python    # 注意python路径,建议使用绝对路径    ntlm=$(/Users/cream/.pyenv/versions/3.9.20/bin/python3.9 -c "import hashlib, binascii, sys; print(binascii.hexlify(hashlib.new('md4', sys.argv[1].encode('utf-16le')).digest()).decode())" "$1")
    # 计算 SHA-1    sha1=$(printf "%s" "$1" | sha1sum | awk '{print $1}')
    # 计算 SHA-2(SHA-256)    sha256=$(printf "%s" "$1" | sha256sum | awk '{print $1}')
    # 计算 SHA-3(SHA3-256)    sha3_256=$(printf "%s" "$1" | sha3sum -a 256 | awk '{print $1}')
    # 计算国密 SM3    sm3=$(printf "%s" "$1" | openssl dgst -sm3 | awk '{print $2}')
    # 计算 bcrypt 哈希(10 轮)    # 使用 Python 的 bcrypt 库生成哈希,并指定 rounds=10    bcrypt_hash=$(/Users/cream/.pyenv/shims/python -c "import bcrypt, sys; print(bcrypt.hashpw(sys.argv[1].encode('utf-8'), bcrypt.gensalt(rounds=10)).decode())" "$1")
    # 输出所有结果    echo -e "${BOLD}${GREEN}输入字符串: ${RESET}${CYAN}$1${RESET}"    echo -e "${BOLD}${YELLOW}Hex编码: ${RESET}${BLUE}$hex_str${RESET}"    echo -e "${BOLD}${YELLOW}BASE64 编码: ${RESET}${BLUE}$base64${RESET}"    echo -e "${BOLD}${YELLOW}MD5 (128-bit): ${RESET}${BLUE}$md5_32${RESET}"    echo -e "${BOLD}${YELLOW}MD5 (64-bit): ${RESET}${BLUE}$md5_16${RESET}"    echo -e "${BOLD}${YELLOW}SHA1(160-bit): ${RESET}${BLUE}$sha1${RESET}"    echo -e "${BOLD}${YELLOW}SHA2(256-bit): ${RESET}${BLUE}$sha256${RESET}"    echo -e "${BOLD}${YELLOW}SHA3(256-bit): ${RESET}${BLUE}$sha3_256${RESET}"    echo -e "${BOLD}${YELLOW}SM3 哈希: ${RESET}${BLUE}$sm3${RESET}"    echo -e "${BOLD}${YELLOW}NTLM 哈希: ${RESET}${BLUE}$ntlm${RESET}"    echo -e "${BOLD}${YELLOW}BCRYPT 哈希: ${RESET}${BLUE}$bcrypt_hash${RESET}"}

#生成随机字符串function random() {    GREEN=$(tput setaf 2)    BLUE=$(tput setaf 4)    BOLD=$(tput bold)    RESET=$(tput sgr0)    # 定义可用字符集    characters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]{}|;:,.<>?"
    # 生成 16 位长度的随机字符串    random_string=$(LC_CTYPE=C tr -dc "$characters" < /dev/urandom | head -c 16)
    # 输出结果    #echo "随机字符串: $random_string"    echo -e "${BOLD}${GREEN}随机字符串: ${RESET}${BLUE}$random_string${RESET}"}
#判断本地端口开放情况function checkport() {    GREEN=$(tput setaf 2)    RED=$(tput setaf 1)    YELLOW=$(tput setaf 3)    BLUE=$(tput setaf 4)    RESET=$(tput sgr0)
    if ! command -v lsof &>/dev/null; then        echo -e "${RED}未找到 lsof 命令,请先安装。${RESET}"        return 1    fi
    if [ $# -eq 0 ]; then        # echo -e "${YELLOW}📡 当前监听的端口列表(TCP + UDP):${RESET}"        printf "${BLUE}%-6s %-8s %-8s %-20s %-25s${RESET}n" "协议" "端口" "PID" "进程名" "监听地址"
        sudo lsof -nP -iTCP -sTCP:LISTEN 2>/dev/null |             awk 'NR>1 {                cmd=$1; pid=$2; addr=$9                gsub(/[[]]/, "", addr)                split(addr, a, ":")                port=a[length(a)]                ip=substr(addr, 1, length(addr)-length(port)-1)                if (ip == "") ip="*"                printf "TCP   %-8s %-8s %-20s %-25sn", port, pid, cmd, ip            }'
        sudo lsof -nP -iUDP 2>/dev/null |             awk 'NR>1 {                cmd=$1; pid=$2; addr=$9                gsub(/[[]]/, "", addr)                split(addr, a, ":")                port=a[length(a)]                ip=substr(addr, 1, length(addr)-length(port)-1)                if (ip == "") ip="*"                printf "UDP   %-8s %-8s %-20s %-25sn", port, pid, cmd, ip            }'    else        for p in "$@"do            results=$(sudo lsof -nP -iTCP:"$p" -sTCP:LISTEN 2>/dev/null |                 awk -v port="$p" 'NR > 1 {                    key = $1 "|" $2                    if (!(key in seen)) {                        seen[key] = 1                        printf "✔  端口: %s  协议: TCP    PID: %s   进程: %sn", port, $2, $1                    }                }')
            if [ -n "$results" ]; then                echo -e "${GREEN}${results}${RESET}"            else                echo -e "${RED}✘  端口: $p  (未监听或无权限)${RESET}"            fi        done    fi}
#根据给定的PID关闭对应的程序function killproc() {    RED=$(tput setaf 1)    GREEN=$(tput setaf 2)    YELLOW=$(tput setaf 3)    RESET=$(tput sgr0)
    if [ $# -eq 0 ]; then        echo -e "${YELLOW}⚠️  请指定一个或多个 PID。示例:killproc 1234 5678${RESET}"        return 1    fi
    for pid in "$@"do        if ps -p "$pid" > /dev/null 2>&1; then            proc_name=$(ps -p "$pid" -o comm=)            kill -9 "$pid" &&                 echo -e "${GREEN}✔ 已杀死 PID: $pid 进程: $proc_name${RESET}" ||                 echo -e "${RED}✘ 无法杀死 PID: $pid (权限不足或其他错误)${RESET}"        else            echo -e "${RED}✘ PID: $pid 不存在${RESET}"        fi    done}
#根据PID找端口function pid2port() {    if [ -z "$1" ]; then        echo "Usage: pid2port <PID>"        return 1    fi    sudo lsof -nP -i -a -p "$1" -sTCP:LISTEN}
#根据PID找到程序的命令function pid2command() {    if [ $# -ne 1 ]; then        echo -e "33[1;33mUsage: pid2command PID33[0m"        return 1    fi
    local pid=$1    local command=$(ps -p "$pid" -o command=)
    if [ -z "$command" ]; then        echo -e "33[1;31m没有找到PID:$pid 对应的命令.33[0m"        return 1    else        echo -e "33[1;32mPID$pid对应的命令:33[0m $command"    fi}
#获取本地IP和MACfunction showIpMac() {    # ANSI 颜色代码    YELLOW=$(tput setaf 3)    GREEN=$(tput setaf 2)    BLUE=$(tput setaf 4)    RESET=$(tput sgr0)
    echo -e "${YELLOW}InterfacetIP AddressttMAC Address${RESET}"    echo "--------------------------------------------------------"
    if command -v ip &>/dev/null; then        # Linux: 使用 `ip a`        ip -o addr show | awk -v green="$GREEN" -v blue="$BLUE" -v reset="$RESET" '        /inet / {            split($2, iface, ":")            interface = iface[1]            ip = $4        }        /link/ether/ {            mac = $2            printf "%st%s%s%st%s%s%sn", interface, green, ip, reset, blue, mac, reset        }'    else        # macOS: 使用 `ifconfig`        ifconfig | awk -v green="$GREEN" -v blue="$BLUE" -v reset="$RESET" '        /^[a-z0-9]/ {             interface = $1         }        /inet / {             ip = $2         }        /ether / {             mac = $2         }        ip && mac {             printf "%st%s%s%st%s%s%sn", interface, green, ip, reset, blue, mac, reset            ip = mac = ""        }'    fi}

1、代理相关

这里主要考虑到在终端使用代理,可以加快下载、更新等方面的测试。

本地zshrc配置

在终端取消代理直接执行unsetproxy即可。

httpproxy主要是在终端抓取HTTP流量,执行完httpproxy即可将终端的HTTP请求拦截到bp中,当然curl工具也支持代理模式哈!

本地zshrc配置

由于curl、wget、httpx等均支持代理,所以httpproxy函数可以删掉。

2、编码函数-encode

该函数支持Hex、base64、MD5、SHA1、SHA2、SHA3、SM3、NTLM和BCRYPT 。测试效果如下:

本地zshrc配置

3、随机字符串-random

平时设置账号密码,不想打开其它工具来生成,直接在终端设置了该函数,

 characters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]{}|;:,.<>?" random_string=$(LC_CTYPE=C tr -dc "$characters" < /dev/urandom | head -c 16)   
两行代码即可实现生成随机字符串,当然也可以使用openssl
openssl rand -base64 12 | tr -dc "$characters" | head -c 16

测试效果如下:
本地zshrc配置

4、查看端口-checkport

checkport函数支持不带参数和带参数查询两种方式。不带参数可以查询本地全部开放端口,包含TCP和UDP端口

本地zshrc配置带参数也即查看某些端口是否开放,效果如下:
本地zshrc配置

其他相关函数有:

killproc:根据给定的PID关闭对应的程序pid2port:根据PID找端口pid2command:根据PID找到程序的命令
pid2command的效果如下:
本地zshrc配置

5、查看本地IP和MAC地址-showIpMac

在Linux中执行ifconfig、ip add等命令查看IP、mac等信息,获取的内容比较多,这里偷个懒直接通过showipmac函数来获取本地的IP和MAC信息。

本地zshrc配置
其他的函数就不在说,可以根据自己的需求来设置吧,比如查看IP情报(调用微步接口)、MD5明文获取(调用cmd5接口)等等


四、快捷方式配置和环境变量配置

1、快捷方式

没啥可解释的,主要看自己需求。

alias sublime="'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl'"alias php5="/Applications/phpstudy/Extensions/php/php5.6.40/bin/php"alias morefind="/Users/cream/sec-tools/MoreFind"alias fscan="sudo /Users/cream/sec-tools/fscan/fscan"alias cscan="sudo /Users/cream/sec-tools/cscan"alias yak="/Users/cream/yakit-projects/yak-engine/yak"alias dismap="/Users/cream/others/dismap/dismap"alias fofax="/Users/cream/others/fofax"alias gogo="/Users/cream/others/gogo"alias goofuzz="/Users/cream/others/GooFuzz/GooFuzz"alias httpx="/Users/cream/others/httpx"alias kscan="/Users/cream/others/kscan"alias ksubdomain="/Users/cream/others/ksubdomain"alias nail="/Users/cream/others/nali"alias notify="/Users/cream/others/notify"alias phantomis="/Users/cream/others/phantomjs"alias subfinder="/Users/cream/others/subfinder"alias waybackurls="/Users/cream/others/waybackurls"alias imhex="sudo /Applications/ImHex.app/Contents/MacOS/imhex"alias typora="sudo /Applications/Typora.app/Contents/MacOS/Typora"alias mark="sudo '/Applications/Mark Text.app/Contents/MacOS/Mark Text'"alias clash="sudo '/Applications/Clash Verge.app/Contents/MacOS/Clash Verge'"alias mp-unpack="/Applications/mp-unpack.app/Contents/MacOS/mp-unpack"alias tcpdump_go="'/Volumes/Macintosh HD/Users/cream/sec-tools/tcpdump_go'"alias wihscan="/Users/cream/sec-tools/WIHscan/WIHscan"alias WIH="/Users/cream/sec-tools/arl_files/wih/wih"alias keyadd="/Users/cream/sec-tools/Keydd/keyadd"alias zkar="/Users/cream/sec-tools/zka/zkar"alias codeql="/Users/cream/codeql/codeql"alias feroxbuster="/Users/cream/sec-tools/feroxbuster/feroxbuster"alias xpoc="/Users/cream/sec-tools/xpoc/xpoc"alias wxapp="open '/Users/cream/Library/Containers/com.tencent.xinWeChat/Data/.wxapplet/packages/'"alias KillWxapkg="/Users/cream/sec-tools/KillWxapkg/KillWxapkg"alias Template_scan="/Users/cream/sec-tools/Template"alias ttmd5="query() {curl http://www.ttmd5.com/do.php?c=Api&m=crack&uid=XXXX&token=XXXX&cipher=$1;};query"alias p1finger="/Users/cream/sec-tools/P1finger/P1finger"

2、环境变量配置

根据需求来配置。

export PATH="/Applications/phpstudy/Extensions/php/php7.3.11/bin:$PATH"export PATH="/Users/cream/DevelopmentDependency/apache-maven/bin:$PATH"export PATH="/Users/cream/sec-tools/xray/:$PATH"export PATH="/Applications/Wireshark.app/Contents/MacOS:$PATH"export PATH="/Users/cream/sec-tools/nuclei:$PATH"export PATH="/usr/local/opt/openssl@3/bin:$PATH"export PATH="/usr/local/opt/[email protected]/bin:$PATH"export LDFLAGS="-L/usr/local/opt/[email protected]/lib"export CPPFLAGS="-I/usr/local/opt/[email protected]/include"export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"export PATH="/Users/cream/sec-tools/ChkApi_0x727/chromedriver-mac-x64:$PATH"export PATH="/Users/cream/sec-tools/ffuf/:$PATH"export PATH="/usr/local/opt/libiconv/bin:$PATH"

五、其他配置

1、msfvenom自动补全

这里需要在plugins中配置msfvenom插件

#设置msfvenom自动补全fpath=(~/.zsh/completion $fpath# $fpath通过添加来包含您的目录~/.zshrcautoload -Uz compinit && compinit -i #确保 compinit 已加载或通过添加~/.zshrc
本地zshrc配置

2、全局使用rlwarp

在反弹shell的时候rlwarp的作用非常明显,这里简单配置一下。

# 自动应用 rlwrapfunction rlwrap_auto() {    if [[ -n "$RLWRAP" ]]; then        rlwrap "$@"    else        "$@"    fi}
export RLWRAP=1# autoload -Uz add-zsh-hook# add-zsh-hook preexec rlwrap_auto# alias nc = 'rlwrap nc'# alias ncat = 'rlwrap ncat'# alias python = 'rlwrap python'# alias go = 'rlwrap go'# alias node = 'rlwrap node'




原文始发于微信公众号(KSA库):本地zshrc配置

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月26日21:42:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   本地zshrc配置http://cn-sec.com/archives/4004789.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息