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补充博客)的更多相关文章

  1. 20135328信息安全系统设计基础第一周学习总结(Linux应用)

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用Linux中用户管理命令/ ...

  2. 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)

    第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...

  3. 2017-2018-1 20155232 《信息安全系统设计基础》第十周课堂测试(ch06)补交

    # 2017-2018-1 20155232 <信息安全系统设计基础>第十周课堂测试(ch06)补交 上课时完成测试后在提交的时候,没有提交成功,进行补交. 1.下面代码中,对数组x填充后 ...

  4. 2017-2018-1 20155330 《信息安全系统设计基础》第10周课堂测试&课下作业

    2017-2018-1 20155330 <信息安全系统设计基础>第10周课堂测试&课下作业 stat命令的实现-mysate 学习使用stat(1),并用C语言实现 提交学习st ...

  5. 2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

    2017-2018-1 20155318 <信息安全系统设计基础>第2周课堂实践.makefile.以及myod 测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置 ...

  6. LINUX信息安全系统设计基础第一周学习总结

     Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...

  7. LINUX信息安全系统设计基础第二周学习总结

    1 Linux命令 2 man命令 1.Terminal(终端) Linux 系统还提供了一个叫做终端模拟器的程序(Terminal),下面几个比较常见的终端模拟器,例如 gnome-terminal ...

  8. 2019-2020-1 20175223 《信息安全系统设计基础》MyOD

    目录 一.要求 二.设计流程 1. 需求分析 2. 概要设计 伪代码 3. 详细设计 main.c tans_0x.c tans_pr.c tansp.h 三.编写Makefile,并制作动.静态库 ...

  9. 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait

    20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...

随机推荐

  1. SQL Server ->> 使用CROSS APPLY语句是遇到聚合函数中包含外部引用列时报错

    本次遇到的问题是CROSS APPLY的内部查询语句中的聚合函数包含CASE WHEN判断,且同时又内部语句的表的列和外部引用的表的列,此时会报下列的错误. 消息 8124,级别 16,状态 1,第 ...

  2. Oracle DB 12.2(12cR2)的一个新特性:硬解析失败的SQL语句(需要符合一定条件)打印到alert_sid.log中.

    How to Identify Hard Parse Failures (Doc ID 1353015.1)Bug 16945190 - Diagnostic enhancement to dump ...

  3. Azure Cosmos DB 使用费用参考

    之前在学习Cosmos DB 中SQL API(DocumentDB) 的时候,也就是之前做的一些笔记,看到有使用费用的一些介绍,就有兴趣的去了解了下,做了一下简单的总结. 想了解更多或是购买使用的还 ...

  4. 滑动cell的时候执行动画效果

    滑动cell的时候执行动画效果 效果图: 源码: // // ViewController.m // AniTab // // Created by XianMingYou on 15/2/26. / ...

  5. 使用 Versions for mac 进行版本控制

    刚开始折腾 xcode 5.1 自己的svn版本控制,应该很好用,但是用不好,搞了半天也没法把工程传到svn服务器上去. 在 xcode 5.1 Soure Control 中弄 点击 Check O ...

  6. September 14th 2017 Week 37th Thursday

    Don't let the past steal your present. 别让过去悄悄偷走了我们的当下. We take what we can get and make the best of ...

  7. 关于print缩不缩进%有else没else的影响

    关于print缩不缩进%有else没else的影响 if gender == "男": # = 赋值. == 判断print("上厕所")else: print ...

  8. 【转载】uWSGI配置翻译

    英文原版: http://uwsgi-docs.readthedocs.io/en/latest/Options.html 转载地址: http://www.cnblogs.com/zhouej/ar ...

  9. [转]HBase高可用性的新阶段

    From:http://m.csdn.net/article_pt.html?arcid=2823943 Apache HBase是一个面向线上服务的数据库,其原生支持Hadoop的特性,使其成为那些 ...

  10. 代码覆盖率测试及 GitHub 自动化集成

    本文对应项目为 learn-coverage-test,可以对照项目案例进行阅读. 覆盖率测试 在写代码的时候,我们有时候会进行代码测试以保证我们代码的可执行性.但是测试代码只能保证测试案例能够通过, ...