DeepseekScanner deepseek+python实现代码审计实战
一、功能概述
DeepseekScanner实现了扫描源代码项目中的所有代码文件发送给deepseek进行安全审计的功能。具体细节包括扫描所有子目录中的代码文件,然后依次将代码文件切片发送到deepseek api进行智能代码审计。审计结果包含存在安全问题的代码文件、代码位置行数、安全漏洞问题名称、存在安全漏洞的代码块。最后将审计结果保存到文件中方便查阅。
二、具体功能介绍
扫描指定的代码项目目录
//支持只扫描指定的文件后缀比如.php 只扫描.php文件 也可以扫描全部的文件类型
def scan_directory(directory, file_types=None, scan_all=False):
try:
if scan_all:
files_to_scan = [os.path.join(root, file) for root, _, files in os.walk(directory) for file in files]
else:
files_to_scan = [os.path.join(root, file) for root, _, files in os.walk(directory) for file in files if
any(file.endswith(ft) for ft in file_types)]
# Saving results to file
scan_results = []
filename = f"scan_results.txt"
directory = "./"
filepath = os.path.join(directory, filename)
for file_path in tqdm(files_to_scan, desc="Scanning files"):
file_scan_results = scan_file(file_path, scan_results, directory)
if file_scan_results is not None and len(file_scan_results) > 0:
save_results_to_file(filepath, file_scan_results)
except Exception as e:
print(e)
2.代码文件切片发送给deepseek做安全审计
//从项目中的各个目录提取代码文件后,开始对代码进行切片发送给deepseek做安全审计
def scan_file(file_path, scan_results, directory):
try:
with open(file_path, 'r') as file:
content = file.readlines()
total_chunks = (len(content) - 1) // 100 + 100
file_scan_results = []
for chunk_start in range(0, len(content), 100):
chunk_end = min(chunk_start + 100, len(content))
code_chunk = ''.join(content[chunk_start:chunk_end])
response = analyze_security(code_chunk)
if hasattr(response, 'content'):
results = response.content
elif isinstance(response, dict) and 'content' in response:
results = response['content']
else:
results = response
if results:
# Split the result into individual issues using "@@@@", it can be unreliable depending on the output of the model
individual_results = results.split('@@@@')
for result in individual_results:
if "存在风险" in result:
try:
_, line_numbers, issue_description, code_snippet = result.split(' | ', 3)
adjusted_line_numbers = line_numbers.strip()
issue_description = issue_description.strip()
code_snippet = code_snippet.strip()
file_scan_results.append(
(file_path, adjusted_line_numbers, issue_description, code_snippet))
except ValueError:
continue
# Append this file's results to the main scan_results
# scan_results.extend(file_scan_results)
return file_scan_results
except Exception as e:
print(e)
return None
3.deepseek代码审计功能
//严格定义prompt为资深安全专家实现代码安全审计
def analyze_security(content):
try:
completion = client.chat.completions.create(
model="deepseek-chat", # field is not currently used in LM studio
messages=[
{"role": "system", "content": '''你是一个安全专家严格分析以下代码片段,检查其中是否存在安全漏洞,请详细分析'''},
{"role": "user", "content": content}
],
temperature=0.7,
)
return completion.choices[0].message
except Exception as e:
print(e)
return None
三、测试结果
1.命令执行
//对项目中的所有代码进行安全审计
python scanner.py E:\work\sqli-secound-order --all
2.结果展示
四、总结
DeepseekScanner通过python+deepseek实现了python、php、java等语言项目代码审计,测试效果对于常见的安全问题甄别效果还是可以的,但可能也存在误报、错报等问题,需要再逐一帧对,不断完善。感兴趣的朋友可以在公众号回复"deepseekscanner"下载完整项目进行测试,包含代码项目和提供测试的漏洞代码项目。
DeepseekScanner deepseek+python实现代码审计实战的更多相关文章
- 关于Python网络爬虫实战笔记③
Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...
- 《Python高效开发实战》实战演练——内置Web服务器4
<Python高效开发实战>实战演练——开发Django站点1 <Python高效开发实战>实战演练——建立应用2 <Python高效开发实战>实战演练——基本视图 ...
- python聚类算法实战详细笔记 (python3.6+(win10、Linux))
python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念: 1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...
- 《Python高效开发实战》实战演练——基本视图3
在完成Django项目和应用的建立后,即可以开始编写网站应用代码,这里通过为注册页面显示一个欢迎标题,来演示Django的路由映射功能. 1)首先在djangosite/app/views.py中建立 ...
- 《Python高效开发实战》实战演练——建立应用2
为了在项目中开发符合MVC架构的实际应用程序,需要在项目中建立Django应用.每个Django项目可以包含多个Django应用.建立应用的语法为: #python manage.pystartapp ...
- Python接口测试框架实战与自动化进阶☝☝☝
Python接口测试框架实战与自动化进阶☝☝☝ 一.fiddler在工作中的运用 1.如何抓接口 抓紧手机端接口 ①.在电脑终端输入:ipconfig ,找到电脑ip ②.打开手机,连接WiFi, ...
- Python 小案例实战 —— 简易银行存取款查询系统
Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...
- python异常值检验实战2_医美手术价格
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- Python接口测试框架实战与自动化进阶✍✍✍
Python接口测试框架实战与自动化进阶 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看 ...
- 日志服务Python消费组实战(二):实时分发数据
场景目标 使用日志服务的Web-tracking.logtail(文件极简).syslog等收集上来的日志经常存在各种各样的格式,我们需要针对特定的日志(例如topic)进行一定的分发到特定的logs ...
随机推荐
- 如何发现漏洞之我的多功能武器BurpSuite与全能插件
知识点 1.插件类-武装BurpSuite-漏洞检测&分析辅助 2.插件类-武装谷歌浏览器-信息收集&情报辅助 一.演示案例-插件类-武装BurpSuite-漏洞检测&分析辅助 ...
- 求mod运算
求A mod B 要求 B必须是2的次方 方法 A mod B = A & (B - 1) 程序 #include <stdio.h> //10 mod 8 = 2 int add ...
- Kotlin:【继承】:继承、函数重载、类型检测、as类型转换、智能类型转换、Kotlin层次
- dart安装教程详解
官网 https://dart.dev 关于发布通道和版本字符串 Dart SDK有三个发布通道: 1==>:稳定释放,大约每三个月更新一次: 稳定释放适合生产使用. 2==>:预览发布, ...
- uni-app封装input组件用于登录
组件 <template> <view> <view class="uni-form-item uni-column"> <input c ...
- 内容分发网络 CDN 概述
本文分享自天翼云开发者社区<内容分发网络 CDN 概述>,作者:Jerry CDN(Content Delivery Network)是一种分布式网络架构,旨在提供高效.可靠地将内容传送给 ...
- Zabbix Server 5.0 安装及Zabbix5.2 一键部署脚本
zabbix 5.0 安装部署 1.关闭防火墙和selinux,安装repository源 [1]关闭防火墙,SELINUX firewall-cmd --state #查看默认防火墙状态,关闭后显示 ...
- 问一下,利用在线 DeepSeek 等 API 服务实现一个答题 APP
简介 这是一个利用 Android 无障碍功能 + 悬浮窗 + 大模型的搜题应用 原理就是利用无障碍读取屏幕内容,然后通过悬浮窗来显示答案 众所周知我是一个学渣,所以在搜答案方面颇有成就 大概是在 4 ...
- Hetao P1169 点集 题解 [ 黄 ][ 线性dp ]
点集 题解 一道非常傻逼,非常傻逼的暴力题,一点都不优雅,这能放普及 T4 真是开了眼了. 本题难点主要就是在时间复杂度的计算上,只要算对了并且有勇气去打就能 AC . 首先发现能形成一个点集,当且仅 ...
- 使用Visual Studio 调式NDK so 库时,调试工具无法显示vector内容
最近在研究C++开发安卓端so库,demo使用xamarin.android作为载体来验证算法库文件的准确性.调试过程中发现vector中的内容无法显示集合详细.如下图 研究了半天(参考链接2.3), ...