一、功能概述

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实现代码审计实战的更多相关文章

  1. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

  2. 《Python高效开发实战》实战演练——内置Web服务器4

    <Python高效开发实战>实战演练——开发Django站点1 <Python高效开发实战>实战演练——建立应用2 <Python高效开发实战>实战演练——基本视图 ...

  3. python聚类算法实战详细笔记 (python3.6+(win10、Linux))

    python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念:     1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...

  4. 《Python高效开发实战》实战演练——基本视图3

    在完成Django项目和应用的建立后,即可以开始编写网站应用代码,这里通过为注册页面显示一个欢迎标题,来演示Django的路由映射功能. 1)首先在djangosite/app/views.py中建立 ...

  5. 《Python高效开发实战》实战演练——建立应用2

    为了在项目中开发符合MVC架构的实际应用程序,需要在项目中建立Django应用.每个Django项目可以包含多个Django应用.建立应用的语法为: #python manage.pystartapp ...

  6. Python接口测试框架实战与自动化进阶☝☝☝

    Python接口测试框架实战与自动化进阶☝☝☝  一.fiddler在工作中的运用  1.如何抓接口 抓紧手机端接口 ①.在电脑终端输入:ipconfig ,找到电脑ip ②.打开手机,连接WiFi, ...

  7. Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

  8. python异常值检验实战2_医美手术价格

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  9. Python接口测试框架实战与自动化进阶✍✍✍

    Python接口测试框架实战与自动化进阶  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看 ...

  10. 日志服务Python消费组实战(二):实时分发数据

    场景目标 使用日志服务的Web-tracking.logtail(文件极简).syslog等收集上来的日志经常存在各种各样的格式,我们需要针对特定的日志(例如topic)进行一定的分发到特定的logs ...

随机推荐

  1. c# WindowsCommunityToolkit--- Shade Animation

    WindowsCommunityToolkit: https://github.com/CommunityToolkit/WindowsCommunityToolkit You can also pr ...

  2. 史上最详细idea提交代码到github教程

    史上最详细idea提交代码到github教程步骤前言github上创建空项目 idea上代码关联本地gitidea上代码本地提交解决Push rejected: Push to origin/mast ...

  3. 数据库中的WITH temp_a 类似临时表的使用-CTE表达式

    个人随笔记录 当一个表的数据量过大时,在字段没有索引的情况下,查询的效率通常都会比较慢,如何能在不改变当前表结构的情况下让查询效率提升呢? 在一次偶然的巧合中看见同事使用了一个未见过语句,后面通过百度 ...

  4. 600条Linux 命令总结

      一.基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /de ...

  5. 免费的天气接口api(腾讯)

    请求URL: https://wis.qq.com/weather/common请求方式: GET参数: 参数名 必选 类型 说明 source 是 string pc weather_type 是 ...

  6. Irwin-Hall 分布/CF1477F 题解

    Irwin-Hall 分布 对于 \(n\) 个均匀分布于 \([0,1]\) 的连续随机变量 \(X_1,X_2,\dots,X_n\),其和的随机变量 \(X\) 满足: \[P(X\le x)= ...

  7. Luogu P1777 帮助 题解 [ 紫 ] [ 线性 dp ] [ 状压 dp ]

    帮助:大毒瘤!!!调了我2h,拍了我2h,最后没调出来,重写才AC.wdnmd. 思路 这题主要是线性 dp ,而状压 dp 只是最后在统计答案时的一个辅助. 首先定义 \(dp[i][j][k]\) ...

  8. WinForm 进度条显示进度百分比

    参考: https://blog.csdn.net/zhuimengshizhe87/article/details/20640157 WinForm中显示进度条百分比有多种方式: 1. 添加 Lab ...

  9. FANUC发那科工业机器人减速器维修小细节

    在现代工业生产中,FANUC发那科机器人已成为不可或缺的一部分.然而,随着时间的推移,发那科机械手减速器可能会出现故障,影响机器人的正常工作. 一.了解减速器的结构与工作原理 在开始FANUC发那科机 ...

  10. Linux - sshpass的安装与使用

    ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题.它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行.文件.环境变量中读取. 安装 1.下载ssh ...