kali系统概述、nmap扫描应用、john破解密码、抓包概述、以太网帧结构、抓包应用、wireshark应用、nginx安全加固、Linux系统加固

目录

kali

nmap扫描

使用john破解密码

抓包

封装与解封装

网络层数据包结构

TCP头部结构​编辑

UDP头部结构

实施抓包

安全加固

nginx安全

防止缓冲区溢出

Linux加固


kali

  • 实际上它就是一个预安装了很多安全工具的Debian Linux
[root@myhost ~]# kali reset

kali reset OK.

该虚拟机系统用户名为:kali,密码为:kali
  • 基础配置
$ ip a s    # 查看网络IP地址,本例中查看到的是192.168.88.40

$ sudo systemctl start ssh      # 启ssh服务,弹出的窗口输入密码kali

$ sudo systemctl enable ssh     # 设置ssh服务开机自启

[root@myhost ~]# ssh kali@192.168.88.40

kali@192.168.88.40's password: kali

┌──(kali㉿kali)-[~]

└─$ 

nmap扫描

  • 一般来说扫描是攻击的前奏。
  • 扫描可以识别目标对象是什么系统,开放了哪些服务。
  • 获知具体的服务软件及其版本号,可以使得攻击的成功率大大提升。
  • 扫描可以检测潜在的风险,也可以寻找攻击目标、收集信息、找到漏洞
  • windows下,扫描可以使用xscan / superscan
  • Linux,扫描可以采用nmap
  • 吾爱破解:吾爱破解 - LCG - LSG|安卓破解|病毒分析|www.52pojie.cn
  • 中国黑客团队论坛:https://www.cnhackteam.org/
  • 俄罗斯论坛:https://rutracker.org/
┌──(kali㉿kali)-[~]

└─$ nmap

# -sT: TCP扫描。

# -U: 扫描目标的UDP端口。

# -sP:ping扫描

# -A:对目标系统全面分析


# 扫描整个网段,哪机器可以ping通

┌──(kali㉿kali)-[~]

└─$ nmap -sP 192.168.88.0/24


# 扫描192.168.88.100开放了哪些TCP端口

┌──(kali㉿kali)-[~]

└─$ sudo nmap -sT 192.168.88.100


# 扫描192.168.88.100开放了哪些UDP端口。非常耗时!

┌──(kali㉿kali)-[~]

└─$ sudo nmap -sU 192.168.88.100


# 全面扫描192.168.88.100系统信息

┌──(kali㉿kali)-[~]

└─$ sudo nmap -A 192.168.88.100
  • 使用脚本扫描
# 通过脚本扫描目标主机的ftp服务

# 在目标主机上安装vsftpd服务

[root@web1 ~]# yum install -y vsftpd

[root@web1 ~]# vim /etc/vsftpd/vsftpd.conf 

 12 anonymous_enable=YES

[root@web1 ~]# systemctl enable vsftpd --now


# 在kali主机上查看有哪些脚本

┌──(kali㉿kali)-[~]

└─$ ls /usr/share/nmap/scripts/


# 扫描ftp服务是否支持匿名访问。ftp控制连接端口号是21

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ftp-anon.nse 192.168.88.100 -p 21

21/tcp open  ftp

| ftp-anon: Anonymous FTP login allowed   # 允许匿名访问


# 扫描ftp相关信息,如版本号、带宽限制等

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ftp-syst.nse 192.168.88.100 -p 21


# 扫描ftp后门漏洞

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ftp-vsftpd-backdoor 192.168.88.100 -p 21
  • 扫描口令
# 通过ssh协议,使用nmap自带的密码本扫描远程主机的用户名和密码

# 在目标主机上创建名为admin的用户,密码为123456

[root@web1 ~]# useradd admin

[root@web1 ~]# echo 123456 | passwd --stdin admin


# 在kali上扫描弱密码

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ssh-brute.nse 192.168.88.100 -p 22


# 通过ssh协议,使用nmap以及自己的密码本扫描远程主机的密码

# 1. 创建用户名文件

┌──(kali㉿kali)-[~]

└─$ sudo echo root > /tmp/users.txt

                                                        

┌──(kali㉿kali)-[~]

└─$ cat /tmp/users.txt 

root


# 2. 生成1990-01-01到2020-12-31之间的所月日期

┌──(kali㉿kali)-[~]

└─$ vim mydate.py

from datetime import datetime, timedelta


d1 = datetime(1989, 12, 31)

d2 = datetime(2021, 1, 1)

dt = timedelta(days=1)


with open('/tmp/mima.txt', 'w') as f:

    while d1 < d2:

        d1 += dt

        f.write("%s\n" % d1.strftime('%Y%m%d'))


┌──(kali㉿kali)-[~]

└─$ python3 mydate.py


# 3. 修改web1的密码

[root@web1 ~]# echo 19910101 | passwd --stdin root


# 4. 使用自己的密码本破解密码

┌──(kali㉿kali)-[~]

└─$ sudo nmap --script=ssh-brute.nse --script-args userdb=/tmp/users.txt,passdb=/tmp/mima.txt 192.168.88.100 -p 22


# 5. 目标主机将会记录所有的登陆事件

[root@web1 ~]# vim /var/log/secure

# 查看最近的登陆失败事件

[root@web1 ~]# lastb

# 查看最近的登陆成功事件

[root@web1 ~]# last
  • 扫描windows口令
[root@myhost ~]# cat /tmp/winuser.txt    # windows用户名

administrator

admin

# 通过samba服务扫描密码

[root@myhost ~]# nmap --script=smb-brute.nse --script-args userdb=/tmp/winuser.txt,passdb=/tmp/mima 172.40.0.151

使用john破解密码

  • 在线破解哈希值的网站:md5在线解密破解,md5解密加密

  • 哈希是算法,英文hash的音译,包括md5、sha等

    • 哈希算法是一种单向加密的算法,也就是将原始数据生成一串“乱码”
    • 只能通过原始数据,生成这串“乱码”,但是不能通过“乱码”回推出原始数据
    • 相同的原始数据,生成的乱码是相同的。
  • kali系统提供了一个名为john的工具,可用于密码破解

[root@web1 ~]# echo 123456 | passwd --stdin root

[root@web1 ~]# useradd tom

[root@web1 ~]# echo abc123 | passwd --stdin tom

[root@web1 ~]# useradd jerry

[root@web1 ~]# echo 123123 | passwd --stdin jerry

[root@web1 ~]# scp /etc/shadow kali@192.168.88.40:/home/kali/


# 字典暴力破解,密码本是/usr/share/john/password.lst

┌──(kali㉿kali)-[~]

└─$ sudo john shadow  


# 直接显示破解的密码,不显示其他额外信息

┌──(kali㉿kali)-[~]

└─$ sudo john --show shadow                

root:123456:18912:0:99999:7:::

tom:abc123:18912:0:99999:7:::

jerry:123123:18912:0:99999:7:::



# 字典暴力破解,指定密码本文件

┌──(kali㉿kali)-[~]

└─$ sudo john --wordlist=/tmp/mima.txt shadow

抓包

封装与解封装

  • MAC地址:分为目标和源MAC地址,6字节
  • Type:类型,说明数据帧中包含的数据类型
  • Data:高层数据
  • FCS:帧校验序列

网络层数据包结构

  • 版本:协议版本,如IPv4
  • 生存时间:8位,初始一个值n,每经过一个路由器减1,直到为0丢弃,目的为防止分组在网络上无限传播下去
  • 协议号:数据部分应交付的协议号,如TCP是6,UDP是17

TCP头部结构

  • 源端口:数据段的源端口,一般为大于1024的随机值
  • 目标端口:数据段的目标端口
  • 序号:在一个TCP连接中传输的数据段都按顺序编号

UDP头部结构

  • 源端口:数据段的源端口,一般为大于1024的随机值
  • 目标端口:数据段的目标端口

实施抓包

  • 传输的各种数据,在网络中都是一个个的数据包
┌──(kali㉿kali)-[~]

└─$ sudo tcpdump

# -i:指定抓取哪块网卡进入的数据包

# -A:转换为ASCII码,使得可读

# -w:抓包写入文件

# -r:从文件中读取抓包信息

# 抓包时可以过滤要抓哪些包

# 使用host过滤主机,使用net过滤网段,使用port过滤端口... ...


# 1. 抓包:抓取eth0上进出的、与192.168.88.100有关的、涉及TCP21端口的数据包。以下命令执行后,打开新终端。

┌──(kali㉿kali)-[~]

└─$ sudo tcpdump -i eth0 -A host 192.168.88.100 and tcp port 21


# 2. 在新终端登陆ftp

┌──(kali㉿kali)-[~]

└─$ ftp 192.168.88.100

Connected to 192.168.88.100.

220 (vsFTPd 3.0.2)

Name (192.168.88.11:kali): tom   # 用户名

331 Please specify the password.

Password:abc123   # 此处是tom的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit    # 退出

221 Goodbye.


# 3.在tcpdump终端可以看到明文的用户名和密码



# 保存抓包文件

# 1. 将抓到的包存入文件ftp.cap

┌──(kali㉿kali)-[~]

└─$ sudo tcpdump -i eth0 -A -w ftp.cap host 192.168.88.100 and tcp port 21

# 2. 在另一个终端访问ftp

# 在新终端登陆ftp

┌──(kali㉿kali)-[~]

└─$ ftp 192.168.88.100

Connected to 192.168.88.100.

220 (vsFTPd 3.0.2)

Name (192.168.88.11:kali): tom   # 用户名

331 Please specify the password.

Password:abc123   # 此处是tom的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> exit    # 退出

221 Goodbye.


# 3. 在抓包终端ctrl+c停止

# 4. 读取抓到的包,并过滤

┌──(kali㉿kali)-[~]

└─$ tcpdump -A -r ftp.cap | egrep 'USER|PASS' 
  • 图形工具:wireshark
[root@myhost ~]# yum install wireshark ftp

选择抓哪块网卡进出的数据,然后点左上角的开始

 抓到包后,点击左上角同样位置停止,查看数据

安全加固

nginx安全

  • 安装启服务
[root@web1 ~]# yum install -y nginx

[root@web1 ~]# systemctl enable nginx --now
  • 命令行访问不存在的路径:
[root@web1 ~]# curl -I http://192.168.88.100/

HTTP/1.1 200 OK

Server: nginx/1.14.1       # 版本号

Date: Mon, 02 Jan 2023 02:54:45 GMT

Content-Type: text/html

Content-Length: 3429

Last-Modified: Thu, 10 Jun 2021 09:09:03 GMT

Connection: keep-alive

ETag: "60c1d6af-d65"

Accept-Ranges: bytes
  • 隐藏版本信息
[root@web1 ~]# vim /etc/nginx/nginx.conf

... ...

 17 http {

 18     server_tokens off;

... ...

[root@web1 ~]# systemctl restart nginx.service 
  • 再次访问不存在的路径,版本号消失
[root@web1 ~]# curl -I http://192.168.88.100/

HTTP/1.1 200 OK

Server: nginx     # 没有版本号了

Date: Mon, 02 Jan 2023 02:56:26 GMT

Content-Type: text/html

Content-Length: 3429

Last-Modified: Thu, 10 Jun 2021 09:09:03 GMT

Connection: keep-alive

ETag: "60c1d6af-d65"

Accept-Ranges: bytes
  • 防止DOS、DDOS攻击
  • DDOS:分布式拒绝服务
# 压力测试,每批次发送100个请求给web服务器,一共发200个

[root@myhost ~]# yum install -y httpd-tools

[root@myhost ~]# ab -c 100 -n 200 http://192.168.88.100/ 

... ...

Benchmarking 192.168.88.100 (be patient)

Completed 100 requests

Completed 200 requests

Finished 200 requests    # 发送200个请求完成

... ... 

Complete requests:      200   # 完成了200个请求

Failed requests:        0     # 0个失败

... ...
  • 配置nginx连接共享内存为10M,每秒钟只接收一个请求,最多有5个请求排队,多余的拒绝
[root@web1 ~]# vim /etc/nginx/nginx.conf

 17 http {

 18     limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;   # 添加

... ...

 40     server {

 41         listen       80 default_server;

 42         listen       [::]:80 default_server;

 43         server_name  _;

 44         root         /usr/share/nginx/html;

 45         limit_req zone=one burst=5;  # 添加

[root@web1 ~]# systemctl restart nginx.service 


# 再次测试

[root@myhost ~]# ab -c 100 -n 200 http://192.168.88.100/ 

... ...

Benchmarking 192.168.88.100 (be patient)

Completed 100 requests

Completed 200 requests

Finished 200 requests

... ...

Complete requests:      200

Failed requests:        194   # 失败了194个

... ...

防止缓冲区溢出

  • 缓冲区溢出定义:程序企图在预分配的缓冲区之外写数据。
  • 漏洞危害:用于更改程序执行流,控制函数返回值,执行任意代码。
# 配置nginx缓冲区大小,防止缓冲区溢出

[root@web1 ~]# vim /etc/nginx/nginx.conf

... ...

 17 http {

 18     client_body_buffer_size     1k;

 19     client_header_buffer_size   1k;

 20     client_max_body_size        1k;

 21     large_client_header_buffers 2 1k;

... ...

[root@web1 ~]# systemctl restart nginx.service 

Linux加固

  • 设置tom账号,有效期为2022-1-1
# 查看tom的账号信息

[root@web1 ~]# chage -l tom

最近一次密码修改时间                  :10月 12, 2021

密码过期时间                  :从不

密码失效时间                  :从不

帐户过期时间                      :从不

两次改变密码之间相距的最小天数     :0

两次改变密码之间相距的最大天数     :99999

在密码过期之前警告的天数    :7


[root@web1 ~]# chage -E 2022-1-1 tom

[root@web1 ~]# chage -l tom

最近一次密码修改时间                  :10月 12, 2021

密码过期时间                  :从不

密码失效时间                  :从不

帐户过期时间                      :1月 01, 2022

两次改变密码之间相距的最小天数     :0

两次改变密码之间相距的最大天数     :99999

在密码过期之前警告的天数    :7


# 设置账号永不过期,注意-E后面是数字-1,不是字母l

[root@web1 ~]# chage -E -1 tom

[root@web1 ~]# chage -l tom

最近一次密码修改时间                  :10月 12, 2021

密码过期时间                  :从不

密码失效时间                  :从不

帐户过期时间                      :从不

两次改变密码之间相距的最小天数     :0

两次改变密码之间相距的最大天数     :99999

在密码过期之前警告的天数    :7


# 设置新建用户的密码策略

[root@web1 ~]# vim /etc/login.defs 

 39 PASS_MAX_DAYS   99999    # 密码永不过期,设置最长有效期

 40 PASS_MIN_DAYS   0        # 密码最短使用时间,0表示随时可改密码

 41 PASS_MIN_LEN    5        # 密码最短长度

 42 PASS_WARN_AGE   7        # 密码过期前7天发警告

 47 UID_MIN                  1000   # 新建用户最小的UID

 48 UID_MAX                 60000   # 新建用户最大的UID
  • 用户安全设置
# 锁定tom账号

[root@web1 ~]# passwd -l tom

锁定用户 tom 的密码 。

passwd: 操作成功


[root@web1 ~]# passwd -S tom   # 查看状态

tom LK 2021-10-12 0 99999 7 -1 (密码已被锁定。)


# 解锁tom账号

[root@web1 ~]# passwd -u tom

解锁用户 tom 的密码。

passwd: 操作成功

[root@web1 ~]# passwd -S tom

tom PS 2021-10-12 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
  • 保护文件
# 查看文件的特殊属性

[root@web1 ~]# lsattr /etc/passwd

---------------- /etc/passwd    # 没有特殊属性


# 修改属性

chattr +i 文件    # 不允许对文件做任何操作,只能看

chattr -i 文件    # 去除i属性

chattr +a 文件    # 文件只允许追加

chattr -a 文件    # 去除a属性


[root@web1 ~]# chattr +i /etc/passwd

[root@web1 ~]# lsattr /etc/passwd

----i----------- /etc/passwd

[root@web1 ~]# useradd zhangsan

useradd:无法打开 /etc/passwd

[root@web1 ~]# rm -f /etc/passwd

rm: 无法删除"/etc/passwd": 不允许的操作

[root@web1 ~]# chattr -i /etc/passwd

[root@web1 ~]# rm -f /etc/passwd   # 可以删除

[root@web1 ~]# ls /etc/passwd

ls: 无法访问/etc/passwd: 没有那个文件或目录


# 恢复passwd文件

[root@web1 ~]# cp /etc/passwd- /etc/passwd


# 追加

[root@web1 ~]# chattr +a /etc/hosts

[root@web1 ~]# echo 'hello world' >> /etc/hosts

[root@web1 ~]# rm -f /etc/hosts

rm: 无法删除"/etc/hosts": 不允许的操作

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring boot自动装配原理

spring boot自动装配是通过启动类SpringBootApplication默认扫描本包极其子包&#xff0c;要想扫描外部文件需要在启动类上加相应注解

【Spring MVC篇】Cookie和Session的获取 Header的获取

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; Cookie是客户端保存用…

Vue--》深入学习Tailwind CSS掌握优雅而高效的前端样式开发

Tailwind CSS是一个非常强大且灵活的CSS框架&#xff0c;适用于开发者希望高度定制化界面样式的项目。今天博主就 Tailwind CSS 做一个简单介绍以及案例讲解&#xff0c;争取读者阅读文章后入门。 仅靠一篇文章博主也不可能将Tailwind CSS所有内容讲解的面面俱到&#xff0c;在…

算法学习——LeetCode力扣二叉树篇5

算法学习——LeetCode力扣二叉树篇5 513. 找树左下角的值 513. 找树左下角的值 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 示例 1: 输入: r…

CorelDRAW2024国内专业个人免费版下载

CorelDRAW是一款屡获殊荣的图形和图像编辑软件&#xff0c;包含两个绘图应用程序&#xff1a;一个用于矢量图及页面设计&#xff0c;另一个用于图像编辑。自1989年进入中国市场以来&#xff0c;CorelDRAW不断推出新的版本和功能&#xff0c;以满足用户不断变化的需求。 CorelD…

力扣面试题 16.21. 交换和(哈希表)

Problem: 面试题 16.21. 交换和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.分别求取array1与array2数组每一个元素的和&#xff08;sum1与sum2&#xff09;并同时将array2的元素存入一个set集合中&#xff1b; 2.如果sum1和sum2的和为奇数&#xff0c;则不…

Redis相关介绍

概念 Redis&#xff1a;非关系型数据库&#xff08;non-relational)&#xff0c;Mysql是关系型数据库(RDBMS) Redis是当今非常流行的基于KV结构的作为Cache使用的NoSQL数据库 为什么使用NoSQL 关系型 数据库无法应对每秒上万次 的读写请求 表中的存储记录 数量有限 无法简单…

【JavaEE】_JavaScript基础语法

目录 1. JavaScript概述 1.1 JavaScript简介 1.2 HTML、CSS、JavaScript的关系 1.3 JavaScrip的组成 2. JavaScript的书写形式 2.1 内嵌式 2.2 行内式 2.3 外部式 3. 输出 3.1 alert 3.2 console.log 4. 变量的使用 4.1 创建变量 4.1.1 使用var 4.1.2 使用let …

幻兽帕鲁Palworld专用服务器CPU内存配置怎么选择?

腾讯云幻兽帕鲁服务器配置怎么选&#xff1f;根据玩家数量选择CPU内存配置&#xff0c;4到8人选择4核16G、10到20人玩家选择8核32G、2到4人选择4核8G、32人选择16核64G配置&#xff0c;腾讯云百科txybk.com来详细说下腾讯云幻兽帕鲁专用服务器CPU内存带宽配置选择方法&#xff…

面试经典150题——无重复字符的最长子串

我生来就是高山而非溪流&#xff0c;我欲于群峰之巅俯视平庸的沟壑 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力解法 看到这个题目&#xff0c;我们是不是发现和上一篇内容刚刚讲过的长度最小的子数组题目很像&#xff1f;首先自然的暴力解法&#xff0c;就是遍历字符…

Java基于SpringBoot+vue的租房网站,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

119.乐理基础-五线谱-五线谱的标记

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;音值组合法&#xff08;二&#xff09; 力度记号&#xff1a;简谱里什么意思&#xff0c;五线谱也完全是什么意思&#xff0c;p越多就越弱&#xff0c;f越多就越强&#xff0c;然后这些渐强、渐弱、sf、fp这些标记…

探索设计模式的魅力:捕捉变化的风-用观察者模式提升用户体验

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、引言 核心概念 应用场景 可以解决的问题 二、场景案例 2.1 不用设计模式实现 2.2 存在问题 2.3 使用设计模式实现 2.4 成功克服 三、工作原理 3.1 结构图和说明 3.2 工作原理详解 3.3 实现步骤 四、 优…

算法-----高精度算法1(高精度加法,高精度减法)(详解)

什么是高精度算法&#xff1f; 高精度的意思就是他得名字----高的精度&#xff0c;简单说就是位数很大&#xff0c;而高精度算法就是将这些高精度数&#xff08;位数很大在几百几千几万位的数叫高精度数&#xff09;通过计算机的型式模拟出来结果。 为什么要用高精度算法&…

《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)

文章目录 5.1 Maven 和 Gradle - 构建你的堡垒5.1.1 基础知识5.1.2 重点案例&#xff1a;使用 Maven 构建一个简单的 Java 应用5.1.3 拓展案例 1&#xff1a;使用 Gradle 构建一个 Spring Boot 应用5.1.4 拓展案例 2&#xff1a;使用 Maven 管理多模块项目 5.2 Spring 框架 - 你…

CSS介绍

本章目标&#xff1a; CSS概述 三种样式表 简单选择器 复合选择器 盒子模型 常用背景样式 浮动 常用文本样式 伪类样式 列表样式 表格样式 定位 一、CSS概述: CSS&#xff1a;cascading style sheets-层叠样式表 专门负责对网页的美化 二、有三种使用方式&…

JavaScript中的常见算法

一.排序算法 1.冒泡排序 冒泡排序比较所有相邻的两个项&#xff0c;如果第一个比第二个大&#xff0c;则交换它们。元素项向上移动至 正确的顺序&#xff0c;就好像气泡升至表面一样。 function bubbleSort(arr) {const { length } arrfor (let i 0; i < length - 1; i)…

leetcode:55.跳跃游戏

1.解题思路&#xff1a;贪心算法看最大覆盖范围 2.模拟过程&#xff1a; 1.若数组长度等于1&#xff0c;直接返回True 2.循环遍历覆盖范围&#xff0c;选取最大的覆盖范围&#xff1b;若覆盖范围覆盖到了最后一个元素&#xff0c;直接返回true. 3.代码&#xff1a;(贪心无套…

【医学大模型 知识增强】SMedBERT:结构化语义知识 + 医学大模型 = 显著提升大模型医学文本挖掘性能

SMedBERT&#xff1a;结构化语义知识 医学大模型 显著提升医学文本挖掘任务性能 名词解释结构化语义知识预训练语言模型医学文本挖掘任务 提出背景具体步骤提及-邻居混合注意力机制实体嵌入增强实体描述增强三元组句子增强 提及-邻居上下文建模域内词汇权重学习领域自监督任务…

Servlet JSP-Eclipse安装配置Maven插件

Maven 是一款比较常用的 Java 开发拓展包&#xff0c;它相当于一个全自动 jar 包管理器&#xff0c;会导入用户开发时需要使用的相应 jar 包。使用 Maven 开发 Java 程序&#xff0c;可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在 Eclipse 里安装和配置 Maven 插…