精华内容
下载资源
问答
  • 信息隐藏实验报告 已经作好了 有需要的同志 可以直接下载使用了
  • 信息隐藏实验报告、信息隐藏

    热门讨论 2011-06-12 11:05:45
    包括五个实验:LSB信息隐藏、图像DCT域信息隐藏、LSB隐写分析、W-SVD数字水印、基于混沌细胞自动机数字水印,没有代码
  • 信息隐藏实验报告一图像的位平面,LSB和MSB.计算机专业信息隐藏的实验 可能其中有些含有名字 需要自己去改 请下载后看看
  • 共五个实验:shiyLSB图像信息隐藏 基于扩频的水印算法 基于量化的图像水印算法 基于回声的音频水印算法 Stirmark软件使用。 每个实验都给出了目的、要求、算法、源程序和实验运行结果
  • LSB (LSB:least significant bits) :将信息嵌入到...优点:操作简单,实现容易,隐藏信息量相对比较大。 缺点:由于使用了图像不重要的像素位,算法的鲁棒性差,隐写信息很容易为滤波、图像量化、几何变形的操作破坏。
  • 【实验名称】基于龟壳的信息隐藏实验 值得说明的是,网上有很多龟壳算法其实现过程是不够完整的,省去了一些例如边界处理的部分。而本报告中的代码对于龟壳算法实现的是完整的,可以说是一个比较完美的复现。 ...

    【实验名称】基于龟壳的信息隐藏实验       

    值得说明的是,网上有很多龟壳算法其实现过程是不够完整的,省去了一些例如边界处理的部分。而本报告中的代码对于龟壳算法实现的是完整的,可以说是一个比较完美的复现。

    【实验目的】

    1、加深对图像信息隐藏基本原理和方法的掌握

    2、学习并实现基于龟壳的信息隐藏和提取算法

     

    【实验原理】

    1、龟壳矩阵为一种矩阵元素有着特殊分布规律的N*N(常见如256*256)矩阵,其元素值为0-7,按照一定的差值规律连续组成。因在矩阵中值为0-7的8个元素连线形状恰如龟壳而得名

    2、基于龟壳魔术矩阵的方法修改载体图像的像素来隐藏秘密信息,每个像素平均可以隐藏1.5个比特。隐藏信息后的图像用人类的肉眼很难发现和原来的载体图像有任何差异

     

    【实验内容】

    代码:

    function Turtle_Shell()
    clc;clear;close all;
    I=imread('coverlena.bmp');
    figure;subplot(1,2,1);imshow(I);
    title('原图');
    Secret=23;                           %待隐藏数据的大小
    data=round(rand(1,Secret));          %随机生成大小为Secret的待隐藏的2进制数据
    fprintf('隐藏数据:');disp(data);
    [length,width]=size(I);
    data1=zeros(1,fix(Secret/3)+1);
    point=size(data1,2);
    for i=Secret:-3:1
        if i-3<0
            num=1;
            for i=i:-1:1
            data1(1,point)=data1(1,point)+num*data(1,i);
            num=2*num;
            end
            break;
        end  
        data1(1,point)= 4*data(1,i-2)+2*data(1,i-1)+data(1,i);
        point=point-1;
    end
    fprintf('转换成8进制:');disp(data1);
    %生成龟壳矩阵
    tortoise=Tortoise();
    
    %进行信息隐藏
    point=1;
    for i=1:length
        if point>size(data1,2)
                break;
        end
        for j=1:2:width
            if point>size(data1,2)
                break;
            end
            %像素值0到255龟壳矩阵1到256,需将两者对齐,故此处tortoise输出时,行列+1
            %输出原始信息
            fprintf('待隐藏信息:%d  原像素值:%3d %3d  对应龟壳矩阵值:%d  ',...
                data1(point),I(i,j),I(i,j+1),tortoise(double(I(i,j))+1,double(I(i,j+1))+1));
            %进行信息隐藏,即像素值修改
            [I(i,j),I(i,j+1)]=find(I(i,j),I(i,j+1),data1(point),tortoise);
            %输出信息隐藏后信息
            fprintf('信息隐藏后像素值:%3d %3d  对应龟壳矩阵值:%d\n',...
                I(i,j),I(i,j+1),tortoise(double(I(i,j))+1,double(I(i,j+1))+1));
            
            point=point+1;  
        end
    end
    fprintf('信息隐藏成功!\r\n');
    subplot(1,2,2);imshow(I);
    title('隐藏后图像');
    
    %隐藏信息读取
    point=1;
    for i=1:length
        if point>size(data1,2)
                break;
        end
        for j=1:2:width
            if point>size(data1,2)
                break;
            end
            %在龟壳矩阵中找出信息隐藏点,注意到像素值0到255,龟壳矩阵1到256,需将两者对齐
            Data1(point)=tortoise(double(I(i,j))+1,double(I(i,j+1))+1);
            point=point+1;  
        end
    end
    
    Data1=double(Data1);
    fprintf('提取数据:');disp(Data1);
    
    point=size(Data1,2);
    for i=Secret:-3:1
        if i-3<0
            for i=i:-1:1
                Data(1,i)=mod(Data1(1,point),2);
                Data1(1,point)=(Data1(1,point)-mod(Data1(1,point),2))/2;
            end
            break;
        end  
        Data(1,i)=mod(Data1(1,point),2);
        Data1(1,point)=(Data1(1,point)-mod(Data1(1,point),2))/2;
        Data(1,i-1)=mod(Data1(1,point),2);
        Data1(1,point)=(Data1(1,point)-mod(Data1(1,point),2))/2;
        Data(1,i-2)=mod(Data1(1,point),2);
        point=point-1;
    end
    fprintf('转换成2进制:');disp(Data);
    end
    
    %生成龟壳矩阵
    function tortoise=Tortoise()     
    tortoise(1,1)=6;
    for i=2:256
        tortoise(1,i)=mod(tortoise(1,i-1)+1,8);
    end
    for i=2:256
        if mod(i,2)==0
            tortoise(i,:)=mod(tortoise(i-1,:)-2,8);
        else
            tortoise(i,:)=mod(tortoise(i-1,:)-3,8);
        end
    end
    end
    
    %进行信息隐藏,带入当前两个像素值,返回信息隐藏点的行列
    function [X,Y]=find(X,Y,number,tortoise)   
    %像素值0到255,龟壳矩阵1到256,需将两者对齐
    X=double(X);Y=double(Y);
    X=X+1;Y=Y+1;
    
    %对边界进行特殊处理
    if (X==1&&Y==1)||(X==256&&Y==1)||(X==1&&Y==256)||(X==256&&Y==256)||...
            (X==1&&mod(Y,2)==1)||(X==256&&mod(Y,2)==1)||...
            (Y==1&&(mod(X,4)==0||mod(X,4)==1))||(Y==256&&(mod(X,4)==2||mod(X,4)==3))
        fprintf('该点在边界上    ');
        if X==1&&Y==1             %判断其是否是龟壳矩阵的左上顶点
            [X1,Y1,X2,Y2]=matrix(X,Y,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif X==256&&Y==1       %判断其是否是龟壳矩阵的左下顶点
            [X1,Y1,X2,Y2]=matrix(X-2,Y,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif X==1&&Y==256       %判断其是否是龟壳矩阵的右上顶点
            [X1,Y1,X2,Y2]=matrix(X,Y-2,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif X==256&&Y==256     %判断其是否是龟壳矩阵的右下顶点
            [X1,Y1,X2,Y2]=matrix(X-2,Y-2,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif X==1&&mod(Y,2)==1  %判断其是否在龟壳矩阵上边界、是否需要边界处理
            [X1,Y1,X2,Y2]=matrix(X,Y-1,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif X==256&&mod(Y,2)==1%判断其是否在龟壳矩阵下边界、是否需要边界处理
            [X1,Y1,X2,Y2]=matrix(X-2,Y-1,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif Y==1&&(mod(X,4)==0||mod(X,4)==1)%判断其是否在龟壳矩阵左边界、是否需要边界处理
            [X1,Y1,X2,Y2]=matrix(X-1,Y,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        elseif Y==256&&(mod(X,4)==2||mod(X,4)==3)%判断其是否在龟壳矩阵右边界、是否需要边界处理
            [X1,Y1,X2,Y2]=matrix(X-1,Y-2,number,tortoise);
            temp1=X1;temp2=Y1;
            if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
                temp1=X2;temp2=Y2;
            end
            X=temp1;Y=temp2;
        end
        X=X-1;Y=Y-1;  %将像素值恢复到0到255范围内
        return;
    end
    
    %判断其是否是龟壳内部两点中的上内部点
    if (tortoise(X,Y)==1 && tortoise(X+1,Y)==6)||(tortoise(X,Y)==3 && tortoise(X+1,Y)==0)||...
            (tortoise(X,Y)==5 && tortoise(X+1,Y)==2)||(tortoise(X,Y)==7 && tortoise(X+1,Y)==4)
        fprintf('该点在龟壳内    ');
        [X,Y]=traversal(X-1,Y,number,tortoise);
        X=X-1;Y=Y-1;  %将像素值恢复到0到255范围内
        return;
    end
    
    %判断其是否是龟壳内部两点中的下内部点
    if (tortoise(X,Y)==6 && tortoise(X-1,Y)==1)||(tortoise(X,Y)==0 && tortoise(X-1,Y)==3)||...
            (tortoise(X,Y)==2 && tortoise(X-1,Y)==5)||(tortoise(X,Y)==4 && tortoise(X-1,Y)==7)
        fprintf('该点在龟壳内    ');
        [X,Y]=traversal(X-2,Y,number,tortoise);
        X=X-1;Y=Y-1;  %将像素值恢复到0到255范围内
        return;
    end
    
    %剩下的点全在龟壳的边上,且只有上下顶点两类
    if mod(tortoise(X,Y),2)==1          %判断其是否在龟壳边的上顶点
        fprintf('该点在龟壳边    ');
        [X1,Y1]=traversal(X,Y,number,tortoise);
        [X2,Y2]=traversal(X-2,Y-1,number,tortoise);
        [X3,Y3]=traversal(X-2,Y+1,number,tortoise);
        temp1=X1;temp2=Y1;
        if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
            temp1=X2;temp2=Y2;
        end
        if (X3-X)^2+(Y3-Y)^2<(temp1-X)^2+(temp2-Y)^2
            temp1=X3;temp2=Y3;
        end
        X=temp1;Y=temp2;
        X=X-1;Y=Y-1;  %将像素值恢复到0到255范围内
        return;
    end
    
    if mod(tortoise(X,Y),2)==0          %判断其是否在龟壳边的下顶点
        fprintf('该点在龟壳边    ');
        [X1,Y1]=traversal(X-3,Y,number,tortoise);
        [X2,Y2]=traversal(X-1,Y-1,number,tortoise);
        [X3,Y3]=traversal(X-1,Y+1,number,tortoise);
        temp1=X1;temp2=Y1;
        if (X2-X)^2+(Y2-Y)^2<(temp1-X)^2+(temp2-Y)^2
            temp1=X2;temp2=Y2;
        end
        if (X3-X)^2+(Y3-Y)^2<(temp1-X)^2+(temp2-Y)^2
            temp1=X3;temp2=Y3;
        end
        X=temp1;Y=temp2;
        X=X-1;Y=Y-1;  %将像素值恢复到0到255范围内
        return;
    end
    end
    
    %从上顶点开始遍历一个龟壳,并返回需要寻找点的坐标
    function [X,Y]=traversal(X,Y,number,tortoise)
    if X<1||X>256||X+1<1||X+1>256||X+2<1||X+2>256||X+3<1||X+3>256||...
            Y<1||Y>256||Y-1<1||Y-1>256||Y+1<1||Y+1>256
        X=inf;Y=inf;
        elseif tortoise(X,Y)==number
        elseif tortoise(X+1,Y)==number
            X=X+1;
        elseif tortoise(X+1,Y-1)==number
            X=X+1;
            Y=Y-1;
        elseif tortoise(X+1,Y+1)==number
            X=X+1;
            Y=Y+1;
        elseif tortoise(X+2,Y)==number
            X=X+2;
        elseif tortoise(X+2,Y-1)==number
            X=X+2;
            Y=Y-1;
        elseif tortoise(X+2,Y+1)==number
            X=X+2;
            Y=Y+1;
        elseif tortoise(X+3,Y)==number
            X=X+3;
    end
    end
    
    %分别从左上顶点和右下顶点开始,遍历一个3*3矩阵,并返回需要寻找点的坐标
    %分别从左上顶点和右下顶点开始遍历的作用是找出距离最小的点
    function [X1,Y1,X2,Y2]=matrix(X1,Y1,number,tortoise)
    flag=0;
    X2=X1;Y2=Y1;
    for i=0:1:2
        for j=0:1:2
            if tortoise(X1+i,Y1+j)==number
                X1=X1+i;
                Y1=Y1+j;
                flag=1;
                break;
            end
        end
        if flag==1
            break;
        end
    end
    flag=0;
    for i=2:-1:0
        for j=2:-1:0
            if tortoise(X2+i,Y2+j)==number
                X2=X2+i;
                Y2=Y2+j;
                flag=1;
                break;
            end
        end
        if flag==1
            break;
        end
    end
    end
    

    实验结果:

     

    其中,生成的龟壳矩阵(部分)如下:

    分析实验代码和结果,可以看到:

    整个过程是先随机生成10个2进制数,并将其转换成8进制数,再进行信息隐藏,最后进行隐藏数据的提取,观察是否隐藏成功。

    在该示例结果中,既有点在龟壳内部(第4个待隐藏值)也有点在龟壳边上(第1、2、3个待隐藏值),既有点对应的像素值不是待隐藏值(第1、3、4个待隐藏值)也有点刚好是待隐藏值(第2个待隐藏值)。实验结果显示,待隐藏信息全都顺利隐藏并且成功读取。

    而且根据龟壳矩阵进行手动分析,可以验证整个实验过程是正确的。

     

    但是由于图像“coverlena.bmp”的特殊性,实验中并不会遇到点在边界上的情况。所以,我手动构造了一个特殊的8×8图像,以检查其边界的特判处理是否正确。

    这个图像包括:龟壳矩阵四个顶点(图像第1行)、龟壳矩阵上下左右四条边上随机各取一点(图像第2行)。图像具体像素值如下:

     

    实验结果:

     

    注意到其中第8、9个待隐藏信息显示在龟壳边上而不在边界上,这是因为虽然取的这八个点都是在龟壳矩阵的边上,却并不意味着需要进行“特判处理”即不在“边界”上,龟壳矩阵的四条边上也有一部分点是在龟壳上的。

    实验结果显示,待隐藏信息全都顺利隐藏并且成功读取。根据龟壳矩阵进行手动分析,可以验证整个实验过程是正确的。

    至此,对龟壳内、龟壳边和边界上的点都进行了测试,实验结果和手动验证都显示算法是正确的。

     

    【小结或讨论】

    基于龟壳的信息隐藏算法从本质上来说和EMD算法是一样的,都是利用魔术矩阵进行信息隐藏。但EMD的有一个很大的缺点,就是它隐藏的数据需要是5进制的,这无疑会使信息隐藏的效率变得低下。而基于龟壳的信息隐藏算法很好地解决了这个问题,它采用的是8进制的魔术矩阵,2进制同8进制的转换远比同5进制的转换有效率的多,而且使得每个信息隐藏点的容量进一步扩大到3bits。

    基于龟壳的信息隐藏算法的基本原理:

    龟壳矩阵是这个算法的基础,其中每个元素的值都在0-7之间,并且按照一定的差值规律排列,每一个龟壳都无冗余的包含了0-7的8个数。在进行信息隐藏时,先以图像中的两个像素值作为横、纵坐标来找到龟壳矩阵中对应的元素值,再在对应的龟壳中找到待隐藏信息值相同的点,以该点的横纵坐标替换掉数字图像中的原像素值。这样使得隐藏容量增加的同时,图像失真却保持很小。

    当然效率的大幅提升必然会导致算法复杂度的提升。基于龟壳的信息隐藏算法和上一次实验的LSB和EMD算法相比难度大大增加,导致整个算法完整实现后,代码近300行。由于算法的复杂,我想在这里总结一下整个代码的构写思路和最核心的在龟壳中寻找待隐藏值的思路。

    代码构写思路:

    整个代码包含以下5个函数

    1、Turtle_Shell()为主函数

    2、Tortoise()作用是生成龟壳矩阵

    3、find(X,Y,number,tortoise)作用是找到对应龟壳并找到待隐藏点,进行像素值替换。其中X为行数,Y为列数,number为待隐藏值,tortoise是已生成的龟壳矩阵。之所以将龟壳矩阵带入,是为了避免每次进行信息隐藏时都重新生成龟壳矩阵,从而降低代码运行效率。

    4、traversal(X,Y,number,tortoise)作用是从上顶点开始遍历一个龟壳。其中X为该龟壳上顶点行数,Y为该龟壳上顶点列数。比较重要的一点是,若遍历龟壳不完整则返回无穷大,这是为了靠近边界处有时只需要遍历1个或2个龟壳而设立的。其他同上。

    5、matrix(X1,Y1,number,tortoise)作用是分别从矩阵的左上顶点和右下顶点开始,遍历一个3×3矩阵,并返回需要寻找点的坐标。分别从两个起点的作用是两者遍历的路径刚好互补,从而若与待隐藏值相同的点有两个,可以找出距离最小的点。其他同上。

    主函数Turtle_Shell控制整个流程,先调用Tortoise生成龟壳矩阵,再通过find函数进行信息隐藏。在find函数中,分类判断了待隐藏值的位置后,若在龟壳边/内则调用traversal遍历周围对应龟壳,若在边界则调用matrix遍历3×3矩阵,最终找到信息隐藏点并返回行列值。

    在龟壳中寻找待隐藏值的思路:

    1、判断点在边界的特殊情况

    (1)、四个顶点

    (2)、龟壳矩阵第1行且列数为奇数(上边界特判)

    (2)、龟壳矩阵第256行且列数为奇数(下边界特判)

    (2)、龟壳矩阵第1列且行数为模4余0或1(左边界特判)

    (2)、龟壳矩阵第256列且行数为模4余2或3(右边界特判)

    2、判断点在龟壳内的情况

    根据观察,整个魔术矩阵有4种龟壳,其内部两个值各不相同,分别为:<1,6>、<3,0>、<5,2>、<7,4>。若符合其中一种排列情况,说明其在龟壳内部。

    3、判断点在龟壳边的情况

    排除了以上两种情况后,该点则必在龟壳边上。根据分析,在龟壳边上的点实际上只有两类:龟壳上顶点和龟壳下顶点。

    (1)、该点值为奇数则为龟壳上顶点

    (2)、该点值为偶数则为龟壳下顶点

    这次实验比较复杂,整个算法也是在不断地试错和分析中逐步完善的。实验过程中遇到过很多bug,比如我在将像素值和龟壳矩阵对齐时,遇见255+1始终等于255的奇怪现象。最后分析才发现,原来像素值默认为uint8格式,其表示的最大值就是255,最后将变量转换成double类型就解决了问题。

    展开全文
  • 【实验名称】基于LSB和EMD的信息隐藏实验 【实验目的】 1、学习并掌握图像信息隐藏的基本原理和方法 2、学习并实现基于LSB的信息隐藏和提取算法 3、学习并实现基于EMD的信息隐藏和提取算法 【实验原理】 ...

    【实验名称】基于LSB和EMD的信息隐藏实验     

     

    【实验目的】

    1、学习并掌握图像信息隐藏的基本原理和方法

    2、学习并实现基于LSB的信息隐藏和提取算法

    3、学习并实现基于EMD的信息隐藏和提取算法

     

    【实验原理】

    1、LSB算法是最早提出的一种典型的空间域信息隐藏算法。它使用特定的密钥通过伪随机序列发生器产生随机信号,然后按一定的规则排列成二维水印信号,并逐一插到原始图像相应像素值的最低几位。由于水印信号隐藏在最低位,相当于叠加了一个能量微弱的信号,因此在视觉和听觉上很难察觉。作为大数据量的信息隐藏方法,LSB在隐藏通信中仍占据相当重要的地位。

    2、EMD算法仅通过修改一组像素中一个像素的灰度值就可以嵌入一个2n+1进制的隐秘信息,具有图像像素值改变量小,嵌入信息量大的特点。

     

    【实验内容】

    一、基于LSB的信息隐藏和提取算法

    代码:

    function MY1()
    clc;clear;
    I=imread('coverlena.bmp');
    figure;subplot(1,2,1);imshow(I);
    title('原图');
    Secret=10;                      %待隐藏数据的大小
    data=round(rand(1,Secret));     %随机生成大小为Secret的待隐藏的2进制数据
    [length,width,~]=size(I);
    fprintf('隐藏数据:');disp(data);
    %进行信息隐藏
    point=1;
    for i=1:length
        if point>Secret
                break;
        end
        
        for j=i:width
            if point>Secret
                break;
            end
            if point==Secret-mod(Secret,3)+1  %剩余数据不足三位时单独处理
                I(i,j)=fix(double(I(i,j))/8);
                I(i,j)=I(i,j)*8;
                num=4;
                for k=point:Secret
                    I(i,j)=I(i,j)+data(k)*num;
                    num=num/2;
                end
                break
            end
            I(i,j)=fix(double(I(i,j))/8);     %后三位置0,放入待隐藏数据
            I(i,j)=I(i,j)*8;
            I(i,j)=I(i,j)+data(point)*4+data(point+1)*2+data(point+2);
            point=point+3;
        end
    end
    fprintf('信息隐藏成功!\r\n');
    subplot(1,2,2);imshow(I);
    title('隐藏后图像');
    %隐藏信息读取
    point=1;
    for i=1:length
        if point>Secret
                break;
        end
        
        for j=i:width
            if point>Secret
                break;
            end
            if point==Secret-mod(Secret,3)+1   %之前做单独放入处理的隐藏点进行单独读取
                message=double(mod(I(i,j),8));
                message=floor(message/2);
                if mod(Secret,3)==1
                    message=floor(message/2);
                    Data(point)=mod(message,2);
                end
                if mod(Secret,3)==2
                    Data(point+1)=mod(message,2);
                    message=floor(message/2);
                    Data(point)=mod(message,2);
                end
                break
            end
            message=double(mod(I(i,j),8));     %读取放置在后三位的隐藏数据
            Data(point+2)=mod(message,2);
            message=floor(message/2);
            Data(point+1)=mod(message,2);
            message=floor(message/2);
            Data(point)=mod(message,2);
    
            point=point+3;
    
        end
    end
    fprintf('提取数据:');disp(Data);
    end 
    

    运行结果:

    观察图像像素值变化

    原图像:

    信息隐藏后图像:

    可以看出,程序从待隐藏数据第一位开始,每三个二进制数据放入到一个像素值后三位。

     

    二、基于EMD的信息隐藏和提取算法

    代码:

    function MY2()
    clc;clear;
    I=imread('coverlena.bmp');
    figure;subplot(1,2,1);imshow(I);
    title('原图');
    Secret=10;                           %待隐藏数据的大小
    data=round(rand(1,Secret));          %随机生成大小为Secret的待隐藏的2进制数据
    fprintf('隐藏数据:');disp(data);
    [length,width]=size(I);
    data3=Num2to5(data,Secret);          %将2进制数据转换为5进制
    fprintf('转换成5进制:');disp(data3);
    
    KimMatrix=newmatrixn();              %生成模5矩阵
    
    %进行信息隐藏
    point=1;
    for i=1:length
        if point>size(data3,2)
                break;
        end
        for j=1:2:width
            if point>size(data3,2)
                break;
            end
            
            %找到对应点并对图像进行更新
            if KimMatrix(I(i,j),I(i,j+1))==data3(point)
            elseif KimMatrix(I(i,j)+1,I(i,j+1))==data3(point)
                I(i,j)=I(i,j)+1;
            elseif KimMatrix(I(i,j)-1,I(i,j+1))==data3(point)
                I(i,j)=I(i,j)-1;
            elseif KimMatrix(I(i,j),I(i,j+1)+1)==data3(point)
                I(i,j+1)=I(i,j+1)+1;
            elseif KimMatrix(I(i,j),I(i,j+1)-1)==data3(point)
                I(i,j+1)=I(i,j+1)-1;
            end
            point=point+1;  
        end
    end
    fprintf('信息隐藏成功!\r\n');
    subplot(1,2,2);imshow(I);
    title('隐藏后图像');
    
    %隐藏信息读取
    point=1;
    for i=1:length
        if point>size(data3,2)
                break;
        end
        for j=1:2:width
            if point>size(data3,2)
                break;
            end
            
            Data2(point)=KimMatrix(I(i,j),I(i,j+1));
            point=point+1;  
        end
    end
    Data2=double(Data2);
    fprintf('提取数据:');disp(Data2);
    Data=Num5to2(Data2,Secret);         %将5进制数据转换为2进制
    fprintf('转换成2进制:');disp(Data);
    end
    
    function KimMatrix=newmatrixn()     %生成模5矩阵
    n=256;
    munit=uint8(zeros(5,5));
    for j=1:5
        munit(1,j)=j-1;
        munit(2,j)=mod(j+2,5);
        munit(3,j)=mod(j+5,5);
        munit(4,j)=mod(j+3,5);
        munit(5,j)=mod(j+1,5);
    end
    nm=ceil(n/5);
    nn=ceil(n/5);
    KimMatrix=repmat(munit,nm,nn);
    KimMatrix=KimMatrix(1:256,1:256);
    end
    
    function data3=Num2to5(data,Secret)  %将2进制数据转换为5进制
    data1=0;
    num=1;
    for i=Secret:-1:1
        data1=data1+data(i)*num;
        num=num*2;
    end
    for i=Secret:-1:1
        if data1==0
            break;
        end
        data2(i)=mod(data1,5);
        data1=(data1-mod(data1,5))/5;
    end
    for i=1:Secret
        if data2(i)~=0
            num=i;
            break;
        end
    end
    for i=1:Secret-num+1
        data3(i)=data2(num+i-1);
    end
    end
    
    function Data=Num5to2(Data2,Secret)    %将5进制数据转换为2进制
    Data1=0;
    Data1=double(Data1);
    num=1;
    for i=size(Data2,2):-1:1
        Data1=Data1+Data2(i)*num;
        num=num*5;
    end
    Data=zeros(1,Secret);
    for i=Secret:-1:1
        if Data1==0
            break;
        end
        Data(i)=mod(Data1,2);
        Data1=(Data1-mod(Data1,2))/2;
    end  
    end
    

    运行结果:

    观察图像像素值的变化

    原图像:

    信息隐藏后:

    可以看到,每两个像素组中,至多有一个像素的值+或-1.

     

    【小结或讨论】

    LSB是最经典、最基础的一种图像信息隐藏算法,其原理也比较简单,即将图像像素值的最后几位直接舍弃(在本次实验中是最后三位),再将待隐藏的二进制信息每三位一份,放入每个像素值空出来的后三位中。由于改动的只是像素值的后三位,对于整个像素值来说影响不大,故而能达到信息隐藏后,肉眼很难察觉的效果,也达到了信息隐藏的根本目的。

    当然,LSB算法的缺点也是显而易见的。当需要隐藏的数据很多时,要么增多修改的像素值数目,要么增大每个像素值修改的位数。如果增多修改的像素值数目,那么必然需要一张很大的图像来隐藏,而且隐藏耗时也是一个需要考虑的问题。如果增大每个像素值修改的位数,那么势必会导致每个像素值修改幅度增大,从而会导致图像的修改更加易于被人发现。

    EMD算法较好地解决了LSB的上述问题。EMD算法的原理是先构造一个模数矩阵,再将图像的像素值两两组成一对,以第一个值为行数,第二个值为列数,在模数矩阵上找到相应的需要隐藏的信息值,最后改变行数和列数,即两个像素的像素值。EMD的优点在于,它的像素值的修改极小,使其更难被人发现。由于模数矩阵的特殊性,EMD中的十字矩阵中必然包含了0到4的五个值,使得像素值的+或-1就能实现一位五进制数的隐藏。如果需要隐藏大量数据,使用EMD算法不需增多修改的像素值数目,只要增大模数,就能在不会过于增大每个像素值修改幅度的前提下实现秘密信息的隐藏。

     

    展开全文
  • 实验环境 隐藏节点的实验分析采用了实验一搭建的实验平台,NS2 的版本为 2.35 三.实验内容 4.1.1 实验代码 #仿真模块参数设置 Mac/802_11 set RTSThreshold_ 0..................................

    XUPT大学

    实验名称: 隐藏节点问题仿真

    专 业: 网络工程 班 级: 1703

    姓 名: 阿吉
    学 号:

    指导教师: 
    日 期: 2020年

    一.实验目的

    掌握无线网络中隐藏节点问题的本质
    利用 NS2 分析隐藏节点问题
    二.实验环境 隐藏节点的实验分析采用了实验一搭建的实验平台,NS2 的版本为 2.35 三.实验内容

    4.1.1 实验代码 #仿真模块参数设置

    Mac/802_11 set RTSThreshold_ 0.......................................................................................1 Antenna/OmniAntenna set X_ 0.......................................................................................2 Antenna/OmniAntenna set Y_ 0.......................................................................................3 Antenna/OmniAntenna set Z_ 1.5....................................................................................4 Antenna/OmniAntenna set Gt_ 1.0.....................................................................................5 Antenna/OmniAntenna set Gr_ 1.0.....................................................................................6 Phy/WirelessPhy set CPThresh_ 10.0...................................................................................7 Phy/WirelessPhy set CSThresh_ 8.91754e-10..........................................................................8 Phy/WirelessPhy set RXThresh_ 2.81838e-9...........................................................................9 Phy/WirelessPhy set bandwidth_ 2e6..................................................................................10 Phy/WirelessPhy set Pt_ 0.281838............................................................................11 Phy/WirelessPhy set freq_ 9.14e+6.............................................................................12 Phy/WirelessPhy set L_ 1.0....................................................................................13

    #仿真变量设置
    set val(chan) Channel/WirelessChannel......................................................................14 set val(prop) Propagation/TwoRayGround..................................................................15 set val(netif) Phy/WirelessPhy................................................................................16 set val(mac) Mac/802_11......................................................................................17 set val(ifq) Queue/DropTail/PriQueue.....................................................................18 set val(ll) LL..................................................................................................19
    set val(ant) Antenna/OmniAntenna..........................................................................20 set val(ifqlen) 100................................................................................................21 set val(rp) DSDV..............................................................................................22

    #ns实例化和trace文件设置
    set ns [new Simulator] .............................................................................................................23 set f [open Hidden_Terminal.tr w]..............................................................................................24 $ns trace-all $f.....................................................................................................................25 $ns eventtrace-all..................................................................................................................26 set nf [open Hidden_Terminal.nam w]..........................................................................................27 $ns namtrace-all-wireless $nf 500 500..........................................................................................28

    #仿真拓扑设置
    set topo [new Topography].....................................................................................................29 $topo load_flatgrid 500 500......................................................................................................30 create-god 3........................................................................................................................31

    #节点配置
    set chan [new $val(chan)].........................................................................................................32

    $ns node-config -adhocRouting $val(rp) \................................................................................................................33 -llType $val(ll) \...........................................................................................................................34
    -macType $val(mac) \..................................................................................................................35
    -ifqType $val(ifq) \......................................................................................................................36

    -ifqLen $val(ifqlen) \.....................................................................................................................37 -antType $val(ant) \.......................................................................................................................38 -propType $val(prop) \..................................................................................................................39 -phyType $val(netif) \...................................................................................................................40 -channel $chan \............................................................................................................................41 -topoInstance $topo \....................................................................................................................42 -agentTrace ON \..........................................................................................................................43 -routerTrace OFF \.......................................................................................................................44 -macTrace ON \...........................................................................................................................45 -movementTrace OFF.....................................................................................46

    #节点实例化
    for {set i 0} {$i < 3} {incr i} {...................................................................................................47

    set node_($i) [$ns node].................................................................................................48 $node_($i) random-motion 0..............................................................................................49 }......................................................................................................................................50

    #节点位置设置
    $node_(0) set X_ 30.0................................................................................................................51 $node_(0) set Y_ 130.0...........................................................................................................52 $node_(0) set Z_ 0.0...............................................................................................................53 $node_(1) set X_ 180.0...........................................................................................................54 $node_(1) set Y_ 130.0...........................................................................................................55 $node_(1) set Z_ 0.0...............................................................................................................56 $node_(2) set X_ 330.0...........................................................................................................57 $node_(2) set Y_ 130.0...........................................................................................................58 $node_(2) set Z_ 0.0...............................................................................................................59

    #代理和数据流设置
    set udp [new Agent/mUDP] .....................................................................................................60

    $udp set_filename sd1.............................................................................................................61 $ns attach-agent $node_(0) $udp............... ..................................................................................62
    set null [new Agent/mUdpSink] .................................................................................................63 $null set_filename rd1.............................................................................................................64 $ns attach-agent $node_(1) $null................................................................................................65 $ns connect $udp $null............................................................................................................66 set cbr [new Application/Traffic/CBR] ........................................................................................67 $cbr attach-agent $udp............................................................................................................68 $cbr set type_ CBR................................................................................................................69 $cbr set packet_size_ 1000.......................................................................................................70 $cbr set rate_ 1Mb.................................................................................................................71 $cbr set random_ false.............................................................................................................72 $ns at 1.5 "$cbr start"..............................................................................................................73 $ns at 15.0 "$cbr stop".............................. ...............................................................................74

    set udp2 [new Agent/mUDP] ....................................................................................................75 $udp2 set_filename sd2...........................................................................................................76 $ns attach-agent $node_(2) $udp2..............................................................................................77 set null2 [new Agent/mUdpSink] ...............................................................................................78 $null2 set_filename rd2...........................................................................................................79 $ns attach-agent $node_(1) $null2..............................................................................................80 $ns connect $udp2 $null2.........................................................................................................81 set cbr2 [new Application/Traffic/CBR] .......................................................................................82 $cbr2 attach-agent $udp2.........................................................................................................83 $cbr2 set type_ CBR...............................................................................................................84 $cbr2 set packet_size_ 1000......................................................................................................85 $cbr2 set rate_ 1Mb................................................................................................................86 $cbr2 set random_ false...........................................................................................................87 $ns at 2.0 "$cbr2 start"............................................................................................................88 $ns at 15.0 "$cbr2 stop"............................................................................ ...............................89

    #节点初始化
    for {set i 0} {$i < 3} {incr i} {..................................................................................................90 $ns initial_node_pos $node_($i) 30......................................................................................91
    $ns at 20.0 "$node_($i) reset"............................................................................................92 }......................................................................................................................................93

    #仿真完成处理函数
    proc finish {} {.....................................................................................................................94 global ns f nf val.............................................................................................................95
    $ns flush-trace..............................................................................................................96
    close $f.......................................................................................................................97
    close $nf......................................................................................................................98
    exec nam Hidden_Terminal.nam &......................................................................................99
    exit 0.........................................................................................................................100 }.....................................................................................................................................101

    #仿真结束
    $ns at 20.0 "finish"...............................................................................................................102 $ns at 20.1 "puts \"NS EXITING...\"; $ns halt"..............................................................................103

    #启动仿真
    $ns run.............................................................................................................................104

    四.实验过程及分析

    (1) 完成实验一后,在“home/<用户名>/WNT”(Ubuntu 中“<用户名>”为 WNT,Cygwin 中“<用户名>”为当前 Windows 系统的用户名)目录下。
    (2) 打开终端(Ubuntu 为命令“Ctrl+Alt+T”,Cygwin 则需要双击
    并在命令行输入命 令“startxwin.bat”),输入“cd WNT/experiment/exp2”命令进入本实验脚本 所在文件 夹。输入“ns Hidden_Terminal.tcl”命令,运行实验。

    (3) 利用 NAM 动画观察实验结果,如图 2.3 所示。注意,在观看 NAM 动画时,运 行的步⻓调整为 2ms 即可,不宜过大,以免无法观察到详细的仿真过程。
    第 1~13 行,对仿真中需用到的模块参数进行设置,需注意,此处并未给出所有参数的 设置,仅对必要的参数进行修改,若未给出则意味采用 NS2 中的默认值;
    第 14~22 行,对仿真中需要用到的变量进行设置,该部分代码仅为便于修改代码(多处

    采用相同模块时仅需修改变量即可),并未增加任何功能;
    第 23~28 行,实例化 ns 变量,同时设置仿真过程中的 trace 和 nam 输出文件,以便对 实验结果进行分析和演示;
    第 29~31 行,对仿真实验的拓扑范围和全局节点记录进行设置,以便控制节点位置和运 动范围;
    第 32~46 行,在节点实例化前对参数进行配置,如路由协议、天线模型、物理层模块等, 实现正确有效的隐藏节点实验分析;
    第 47~50 行,对节点进行实例化,所有节点具有相同配置,如需更改节点配置,需在实 例化节点前重新用 node-config 进行配置;
    第 51~59 行,对实例化的节点进行位置的设定,注意,位置不能超过拓扑范围;
    第 60~89 行,设置两条传输层为 mUDP 的数据流,应用层都为 CBR,其中第 1 条流从 节点 0 到节点 1,速率为 1Mbps,数据包大小为 1000 字节,仿真起止时间为 1.5s~15.0s; 第2 条流从节点 2 到节点 1,速率和数据包大小同第 1 条流,仿真起止时间为 2.0s~15.0s。 节点1为两条流的共同目标节点,此时将会出现隐藏节点问题;
    第 90~93 行,对节点大小进行设置,用于 nam 演示,同时为实验结束时的节点进行 reset 事件设置,本实验的实验结束时间为 20.0s;
    第 94~101 行,对仿真结束时的后续处理函数(finish)功能定义,主要有关闭打开的文件、 启动演示动画等,读者可在其基础上自行扩展;
    第 102~103 行,仿真结束事件的设置,此处调用了之前定义的 finish 函数,同时输出提 示信息,表明仿真实验的结束并停机;
    第 104 行,启动 ns 运行仿真。
    五.问题回答 无线局域网隐藏节点问题对网络传输影响较大,极大降低了网络吞吐量,增大了时延,
    而 CTS/RTS 机制则较好的解决隐藏节点问题。 仿真结果可从两个方面来分析,即仿真动画和仿真数据。在 NS2 中演示仿真动画采用 NAM,它将网络仿真过程中拓扑结构、数据包传输情况及队列丢包等以动画形式展现,本 实验仿真动画为电子资源中实验动画文件夹的对应文件。仿真结束后,可通过分析产生的 trace 数据对仿真过程中的延迟、丢包、吞吐量等进行分析。
    六.总结
    1.实验过程中遇到的问题及解决办法;

    无线局域网隐藏节点问题对网络传输影响较大,极大降低了网络吞吐量,增 大了时延, 而 CTS/RTS 机制则较好的解决隐藏节点问题。 仿真结果可从两个 方面来分析,即仿真动画和仿真数据。在 NS2 中演示仿真动画采用 NAM,它 将网络仿真过程中拓扑结构、数据包传输情况及队列丢包等以动画形式展现, 可以清晰的通过过程的比较得到,在有 RTS/CTS 控制帧的网络环境中,如果存 在隐藏节点问题,可以较好的进行解决和优化,减轻网络负担和压力,优化网 络环境。而没有使用 RTS/CTS 控制帧的网络环境中,因为隐藏节点的存在,不 断的产生数据冲突,不仅加重了网络的负担,还使得很多冲突数据不可用,是 一个很严重的问题。隐藏终端的问题,通过 RTS/CTS 控制帧解决,通过通知传 送范围内的其他节点不要有动作,来避免发送冲突。 2.对设计及调试过程的心得体会。 遇到问题慢慢调试,这次学会了隐藏节点的仿真,收获颇多。尤其是在遇到问 题的情况下,一步一步debug出问题所在,这个过程是我最喜欢的,也是对我学

    科成长帮助最大的环节。

    展开全文
  • Linux实验报告

    千次阅读 2019-09-29 00:03:46
    Linux实验报告 一、实验目的 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络...

    Linux实验报告

    一、实验目的

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。本次实验意图通过实践了解 Linux 环境中常见的终端命令;熟悉文本编辑器 VI/VIM 的使用。

     

    二、实验条件:

    -硬件环境:神州战神Z6-KP5G(虚拟机)

    -操作系统:Ubuntu 18

    -参考书:Linux命令大全

     

    三、实验预习:

    https://man.linuxde.net/

     

    四、实验内容和记录

    ls命令:查看目录中的文件

    ls -a命令:列出所有文件,包括隐藏文件,即文件以“.”开头

    ls -l命令:列出文件的详细信息

    ls -s命令:将文件和目录从大到小排序

    ls -r命令:将文件和目录从小到大排序

    ls -f命令:在列出的文件名后加一符号,例如“*”表示具有执行权限的普通文件,“/”表示目录,“@”表示字符链接。当文件为普通文件时,不输出任何标识符。

     

    pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。

    --help:显示帮助信息;
    --version:显示版本信息。
    

     

    cd命令:用来切换工作目录至dirName。其中dirName表示法可为绝对路径或相对路径。

    cd -命令:返回进入此目录之前所在的目录

    cd ..命令:返回上级目录

    cd ../..命令:返回上两级目录

     

    mkdir命令:用来创建目录。该命令创建由dirName命名的目录。

    mkdir -m命令:建立目录的同时设置权限

    mkdir -p命令:若要建立目录的上层目录尚为建立,则会一并建立上层目录

     

    rmdir命令:用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。

    rmdir -p命令:删除指定目录后,若该目录的上层目录已变为空目录,则将其一并删除。

    rmdir -v命令:显示指令执行过程

    --help:显示命令的帮助信息;
    --version:显示命令的版本信息。

     

    cat命令:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。

    cat -n命令:从1开始对所有输出的行数编号

    cat -b命令:和-n相似,只是对于空白行不编号

    cat -s命令:当遇到两个以上的空白行,就代换一行的空白行

    cat -A命令:显示不可打印字符,行尾显示$。

    如果C和F是两个文件,则cat C是显示C文件里面的内容,cat C F同时显示C文件和F文件的内容 cat C F>file将C F文件放入file中。

     

    tail命令:用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

    注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1048576(1M)。

    参数:文件列表:指定要显示尾部内容的文件列表。

    tail -c命令:输出文件尾部的N(N为整数)个字节内容

    tail -f命令:显示文件最新增加的内容

    tail -n命令:输出文件尾部N(N为整数)行内容

    tail -q命令:当有多个文件参数时,不输出各个文件名

    tail -v命令:当有多个文件参数时,输出各个文件名

    tail -s命令:与-f命令连用,指定监视文件变化间隔的秒数

    tail --pid<进程号>命令:与-f命令连用,当指定的进程号的进程终止后,自动退出tail命令

     

    cp命令:用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

    参数:源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

    cp -f命令:强行复制文件或目录,无论是否存在

    cp -d命令:当复制链接符号时,把目标文件目录也建立为符号链接,并指向与源文件或目录链接的原始文件或目录

    cp -i命令:对源文件建立硬链接,而非复制文件

    cp -p命令:保留源文件或目录的属性

    cp -r命令:递归处理,将指定目录下的所有文件与子目录一并处理

    cp -s命令:对源文件建立符号链接,而非复制文件

    cp -b命令:覆盖已存在的文件目标前将目标文件备份

     

    mv命令:用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

    参数:源文件:源文件列表。目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。

    mv -b命令:当文件存在时,覆盖前,为其创建一个备份

    mv -f命令:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。

    mv -u命令:当源文件比目标文件新或者目标文件不存在时,才之移动操作

     

    man命令:是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。

    参数:数字:指定从哪本man手册中搜索帮助;关键字:指定要搜索帮助的关键字。

    man -a命令:在所有的man帮手手册中搜索

    man -f命令:等价于whatis指令,显示给定关键字的简短描述信息

    man -p命令:指定内容时使用分页程序

    man -M命令:指定man手册搜索的路径

     

    chmod命令:用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。

    参数:权限模式:指定文件的权限模式;文件:要改变权限的文件。

    chmod -f命令:不显示错误信息

    chmod -R命令:递归处理,将指令目录下的所有文件及子目录一并处理

     

    五、思考题:

    1.什么是文件?什么是目录?什么是路径

    文件是带有名字的一组相关信息的集合。目录是存放文件名,文件属性等信息的存储空间,最高层次目录为根目录。路径是指明文件或子目录所在位置的一系列目录名。

     

    2.Linux中绝对路径和相对路径是怎么定义的?

    绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11。如果一个路径是从/开始的,它一定是绝对路径

    相对路径是以 . 或 .. 开始的,.表示用户当前操作所处的位置,而.. 表示上级目录;在路径中,.表示用户当前所处的目录,而..上级目录,要把.和..当做目录来看。

     

    3.Linux系统文件权限是怎么规定的?

    r

     read

     4

    w

    write

    2

    x

    execute

    1

    -

     

    0

     

                                                          

    chmod是来改变文件或者目录权限的命令,但只有文件的所有者和超级用户root才有这样的权限,通过chmod来改变文件或目录的权限有俩种方式,一种是通过权限字母和操作符表达式的方法来设置权限,另一种是使数字方法来设置权限。

     

    4.如何查看文件中的节点信息?

    使用ls命令下的i参数查看文件中的节点信息

     

    5.创建文件的默认权限是什么样子的?

    umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限补码,而chmod设置的是文件权限码。

    umask 002 //一般用户默认权限

    umask 022 //root用户默认权限

     

    展开全文
  • 管理信息系统实验报告

    千次阅读 2009-05-06 20:43:00
    实验任务1.学会使用S+Miner访问数据2.学会使用S+Miner进行数据探索二.实验内容1.用S+Miner读入数据的方法读入Excel文件。2.用S+Miner读入数据的方法查看Excel文件。三.实验流程1.数据访问读Excel文件(Read Excel ...
  • 3.实现LSB信息隐藏实验内容】: ■一、图像翻转 ■二、LSB的顺序嵌入和提取 ■三、LSB的随机嵌入和提取 一.图像翻转 1)使用库函数imread()读取图片; 2)提取图片size:h,w,ch(高度,宽度,通道数); 3)初始...
  • hadoop安装配置实验报告

    千次阅读 2019-05-20 10:23:30
    Hadoop三种模式安装配置实验报告 2.1. Hadoop分布式文件系统(HDFS) Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但...
  • 应用集成实验报告

    千次阅读 2020-01-20 09:49:56
    应用集成原理与工具集成实验报告 实验环境:普通PC机,Windows 2003或Windows XP 系统、网络交换机、VS.Net 开发环境、数据库运行环境。 实验目的: 通过这次实验掌握并了解基于中间件集成的实验原理与实验操作; ...
  • 在大数据领域这个聚类算法真是起到了十分重要的作用,...具体的实验报告和python源码文件在最后位置,提供百度云下载,本文使用的是K-means算法和层次聚类算法AGNES,原理介绍和实验结果详见百度云提供的报告等 ...
  • Linux实验报告【全集】

    千次阅读 多人点赞 2019-11-30 17:25:14
    实验目录:Linux常用命令、linux下的shell编程、Linux下的c...所以就有了我的“实验报告”博文,写这种博文也挺麻烦的,喜欢的话记得点赞????哦!若是看到报告里蒙混过关的内容烦请纠正。 实验一 Linux常用命令...
  • 网络渗透试验一实验报告 实验一 网络扫描与网络侦察 实验目的: 理解网络扫描、网络侦察的作用;通过搭建网络渗透测试平台,了解并熟悉常用搜索引擎、扫描工具的应用,通过信息收集为下一步渗透工作打下基础。 系统...
  • 树莓派实验报告 lab1 MACOS 访问串口教程https://software.intel.com/en-us/setting-up-serial-terminal-on-system-with-mac-os-x 命令行  qemu-system-aarch64 -M raspi3 -k en-us -serial null -serial stdio -...
  • 计网第五次实验报告 一. 学习目标 掌握ACL在企业网络中的应用(访问控制列表) 掌握ACL的工作原理 掌握ACL的配置 掌握NAT的工作原理(网络地址转换技术) 掌握NAT的基本配置 二. 应用场景 ACL场景: NAT场景: 三...
  • Hadoop平台实验报告

    千次阅读 2017-12-19 14:28:00
    通过基于MapReduce云计算平台的海量数据处理实验,我们了解了Hadoop的基本架构,已经如何编写MapReduce程序,本实验中我主要使用到的两个程序分别是WordCount(词频统计)和InvertedIndex(反向索引)。在将这两个...
  • ②添加图书的基本信息,如 书号,书名,作者,出版社,类别,进库量; ③删除图书,通过图书的书名进行删除; ④图书查询,通过图书的书号,书名,作者或者类别进行检索; ⑤浏览图书的库存,将所有数目展示出来...
  • LSB算法实现信息隐藏

    热门讨论 2007-10-01 00:05:10
    信息安全课的一个实验作业,要求采用LSB算法实现BMP图像中的信息隐藏及提取,写完后感觉这个算法还是蛮有意思滴~压缩包内附上实验报告,仅供各位参考~
  • Pintos Project1:Thread 实验报告

    千次阅读 2019-05-18 11:24:49
    Pintos Project1:Thread 实验报告 一、Pintos简介 Pintos是80x86架构的简单操作系统框架。它支持内核线程,加载和运行用户程序以及文件系统,但它以非常简单的方式实现所有这些。 实验环境为:Ubuntu 16.04 bochs-...
  • 1、实验简介 本实验要求在模拟的I/O系统之上开发一个简单的文件系统。用户通过create, open, read等命令与文件系统交互。...I/O系统的任务是隐藏磁盘的结构细节,把磁盘以逻辑块的面目呈现给文件系统。逻辑块顺序编...
  • 南京信息工程大学实验报告 一、实验目的 1.掌握 linux系统的安装方法 2.理解 linux系统安装过程中涉及的基础知识 3.熟悉 linux系统的操作环境 4.尝试简单的 linux shell命令 二、实验准备 1. 围绕下述...
  • 软件工程课程实验报告:实验五

    千次阅读 2017-10-23 21:43:19
    实验四:用可重用的链表模块来实现命令行菜单小程序V2.5 咖啡机《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006 新创建一个目录lab5完成实验。 然后将lab5-1.tar.gz中...
  • 实践题目:基于空间域的信息隐藏关键技术研究 目标是实现对320x240的灰度图像(样本自选...实验报告要求 调研和算法说明,算法框图等; 有matlab仿真实验,有实验图形和实验结果分析,健壮性分析等; 5页以内的wor...
  • 操作系统文件系统实验报告16281027

    千次阅读 2019-06-14 09:40:20
    实验五 文件系统 1 实验简介 本实验要求在模拟的I/O系统之上开发一个简单的文件系统。...I/O系统的任务是隐藏磁盘的结构细节,把磁盘以逻辑块的面目呈现给文件系统。逻辑块顺序编号,编号取值范围为...
  • 通过搭建网络渗透测试平台,了解并熟悉常用搜索引擎、扫描工具的应用,通过信息收集为下一步渗透工作打下基础。 ` 系统环境:Kali Linux 2、Windows 网络环境:交换网络结构 实验工具: Metasploitable2(需自行下载...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,194
精华内容 6,077
关键字:

信息隐藏实验报告