博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017-2018-1 20155212 《信息安全系统设计基础》第4周学习总结
阅读量:5113 次
发布时间:2019-06-13

本文共 3887 字,大约阅读时间需要 12 分钟。

2017-2018-1 20155212 《信息安全系统设计基础》第4周学习总结

MyOD

  1. 参考教材第十章内容
  2. 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
  3. 不要把代码都写入main函数中
  4. 要分模块,不要把代码都写入一个.c中
  5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
  • 解题步骤
    • 增加头文件
    #include 
    #include
    #include
    #include
    • 修改File *fpint od
    • 修改fopen()open()
    • 修改fget()read()
  • main.c
#include 
#include
#include
#include
#include
#include
#define MAXDATA 1024int main(int args, char **argv){ int od; int reclen=1; long chnum; if((od=open(argv[1], O_RDONLY))==-1) { perror(argv[1]); exit(1); } char data[MAXDATA]; int i=0; char ch; while(read(od, &ch,reclen)==reclen) { if(i
  • odfunction.c
void odfunction(long num, char data[]){    long i, j;    for(i=0; i<1024; i=i+4)    {        if(i%16==0)        {            printf("\n%07o\t\t", i);        }        printf(" %02x%02x%02x%02x\t", data[i+3], data[i+2], data[i+1], data[i]);        if((i+4)%16==0)        {            printf("\n\t  ");            for (j = i - 12; j < i+4 ; j++)            {                if ((int)data[j] == 10)                {                    printf(" \\");                    printf("n ");                }                else                {                    printf("  %c ", data[j]);                }            }        }        if (data[i+4] ==0)         {            printf("\n\t  ");            for (int j = i-i%16; data[j-3] != 0; j++)             {                 if ((int) data[j] == 10)                  {                    printf(" \\");                    printf("n ");                 }                  else                 {                    printf("  %c ", data[j]);                 }            }                 break;        }    }    printf("\n%07o\n", num);}
  • 问题与解决
    • Ubuntu虚拟机无法正常启动,启动后黑屏,提示“硬件不匹配”
      • 刚开始以为是Ubuntu系统出了问题,于是恢复快照,回到之前的备份(当时部分代码忘记git,很尴尬)。恢复完发现还是不行,最后发现是因为我将VMWare Station升级到了14版本,与12版本中创建的虚拟机系统不兼容。
    • 调试一直正常,没想到突然make后出现如下情况1043723-20171015234838059-1438235756.png
      • 在网上找了很多情况,试了都没有用。最后发现错误原因在于我不小心删了函数名一个字母。
  • 运行结果截图
    1043723-20171015234334090-271207934.png

MyHead

  • head命令的分析
  1. 命令格式: head [参数]... [文件]...
  2. 命令功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
  • 伪代码
char ch;while(能读取到一个字符给ch && 换行记数<10){    if(ch!=换行符)    {        打印ch;    }    else    {        换行计数++;        打印ch;    }}
  • 产品代码
#include 
#include
#include
#include
#include
#include
#define MAXDATA 1024int main(int args, char **argv){ int file; int flag=0; if((file=open(argv[1], O_RDONLY))==-1) { perror(argv[1]); exit(1); } char data[MAXDATA]; int i=0; char ch; while(read(file, &ch, 1)==1 && flag<10) { if(ch!='\n') { printf("%c", ch); } else { flag++; printf("%c", ch); } } close(file); return 0;}
  • 测试代码
1121231234123451234561234567123456781234567891234567890123456789011234567890121234567890123123456789012341234567890123451234567890123456
112123123412345123456123456712345678
  • 运行结果截图
    1043723-20171016072749881-1804036679.png

MyTail

  • tail命令分析
  1. 命令格式:tail[必要参数][选择参数][文件]
  2. 命令功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
  • 伪代码
char 数据存储[MAX][MAX];char ch;int 行计数=0, 行字符计数=0;while(能读取到一个字符给ch && 行记数
=0 && i
  • 产品代码
#include 
#include
#include
#include
#include
#include
#define MAXDATA 1024int main(int args, char **argv){ int file; if((file=open(argv[1], O_RDONLY))==-1) { perror(argv[1]); exit(1); } char data[MAXDATA][MAXDATA]; int i=0, j=0; char ch; while(read(file, &ch, 1)==1 && i
=0&&k
  • 测试代码
012345678901234567890123456789012345678012345678901234567012345678901234560123456789012345012345678901234012345678901230123456789012012345678901012345678900123456789012345678012345670123456012345012340123012010
012345678012345670123456012345012340123012010
  • 运行结果截图
    1043723-20171016075608443-1919775378.png

转载于:https://www.cnblogs.com/dky20155212/p/7675135.html

你可能感兴趣的文章
HTML5应用盈利难,解决5大难题是关键
查看>>
HTML5设备能否改变企业应用开发?
查看>>
单反快门检测软件
查看>>
python静态方法和类方法
查看>>
模拟登录
查看>>
简单的CRUD(二)
查看>>
Spring MVC 跳转失败,但配置正确填坑
查看>>
UDP通信后端缓冲区 List<T>
查看>>
c++/c关于函数指针
查看>>
贝叶斯分析基本概念
查看>>
判断单链表是否存在环及寻找环的入口点
查看>>
Windows密码本地破解通用方法
查看>>
App研发录得源码
查看>>
Nodejs sublime text 3安装与配置
查看>>
《转》Python学习(18)-python函数(二)
查看>>
awk应用场景之过滤举例
查看>>
编译与链接的简单过程小结
查看>>
119 - Greedy Gift Givers
查看>>
[置顶] 可选参数及命名实参在一起
查看>>
Integer Inquiry_hdu_1047(大数).java
查看>>