Spa
single packet authorization python realize
Install / Use
/learn @small-eight/SpaREADME
spa
single packet authorization python realize<br>
SPA单包认证,一种网络安全技术,用以在不开放网络端口的情况下,进行认证授权.<br> 与port knock技术理念相同,都是以满足“先认证后链接”这一理念(零信任中也包含此概念),用以弥补TCP/IP协议公开连接的缺点。<br> PK技术与SPA技术区别在于,PK以传输层包头为认证信息(顺序端口访问),而SPA则是在data中写入了认证信息,并对数据进行加密等操作。<br>
SPA具体应用,请查看SDP(Software Defined Perimeter )技术<br>
本项目仅作为技术实现,请不要应用于生成环境<br>(由于没有过滤,目前存在执行任意代码漏洞,将于SDP中进行修复)
说明
encipher.py 加密模块,所有加解密都在此模块中<br> spa_sever.py服务端模块,接受数据,解密数据<br> spa_client.py客户端,发送数据<br> spa_client.py客户端使用AES对数据进行加密,同时使用RSA加密AES密钥,用UDP发送。数据包中应包含账户信息、时间戳、校验信息以及其他必要信息。
使用
python 依赖 需cryptography,scapy两个库
pip install cryptography
pip install scapy
首次使用,请执行encipher 中 generate_rsa_key生成rsa密钥<br>
python3 encioher.py generate
公钥与spa_client在同一目录下使用。私钥与spa_server在同一目录下(请注意妥善保管私钥)。<br>
服务端执行 <br>
python3 spa_sever.py 29578
指定监听的端口为29578,如不添加参数,默认为29578。<br> 请注意文件中iface="eth0" 此处为监听的网卡,默认为"eth0"<br> spa_sever.py 中 packet_callback里面执行捕获到的数据包的处理逻辑与操作,放通符合认证要求的的客户端<br>
客户端执行<br>
python3 spa_client.py 127.0.0.1 29578
服务端将会在控制台输出收到的数据。<br>
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
