前言

在开始任何渗透测试工作之前,搭建一个可靠高效的工作环境至关重要。这包括组织工具、配置系统,以及确保所有必要资源随时可用。通过尽早建立结构良好的测试基础架构,我们可以减少停机时间、最大程度地减少错误并简化评估流程。

一、虚拟化环境准备

推荐使用 VMware 专业版 创建 Kali 虚拟机,并安装 VMware Tools,以启用如剪贴板共享、文件拖拽、自动分辨率等增强功能,提升日常使用体验。专业版破解安装教程请自行搜索。

二、Linux

Linux 是渗透测试中使用最广泛的操作系统。因此,我们必须精通它(或者至少熟悉它)。为此目的设置操作系统时,最好建立标准化配置,以始终如一地营造一个舒适的工作环境。


2.1 安装kali linux

建议下载官方 Kali Linux 镜像 并导入 VMware 使用。安装教程请自行搜索。

2.2 APT包管理器和更新

在成功安装 Kali Linux 后,第一步应该是更新系统,确保你使用的是最新的内核、工具和安全补丁。Kali 基于 Debian,因此使用 APT(Advanced Packaging Tool)进行包管理。


2.2.1 APT 与包管理概述

APT 是 Debian 衍生系统的标准包管理工具,用于处理 .deb 格式的包。APT 会从你系统配置的 软件仓库(repositories) 获取可用软件列表,并自动解决依赖关系。

Kali 的仓库地址通常存储在以下路径:

/etc/apt/sources.list

我们可以通过以下命令查看非注释的仓库地址:

cat /etc/apt/sources.list | grep -v "^#"

输出如下所示

deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware

2.2.2 使用 APT 更新系统

运行以下命令来完成系统更新、自动清理不必要的软件包:

sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

说明:

  • update:同步本地包索引
  • full-upgrade:更新已安装的软件包
  • autoremove:删除不再使用的依赖
  • autoclean:清理无用的缓存包文件

2.3 渗透测试工具

虽然 Kali 自带了大量渗透测试工具,但你可能会根据实际需求拓展工具集。下面是常见的渗透测试工具清单,你可以在左上角的应用中搜索他们以确定是否已经安装。当然,有工具未自带是难免的,接下来我会介绍两种安装工具的方法。

# 网络扫描与嗅探
nmap
netcat
tcpdump
wireshark
ffuf
gobuster # 攻击与利用
hydra
sqlmap
metasploit-framework
crackmapexec # 信息收集
theharvester
spiderfoot
zaproxy # Windows 渗透/远程控制
remmina
xfreerdp
rdesktop # 通用工具
curl
git
vim
tmux
...

2.3.1 使用apt安装工具

方法一:直接手动安装

如果你只需要其中几个工具,可以手动安装:

sudo apt install netcat nmap wireshark tcpdump git vim tmux -y
方法二:使用列表批量安装

创建 tools.list 文件,将工具名按行列出,然后使用以下命令批量安装:

sudo apt install $(cat tools.list | tr "\n" " ") -y

这确保你在每次搭建 Kali 环境时都能一致地完成工具部署。


2.3.2 安装 GitHub 上的工具

Kali 官方仓库并不包含所有社区工具,有时我们需要从 GitHub 拉取

为了更好的管理github上下载的工具,建议新建一个统一的文件夹来管理所有从 GitHub 下载的工具。示例目录如下:

/home/kali/tools/
├── linpeas/
├── winpeas/
├── AutoRecon/
├── PEASS-ng/
├── fuzzing-tools/
└── other-scripts/

新建文件夹~/tools

mkdir -p ~/tools
cd ~/tools

克隆需要的项目工具

git clone https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite.git

为了让这些脚本变成直接可用的命令(而不是需要cd到目录去使用工具),一般会采用软链接和写入$PAHT的方式

方法一:将可执行脚本链接到 /usr/local/bin/(系统级命令)

示例:将 linpeas.sh 设置为全局命令

# 克隆项目到 ~/tools(可自定义)
mkdir -p ~/tools
cd ~/tools
git clone https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite.git # 添加执行权限
chmod +x ~/tools/privilege-escalation-awesome-scripts-suite/linPEAS/linpeas.sh # 创建软链接到 /usr/local/bin
sudo ln -s ~/tools/privilege-escalation-awesome-scripts-suite/linPEAS/linpeas.sh /usr/local/bin/linpeas

完成后你就可以直接在终端运行:

linpeas

适用于

  • 少量核心工具
  • 喜欢系统命令风格
  • 不介意使用 sudo
方法二:统一放入 ~/tools/bin/,并添加到 PATH 环境变量中

这种方式更适合集中管理大量脚本,不污染系统目录,也更易于迁移与备份

示例:将 linpeas.sh 链接到 ~/tools/bin

# 克隆项目到 ~/tools
mkdir -p ~/tools
cd ~/tools
git clone https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite.git # 添加执行权限
chmod +x ~/tools/privilege-escalation-awesome-scripts-suite/linPEAS/linpeas.sh # 创建 bin 目录(若不存在)
mkdir -p ~/tools/bin # 链接主脚本到 ~/tools/bin/
ln -s ~/tools/privilege-escalation-awesome-scripts-suite/linPEAS/linpeas.sh ~/tools/bin/linpeas # 添加 tools/bin 到 PATH(只需做一次),这里需要注意你用的shell是bash还是zsh,不同shell是分别管理各自的path的,可以用 echo $SHELL 确认你当前的shell
echo 'export PATH="$PATH:$HOME/tools/bin"' >> ~/.bashrc
source ~/.bashrc echo 'export PATH="$PATH:$HOME/tools/bin"' >> ~/.zshrc
source ~/.zshrc

然后就可以全局运行:

linpeas

适用于

  • 维护多个工具脚本
  • 喜欢集中管理和易迁移
  • 不希望修改系统目录

2.4 快照

安装相关软件包和存储库后,强烈建议进行一次备份VM snapshot。如果在执行进一步的配置或测试时出现任何错误,我们可以简单地恢复快照并从工作状态继续。每次重大配置更改后,甚至在渗透测试期间定期拍摄快照都是很好的做法,以避免丢失宝贵的进展。

三、现代终端仿真器:Wave Terminal

Wave Terminal 是一款专为开发者设计的新型终端仿真器,旨在通过将现代 AI 驱动的功能与传统的命令行功能相结合来增强工作流程。该终端的最大优势之一是,您可以将所有内容(包括基于 Chromium 的浏览器)集中在一个地方(如下所示),从而减少了在不同窗口之间切换的麻烦。

1. 下载 .deb 安装包

我们可以在 wave官网下载安装包

2. 使用 APT 安装

sudo apt install ./waveterm.deb

注意:如果你放在桌面,路径应为 ~/Desktop/waveterm.deb

3. 启动 Wave Terminal

waveterm

首次运行会进入欢迎页面,可点击 "Get Started" 快速上手。

四、Shell 环境:Zsh + Oh My Zsh

Shell 是我们在渗透测试虚拟机中使用的主要环境。因此,我们需要确保该环境能够满足我们的所有需求,并按照我们想要的方式进行配置。

最具可定制性和功能丰富的 shell 之一是Z Shell (ZSH)

4.1 安装 Zsh

sudo apt install zsh -y

安装完你可以手动启动一次:

zsh

首次运行 Zsh 会出现「zsh-newuser-install」,即一个蓝色提示框,提示你进行初始配置。直接按 q 退出,因为你后面会用 Oh My Zsh 来管理配置。

4.2 安装 Oh My Zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

执行完后你的默认提示符就会变成:

➜ ~

4.3 安装两个核心插件

这两个插件非常常用:

# 命令补全建议
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions # 语法高亮
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

这些插件默认会被克隆到:

~/.oh-my-zsh/custom/plugins/

4.4 配置 .zshrc 启用插件

打开配置文件:

vim ~/.zshrc

找到:

plugins=(git)

修改为:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

保存并重新加载:

source ~/.zshrc

现在你会看到输入历史建议、命令高亮都启用了

4.5 安装 Powerlevel10k 主题

Powerlevel10k 是一个为 Zsh 设计的 高性能、可高度定制的 Shell 主题,以其美观、信息丰富、响应迅速而著称。可以使用以下命令安装:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >> ~/.zshrc
exec zsh

第一次运行会弹出图形化配置引导,全程按提示选择你喜欢的图标、Git 显示等即可,之后它会自动保存为 .p10k.zsh 并在 .zshrc 中引用。如果有不懂的提示就问问 ai 大人吧。

如果以后想重配,运行:

p10k configure

4.6 设置 zsh 为默认 Shell

在安装Oh My Zsh时会询问你是否设置zsh为默认shell,如果当时没有选择确认,可以用以下命令设置:

chsh -s $(which zsh)

重启终端或注销再登录,默认就进 zsh。

五、终端多路复用:Tmux

Tmux(Terminal Multiplexer) 是一款运行于终端的 多路复用器,允许用户在一个终端窗口中同时运行、管理多个会话(Session)、窗口(Window)和窗格(Pane)。

除去在一个终端中拆分多个窗格,实现多任务并行的优势外,更重要的是其持久会话的功能,可以使得运行长时间任务(如爆破/抓包),断线后无损恢复。


5.1 安装 Tmux 和 TPM(插件管理器)

sudo apt update && sudo apt install tmux -y

# 克隆 TPM(Tmux Plugin Manager)
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

5.2 创建并配置 .tmux.conf

执行:

vim ~/.tmux.conf

然后粘贴以下配置(后续可按需修改):

# Config Management
unbind r
bind r source-file ~/.tmux.conf \; display "Config reloaded." # Control
set -g prefix C-space
set -g mouse on # History
set-option -g history-limit 50000 # Numbering & Naming
set -g base-index 1
setw -g pane-base-index 1
set-option -g automatic-rename on
set-option -g automatic-rename-format '#{b:pane_current_path}' # Windows
unbind W
bind-key W command-prompt -p "Window name:" "new-window -n '%%'" # New Window
bind-key t command-prompt -p "New name:" "rename-window '%%'" # Rename Window # Switch Windows
bind-key 0 select-window -t 0
bind-key 1 select-window -t 1
bind-key 2 select-window -t 2
bind-key 3 select-window -t 3
bind-key 4 select-window -t 4
bind-key 5 select-window -t 5
bind-key 6 select-window -t 6
bind-key 7 select-window -t 7
bind-key 8 select-window -t 8
bind-key 9 select-window -t 9 # Panes
bind-key P command-prompt -p "Rename pane:" "select-pane -T '%%'" bind x split-window -v
bind y split-window -h bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R # List of plugins
set -g @plugin 'tmux-plugins/tpm' # Theme
set -g @plugin 'catppuccin/tmux#v2.1.3'
run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux # Options to make tmux more pleasant
set -g mouse on
set -g default-terminal "tmux-256color" # Configure the catppuccin plugin
set -g @catppuccin_flavor "mocha"
set -g @catppuccin_window_status_style "rounded" #----------------------------- Custom Theme
# Define color variables inspired by Catppuccin Mocha, mapped to HackTheBox colors
set -g @rosewater "#ffffff" # BrightWhite
set -g @flamingo "#ff8484" # BrightRed
set -g @pink "#c16cfa" # BrightPurple
set -g @mauve "#9f00ff" # Purple
set -g @red "#ff3e3e" # Red
set -g @maroon "#ff8484" # BrightRed
set -g @peach "#ffcc5c" # BrightYellow
set -g @yellow "#ffaf00" # Yellow
set -g @green "#9fef00" # Green
set -g @teal "#2ee7b6" # Cyan
set -g @sky "#5cecc6" # BrightCyan
set -g @sapphire "#5cb2ff" # BrightBlue
set -g @blue "#004cff" # Blue
set -g @lavender "#ffffff" #"#c16cfa" # BrightPurple
set -g @text "#a4b1cd" # Foreground
set -g @subtext1 "#666666" # BrightBlack
set -g @subtext0 "#313f55" # SelectionBackground
set -g @overlay2 "#666666" # BrightBlack
set -g @overlay1 "#313f55" # SelectionBackground
set -g @overlay0 "#313f55" # CursorColor
set -g @surface2 "#666666" # BrightBlack
set -g @surface1 "#313f55" # SelectionBackground
set -g @surface0 "#313f55" # CursorColor
set -g @base "#1a2332" # Background
set -g @mantle "#000000" # Black
set -g @crust "#000000" # Black
set -g @thm_bg "#1a2332" # Plugins
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'tmux-plugins/tmux-battery' # Configure Online
set -g @online_icon "ok"
set -g @offline_icon "nok" # Status bar position and transparency
set -g status-position bottom
set -g status-style "bg=#{@thm_bg},fg=#{@text}" # Transparent background # Status left: Session name, pane command, and path
set -g status-left-length 100
set -g status-left ""
set -ga status-left "#{?client_prefix,#{#[bg=#{@red},fg=#{@base},bold]  #S },#{#[bg=default,fg=#{@mauve}]  #S }}"
set -ga status-left "#[bg=default,fg=#{@overlay0}] │ "
set -ga status-left "#[bg=default,fg=#{@blue}]  #{pane_current_command} "
set -ga status-left "#[bg=default,fg=#{@overlay0}] │ "
set -ga status-left "#[bg=default,fg=#{@teal}]  #{=/-32/...:#{s|$USER|~|:#{b:pane_current_path}}} "
set -ga status-left "#[bg=default,fg=#{@overlay0}]#{?window_zoomed_flag, │ ,}"
set -ga status-left "#[bg=default,fg=#{@yellow}]#{?window_zoomed_flag,  zoom ,}" # Status right: Battery, online status, VPN status, date/time
set -g status-right-length 100
set -g status-right ""
set -ga status-right "#{?#{e|>=:10,#{battery_percentage}},#{#[bg=#{@red},fg=#{@base}]},#{#[bg=default,fg=#{@peach}]}} #{battery_icon} #{battery_percentage} "
set -ga status-right "#[bg=default,fg=#{@overlay0}] │ "
set -ga status-right "#[bg=default]#{?#{==:#{online_status},ok},#[fg=#{@sapphire}] on ,#[fg=#{@red},bold] off }"
set -ga status-right "#[bg=default,fg=#{@overlay0}] │ "
set -ga status-right "#[bg=default,fg=#{@green}]  #(~/vpn_status.sh) "
set -ga status-right "#[bg=default,fg=#{@overlay0}] │ "
set -ga status-right "#[bg=default,fg=#{@sky}] %Y-%m-%d %H:%M " # Window status with rounded tabs and extra padding
set -g window-status-format "#[fg=#{@overlay0}]#[fg=#{@text},bg=#{@overlay0}] #I:#W #[fg=#{@overlay0},bg=default]"
set -g window-status-current-format "#[fg=#{@green}]#[fg=#{@base},bg=#{@green}] #I:#W #[fg=#{@green},bg=default]"
set -g window-status-style "bg=default"
set -g window-status-last-style "bg=default,fg=#{@green}"
set -g window-status-activity-style "bg=#{@red},fg=#{@base}"
set -g window-status-bell-style "bg=#{@red},fg=#{@base},bold"
set -gF window-status-separator " " # Add space between window tabs # Pane borders
setw -g pane-border-status off # Hide pane border status
setw -g pane-active-border-style "bg=default,fg=#{@green}"
setw -g pane-border-style "bg=default,fg=#{@surface0}"
setw -g pane-border-lines single # Automatic window renaming
set -wg automatic-rename on
set -g automatic-rename-format "Window" # Justify window status
set -g status-justify "absolute-centre" # Simulate bottom padding by adding a blank line
set -g status-format[1] "" # Bootstrap tpm
if "test ! -d ~/.tmux/plugins/tpm" \
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" # Initialize TMUX plugin manager
run '~/.tmux/plugins/tpm/tpm'

然后按:

Ctrl + Space
Shift + i

你会看到插件安装提示。Tmux 将提示您按下ESCAPE以继续您的会话。如果一切成功,状态栏会更新为主题样式,表示插件生效了。

5.3 常用快捷键备忘

注意不是一起按,是先按Ctrl Space松开,再按功能键

快捷键 功能说明
Ctrl + Spacex 垂直拆分窗格
Ctrl + Spacey 水平拆分窗格
Ctrl + Spaceh/j/k/l 窗格间导航
Ctrl + Spacer 重载配置文件
Ctrl + SpaceShift + i 安装所有插件(TPM)

六、效率工具推荐

在本节中,我们将介绍一些其他工具,以进一步提高生产力和效率。

6.1 FZF

FZF 是一个基于终端的模糊查找器,旨在通过模糊匹配以交互方式过滤和搜索列表。它允许我们搜索字符串以匹配散布在另一个字符串中的项目,并立即获得反馈。基本上,它取代了 find 命令,因为 find 命令通常会产生大量的输入,需要我们筛选,而无法过滤掉某些字符串。

要安装 FZF,我们可以使用以下命令:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

安装后,我们可以编辑.zshrc文件并为fzf命令分配别名为ff

vim .zshrc

加入以下内容

# Aliases
alias ff="fzf --style full --preview 'fzf-preview.sh {}' --bind 'focus:transform-header:file --brief {}'"

重新加载.zshrc文件。

source ~/.zshrc

在终端输入ff,它将打开一个交互式界面,您可以在其中看到当前目录的内容以及特定文件的内容

6.2 EZA

Eza 是命令 的现代替代品ls。它提供丰富多彩、详细的文件列表,其中包含 Git 状态、图标以及超链接等高级功能。此外,如果您使用Nerd 字体,它还会使用颜色和可选图标来区分文件类型。我们甚至可以编辑 Eza 使用的主题和颜色。

由于它ls是我们在 Linux 系统上使用的最常用命令之一,因此拥有一个更好、更高效的工具可以让我们的生活长期变得更加轻松。要安装它,我们可以运行以下命令:

sudo apt install eza -y

现在,我们可以为eza命令分配不同的别名来获取列表的不同表示。

vim ~/.zshrc

加入以下内容

# Aliases
alias ff="fzf --style full --preview 'fzf-preview.sh {}' --bind 'focus:transform-header:file --brief {}'"
alias ls='eza $eza_params'
alias l='eza --git-ignore $eza_params'
alias ll='eza --all --header --long $eza_params'
alias llm='eza --all --header --long --sort=modified $eza_params'
alias la='eza -lbhHigUmuSa'
alias lx='eza -lbhHigUmuSa@'
alias lt='eza --tree $eza_params'
alias tree='eza --tree $eza_params'

编辑.zshrc文件后我们需要重新加载它。

source ~/.zshrc

现在,我们可以测试不同的命令并检查结果,简单来说:

  • 简洁查看(ls
  • Git 感知(l
  • 详细列表(ll, llm, la, lx
  • 树状结构(lt, tree

6.3 Btop

Btop 是一款终端系统监控工具,可以替代htoptop工具。它色彩丰富,并可根据您的需求和偏好进行自定义。它可以监控 CPU、内存、磁盘、网络和进程,是调试性能问题的绝佳工具。可以使用以下命令安装该工具:

sudo apt install btop -y

七、HTTP工具:Curlie

Curlie

Curlie 是一个结合了 curl 的强大功能和 httpie 的易读输出格式的命令行 HTTP 客户端,旨在提供更直观、更美观、更高效的 API 调试体验。我们可以使用以下命令下载该工具:

curl -sS https://webinstall.dev/curlie | bash

现在,让我们通过请求相同的 API 端点curlie进行比较。

如您所见,它以用户友好的方式提供了丰富多彩且结构化的输出,并比curl 提供了更多信息,使请求分析和调试变得更加容易。


通过以上配置,你的 Kali 虚拟机已经具备了一个高效、稳定、可扩展的基础环境。后续可以根据实际需求逐步添加工具和插件,保持环境整洁、可控,将极大提升日常的渗透测试体验。

参考资料

Hack The Box: Setting Up Module

宇宙安全声明

本博客所提供的内容仅供学习与交流,旨在提高网络安全技术水平,谨遵守国家相关法律法规,请勿用于违法用途,博主不对任何人因使用博客中提到的技术或工具而产生的任何后果负责。如果您对文章内容有疑问,可以留言私信。

渗透测试工作站搭建:Kali + Wave + Zsh + Tmux + 工具集整合实践的更多相关文章

  1. kali linux 渗透测试视频教程 第五课 社会工程学工具集

    第五课 社会工程学工具集 文/玄魂 教程地址:http://edu.51cto.com/course/course_id-1887.html   目录 第五课社会工程学工具集 SET SET的社会工程 ...

  2. Kail Linux渗透测试教程之免杀Payload生成工具Veil

    Kail Linux渗透测试教程之免杀Payload生成工具Veil 免杀Payload生成工具——Veil Kail Linux渗透测试教程之免杀Payload生成工具Veil,Veil是一款利用M ...

  3. Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap

    Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap 网络扫描和嗅探工具——Nmap Nmap也就网络映射器(Network Mapper),是一个免费开放的网络扫描和嗅探工具.该工具可以扫描 ...

  4. 火眼推出Windows免费渗透测试套件,包含140多款工具

    火眼推出Windows免费渗透测试套件,包含140多款工具 2019年3月28日,火眼发布了一个包含超过140个开源Windows渗透工具包,红队渗透测试员和蓝队防御人员均拥有了顶级侦察与漏洞利用程序 ...

  5. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...

  6. Metasploit渗透测试环境搭建

    渗透测试实验环境搭建 下载虚拟机镜像 5个虚拟机镜像,其中Linux攻击机我选择用最新的kali Linux镜像,其余的均使用本书配套的镜像. 网络环境配置 VMware虚拟网络编辑器配置: 将VMn ...

  7. 渗透测试环境搭建以及使用sqlmap获取mysql用户数据库密码

    通过sqlmap检测sql注入漏洞 安装SQLmap漏洞查看工具 安装渗透测试演练系统DVWA 使用SQLmap进行sql注入并获得后台管理员adnim帐号和密码 环境介绍 安装SQLmap:Rich ...

  8. DVWA渗透测试环境搭建

    DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助w ...

  9. kali linux 网络渗透测试学习笔记(一)Nmap工具进行端口扫描

    一.利用Nmap扫描网站服务器的端口开放情况 首先打开我们的kali linux才做系统,再打开其命令行模式,输入:nmap www.csdn.net 如下图所示: 因此,通过这个结果可以表明csdn ...

  10. 使用WampServer和DVWA在Windows10上搭建渗透测试环境

    前言: DVWA是一个具有脆弱性的Web测试应用,需要PHP和MySQL的环境支持.我们可以手动配置DVWA所需的运行环境,也可以使用WampServer进行搭建.WampServer是集成了Apac ...

随机推荐

  1. 为Avalonia应用添加图标

    前言 为了让自己开发的应用更加好看,开发者往往需要增加一些图标. 本文分享在开发Avalonia应用时如何为应用增加图标,希望可以帮助到正在学习使用Avalonia并有此需求的开发者. 实践 经过搜索 ...

  2. 在win nginx下配置symfony3.4,并隐藏项目名称 .php入口

    在win nginx下配置symfony3.4,并隐藏项目名称 .php入口   记录下 # power by www.php.cn #user nobody; worker_processes 1; ...

  3. Golang从0到1实现简易版expired LRU cache带图解

    1.支持Put.Get的LRU实现 想要实现一个带过期时间的LRU,从易到难,我们需要先学会如何实现一个普通的LRU,做到O(1)的Get.Put. 想要做到O(1)的Get,我们很容易想到使用哈希表 ...

  4. Git命令与Git-cli

    1. 安装Git-cli winget install --id GitHub.cli 注:以上命令用于在Windows平台CMD执行快捷安装,若需安装其他平台的Git-cli及详细内容,win安装文 ...

  5. 74.8K star!这个开源图标库让界面设计效率提升10倍!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 Font Awesome 是全球最受欢迎的图标库和工具包,提供超过2000个免费图标和700 ...

  6. 关于网传微信聊天记录提取工具"留痕"盗取个人信息的分析

    今天早上看到一篇文章,是关于一个微信聊天记录提取工具泄露个人信息的内容,于是我就好奇,看了一下作者的 github,然后也是自己小小的分析了一下 1.官方地址 Github: https://gith ...

  7. Codeforces Round 978 (Div. 2) A-D1 题解

    A. Bus to Pénjamo 题意 有一辆车上面有 \(r\) 排座位,每排有 \(2\) 个座位,现在共 \(n\) 个家庭出行坐公交车,每个家庭 \(a_i\) 个人(保证 \(2r\ge ...

  8. 【工具】VS Code Counter|除了Gitstats之外的Github一键统计代码行数工具

    需求: 1)被要求统计代码行数: 2)不想打开Linux,懒得下载Windows版本GitStats: 3)打开了Linux但也不记得find命令行怎么用: 4)打开了Linux,装好了Gitstat ...

  9. Axure RP大数据可视化大屏原型组件源文件

    Axure RP大数据可视化大屏原型模板 大数据BI分析上大屏,在很多大企业和政府单位客户都需要,高新区市场监控等,那使用Axure RP做交互原型是必不可少的,有了大屏原型模板可做出不同风格和行业的 ...

  10. 信息资源管理综合题之“LJ集团的知识库和员工离职客户流失问题”

    一.集团是北京的一家规模巨大的房地产投资公司,早在15年前,该公司出现了如下几个问题:每个业务员手上的客户资料,其他人无法得知,从而导致员工离职时会流失大量潜在客户:业务员繁忙的时候,无法满足客户用户 ...