信息安全原理与技术第三次实验:系统安全实验

信息安全原理与技术第三次实验:系统安全实验

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!

一、实验目的

1.通过实验深入理解入侵检测系统的原理和工作方式。
2.熟悉入侵检测工具 Snort 在 Windows 操作系统中的安装和配置方法。

二、实验原理

1.IDS
入侵检测系统(Intrusion Detection System,IDS)是针对计算机和网络系统资源上的恶意使用行为进行识别和响应的处理系统。它在不影响网络性能的前提下,对网络进行警戒、监控,从计算机网络的若干关键点收集信息,通过分析这些信息,查看网络中是否有违反安全策略的行为和遭到攻击的迹象,从而扩展了系统管理员的安全管理能力,提高了信息安全基础结构的完整性。通过利用入侵检测系统,可以有效的防止或减轻来自网络的威胁,它已经成为防火墙之后的又一道安全屏障,并在各种不同的环境中发挥关键作用。
(1)入侵检测系统的分类
根据采集数据源的不同,入侵监测系统可分为基于网络的入侵检测系统(NIDS)和基于主机的入侵检测系统(HIDS)。
NIDS 使用监听的方式,在网络通信的原始数据包中寻找符合网络入侵模板的数据包。NIDS 的网络分析引擎放置在需要保护的网段内,独立于被保护的机器之外,不会影响这些机器的 CPU、I/O 与磁盘等资源的使用,也不会影响业务系统的性能。NIDS 一般保护的是整个网段。
HIDS 安装在被保护的机器上,在主机系统的审计日志或系统操作中查找信息源进行智能分析和判断,例如操作系统日志、系统进程、文件访问和注册表访问等信息。由于 HIDS安装在需要保护的主机系统上,这将影响应用系统的运行效率。HIDS 对主机系统固有的日志与监视能力有很高的依赖性,它一般保护的是其所在的系统。
(2)入侵检测系统的实现技术
入侵检测系统的实现技术可以简单的分为两大类:基于特征的检测和基于异常的检测。
基于特征的检测技术主要包括模式匹配和协议分析两种检测方法。
模式匹配就是将收集到的信息与已知的网络入侵和系统误用模式知识库进行比较,以发现入侵行为。
协议分析相对于模式匹配技术是一种更新的入侵检测技术。它首先捕捉数据包,然后对数据包进行分析,包括网络协议和命令解析,在解析的代码中快速检测某个攻击特征是否存在。
基于异常的检测技术有很多,例如采用统计模型、专家系统等技术来实现。它首先要对系统的行为进行统计,获得系统正常使用时的统计性能,如访问次数、操作失败次数和延时等。统计性能被用来与网络、系统的行为进行比较,当观察值在正常值范围之外时,入侵检测系统就会判断有入侵发生。
(3)入侵检测系统的部署原则
基于主机的入侵检测系统其安装部署简单,主要安装在检测的主机系统中,而基于网络的入侵检测系统复杂很多,需要考虑部署原则,以优化性能。
2.轻量级的网络入侵检测系统 Snort
自 20 世纪最后几年来,随着 Internet 的广泛应用,各种 IDS 产品层出不穷。其中 Snort是目前应用最为广泛的一个 IDS 产品,它有如下特点:
·它是一个轻量级的网络入侵检测系统,所谓轻量级是指该软件在运行时只占用极少的网络资源,对原有网络性能影响很小。
·从数据来源上看,它是一个基于网络入侵的检测软件,即它作为嗅探器对发往同一网络上的其它主机的流量进行捕获,然后进行分析。
·它的工作采用误用检测模型,即首先建立入侵行为特征库,然后在检测过程中,将收集到的数据包和特征码进行比较,以得出是否入侵的结论。
·它是用 C 语言编写的开放源代码网络入侵检测系统。其源代码可以被自由地读取、传播和修改,任何一个程序员都可以自由地为其添加功能,修改错误、任意传播。
·它是一个跨平台软件,所支持的操作系统非常广泛,比如 Windows,Linux,SunOS等都支持。在实验中我们将在 Windows 系统上构建 Snort。
·Snort 有 3 种主要模式:信息包嗅探器、信息包记录器或成熟的入侵探测系统。
Snort 的一些功能:
·实时通信分析和信息包记录。
·包装有效载荷检查。
·协议分析和内容查询匹配。
·探测缓冲溢出、秘密端口扫描、CGI 攻击、SMB 探测、操作系统侵入尝试。
·对系统日志、指定文件、UNIX socket 或通过 Samba 的 WinPopus 进行实时报警。
在 Windows 平台上安装 Snort 所需的软件包见表 3.5。
在这里插入图片描述

三、实验环境

一台安装 Windows 系统的计算机,连接到本地局域网中。

四、实验内容

1.在 Windows 环境下安装 Snort。
(1)安装 Apache_2.0.46
①双击 apache_2.0.46-win32-x86-no_src.msi,安装在文件夹 C:\apache 下。安装程序会在该文件夹下自动产生一个子文件夹 apache2。
②为了避免 Apache Web 服务器的监听端口与 Windows IIS 中的 Web 服务器的 80监听端口发生冲突,这里需要将 Apache Web 服务器的监听端口进行修改。打开配置文件C:\apache\apache2\conf\httpd.conf,将其中的 Listen 80,更改为 Listen50080。如图 3.34 所示。
在这里插入图片描述
图 3.34 修改 apache 的监听端口
③单击“开始”按钮,选择“运行”,输入 cmd,进入命令行方式。输入下面的命令:

C:\>cd C:\apache\apache2\bin
(C:\apache\apache2\bin\>)apache -k install

或者直接输入:(C:\>)C:\apache\apache2\bin\apache -k install
(由于虚拟机上已安装,所以会提示服务已安装的错误提示。)
这是将 apache 设置为以 Windows 中的服务方式运行。如图 3.35 所示。
在这里插入图片描述
在这里插入图片描述
图 3.35 Apache 以服务方式运行
网页输入:http://localhost/检测是否搭建成功:
在这里插入图片描述
(2)安装 PHP
①解压缩 php-4.3.2-Win32.zip 里面的文件至 C:\php\。
② 复 制 C:\php 下 php4ts.dll 至 %systemroot%\System32 , 复 制 C:\php 下 php.ini-dist至%systemroot%\,然后修改文件名为:php.ini。
③ 添 加 gd 图 形 库 支 持 , 把 C:\php\extensions\ php_gd2.dll 拷 贝到%systemroot%\System32,在 php.ini 中添加 extension=php_gd2.dll。如果 php.ini 有该句,将此语句前面的“”注释符去掉。如图 3.36 所示
在这里插入图片描述
图 3.36 修改 php.ini 配置文件
④添加 Apache 对 PHP 的支持。在 C:\apache\apache2\conf\httpd.conf 中添加:LoadModule php4_module "C:/php/sapi/php4apache2.dll"

AddType application/x-httpd-php .php

如图 3.37 和图 3.38 所示。
在这里插入图片描述
图 3.37 修改 httpd.conf
在这里插入图片描述
图 3.38 修改 httpd.conf
⑤单击“开始”按钮,选择“运行”,输入 cmd 进入命令行方式,在弹出的窗口中输入下面命令:

net start apache2

这将在 Windows 中启动 Apache Web 服务。如图 3.39 所示。
在这里插入图片描述
图 3.39 启动 Apache Web 服务
⑥在 C:\apache\apache2\htdocs 目录下新建 test.php 测试文件,test.php 文件内容为<?phpinfo();?>
之后在服务界面(win+r 输入 services.msc/右键我的电脑点击管理找到服务)重启一下apache 服务:
在这里插入图片描述
使用 http://127.0.0.1:50080/test.php,测试 PHP 是否安装成功,如安装成功,则在浏览器中出现 test.php 的网页。如图 3.40 所示。
在这里插入图片描述
图 3.40 PHP 测试页
(3)安装 snort
安装 snort-2_0_0.exe,snort 的安装路径在 C:\snort。
(4)安装配置 MySQL 数据库
①安装 Mysql 到文件夹 c:\mysql,并在配置向导处设置 root 密码为 123,并在命令行方式下进入 C:\mysql\bin,输入下面的命令:

(C:\mysql\bin>)mysqld-nt –install

或者直接输入:c:\mysql\bin\mysqld-nt –install,由于环境问题,可能是已安装以及已开启,所以不用在意已存在以及已开启的提示。
这将使 mysql 在 Windows 中以服务方式运行。如图 3.41 所示
在这里插入图片描述
图 3.41 MySQL 以服务方式运行
②在命令行方式下输入 net start mysql,启动 mysql 服务。如图 3.42 所示。
在这里插入图片描述
图 3.42 启动 MySQL 服务
③在命令行方式下进入 C:\mysql\bin,输入下面的命令:

c:\>cd c:\mysql\bin
(C:\mysql\bin>)mysql -u root -p

(也可使用:mysql>set password for "root"@"localhost" = password('123'); #允许 root 从localhost 连接,但使用上述方式即可)
这是将出现 Enter password 提示符,直接按“回车”,以 123 密码的 root 用户登录 Mysql数据库。如图 3.43 所示。
在这里插入图片描述
在这里插入图片描述
图 3.43 以 root 用户登录 MySQL 数据库
④在 Mysql 提示符后输入下面的命令:

(Mysql>)create database snort;
(Mysql>)create database snort_archive;

上面的 create 语句建立了 snort 运行必需的 snort 数据库和 snort_archive 数据库。
⑤输入 quit 命令退出 Mysql 后,在出现的提示符之后输入:

(C:\mysql\bin>)mysql -D snort -u root -p <C:\snort\contrib\create_mysql
(C:\mysql\bin>)mysql -D snort_archive -u root -p <C:\snort\contrib\create_mysql

上面两个语句表示以 root 用户身份,使用 C:\snort\contrib 目录下的 create_mysql 脚本文件,在 snort 数据库和 snort_archive 数据库中建立了 snort 运行必需的数据表。
屏幕上会出现密码输入提示,由于这里使用的是 123 密码的 root 用户,直接按“回车”即可。如图 3.44 所示。
在这里插入图片描述
图 3.44 分别在 snort 和 snort_archive 库中建立 snort 运行需要的数据表
⑥参照步骤③,再次以 root 用户登陆 mysql 数据库,在提示符后输入下面的语句:

(mysql>)grant usage on *.* to”acid”@”localhost”identified by “acidtest”;
(mysql>)grant usage on *.* to “snort”@”localhost”identified by “snorttest”;

注意引号容易引起错误。
上面两个语句表示在本地数据库中建立了 acid(密码为 acidtest)和 snort(密码为snorttest)两个用户,以备后面使用。如图 3.45 所示。
在这里插入图片描述
图 3.45 在本地数据库中创建 acid 用户和 snort 用户
⑦在 Mysql 提示符后面输入下面的语句:

(mysql>)grant select,insert,update,delete,create,alter on snort.* to “acid”@”localhost”;
(mysql>)grant select,insert on snort.* to “snort”@”localhost”;
(mysql>)grant select,insert,update,delete,create,alter on snort_archive.* to“acid”@”localhost”;

这是为新建的用户在 snort 和 snort_archive 数据库中分配权限。如图 3.46 所示。
在这里插入图片描述
图 3.46 分配权限
(5)安装 adodb
将 adodb453.zip 解压缩至 C:\php\adodb 目录下,即完成了 adodb 的安装。
(6)安装配置数据控制台 acid
①解压缩 acid-0.9.6b23.tar.gz 至 C:\apache\apache2\htdocs\acid 目录下。
②修改 C:\apache\apache2\htdocs\acid 下的 acid_conf.php 文件:

$DBlib_path=”C:\php\adodb”;
$DBtyp=”mysql”;
$alert_dbname=”snort”;
$alert_host=”localhost”;
$alert_port=”3306”;
$alert_user=”acid”;
$alert_password=”acidtest”;
/*Archive DB connection parameters*/
$archive_dbname=”snort_archive”;
$archive_host=”localhost”;
$archive_port=”3306”;
$archive_user=”acid”;
$archive_password=”acidtest” $ChartLib_path=”C:\php\jpgraph\src”;

③查看 http://127.0.0.1:50080/acid/acid_db_setup.php 网页,单击 create ACID AG 建立数据库,如图 3.47 所示。
在这里插入图片描述
图 3.47 acid_db_setup.php 网页
由于 mysql 版本超过 4.1,密码的加密验证方式改变了,所以需要先通过设置用户名的old_password 参数改变加密认证方式,否则会出如下错误:
在这里插入图片描述
解决方法:

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('acidtest')
-> WHERE Host = 'localhost' AND User = 'acid';
mysql> FLUSH PRIVILEGES;

注意替换空格。
按照系统提示建立数据库,正常建立后出现相应的网页。如图3.48所示。
在这里插入图片描述
在这里插入图片描述
图 3.48 ACID 数据库建成后的网页
(7)安装 jpgraph 库
①解压缩 jpgraph-1.12.2.tar.gz 至 C:\php\jpgraph
②修改 C:\php\jpgraph\src 下 jpgraph.php 文件,查看是否以下句子被注释:

define('CACHE_DIR','/tmp/jpgraph_cache/')

(8)安装 winpcap
按照默认选项和默认路径安装 winpcap。Winpcap 的版本可能会影响下面启动 snort。
(9)配置并启动 snort
①打开 C:\snort\etc\snort.conf 文件,将文件中的下列语句:

include classification.config
include reference.config

修改为绝对路径:

include C:\snort\etc\classification.config
include C:\snort\etc\reference.config

②在该文件的最后加入下面的语句:

output database: alert,mysql,host=localhost user=snort password=snorttest dbname=snort encoding=hex detail=full

③命令行方式下输入下面的命令:

C:\>cd C:\snort\bin
C:\snort\bin>snort -c ”C:\snort\etc\snort.conf” -l ”C:\snort\log” -d -e -X

-X 参数用于在数据链接层记录 raw packet 数据
-d 参数记录应用层的数据
-e 参数显示/记录第二层报文头数据
-c 参数用以指定 snort 的配置文件的路径
上面的命令将启动 snort,如果 snort 正常运行,系统最后将显示相应的信息。如图 3.49所示。
在这里插入图片描述
图 3.49 snort 正常运行的状态
同样由于账号加密方式,snort 账号同样也需要设置 old password,否则会出现如下错误:
在这里插入图片描述
解决方法:

mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('acidtest')
-> WHERE Host = 'localhost' AND User = 'acid';
mysql> FLUSH PRIVILEGES;

注意替换空格。
④打开 http://127.0.0.1:50080/acid/acid_main.php 网页,进入 acid 分析控制台主界面。
查看上述配置是否正确。如图 3.50 所示。
在这里插入图片描述
图 3.50 acid 分析控制台页面
(10)完善配置文件
①打开 C:/snort/etc/snort.conf 文件,查看现有配置。
②设置 snort 的内、外网检测范围。
将 snort.conf 文件中 var HOME_NET any 语句中的 any 改为自己所在的子网地址,即将snort 监测的内网设置为本机所在的局域网。如本地 IP 为 192.168.1.10,则将 any 改为192.168.1.0/24。
并将 var EXTERNAL_NET any 语句中的 any 改为 192.168.1.0/24,即将 snort 监测的外网改为本机所在局域网以外的网络。
③设置监测包含的规则。
找到 snort.conf 文件中描述规则的部分(即最后部分都是.rules 的语句),前面加“#”表示该规则没有启用,将 local.rules 之前的“#”去掉,其余规则保持不变。如图 3.51 所示。
在这里插入图片描述
图 3.51 snort.conf 文件中包含的检测规则文件
在配置好 snort 的基础上,练习使用 ACID 检测控制台查看检测结果。
2.测试 snort
(1)在 c:\snort\rules\local.rules 中添加语句:

alert ip any any -> 192.168.43.0/24 any (msg:”IP Packet detected”;sid:1000000;)

在实验时将 IP Packet detected 变为姓名首拼(eg:XM),以便批改时能分辨。
即警告从任何地址任何端口发向 192.168.43.0/24(本机所在网络)的任何端口的 IP 数据包,输出信息为:IP Packet detected,并使用 snort 规则序列号 1000000 来标记。
开启 snort 在相应网卡端口:

C:\snort\bin>snort -c ”C:\snort\etc\snort.conf” -l ”C:\snort\log” -d -e -X -v -i3

-v -i3 为查看网卡接口序号 3 的 snort 记录。
本机网卡记录可使用命令查看:

C:\snort\bin>snort.exe -W

在这里插入图片描述
由于实验环境为虚拟机,所以选取查看网卡序号1的虚拟网卡接口。
之后使用浏览器浏览任意网页,snort 开始监听抓包:
在这里插入图片描述
在这里插入图片描述
(2)再次点击打开http://127.0.0.1:50080/acid/acid_main.php网页:
在这里插入图片描述
点击相应协议占比进入具体分析细节:
改过后应为:
在这里插入图片描述
点击相应 ID 号进入相应 ID 序号的分析:
在这里插入图片描述

五、思考题

1.如何实现 IDS 与防火墙的联动?
答:防火墙较多对应用在转发,内网保护(NAT),流控,过滤等方面;IDS和IPS主要是针对一些攻击情况下。在osi模型中,一般的防火墙只是能做到2-4层的保护,对于5-7层的应用的保护很一般;所以产生了IDS和IPS,而IDS(Intrusion Detection Systems),只是做些攻击的检测工作,本身并不做防护,它检测到攻击的时候,可能此时攻击已经产生灾难了,所以IDS一般都需要和一些防攻击对设备共用;为解决IDS这个问题,出现了IPS(Intrusion Prevention System),它不光对已知的攻击种类能防御,还能检测些异常协议的攻击,比较灵活。
2. IDS 与 IPS 的有区别?
答:

  1. 概念不同;IDS是英文"Intrusion Detection Systems"的缩写,中文意思是“入侵检测系统"。专业上讲就是依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。入侵防御系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。
  2. 系统类型划分不同;IDS按入侵检测的技术基础可分为两类:一种基于标志的入侵检测(signature-based),另一种是基于异常情况的入侵检测(anomaly-based);IPS按其用途划分为单机入侵预防系统(HIPS)和网路入侵预防系统(NIPS:Network Intrusion Prevension System)两种类型。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实验二 进程管理   Windows所创建的每个进程都从调用CreateProcess() API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于C++ 运行库来说,这一调用发生在应用程序的main() 函数返回之后。 1. 创建进程 CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行。表 2-1详细地列出了每个参数的类型和名称。   表2-1 CreateProcess() 函数的参数 参数名称 使用目的 LPCTSTR lpApplivationName 全部或部分地指明包括可执行代码的EXE文件的文件名 LPCTSTR lpCommandLine 向可执行文件发送的参数 LPSECURIITY_ATTRIBUTES lpProcessAttributes 返回进程句柄的安全属性。主要指明这一句柄是否应该由其他子进程所继承 LPSECURIITY_ATTRIBUTES lpThreadAttributes 返回进程的主线程的句柄的安全属性 BOOL bInheritHandle 一种标志,告诉系统允许新进程继承创建者进程的句柄 DWORD dwCreationFlage 特殊的创建标志 (如CREATE_SUSPENDED) 的位标记 LPVOID lpEnvironment 向新进程发送的一套环境变量;如为null值则发送调用者环境 LPCTSTR lpCurrentDirectory 新进程的启动目录 STARTUPINFO lpStartupInfo STARTUPINFO结构,包括新进程的输入和输出配置的详情 LPPROCESS_INFORMATION lpProcessInformation 调用的结果块;发送新应用程序的进程和主线程的句柄和ID   可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;lpCommandLine参数允许调用者向新应用程序发送数据;接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。 然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予新进程什么行为。经常使用的标志是CREATE_SUSPNDED,告诉主线程立刻暂停。当准备好时,应该使用ResumeThread() API来启动进程。另一个常用的标志是CREATE_NEW_CONSOLE,告诉新进程启动自己的控制台窗口,而不是利用父窗口。这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。 接着是CreateProcess() 函数调用所需要的三个通常使用缺省值的参数。第一个参数是lpEnvironment参数,指明为新进程提供的环境;第二个参数是lpCurrentDirectory,可用于向主创进程发送与缺省目录不同的新进程使用的特殊的当前目录;第三个参数是STARTUPINFO数据结构所必需的,用于在必要时指明新应用程序的主窗口的外观。 CreateProcess() 的最后一个参数是用于新进程对象及其主线程的句柄和ID的返回值缓冲区。以PROCESS_INFORMATION结构中返回的句柄调用CloseHandle() API函数是重要的,因为如果不将这些句柄关闭的话,有可能危及主创进程终止之前的任何未释放的资源。 2. 正在运行的进程 如果一个进程拥有至少一个执行线程,则为正在系统中运行的进程。通常,这种进程使用主线程来指示它的存在。当主线程结束时,调用ExitProcess() API函数,通知系统终止它所拥有的所有正在运行、准备运行或正在挂起的其他线程。当进程正在运行时,可以查看它的许多特性,其中少数特性也允许加以修改。 首先可查看的进程特性是系统进程标识符 (PID) ,可利用GetCurrentProcessId() API函数来查看,与GetCurrentProcess() 相似,对该函数的调用不能失败,但返回的PID在整个系统中都可使用。其他的可显示当前进程信息的API函数还有GetStartupInfo()和GetProcessShutdownParameters() ,可给出进程存活期内的配置详情。 通常,一个进程需要它的运行期环境的信息。例如API函数GetModuleFileName() 和GetCommandLine() ,可以给出用在CreateProcess() 中的参数以启动应用程序。在创建应用程序时可使用的另一个
"学生学号 " "实验课成 " " " " "绩 " " 武汉理工大学 学 生 实 验 报 告 书 实验课程名称 信息安全 开 课 学 院 计算机科学与技术学院 指导老师姓名 学 生 姓 名 学生专业班级 2011 — 2012 学年 第 二 学期 实验课程名称: 信息安全 "实验项目名称 "DES 对称分组密码系统的 Java 实 "实验成绩 " " " "现 " " " "实验者 " "专业班级 " "组别 " " "同组者 " "实验日期 "12年6月18日 " "第一部分:实验分析与设计(可加页) " "实验内容描述(问题域描述) " " " "原理: " "(1)分组密码的加密方式是:首先将明文序列以固定长度进行分组,每组明" "文用相同的密钥和算法进行变换,得到一组密文。分组密码是以块为单位, " "在密钥的控制下进行一系列线性和非线性变换而得到密文的。 " "(2)分组密码的加/解密运算是:输出块中的每一位是由输入块的每一位和 " "密钥的每一位共同决定。 " "(3)加密算法中重复地使用替代和移位两种基本的加密变换,此即Shannon " "1949年发现的隐藏信息的两种技术:混淆和扩散。 " "混淆:就是改变数据块,使输出位与输入位之间没有明显的统计关系(替代) " "; " "扩散:就是通过密钥位转移到密文的其它位上(移位)。 " "(4)分组密码的特点:良好的扩散性;对插入信息的敏感性,较强的适应性" ";加/解密速度慢;差错的扩散和传播。 " "要求:DES 对称分组密码系统的 Java 实现。 " " " "实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等, " "用硬件逻辑或者算法描述) " "import java.security.spec.*; " "import javax.crypto.*; " "import javax.crypto.spec.*; " "class DES01 { " "private String strkey; " "private SecretKey skey=null; " "private String[] algo= " "{"DES/ECB/PKCS5Padding","DES/ECB/NoPadding","DES"}; " "public DES01(String key) " "{ " "strkey=key; " "} " "public void keyGenerating() throws Exception " "{ " "byte[] bkey=strkey.getBytes(); " "KeySpec ks = new DESKeySpec(bkey); " "SecretKeyFactory kf " "= SecretKeyFactory.getInstance("DES"); " "skey = kf.generateSecret(ks); " "} " "public static void main(String[] a) { " "DES01 des = new DES01("IAMASTUDENT"); " "des.test02("STUDENTWANGFENGLIMING"); " "} " "public byte[] Encripting(String plaintext,int i) " "throws Exception " "{ " "byte[] bpt=plaintext.getBytes(); " "Cipher cf = Cipher.getInstance(algo[i]); " "if(skey==null)this.keyGenerating(); " "cf.init(Cipher.ENCRYPT_MODE,skey); " "byte[] bct = cf.doFinal(bpt); " "return bct; " "} " "public byte[] decripting(byte[] bct,int i) " "throws Exception " "{ " "Cipher cf = Cipher.getInstance(algo[i]); " "if(skey==null)this.keyGenerating(); " "cf.init(Cipher.DECRYPT_MODE,skey); " "byte[] bpt = cf.doFinal(bct); " "return bpt; " "} " "public void test01(String mess) " "{ " "try{ " "byte[] ct=this.Encripting(mess,0); "
一、 实验目的 1、 通过实验了解和熟悉Linux文件系统 2、 掌握文件操作命令 3、 了解文件与目录的默认权限,掌握文件权限的设置 4、 掌握文件的链接 二、 开发工具和运行环境 1、虚拟机VMware 2、Linux操作系统 三、 实验内容 1、了解和熟悉Linux文件系统 了解Linux文件系统、文件命名、文件类型和常见目录:根目录(/)、 .bin、boot、dev、etc、home、Lib、lost+found、 opt、root、 usr、mnt、proc、sbin、 tmp、 var. 2、文件操作命令: (文件和目录名自拟、自行设计实验步骤) (1) 1s: 显示目录内容 -a显示指定目录下所有的目录与文件 -1以 长格式显示文件的详细信息。 -d显示目录本身信息 i显示索引号 (2) cd:改变当前工作目录 格式: cd [目录名] cd .. 上移- -层目录(注意,需要有空格) cd 移到自己的主目录 (3) cat: 查看文件信息命令 显示文件信息:格式: cat [选项]文件名 -n输出编号 建立文件: cat>新文件名ctrl+d 合并文件: cat 文件1文件2>新文件 (4) more: 逐屏显示文件内容 格式: more 文件名 (5) cp:复制命令 格式: cp [选项] 源文件或目录目标文件或目录 同时可以复制多个文件 -f 出现覆盖情况不提示 -p复制后,保持原有属性。目标文件保持原有的生成日期和inode编号 -r 复制目录及目录下的文件 普通用户并不能进行这样的操作,只能切换到root用户然后进行-r的递归复制。 (6) rm: 删除文件与目录 格式: mv [选项] 文件名或目录名 -f删除时不提示 -r 删除目录及目录下的文件(常用: -rf ) (7) mv: 文件移动及改名命令 格式: mv [选项]源文件或目录 目 标文件或目录 -f覆盖文件时 不提示 (8) grep: 文件信息检索命令 格式: grep [选项]字符串 [文件 ... ] -i 不区分大小写 (9) sort: 排序命令 格式: sort [选项][文件列表] (10) mkdir 创建目录命令 格式: mkdir [选项] [目录名] 可以同时创建多个目录 p :递归创建目录 -m:创建目录的时候赋予权限 (11) rmdir删除“空”目录命令 格式: rmdir [选项] [目录名] 注意:目录为空才能删除;否则需采用rm - r来删除。 p :递归删除目录,删除子目录,其父目录为空时,也同时删除3、文件权限的设置: (文件和目录名自拟、自行设计实验步骤) 文件的属主与属组 (1) chown [选项] [所有者][:[组]] 文件列表 更改每个文件的所有者和/或所属组。 字母模式形式即“用户对象操作符号操作权限”,其命令格式为:(2) chmod [选项]模式[,模式]文件名 +:添加-:取消=:赋予并取消其他所有 数字形式即由三位八进制数字组成,其命令格式为: chmod八进制模式 文件名 文件的特殊权限: SUID、 SGID 和Sticky 4、文件的链接: (文件和目录名自拟、自行设计实验步骤) (1)硬链接:不带选项,ln命令创建硬链接。在另外的目录或本目录中增加目标文件的一个目录项,一个文件就登记在多个目录中 1n源文件目标文件 (2)软链接(符号链接):用“1n -s”命令建立符号链接时,最好源文件用绝对路径名,这样可以在任何工作目录下进行符号链接。类似于Windows系统中的快捷方式。 In -s源文件目标文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight_V_Schumacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值