首页
在线工具
统计
友链
Search
1
暴力破解忘记的zip,rar, pdf等文件密码
3,566 阅读
2
typecho添加打赏功能
1,948 阅读
3
摸鱼人日历
1,407 阅读
4
躲避校园网客户端的检测实现移动热点开启
1,392 阅读
5
创建自签名 ssl 证书
1,016 阅读
随笔杂记
Web建设
运维茶点
编程之路
网络配置指南
Huawei
网络安全
资源下载
生活中的点滴
登录
Search
标签搜索
HCNA
Python
Huawei
Linux
web
PC
Blog
windows
Network
Docker
HCNP
LOVE
Virus
MySQL
eNSP
Zabbix
DNS
typecho
k8s
HTTPS
TanHaX
累计撰写
79
篇文章
累计收到
76
条评论
首页
栏目
随笔杂记
Web建设
运维茶点
编程之路
网络配置指南
Huawei
网络安全
资源下载
生活中的点滴
页面
在线工具
统计
友链
搜索到
79
篇与
的结果
2024-07-13
Hexo博客 deploy 时保留 CNAME 配置文件
每次更新上传到 Git 后,现有的域名配置都会丢失。为了避免这种情况,可以在 Hexo 项目的根目录下执行以下步骤生成 CNAME 文件,这样在 deploy 的过程中就不会丢失配置了。1. 进入 Hexo 项目根目录的 source 目录下cd source确保你在正确的目录下执行后续操作。2. 创建并写入 CNAME 文件,内容则填自定义的域名echo nihaotang.com > CNAME3. 清理旧文件确保在生成静态页面之前,旧的文件被清理掉,以避免可能的冲突或旧文件残留。hexo clean # 清理 Hexo 生成的临时文件和缓存文件4. 生成静态页面在写作完成后,需要生成最新的静态页面。使用以下 Hexo 命令来执行生成:hexo generate # 或者简写为 hexo g5. 预览检查在浏览器中打开 http://localhost:4000 查看最新的博客页面。hexo server # 或者简写为 hexo s6. 部署到托管平台一旦确认生成的静态页面无误,即可将其部署到你选择的托管平台。使用以下 Hexo 命令来执行部署:hexo deploy # 或者简写为 hexo d这会将 public 目录中的静态文件推送到你在 Hexo 配置文件中指定的远程仓库。确保在 _config.yml 中正确配置了部署相关的信息,如 deploy 部分的 type、repo 等参数。7. 检查部署结果部署完成后,访问你的博客网址(如 GitHub Pages 提供的域名)确认更新是否已经生效。
2024年07月13日
108 阅读
0 评论
4 点赞
2024-07-11
使用GitHub 部署Hexo静态博客
1. 准备本地环境1.1 安装 Git在 Windows 上安装 Git 有几种方法:下载并安装官方版本,访问 Git 官方网站。这是一个名为 Git for Windows 的项目,也称为 msysGit,更多信息请访问 http://msysgit.github.io/。1.2 安装 Node.js根据操作系统选择适合的 Node.js 版本:访问 Node.js 官方网站,下载适合你系统的安装包,例如 node-v20.15.3-x64.msi。双击安装包,按照提示进行安装,使用默认选项即可。安装完成后,在命令行窗口输入 node -v,检查 Node.js 是否成功安装(例如显示 v20.15.3)。2. 准备 GitHub注册 GitHub 账户(大家几乎都有了~略过)。3. 连接 GitHub3.1 在本地创建一个项目文件夹,例如 hexo。在文件夹空白处右键,选择 Open Git Bash here 打开 Git 终端。3.2 配置 GitHub 账户信息:git config --global user.name "你的 GitHub 用户名" git config --global user.email "你的 GitHub 邮箱"3.3 创建 SSH 密钥:ssh-keygen -t rsa -C "你的 GitHub 邮箱"注:什么都不用管,一路回车就行。如果之前已经创建过了密钥,会出现id_rsa already exists. Overwrite (y/n)? 此时就需要选择 y 进行覆盖。3.4 上传本地密钥至 GitHub:打开 C:\Users\用户名\.ssh 目录(勾选显示,“显示隐藏文件”)。复制并上传生成的公钥 id_rsa.pub 到 GitHub在 GitHub 添加 SSH 密钥(Title 可以随便取)。3.5 验证 Git 连接:ssh -T git@github.com出现以下信息就证明成功连接了。4. 创建 GitHub 项目Repository name 输入 用户名.github.io。勾选 Add a README file。点击 Create repository 创建仓库。5. 本地安装 Hexo在 hexo 项目文件夹中右键,选择 Open Git Bash Here。使用 npm 安装 Hexo:更多信息请访问 https://hexo.io/zh-cn/docs/setup。npm install -g hexo-cli如果下载慢可以设置代理(注意端口)git config --global http.proxy 127.0.0.1:1080 6. 初始化 Hexohexo init npm install出现以下提示就以完成初始化了。初始化完毕以后,我们可以看到 hexo 程序文件。7. 预览效果7.1 生成并预览 Hexo 网站hexo g hexo s7.2 在浏览器打开 http://localhost:4000/ 查看效果。8. 更换主题在 Git Bash终端下 进入 themes 目录,选择并安装喜欢的主题,如 Chic 主题:cd themes git clone -b master https://github.com/Chic/hexo-theme-Chic.git themes/Chic9. 修改配置文件 进入主程序目录下的 _config.yml 配置文件:填写deploy模块:repository 填写GitHub上复制的链接更多信息请访问 https://hexo.io/zh-cn/docs/configuration/。修改 theme 为自己需要使用的主题名称。10. 部署博客至 GitHub1. 安装 hexo-deployer-git 插件:npm install hexo-deployer-git --save2. 清理 Hexo 生成的临时文件和缓存、生成静态文件、将生成的静态文件部署到指定的地方(根据 _config.yml 中配置的部署设置)。hexo clean && hexo g && hexo d11. 此时就已经完成了部署访问 用户名.github.io 设置的域名
2024年07月11日
120 阅读
0 评论
5 点赞
2024-07-02
解析日常网络架构与路由配置
SW1sysname SW1 vlan batch 10 20 interface Ethernet0/0/1 port link-type access port default vlan 10 interface Ethernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan all SW2sysname SW2 dhcp enable vlan batch 10 20 30 40 123 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan all interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan all interface GigabitEthernet0/0/4 port link-type access port default vlan 40 interface GigabitEthernet0/0/5 port link-type access port default vlan 40 interface GigabitEthernet0/0/2 port link-type access port default vlan 123 quit interface Vlanif10 ip address 172.16.10.254 255.255.255.0 dhcp select interface interface Vlanif20 ip address 172.16.20.254 255.255.255.0 dhcp select interface interface Vlanif30 ip address 172.16.30.254 255.255.255.0 dhcp select interface interface Vlanif40 ip address 10.2.40.254 255.255.255.0 interface Vlanif123 ip address 10.1.123.2 255.255.255.0 quit ip route-static 0.0.0.0 0.0.0.0 10.1.123.1 ospf 1 router-id 6.6.6.6 area 0 network 172.16.0.0 0.0.255.255 network 10.1.123.2 0.0.0.0 network 10.2.40.254 0.0.0.0 SW3sysname SW3 vlan batch 30 interface GigabitEthernet0/0/2 port link-type access port default vlan 30 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan all AR1sysname R1 interface GigabitEthernet0/0/0 ip address 10.1.123.1 255.255.255.0 quit ospf 1 router-id 1.1.1.1 area 0 network 10.1.123.1 0.0.0.0 quit quit dialer-rule dialer-rule 1 ip permit quit interface Dialer 1 link-protocol ppp ppp chap user 10086 ppp chap password cipher tanhax dialer bundle 1 dialer-group 1 dialer user 10086 ip address ppp-negotiate quit interface GigabitEthernet0/0/1 pppoe-client dial-bundle-number 1 quit acl 2000 rule permit acl 3001 rule deny tcp source 10.2.40.252 0 destination 30.1.3.1 0 destination-port eq www quit interface Dialer 1 nat outbound 2000 quit ip route-static 0.0.0.0 0 Dialer 1 interface GigabitEthernet 0/0/0 traffic-filter inbound acl 3001 ISPsysname ISP interface GigabitEthernet 0/0/0 ip address 14.1.14.2 24 quit interface GigabitEthernet 0/0/2 ip address 13.1.13.2 24 quit ospf 1 router-id 2.2.2.2 area 0 network 14.1.14.2 0.0.0.255 network 13.1.13.2 0.0.0.255 quit ip pool ispdhcp network 12.1.12.0 mask 26 gateway-list 12.1.12.1 dns-list 114.114.114.114 quit interface Virtual-Template 1 ppp authentication-mode chap ip address 12.1.12.1 26 remote address pool ispdhcp quit aaa local-user 10086 password cipher tanhax local-user 10086 service-type ppp quit interface GigabitEthernet 0/0/1 pppoe-server bind virtual-template 1 AR3sysname AR3 interface GigabitEthernet 0/0/1 ip address 30.1.3.254 24 quit interface GigabitEthernet 0/0/0 ip address 34.1.34.3 24 quit interface GigabitEthernet 0/0/2 ip address 13.1.13.3 24 quit ospf 1 router-id 3.3.3.3 area 0 network 30.1.3.254 0.0.0.0 network 34.1.34.3 0.0.0.0 network 13.1.13.3 0.0.0.0 AR4sysname AR4 interface GigabitEthernet 0/0/1 ip address 40.1.4.254 24 quit interface GigabitEthernet 0/0/0 ip address 14.1.14.4 24 quit interface GigabitEthernet 0/0/2 ip address 34.1.34.4 24 quit ospf 1 router-id 4.4.4.4 area 0 network 40.1.4.254 0.0.0.0 network 34.1.34.4 0.0.0.0 network 14.1.14.4 0.0.0.0 解析:VLAN 配置:在SW1和SW3上使用了vlan batch命令来配置VLAN,分别指定了VLAN 10、20和30。接口配置:Access 端口配置:在SW1、SW2、SW3的一些接口上使用了port link-type access和port default vlan命令来配置访问端口和默认VLAN。Trunk 端口配置:在SW1、SW2、SW3的一些接口上使用了port link-type trunk和port trunk allow-pass vlan all命令来配置Trunk端口,允许通过所有VLAN。IP 地址分配和接口配置:在SW2上配置了多个VLAN接口(例如interface Vlanif10、interface Vlanif20等),并分配了各自的IP地址和子网掩码。在AR3和AR4路由器上配置了物理接口(例如interface GigabitEthernet 0/0/1)并分配了IP地址。静态路由配置:在SW2交换机上使用了ip route-static命令配置了默认的静态路由。在R1路由器上使用静态路由设置,默认网关通过 Dialer 1。OSPF 配置:在R1、AR3、AR4路由器上配置了OSPF,使用了ospf命令来设置OSPF进程和区域,并使用network命令指定了路由器接口所属的网络。PPPoE 配置:在ISP上配置了PPP over Ethernet(PPPoE)服务器,提供 DHCP IP 池和 DNS 设置,使用了interface Virtual-Template 1和相关的PPP配置命令。ACL 配置:在AR1上配置了ACL 2000 允许所有源 IP 地址在 GigabitEthernet 0/0/1 进行 NAT 转换.在AR1上配置了ACL 3001 阻止特定源 IP 为 10.2.40.252 的 TCP 流量访问目的地 IP 为 30.1.3.1 的端口 80, 在 GigabitEthernet 0/0/0 上应用入站流量过滤器。
2024年07月02日
138 阅读
0 评论
7 点赞
2024-05-28
安装H3C Cloud Lab 与 eNSP 共存
安装eNSP、H3C Cloud Lab、Wireshark和VirtualBox1. 安装 H3C Cloud Lab建议首先安装eNSP。2. 安装 Wireshark在安装 Wireshark 时,请确保勾选 WinPcap 安装选项。Wireshark 下载地址3. 安装VirtualBox下载VirtualBox 5.2 并安装。VirtualBox 5.2 下载地址3.1 修改注册表在进行 HCL 安装时,需要修改注册表编辑器的版本变量值为 6.0.14,以欺骗版本检测。使用管理员权限打开 CMD 终端,并运行以下命令:reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox" /v Version /t REG_SZ /d 6.0.14 /f reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox" /v VersionExt /t REG_SZ /d 6.0.14 /f4. 下载并安装H3C Cloud Lab下载 H3C Cloud Lab 并进行安装。H3C Cloud Lab 下载地址5. 将注册表改回安装完成后,将修改注册表编辑器的版本变量值修改回 5.2.44。使用管理员权限打开 CMD 终端,并运行以下命令:reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox" /v Version /t REG_SZ /d 5.2.44 /f reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox" /v VersionExt /t REG_SZ /d 5.2.44 /f
2024年05月28日
148 阅读
0 评论
2 点赞
2024-05-21
相遇的那个她
地址:🔜 <入口>访问密码是她国历生日,如(2002年1月1日),转换成:020101
2024年05月21日
106 阅读
0 评论
9 点赞
2024-04-15
解决 eNSP 错误代码 40 或使用 VirtualBox 无法为虚拟机 AR_Base 打开新任务的问题
最近遇到了 eNSP 无法正常启动设备的问题,错误代码显示为“40”。尝试了官方提供的解决方法,但都没有效果。在这里持续记录一下 eNSP 无法正常启动的解决方案1. 关闭 ”虚拟机平台“首先,打开控制面板,或者按下 Windows + R 组合键打开“运行”对话框,输入 control 后按下回车。在控制面板中,选择查看方式为“小图标”,然后打开“程序和功能”。在左上角的菜单中,选择 “启用或关闭 Windows 功能”。确保选项中的 虚拟机平台 没有被勾选。如果已经勾选了,取消勾选并重启电脑。重启后,看看问题是否已经解决了。
2024年04月15日
680 阅读
1 评论
8 点赞
2024-04-11
续上英语真题在线小突击
虽然这篇没有什么技术含量,但感觉这个功能还是有点用处,便来记录一下。继上一篇文章取消限制使用查询功能,这篇揪出了一个读音速度控制功能,废话不多直接上成果!{lamp/}这里涉及到 XPath 查询、修改元素属性、使用 MutationObserver 以及创建和添加按钮到页面。(function() { const xpath = '/html/body/div[2]/div[4]/div[1]/div/div[2]'; // 要修改的属性名 const attributeName = 'aria-hidden'; const node = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; // 初始状态为 false let attributeValue = 'false'; // 修改属性值函数 function toggleAttributeValue() { attributeValue = (attributeValue === 'false') ? 'true' : 'false'; node.setAttribute(attributeName, attributeValue); } // 创建 MutationObserver 实例 const observer = new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.type === 'attributes' && mutation.attributeName === attributeName) { // 属性值被改回 true,重新改为 false if (node.getAttribute(attributeName) !== attributeValue) { node.setAttribute(attributeName, attributeValue); } } } }); // 启动 MutationObserver observer.observe(node, { attributes: true }); // 创建开关按钮 const toggleButton = document.createElement('button'); toggleButton.textContent = '读音速度开关'; toggleButton.style.position = 'fixed'; toggleButton.style.top = '50px'; toggleButton.style.right = '50px'; toggleButton.addEventListener('click', toggleAttributeValue); // 添加按钮到页面 document.body.appendChild(toggleButton); })();在这个脚本中,我们首先定义了一个 XPath 表达式来定位页面中的一个特定元素。然后,我们获取这个元素的引用,并定义了一个函数 toggleAttributeValue 来切换该元素的 aria-hidden 属性值。接着,我们创建了一个 MutationObserver 实例来监听该元素属性的变化。当 aria-hidden 属性的值发生变化时,如果它变回了 'true',我们将它重新设置为 'false'。这确保了我们始终控制该属性的值。最后,我们创建了一个按钮元素,并为其添加了一个点击事件监听器,该监听器在点击时调用 toggleAttributeValue 函数。这个按钮被添加到页面的 body 中,用户可以通过点击它来切换元素的 aria-hidden 属性。简单来说 aria-hidden 设置为 true,表示元素不能被屏幕阅读器读取;而如果设置为 false,则表示元素可以被屏幕阅读器读取。附上 greasyfork 脚本存储点。
2024年04月11日
149 阅读
0 评论
7 点赞
2024-04-03
黑豹X2 (PantherX2)刷机小笔记
最近在群里看到一位老表分享了一款黑豹X2设备,感觉性价比还不错,可以拿来搭建一个小型服务器。设备配置:CPU: 瑞芯微 rk3566 4核(Cortex-A55*4)RAM: 4GBROM: 32GB eMMC 5.1 存储USB2.0: ×1千兆网卡: ×1无线WIFI: 支持蓝牙: 支持TF卡扩展: 支持,同时有一个M-SATA的槽位(暂时无法直接替换使用,可能需要魔改或者单独驱动)。{lamp/}刷机步骤:1. 安装驱动与刷机程序.1.1 前往FireFly官网下载 RK3566 驱动文件与刷写工具。1.2 首先安装 DriverAssitant_v5.1.1 驱动包,并确保刷机软件(RKDevTool_Release_v2.84)中 Boot 和 system 的文件路径选择正确,请勿使用默认路径!!!注意:RKDevTool_Release 必须是 v2.84 版本的。如果不习惯英文界面,可在 config.ini 配置文件中将Selected=0修改为 Selected=1 重启程序后就会显示中文界面。2. 刷机镜像2.1 下载Armbian镜像和RK3566的LOADER文件。2.2 在设备未通电的情况下,按住 Reset 键,然后插入双USB头线。2.3 等待下方显示从 “没有发现设备” 转换到 ”发现一个LOADER设备“ 状态后,松开 Reset 键。然后选择镜像和 loader 文件。2.4 点击“高级功能”,进入 “进入Maskrom” 后设备会重启进入MASKROM模式。2.5 进入MASKROM模式,等待重启成功后再次回到”下载镜像“菜单,点击“执行”开始刷机。2.6 等待下载完成后,刷机结束,就可以移除USB线,再插入网线和电源线进行供电。3 初始化配置 Armbian初次登录设备一般通过DHCP获取IP,可以通过路由器后台查看设备IP地址。首次登录系统会提示输入默认的账户和密码,此时默认账户密码为root/ 1234。更改软件源,和安装部署其他系统方式。以下放了一个大佬编写的脚本可以快速部署。#!/bin/bash #彩色 red(){ echo -e "\033[31m\033[01m$1\033[0m" } green(){ echo -e "\033[32m\033[01m$1\033[0m" } yellow(){ echo -e "\033[33m\033[01m$1\033[0m" } blue(){ echo -e "\033[34m\033[01m$1\033[0m" } #获取本机IP function getip(){ lan=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(.\d+){3}') wan=$(curl -s https://myip.ipip.net/) date=$(date "+%Y-%m-%d %H:%M:%S") red "内网IP:$lan\n外网IP:$wan\n当前时间:$date" } #宝塔面板综合安装脚本 function bt(){ # 更新软件包列表 sudo apt update # 安装更新 sudo apt upgrade -y # 安装宝塔 wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec } #安装1Panel function 1panel(){ # 更新软件包列表 sudo apt update # 安装更新 sudo apt upgrade -y # 安装1Panel curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh } #安装CasaOS function casaos(){ # 更新软件包列表 sudo apt update # 安装更新 sudo apt upgrade -y # 安装CasaOS curl -fsSL https://get.casaos.io | sudo bash } #挂载TF卡 function tfcard(){ if grep -qs "/dev/mmcblk" /etc/fstab; then red "TF卡已经挂载,跳过挂载步骤。" else blue "TF卡未挂载,执行挂载操作。" # 挂载 TF 卡的选择提示 # 创建 TF 卡挂载目录 sudo mkdir -p /mnt/tfcard # 挂载 mmcblk0p1 设备到 /mnt/tfcard sudo mount /dev/mmcblk0p1 /mnt/tfcard # 将挂载信息添加到 /etc/fstab echo "/dev/mmcblk0p1 /mnt/tfcard auto defaults 0 0" | sudo tee -a /etc/fstab # 重新加载挂载 sudo mount -a red "已挂载TF卡到 /mnt/tfcard" fi } #切换中文 function chinese(){ # 修改时区为东八区上海 sudo timedatectl set-timezone Asia/Shanghai if [[ $(locale | grep LANG | cut -d= -f2) != "zh_CN.UTF-8" ]]; then # 修改系统语言为中文 sudo sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/g' /etc/locale.gen sudo locale-gen zh_CN.UTF-8 sudo update-locale LANG=zh_CN.UTF-8 LC_ALL= # 安装必要的软件包 sudo apt install apt-transport-https ca-certificates red "已更换为中文环境,即将重启,请稍后重新连接后再次执行代码。" sudo reboot exit fi } #更换 Armbian 的源为国内源 function change_source(){ sudo sed -i.bak 's#apt.armbian.com#mirrors.tuna.tsinghua.edu.cn/armbian#g' /etc/apt/sources.list.d/armbian.list sudo sed -i.bak 's#security.debian.org#mirrors.ustc.edu.cn/debian-security#g' /etc/apt/sources.list sudo sed -i.bak 's#deb.debian.org#mirrors.ustc.edu.cn#g' /etc/apt/sources.list sudo sed -i.bak 's#ports.ubuntu.com#mirrors.tuna.tsinghua.edu.cn/ubuntu-ports#g' /etc/apt/sources.list red "已更换源为国内源,即将进行更新检查。" # 更新软件包列表 sudo apt update # 安装更新 sudo apt upgrade -y } #宝塔面板 自动磁盘挂载工具 function btdisk(){ wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.sh } #主菜单 function start_menu(){ clear if [ $(whoami) != "root" ];then echo "请使用root权限执行脚本命令!" exit 1; fi red "Armbian 初始化脚本 " echo " " blue "当前时间:$(date)" blue "当前系统:$(uname -srmo)" echo " " yellow " ==================================================" green " 1. 切换为中文环境" green " 2. 挂载 TF卡" green " 3. 切换为国内镜像源" green " 4. 获取本机IP" green " 5. 宝塔面板 自动磁盘挂载工具" green " 6. 安装 宝塔面板" green " 7. 安装 1Panel面板" green " 8. 安装 CasaOS面板" yellow " ==================================================" green " 0. 退出脚本" echo read -p "请输入数字:" menuNumberInput case "$menuNumberInput" in 1 ) chinese ;; 2 ) tfcard ;; 3 ) change_source ;; 4 ) getip ;; 5 ) btdisk ;; 6 ) bt ;; 7 ) 1panel ;; 8 ) casaos ;; 0 ) exit 1 ;; * ) clear red "请输入正确数字 !" start_menu ;; esac } start_menu "first"
2024年04月03日
860 阅读
1 评论
6 点赞
2024-03-23
英语真题在线小突击
发现一个有用的学习网站 🔜 英语真题在线 。话不多说直接润起来!{lamp/}1. 在网上发现一篇关于这个网站的文章,意外发现这个点可以修改循环次数数值达到无限制使用查询功能。这里主要是利用键值对,删除了该键后使用查询时会触发事件重新索引数据以达到无限制的查询。2. 在这里是直接用脚本自动在触发事件时删除 extra_data 数据 🔜 脚本部署地址注:需搭配油猴一起使用,如果没有安装该拓展可以在这里安装 🔜 官方地址
2024年03月23日
188 阅读
0 评论
3 点赞
2024-03-20
Python 扫描局域网存活设备
大无语了临近考试还在这里本末倒置的瞎搞!写这个没有什么技术含量的小工具,望各位大佬多担待一下。最近朋友的出租屋的网络出现多个DHCP服务器, 路由器有时候动态获取错误地址,所以使用 Python 编写了这个简单小工具以便了解局域网中哪些 IP 地址正在被使用和其主机名和MAC地址等信息(获取主机名和MAC还有点问题)。目前计划这个扫描工具实现以下功能:{timeline}{timeline-item color="#19be6b"}手动设置或者自动获取本地IP信息;{/timeline-item}{timeline-item color="#19be6b"}对指定或自动生成的子网内所有主机进行扫描,判断主机是否存活,并提取主机名、MAC地址和在线状态;{/timeline-item}{timeline-item color="#ed4014"}检测存活主机的端口使用状态;{/timeline-item}{timeline-item color="#ed4014"}手动设置检测超时时间;{/timeline-item}{timeline-item color="#ed4014"}手动设置线程;{/timeline-item}{/timeline}{lamp/}import ipaddress import socket import subprocess def scan_local_network(subnet=None): if subnet is None: local_ip = socket.gethostbyname(socket.gethostname()) subnet = ipaddress.ip_network(local_ip+'/24', strict=False) live_hosts = [] total_hosts = sum(1 for _ in subnet.hosts()) scanned_hosts = 0 for host in subnet.hosts(): scanned_hosts += 1 host = str(host) ping_process = subprocess.Popen(['ping', '-n', '1', '-w', '100', host], stdout=subprocess.PIPE, stderr=subprocess.PIPE) ping_output, _ = ping_process.communicate() if "TTL=" in ping_output.decode('gbk'): live_hosts.append((host, ping_output.decode('gbk'))) print(f"扫描进度:{scanned_hosts}/{total_hosts}", end='\r') return live_hosts def parse_ping_output(output): result = { "hostname": "", "mac_address": "", "status": "Offline" } # 提取主机名 for line in output.splitlines(): if line.startswith("Reply from"): hostname = line.split(" ")[2] result["hostname"] = hostname.replace(":", "") break # 提取 MAC 地址 for line in output.splitlines(): if line.startswith("MAC Address"): mac_address = line.split(":")[1].strip() result["mac_address"] = mac_address break # 判断端口状态 if "unreachable" not in output: result["status"] = "Online" return result def main(): # ASCII ascii_art = """ .--, .--, ( ( \.---./ ) ) '.__/o o\__.' {= ^ =} > - < / \\ // \\\\ //| . |\\\\ "'\ /'"_.-~^`'-. \ _ /--' ` ___)( )(___ (((__) (__))) ............................................. ping值稳定测精准 TanHaX 网络通畅似流云舒。 """ print(ascii_art) print("欢迎使用局域网IP扫描工具!") subnet = input("请输入要扫描的网段(例如 192.168.1.0/24),或 按回车键默认使用本地网段:") if subnet: try: subnet = ipaddress.ip_network(subnet, strict=False) live_hosts = scan_local_network(subnet) except ValueError: print("输入的网段格式不正确!") else: live_hosts = scan_local_network() if live_hosts: print("\n以下IP地址在使用中:") for host, output in live_hosts: parsed_data = parse_ping_output(output) print(f"[IP] {host} [Hostname] {parsed_data['hostname']} [MAC] {parsed_data['mac_address']} [Status] {parsed_data['status']}") print("扫描完成!") else: print("未发现任何活跃的主机。") if __name__ == "__main__": main()
2024年03月20日
246 阅读
0 评论
3 点赞
1
2
3
...
8