zoukankan      html  css  js  c++  java
  • 2019-2020-1 20175223 《信息安全系统设计基础》第2周学习总结

    目录


    教材学习内容总结

    • 第一周要点:
      • 要点1:TCP/IP协议族简介;
      • 要点2:正则表达式基础;
      • 要点4:教材第二章。

    • 教材第二章 “信息的表示和处理” 要点:
      • 要点1:信息存储:
        • 大端法与小端法;
        • 整形与浮点型对同一数值的格式;
        • 布尔代数:& , | , | , ^
      • 要点2:C语言中的运算:
        • 位级运算:布尔运算、掩码运算;
        • 逻辑运算:&& , || , !
        • 移位运算:逻辑左移、逻辑右移(无符号数)、算数右移(有符号数);
      • 要点3:整数表示:
        • 无、有符号数编码;
        • 有符号数原码、反码表示;
        • 有、无符号数之间的转换
        • 扩展、截断数字;
      • 整数运算:
      • 浮点数:
        • 二进制小数;
        • 舍入;
        • 舍入;
        • 浮点运算;
        • C语言中的浮点数。


    教材学习中的问题和解决过程

    1. 什么是位模式?

    • 问题回答:
      计算机中所有二进制的0、1代码所组成的数字串。在位模式中,从右向左每位有一个固定的权值,相邻位之间权是一个固定的比例关系。

    2. 对于 有符号数和无符号数之间的转换 的理解

    在转换时, 位模式中每一位的数值是一样的、不改变的;改变的是最高位(有符号数符号位、无符号数最高有效位)的权值。

    3. 数值绝对值相同,正数与负数之间的转换(练习题 2.21)

    表达式 类型 求值
    -2147483647-1 == 2147483648U ( _____________________ ) ( _____________________ )
    -2147483647-1 < 2147483647 ( _____________________ ) ( _____________________ )
    -2147483647-1U < 2147483647 ( _____________________ ) ( _____________________ )
    -2147483647-1 < -2147483647 ( _____________________ ) ( _____________________ )
    -2147483647-1U < -2147483647 ( _____________________ ) ( _____________________ )
    • 问题原因分析:
      -2147483647-1 值得是C语言中 TMin 的写法,不可简单写成 0x80000000
      还是没有搞懂:数值绝对值相同的情况下,正数与负数之间的转换。
      除0以外,符号位取反,数值位按位取反,再+1;即可将正数(或负数)转换为负数(或正数)。
      例如:
      第5个小题:-2147483647-1U0x80000000 (2^31), +21474836470x7FFFFFFF ((2^31)-1) ,-21474836470x7FFFFFFF 符号位取反(0xFFFFFFFF),数值位按位取反(0x80000000),再+1(==0x80000001)。由于是无符号数与有符号数之间的比较,有符号数按无符号数看,所以-2147483647-1U < -21474836470x01

    • 问题解决方案:

    表达式 类型 求值
    -2147483647-1 == 2147483648U 无符号数 0x01
    -2147483647-1 < 2147483647 有符号数 0x01
    -2147483647-1U < 2147483647 无符号数 0x00
    -2147483647-1 < -2147483647 有符号数 0x01
    -2147483647-1U < -2147483647 无符号数 0x01

    4. 对于 有符号数的加法溢出 的疑惑

    • 疑惑:
      1 - 1 的存在溢出么?
      [0001] - [0001] = [0000] 对么?

    • 疑惑解答:
      1 - 1 的存在溢出。
      [0001] - [0001] = [0000] 错误。
      对于无符号数而言,减法直接借位减。但对于有符号数来说,被减数为负数时,是加上该负数的补码。
      这么来说的话, 1 - 1 的二进制过程为:
      [0001] + [1111] = [10000] 截断4位之后为 [0000] ,此时是溢出。

    运行如下实例:

    # include <stdio.h>
    
    int tadd_ok(int x, int y);
    
    int main() {
        printf("%d
    ",tadd_ok(0X00000001, 0x8FFFFFFF));
        printf("%d
    ",tadd_ok(1, -1));
    }
    
    int tadd_ok(int x, int y) {
        int sum = x+y;
        int neg_over = x < 0 && y < 0 && sum >= 0;
        int pos_over = x >= 0 && y >= 0 && sum < 0;
        return !neg_over && !pos_over;
    }
    

    结果:

    Linux> ./a.out 
    1
    1
    

    5. 用 myod XXX 实现 Linux 下 od -tx -tc XXX 的功能


    [代码托管]

    对应仓库网页链接:https://gitee.com/Yogile/YogileOne

    2019-2020-第1学期subject_5_Cpt_System

    • 代码提交过程截图:

    • 代码量截图:



    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 4000行 20篇 280小时
    第一周 66/66 1/1 24/24
    第二周 427/493 2/3 25/49
    • 计划学习时间:16小时

    • 实际学习时间:25小时


    参考资料

  • 相关阅读:
    最全Linux应急响应技巧
    2016年总结
    idapython实现动态函数调用批量注释
    CVE-2015-7645 analyze and exploit
    CVE-2010-3654分析及利用
    apt28组织新的flash漏洞利用包dealerschoice分析
    Spartan Exploit Kit分析
    the beginner's guide to idapython
    一个windows下的ddos样本
    locky勒索样本分析
  • 原文地址:https://www.cnblogs.com/Yogile/p/11588955.html
Copyright © 2011-2022 走看看