ANTI-PHISHING--如何用OCR检测网站?

一些碎碎念

钓鱼网站有典型的几种特征:

  • 有表单
  • 有跳转链接
  • 有一些很抓马的关键词
  • 巨长巨长的链

通过三种判定条件划分它们的不同类别:

  1. 有没有表单
  2. 有没有跳转链接
  3. 有没有关键词出现

本菜鸡的思路是,先访问网站获取源码,过滤它有没有表单或者链接,后台截图ocr识别文字得到列表,然后搞到一本字典,看有没有关键词,然后计算关键词占比,结合前面的条件判断危险性。

ocr白嫖百度的paddler里的模型,直接用轻量型的预训练ch和en模型识别。

百度的PaddlerOCR

因为老子不写论文,卷不过它们这些科研佬,就不训练深度学习模型了(主要是耗时耗力,不如白嫖的质量高、时间短)。

好了现在要解决的问题就是怎么隐式截图?不要紧,你的大爹chatgpt会帮你。

这里用的google浏览器启动器来后台打开网页,所以要下载一个chrome_driver.exe,并加入系统环境路径。

有了怎么截图、ocr模型,钓鱼的测试网站哪里来?

来来来,这里有个好东西:______,记录了各种乱七八糟的网站,有可能是钓鱼也有可能是真的网站,只是写得太像钓鱼了。最好人工筛选一下,不然你今天能打开的钓鱼网站,明天就被查杀了。

还有一个kali上可以用setoolkit配置钓鱼模板文件,还可以安装一个mip22专门用于构建钓鱼的脚本工具包。

接下来,字典呢?这个字典就靠你自己人工搞一下了,什么login submit这些很经典的,credit financial这些可能有关money的也是。

然后我自定义的钓鱼等级规则如下:

待定......

包含的项数越多越完整就等级越高,越危险,不过有些正规网站也这样啊(doge),那就勇敢点击,反正我又不是正经反钓鱼的。

老实说对这些东西没啥兴趣,因为钓鱼不就是这样吗,我还是想知道setoolkit的逻辑是什么,已经在看源码了。

话说kali虚拟机其实是可以设置代理的,大部分肯定觉得在虚拟机里面访问twitter,是不是有什么大病。但是,我觉得吧,万一呢,你以后需要在虚拟机里用科技咋办0-0?

写一点点就好了,因为有人抄得比我自己写得还要快捏。

~~~~~~~~~~~~~不华丽的分割线~~~~~~~~~~~~

~~~~~~~~~~~~~不华丽的分割线~~~~~~~~~~~~

建立钓鱼网站

Kali上使用建站工具setookit

Kali上使用建站工具mip22

1.安装

启动脚本mip22.sh

现在文件夹里会出现cloudflared-linux-amd64,注意把它复制到.host里。

在.host里新建cloudflared文件夹,然后把这东西复制到里面。

 然后再启动一次

启动工具结束

2.开始建站

 

 

后台可以直接收到登录的信息如下:

3.要使用ngrok来映射网址,好像只能用一次,用作钓鱼会被封号斗罗,只有第一次是成功的。

首先,编写测试脚本test.sh,放在和mip22.sh一样的文件夹下。

#!/bin/bashGREEN='\033[0;32m'
WHITE='\033[1;37m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'ngrok_start() {echo -e "\n${GREEN}[${WHITE}-${GREEN}]${MAGENTA} Initializing... ${MAGENTA}( ${CYAN}http://$host:$port ${MAGENTA})"echo -ne "\n\n${GREEN}[${WHITE}-${GREEN}]${MAGENTA} Launching Ngrok..."if [[ `command -v termux-chroot` ]]; thensleep 2 && termux-chroot ./.host/ngrok http "$host":"$port" > /dev/null 2>&1 &elsesleep 2 && ./.host/ngrok http "$host":"$port" > /dev/null 2>&1 &fisleep 5 # 增加等待时间以确保Ngrok成功启动ngrok_status=$(curl -s -N http://127.0.0.1:4040/api/tunnels)http_url=$(echo "$ngrok_status" | grep -o 'http://[^"]*' | grep -vE "$host")https_url=$(echo "$ngrok_status" | grep -o 'https://[^"]*' | grep -vE "$host")echo -e "\n${GREEN}[${WHITE}-${GREEN}]${WHITE} URL http : ${GREEN}$http_url"echo -e "\n${GREEN}[${WHITE}-${GREEN}]${WHITE} URL https : ${GREEN}$https_url"
}# 设置您的host和port变量
host="kali ip"
port="8080"# 调用ngrok_start函数
ngrok_start

然后测试运行输出以下结果:

然后访问这两个网址的任何一个,打开即可。

由于已经测试被封号了T_T,所以就不用这个功能了。

通过以上两种方式可以得到两个钓鱼网站,一个是推特登录,一个是Mewe的登录。

代码实现

由于直接用request.get(url)有可能被拦截获取不到网页源码,或者是直接打不开网页,我直接用自动化测试工具selenium来做,下载谷歌的chromedriver.exe,必须和当前你使用的浏览器的版本相匹配,否则失败。

钓鱼主类 PhishDetector

传入的config.ini是我写的配置文件,这里要使用的话直接替换成自己的绝对路径的位置

因为这是我写的子模块,只能透露这些了。

记得下载百度的飞桨库,这里我写的是调用特定功能才会使用特定库,所以不能立马发现哪个库没装,要自己仔细看。

import timefrom selenium import webdriver
# from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait# 截图 存 src/main/phish/target/screenshot_{}-{}.png
# ocr 结果 存 src/main/phish/out/ocr_image_{}_{}.png
# 生成 log 存  src/log/phishing_log_{}.txt
class PhishDetector:def __init__(self, config_ini):super(PhishDetector, self).__init__()self.config_ini = config_iniself.target_img = self.config_ini['main_project']['project_path'] + self.config_ini['phish']['phish_target_img']self.phish_log = self.config_ini['main_project']['project_path'] + self.config_ini['phish']['phish_log']self.log_content = []self.codes = ''self.item_work = []self.ocr_result = {}self.warnings = []self.image_data = []def check_and_create_directory(self, path):import osif not os.path.exists(path):os.makedirs(path)def get_screen_shot_invisible(self, url, img_path):# 隐式截图# chrome_options = Options()# chrome_options.add_argument("--headless") # chrome_driver = webdriver.Chrome(options=chrome_options)chrome_driver = webdriver.Chrome()chrome_driver.get(url)chrome_driver.maximize_window()self.codes = chrome_driver.page_sourcewait = WebDriverWait(chrome_driver, 10)wait.until(ec.visibility_of_element_located((By.TAG_NAME, 'body')))chrome_driver.get_screenshot_as_file(img_path)chrome_driver.quit()def screenshot_ocr_operator(self, input_path):from paddleocr import PaddleOCRocr = PaddleOCR(use_angle_cls=True, lang="en", show_log=False)  # need to run only once to download and load model into memoryresult = ocr.ocr(input_path, cls=True)result = result[0]txts = [line[1][0] for line in result]self.image_data = [input_path, result]return txtsdef from_screen_To_ocr_result(self, url):current_time = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())log_time = time.strftime("%H:%M:%S", time.localtime())self.log_content.clear()self.log_content.append('Start Phishing Detect!!!\n')item_name = r'/screenshot_{}_.png'.format(current_time)real_path = self.target_img + item_nameself.get_screen_shot_invisible(url, real_path)self.log_content.append('[{}]: From {} gets screenshot successfully!\n'.format(log_time, url))# print('The image from: {} screenshot gets sucessfully~~'.format(url))self.ocr_result[url] = self.screenshot_ocr_operator(real_path)self.log_content.append('[{}]: From {} gets ocr_screenshot successfully!\n'.format(log_time, url))# print('The image from: {} ocr gets sucessfully~~'.format(url))def level_judge_operator(self, url):data = self.ocr_resultcurrent_time = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())log_time = time.strftime("%H:%M:%S", time.localtime())level_judge_obj = LevelJudge()# codeidentify_url_code_info = level_judge_obj.identify_url_source(self.codes)self.warnings.clear()for item in identify_url_code_info:self.warnings.append(item)temp_content = ['[{}]: {}'.format(log_time, item) for item in identify_url_code_info]self.log_content += temp_content## print('[{}]:{}'.format(log_time, identify_url_code_info))keyword_prop, keywords = level_judge_obj.keyword_container(text_item=data[url])# print('key_prop:{}, keywords:{}'.format(keyword_prop,keywords))if keyword_prop != 0.00:self.log_content.append('[{}]: Detect The [{}%] Keyword from: {} in {}\n'.format(log_time, keyword_prop, keywords, url))self.warnings.append('Detect The [{}%] Keyword from: {} in {}\n'.format(keyword_prop, keywords, url))# print('[{}]: Detect The [{}%] Keyword from: {} in {}\n'.format(log_time, keyword_prop, keywords, url))log_file = self.phish_log.format(current_time)log_string = ''.join(self.log_content)warning_string = ''.join(self.warnings)with open(log_file,'w',encoding='utf-8') as file:file.write(log_string)file.close()# print('write end.\n')return log_string, warning_string

评级器类 LevelJudge

用于评价你传入的钓鱼网站的等级,但是其实我只写了判断过程,没有写评级标准,所以就只是把警告信息写出来,而不是判断数据属于哪个等级。

首先是ocr的识别结果和字典数据匹配,计算命中率和命中类别。

再接下来,之前已经通过自动化工具获取了源码,对源码进行两种不同的分析,我分开写的表单和跳转链接检测,还不够严谨,应该加上一个黑名单标记,但是我这里暂时没有写,先这样吧。

总之,有表单的话就再继续往下面搜,搜input元素里面的name是什么,是否危险;

有跳转链接,就提取有效的网址链接,因为有些链接是资源和样式,没啥用,直接筛选掉。

结合上述两个信息和匹配占比,共同输出危险信息。

class LevelJudge:def __init__(self):super(LevelJudge, self).__init__()self.keywords = ['登录', '密码', '邮箱', '电话号码', '助词','动词','账户','金钱','符号','认证','安装','企业']self.keywords_list = {# 登录'登录': ['log', 'id', 'register', 'sign'],# 密码'密码': ['keyword', 'pass'],# 邮箱'邮箱': ['email', 'address', 'send', 'contact'],# 电话号码'电话号码': ['number', 'phone', 'call', 'mobile'],# 助词'助词': ['success', 'successful', 'opportunity', 'congratulations', 'welcome', 'from','home','with'],# 动词'动词': ['submit', 'enter', 'continue', 'next', 'connect','support','to','help'],# 账户'账户': ['account', 'freeze', 'activate', 'profile', 'details', 'virgin', 'term'],# 金钱'金钱': ['money', 'bussiness', 'financial', 'finance'],# 特殊符号'符号': ['$', '¥', '@', '>>', '*'],# 认证'认证': ['identify', 'vertification', 'detail', 'name', 'game','birth', 'country', 'postcode', 'indicates','privacy'],# 安装'安装': ['launch', 'launching','install'],# 企业'企业': ['facebook', 'twitter','google','steam','community','mewe']}def convert_upper_to_lower(self, text_item):new_data = [item.lower() for item in text_item]return new_datadef keyword_container(self, text_item):init_texts = self.convert_upper_to_lower(text_item=text_item)shot_count = 0shot_class = set()total_count = 0for text in init_texts:for item in self.keywords:value_list = self.keywords_list[item]# print(value_list)for value in value_list:if value in text:shot_count += 1shot_class.add(item)total_count += len(text.split())# 保留三位小数if total_count != 0:shot_pro = round(shot_count / total_count * 100, 3)else:shot_pro = 0return shot_pro, list(shot_class)def identify_url_source(self, codes):source_code = codesform_warning = self.form_container(source_code=source_code)href_warning = self.href_container(source_code=source_code)return form_warning + href_warningdef form_container(self, source_code):import repattern = r'<form.*?action="(.*?)".*?>'init_matches = re.findall(pattern, source_code)info = []matches = list(set(init_matches))  # 去重if matches:for match in matches:info.append(f"Detect the FORM action in url: {match}\n")else:info.append("Detect No form in url.\n")attributes_list = self.get_form_input_attributes(source_code=source_code)attributes_strings = [', '.join([f'{key}={value}' for key, value in attributes.items()]) + '\n' for attributes in attributes_list]info = info + attributes_stringsreturn infodef get_form_input_attributes(self, source_code):import repattern = r'<form.*?>(.*?)</form>'exclude_names = ['lang', 'redirect', 'scribe_log']matches = re.findall(pattern, source_code, re.DOTALL)attributes_list = []for match in matches:input_pattern = r'<input.*?>'init_matches = re.findall(input_pattern, match)input_matches = list(set(init_matches))  # 去重for input_match in input_matches:# 删除无关的样式和类input_match = re.sub(r'class=".*?"', '', input_match)input_match = re.sub(r'style=".*?"', '', input_match)# 删除指定的属性input_match = re.sub(r'role=".*?"', '', input_match)input_match = re.sub(r'label=".*?"', '', input_match)input_match = re.sub(r'id=".*?"', '', input_match)input_match = re.sub(r'required', '', input_match)input_match = re.sub(r'type=".*?"', '', input_match)# 删除checked、placeholder和autocomplete,maxlength属性input_match = re.sub(r'checked=".*?"', '', input_match)input_match = re.sub(r'placeholder=".*?"', '', input_match)input_match = re.sub(r'autocomplete=".*?"', '', input_match)input_match = re.sub(r'maxlength=".*?"','', input_match)# 检查name和value同时出现if 'name="' in input_match and 'value="' not in input_match:# 提取属性attributes = re.findall(r'(\w+)\s*=\s*"(.*?)"', input_match)attributes_dict = dict(attributes)if attributes_dict.get('name') not in exclude_names:attributes_list.append(attributes_dict)return attributes_listdef href_container(self, source_code):import repattern = r'href=[\'"](.*?)[\'"]'init_matches = re.findall(pattern, source_code)matches = list(set(init_matches))info = []if matches:for match in matches:if match != '/' and match != '#' and match != '\\\\' and match != '':if match.startswith(('http://', 'https://')) and not match.endswith(('.ico', '.css', '.js','.png','.jpeg','jpg')):info.append(f"Detect the HREF in url: {match}\n")else:info.append("Detect No href in url.\n")return info

调用方式

创建调用类interface.py

class interface(object):def __init__(self, config_ini):super(interface, self).__init__()self.config_ini = config_inidef phish_interface(self, url):from phish.phish import PhishDetectorphish_detector = PhishDetector(self.config_ini)phish_detector.from_screen_To_ocr_result(url=url)log_word, warning = phish_detector.level_judge_operator(url=url)self.image_data.append(phish_detector.image_data)return log_word, warningif __name__ == "__main__":obj = interface()# 自己传入钓鱼网址列表url_list = ['http://192.xxx.xxx.xxx','http://xxx.xxx.xxx.xxx',...,...,'http://123.123.123.123']    # 单个测试log, warning = obj.phish_interface(url='http://192.168.43.133')print("log:\n",log)print("warning:\n",warning)

我直接贴我的运行截图,但是因为这个项目是和其他人一起写的,所以其他源码暂时不放出来了。

MeWe:

OCR识别结果:

白天版

暗黑版

PDF报告  

Twitter:

OCR识别结果

警告信息

好了,差不多到这里,因为我又要开始写新的东西了,类似于IDE? 代码审计......难得我脑壳疼,因为UI和什么词法分析、语法分析以及还要管理后台啥的,什么造火箭!?

再加上遇上了一个事儿姐,浪费我人生中四个多小时给她讲代码,还要倒打我一耙。

真的是~~~~~无语~~~~~了,又给我亿点点震撼,流汗黄豆以御敌~~~~~~

😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅😅

肝疼,先去睡觉咯~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19150.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Prompt合集

作者 来自&#xff1a;f Prompt主要内容 我想让你充当「英语翻译员」、「拼写纠正员」和「改进员」。 我会用任何语言与你交谈&#xff0c;你会检测语言&#xff0c;翻译它并用我的文本的更正和改进版本用英语回答。 我希望你用更优美优雅的「高级英语单词」和句子替换我简化…

BFT最前线丨浙江大学和蚂蚁集团合作,成立智能视觉实验室;ChatGPT 对亚洲节点大规模封号;谷歌CEO称将推出Bard升级版

文 | BFT机器人 01 浙江大学和蚂蚁集团合作&#xff0c;成立智能视觉实验室 据消息&#xff0c;浙江大学和蚂蚁集团达成合作成立「智能视觉联合实验室」&#xff0c;旨在推进智能视觉的技术创新和产业应用&#xff0c;重点攻坚包括机器视觉、三维重建、视觉内容生成等人工智能及…

内地见证可以办理哪些香港银行卡?哪家更方便门槛要求更低?

首先给大家打个预防针&#xff1a; 香港不像内地&#xff0c;香港银行大都收管理费、普通转账收费&#xff0c;非交易时间不能转&#xff0c;到账速度很难秒到&#xff01; 现在不能去香港&#xff0c;那么很多银行是不能办理的&#xff0c;所以下面就只聊聊能内地见证办理的…

WhaleHiking的“三山五岳”第一站:泰山

Datawhale团队 来源&#xff1a;whaleHiking 开场白 大家应该都听说过杜甫的《望岳》——“会当凌绝顶&#xff0c;一览众山小。”&#xff0c;每次看见这句诗的时候&#xff0c;总想去泰山看一看&#xff0c;感受诗中的壮美山河景色&#xff01; 机不可失时不再来&#xff0c…

玩转 ChatGPT+极狐GitLab|自动化的MR 变更评审来了

本文来自&#xff1a; 尹学峰 极狐(GitLab)高级解决方案架构师 自从 ChatGPT 闪亮登场以来&#xff0c;各种基于它的软件扩展纷至沓来。爱折腾的极狐GitLab 开发者们&#xff0c;也花式玩转起了 ChatGPT 极狐GitLab&#xff0c;让研发工作更高效。 今天&#xff0c;我们来看看…

深度:ChatGPT只是表面的喧嚣,大模型才是那柄尖刀!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 如果把时钟拨到2023年底&#xff0c;当我们回过头来看今年科技界最激动人心的大事件&#xff0c;ChatGPT的横空出世无疑会占据一席之地。就像几年前大家被谷歌AlphaGo点燃对人工智能的热情一样&#xff0c;人们对ChatGPT的热…

GPT-4:我不是来抢你饭碗的,我是来抢你锅的

目录 一、GPT-4&#xff0c;可媲美人类 二、它和ChatGPT 有何差别&#xff1f; 01、处理多达2.5万字的长篇内容 02、分析图像的能力&#xff0c;并具有「幽默感」 03、生成网页 三、题外话 四、小结 GPT-4的闪亮登场&#xff0c;似乎再次惊艳了所有人。 看了GPT-4官方的…

文心一言正式对标GPT-4,是青铜还是王者?

昨天&#xff0c;OpenAI正式发布GPT-4模型 号称史上最先进的AI系统 今天&#xff0c;百度文心一言在万众瞩目中闪亮登场 这款产品被视为中国版ChatGPT 在这一个多月内备受关注 文心一言某种程度上具有了对人类意图的理解能力 回答的准确性、逻辑性、流畅性都逐渐接近人类…

python详解(7)——进阶(1):排序算法

目录 &#x1f3c6;一、前言 &#x1f3c6;二、什么是算法&#xff08;简单&#xff09; &#x1f6a9;1、算法 &#x1f6a9;2、排序算法 &#x1f3c6;三、冒泡排序&#xff08;中等&#xff09; &#x1f3c6;四、快速排序&#xff08;困难&#xff09; &#x1f3c6;五&…

如何解决ChatGPT 的数据保护盲点

自成立以来的短时间内&#xff0c;ChatGPT 和其他生成式 AI 平台理所当然地赢得了终极生产力助推器的声誉。然而&#xff0c;能够按需快速生成高质量文本的技术&#xff0c;可能同时暴露敏感的公司数据。最近发生的一件事&#xff0c;其中东方联盟网络安全研究人员将专有代码粘…

ChatGPT 的数据保护盲点以及安全团队如何解决这些盲点

自成立以来的短时间内&#xff0c;ChatGPT 和其他生成式 AI 平台理所当然地赢得了终极生产力助推器的声誉。 然而&#xff0c;能够按需快速生成高质量文本的技术&#xff0c;可能同时暴露敏感的公司数据。 最近发生的一起事件&#xff0c;三星软件工程师将专有代码粘贴到 ChatG…

ChatGPT 数据泄露的技术细节公开:引用的 Redis 开源客户端导致

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013) 在上周一&#xff0c;ChatGPT 遭遇了一次用户数据泄漏事件&#xff0c;许多 ChatGPT 的用户都在自己的历史对话中看到了其他人的对话记录。不光是对话的历史记录&#xff0c;不少 ChatGPT Plus 用户还在 Reddit 和 T…

A股管家股票自动交易软件系统,功能完善强大

2013年的时候&#xff0c;有个广东的朋友说再用这款A股管家股票自动系统&#xff0c;我当时比较惊讶&#xff0c;以前想过要是有一款股票自动交易软件能偶尔代替我一下就好了&#xff0c;虽然是职业股民&#xff0c;但也经常遇到太忙的时候&#xff0c;实在没时间。然后就在朋友…

如何让chatgpt十分正确的帮咱们编写代码文档和单元测试

有多少次你专注于编程而忘记了写函数、方法、类的非常简单的代码文档&#xff1f;我不是在问单元测试. 直到我发现ChatGPT可以做到这一点: 除了代码文档&#xff0c;它在编写单元测试方面也做得很好。此外&#xff0c;在最后&#xff0c;我可以要求他为其他想使用我的代码的贡…

chatGPT如何开启 Browsing 功能,实现即时联网查询?

Openai 为每一个 chatGPT Plus 用户都开放了 Browsing 和 plugins 功能。 前者可以在 ChatGPT 觉得有必要的时候&#xff08;比如你问它今天的新闻&#xff09;&#xff0c;自动联网查询&#xff0c;后者是第三方开发者开发的插件&#xff0c;数量繁多&#xff0c;可以解决各种…

雷军:小米 13 暂无做半代升级版本计划;微软放宽 Bing 搜索引擎使用限制;.NET 8 发布首个预览版本|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

三星被曝因ChatGPT泄露芯片机密!韩媒惊呼数据「原封不动」直传美国,软银已禁止员工使用......

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 明敏 萧箫 发自 凹非寺转载自&#xff1a;量子位&#xff08;QbitAI&#xff09; 三星引入ChatGPT不到20天&#xff0c;就发生3起数据外泄事件…

垂直大模型渐入佳境,解码国内首个智能校对领域大模型“蜜度文修”

一枝独秀不是春&#xff0c;百花齐放春满园。 ChatGPT的兴起&#xff0c;引发了全球性的大模型竞赛热潮。走过开始的混沌期&#xff0c;大模型竞技场当前越来越呈现出两条清晰的路线&#xff1a;一是以云服务厂商为代表的巨头们逐鹿的基础通用大模型赛道&#xff1b;二是在基础…

目标检测算法——YOLOv5/YOLOv7改进之结合GAMAttention

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 超越CBAM&#xff0c;全新注意力GAM&#xff1a;不计成本提高精度&#xff01; &#xff08;一&#xff09;前沿介绍 1.GAM结构图 2.相关实验结果 &#xff08;二&#xff09;YOLOv5/YOLOv7改进之结…

chatgpt赋能python:Wi-FiPython拦截抓包基础知识

Wi-Fi Python拦截抓包基础知识 Wi-Fi Python拦截抓包的技术可以用于网络安全研究、漏洞挖掘和应用开发等领域中。本文将基于Python语言介绍Wi-Fi Python拦截抓包的基础知识。 前置条件 在学习Wi-Fi Python拦截抓包之前&#xff0c;需要掌握以下知识&#xff1a; Python编程…