Materials Studio学习笔记(三)——有机物分子

  本文学习笔记是参考B站UP主月只蓝的视频内容。

UP主的主页链接为

月只蓝的个人空间-月只蓝个人主页-哔哩哔哩视频

月只蓝的视频内容较为基础,适合初学者入门。

本文视频内容链接为: 【[月只蓝带你学Materials Studio] 建模篇 第2讲 分子模型绘制专题-哔哩哔哩】

1 有机物分子

有机物可以分为两类,一种是链状化合物,另一种是环状化合物。由之前的内容可以,有机物的绘制过程如下所示:

  1. 先环后链画骨架。
  2. 处理杂原子。
  3. 处理双键、三键。
  4. 加氢、Clean。
  5. 检查核对。

1.1 绘制链状有机物

(1)十二烷C_{12}H_{26}

十二烷的分子式如下所示:

首先打开Materials Studio软件,首先绘制C原子骨架,选择C元素连接成12个C的骨架:

 因为元素没有双键,直接进行加氢:

之后点击Clean:

查看左下角的Properties:

(2)C_2H_4 

十二烷的分子式如下所示:

首先绘制C原子骨架,选择C元素绘制碳碳单键:

因为乙烯是碳碳双键,点击两个碳原子之间的键,将碳碳单键改为碳碳双键:

 将碳碳双键加氢:

再点击Clean为:

 查看左下角的Properties:

可以看到分子式为C_2H_4

 (3)甘氨酸Gly C_2H_5NO_2

甘氨酸的分子式为:

首先首先绘制C原子骨架,在这对于氧原子和氮原子首先将其化成C原子:

 因为分子中有氮原子,按Ctrl+鼠标左键,选择该原子:

因为将更换为N原子,点击上面选项栏中Modify选线栏中的Modify Element,再点击Nitrogen,这样就将C原子换为了N原子。同理,连续点击上图中右下角和最上面的碳原子,更换原子:

因为有碳氧双键,鼠标点击碳氧单键将其改为双键得:

 最后再将补氢得:

最后Clean:

最后检查最小角的分子式为:

(4) 棕榈酸(十六烷酸)C_{16}H_{32}O_2

分子式如下所示:

首先首先绘制C原子骨架:

将需要变化的C变为O得:

加氢得:

最后Clean:

最后检查左下角的分子式为:

1.2 绘制环状有机物 

环状有机物包括脂肪环和苯环。

脂肪环下面的例子包括环己烷和环戊烷。

(1)环戊烷

环戊烷的分子式为:

下面开始绘制环戊烷,点击上方Sketch ring选项栏中的5 member:

点击之后如下结果:

加氢得:

(2)环己烷

环己烷的分子式为:

同理,对于环己烷, 点击上方Sketch ring选项栏中的6 member:

补氢:

而如果想要画碳原子数量大于6的环,可以直接电路Sketch ring中的任意一个,然后直接按键盘中的数字进行修改,需要注意的是键盘需要改为英文键盘,如下所示:

加氢得:

(4)下面用Materials Studio来绘制苯环。苯环有两个分子式,一种是凯库勒式,一种是共振式。

凯库勒式的分子式如下所示:

共振式的分子式为:

对于凯库勒式,点击Sketch ring选项中的6 member:

添加双键得:

加氢得:

而对于共振键,可以使用Materials Studio软件直接绘制,按住点击Sketch ring中的6 member,按住Alt,在界面中点击鼠标左键:

加氢得:

共振式和凯库勒式之间能够相互转换的,例如将共振式转换为凯库勒式,先选择整个分子式:

点击Build选项栏中的Bond键:

进入下面这个界面,如下所示:

Kekule式和Resonant分别表示的是凯库勒式和共振式,如果想要什么公式可以直接选择。在上面转换为凯库勒式如下所示:

<think>好的,我现在需要帮助用户了解或实现得物签名的相关技术,特别是签名算法的实现方式。首先,我需要收集已有的信息。根据用户提供的引用,特别是引用[4]和[5],得物的签名算法可能涉及逆向工程分析,使用了JavaScript中的XMLHttpRequest重写来拦截请求,并在请求中包含特定的sign参数。这可能意味着签名生成是在客户端进行的,通常在前端JavaScript代码中完成。 接下来,我应该考虑常见的签名生成方法。常见的Web应用签名算法通常使用HMAC、AES、RSA或自定义的哈希组合。引用[1]提到了RSA算法,但得物的签名可能更倾向于使用HMAC-SHA256之类的哈希算法,结合时间戳、随机数和请求参数进行签名,以防止篡改和重放攻击。 用户可能需要具体的步骤,比如逆向分析得物的JavaScript代码,找到生成sign的函数,提取关键参数和密逻辑。引用[5]中的代码片段展示了如何重写XMLHttpRequest的open方法来拦截请求,这可能用于调试和定位签名生成的代码位置。 此外,引用[4]提到使用Python进行算法还原,所以可能需要在Python中复现JavaScript的签名生成逻辑。这通常涉及分析请求参数如何排序、拼接,以及如何与密钥结合进行哈希或密。需要注意反爬机制,如obfuscation(代码混淆)或动态密钥,这可能需要使用AST(抽象语法树)解析或动态执行来还原算法。 用户可能还需要了解如何应对反调试措施,比如在Chrome开发者工具中使用断点调试,或者使用工具如Frida进行Hook。同时,引用[3]和[4]强调了法律和合规问题,确保研究仅用于学习目的,不用于非法用途。 最后,应该提醒用户注意法律风险,遵循网站的使用条款,避免侵犯知识产权或违反计算机安全法律。总结起来,实现得物签名需要逆向工程分析前端代码,提取关键算法,处理可能的混淆和反调试,最后用目标语言如Python复现算法。</think>### 得物签名算法实现方式分析 得物签名算法主要用于接口请求的身份验证和防篡改保护,常见实现方式涉及以下技术点: #### 1. **签名参数组成** 签名通常由以下参数动态生成: - 请求参数(经排序、过滤空值后拼接) - 时间戳(如:$timestamp=1620000000$) - 随机数(如:$nonce=5a8s3d$) - 设备指纹(如:$device\_id=abcdef$) - 应用密钥(密盐值,可能动态获取)[^4] 示例参数拼接逻辑: $$ \text{sign\_str} = \text{path} + \text{sorted\_params} + \text{timestamp} + \text{nonce} $$ #### 2. **密算法类型** 根据逆向分析,得物可能采用以下组合: - **HMAC-SHA256**:对拼接字符串进行哈希运算 - **AES/Base64编码**:对结果二次处理 - **自定义位移/异或操作**:增逆向难度[^5] #### 3. **JavaScript代码混淆** 关键函数可能被混淆,例如: ```javascript function _0x12ab5(a, b) { return a ^ b << 3; } // 需要AST解析还原控制流 ``` #### 4. **Python算法还原示例** ```python import hmac import hashlib def generate_sign(params, secret_key): # 1. 参数排序并拼接 sorted_str = '&'.join([f"{k}={v}" for k,v in sorted(params.items())]) # 2. HMAC-SHA256密 sign = hmac.new(secret_key.encode(), sorted_str.encode(), hashlib.sha256).hexdigest() # 3. 自定义处理(示例) return sign.upper() + str(int(time.time())) ``` #### 5. **反爬对抗措施** - 动态密钥:通过接口定期更新密盐值 - 环境检测:验证是否在真机环境运行 - 请求频率限制:异常高频触发验证码[^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值