2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)相关的知识,希望对你有一定的参考价值。

2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

课堂提交题目要求

编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能

代码码云链接补交

  • 源代码main函数
#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include"head.h"


int main(int argc,char *argv[])
{

    int i;
    int n1=0,n2=0,n3=0,n4=0;
    for(i=1;i<argc-1;i++)
    {
        switch(argv[i][2])
        {
            case ‘c‘:n1=1;break;
            case ‘x‘:n2=1;break;
            case ‘d‘:n3=1;break;
            case ‘o‘:n4=1;break;
        }
    }
    int fd=10;
    fd=open(argv[argc-1],O_RDONLY,0);  
//printf("%d",fd);

    if(fd==-1){printf("Error!\\n");exit(1);}

    myod(fd,n1,n2,n3,n4);
    close(fd);
    return 0;
}
  • 源代码myod.c
#include<stdio.h>
#include<unistd.h>
void myod(int fd,int n1,int n2,int n3,int n4)
{
    char ch,line[16];
    int i;
    int a=0;
    int j=0;
    while(read(fd,&ch,1)!=0){
        line[j%16]=ch;
    if((j+1)%16==0){
        printf("%07o  ",16*a);
a++;
        if(n1){for(i=0;i<16;i++)
        {
            if(line[i]==‘\\n‘)
            {printf("%5s","\\\\n");continue;}
        if(line[i]==‘\\t‘)
            {printf("%5s","\\\\t");continue;}
            putchar(line[i]);
            putchar(‘ ‘);
            putchar(‘ ‘);
            putchar(‘ ‘);
            putchar(‘ ‘);
        }
        putchar(‘\\n‘);}
        if(n2){printf("         ");for(i=0;i<16;i++)
        {
            
            if(line[i]==‘\\n‘)
            {printf("0%-4x",‘\\n‘);continue;}
        if(line[i]==‘\\t‘)
            {printf("0%-4x",‘\\t‘);continue;}
            printf("%-5x",line[i]);
        }
        putchar(‘\\n‘);
        }

        if(n3){printf("        ");for(i=0;i<16;i++)
        {

            if(line[i]==‘\\n‘)
            {printf("%-5d",‘\\n‘);continue;}
        if(line[i]==‘\\t‘)
            {printf("%-5d",‘\\t‘);continue;}
            printf("%-5d",line[i]);
        }
        putchar(‘\\n‘);
        }
        if(n4){printf("       ");for(i=0;i<16;i++)
        {
            if(line[i]==‘\\n‘)
            {printf("%-5o",‘\\n‘);continue;}
        if(line[i]==‘\\t‘)
            {printf("%-5o",‘\\t‘);continue;}
            printf("%-5o",line[i]);
        }
        putchar(‘\\n‘);
        }
    }
    j++;

    }
}

课堂题目理解

  • od的功能(参考Linux od命令详细介绍及用法实例):
    od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
    选项-t:指定输出格式,格式包括a、c、d、f、o、u和x。

  • od -tx XXX是以十六进制输出XXX的内容,默认以四字节为一组显示。(XXX中字符对应的ascii值的十六进制表示,且每四字节显示的顺序是字符从后向前的顺序)截图如下:

技术分享图片

  • od -tx -tc XXX就是在十六进制输出其ascii值的同时,显示对应的文件内容,-tx和-tc的前后顺序决定了文本内容和十六进制ascii值的上下顺序。截图如下:

技术分享图片

  • od -tc -tx1 XXX是每列输出一个字节,打印文件内容和对应的十六进制ascii值(题目要求理解后编写MyOD实现此功能)。截图及和上面功能对比如下:

技术分享图片

题目截图

技术分享图片



以上是关于2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)的主要内容,如果未能解决你的问题,请参考以下文章

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

2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

2017-2018-1 20155305实验三 实时系统

20155305《网络对抗》信息搜集与漏洞扫描

20155305mypwd的实现和测试

2017-2018-1 20155307 信息安全系统设计基础》实验五 通信协议设计