呀呀学语的孩童想用努力鉴证自己的成长!

发布新日志

  • 【原创】iOS动态分析的一点分享

    2015-05-06 16:17:32

    XX同学让我就iOS动态分析做个分享,但我觉得自己还只是一点点开窍而已,所以就把学到的东西总结一下,欢迎拍砖!

     

    学习iOS动态分析,首先需要对objective-c的基本语法有一些了解,这个google学习下吧。

    接下来重新学习了一遍这个课程里面的CycriptGDB的教程,感觉比之前更深入一点。

     

    我对二者的理解是:

    Cycript既然是javascript的一个变种,应该主要也是作用于ViewController这一层,适用于篡改一些界面上的元素属性或者是方法,比如把本该无权限显示的view改成可以显示,暴露不该暴露的信息。

    GDB感觉会更深入一点,可以通过设置断点,读取或篡改寄存器的值,比如读取用户的密码等confidential的信息,而这些信息只是后台使用,不大会显示在view上面。

     

    对产品的分析:

    如果产品是CS的结构(目前应该大部分都是这样),clientserver之间的交互需要通过身份验证,因此,即使我们通过一些手段绕过了登陆的界面,后续的信息也需要通过身份验证才能够获取。所以绕过login不是关键,关键是如何才能在用户登录后,获取到用户的身份验证信息,比如用户名,密码等。可以试试用GDB获取寄存器信息的方式。不过我还没尝试过,只是纸上谈兵。

    当然如果没有严密的server校验,想办法绕过登陆界面就会比较有用。

    另外,功能里面分角色,不同角色有不同的权限,client根据权限的不同会显示不同的UI。这样,我们就可以用Cycript来改改看,让本不该没有权限的人看到的东西显示出来。

     

    使用GDBCycript分析的思路和实例:

    前文说了,我只是一点点开窍而已,所以只能把网上学到和简单实践的东西总结一下,很多用法和实践还不清楚。

    GDB:

    总结下使用GDB进行运行时分析和操作数据的过程:

    1. 首先,要从class dump或者源码中先找到一个敏感信息的攻击目标,比如login相关的方法

    2. 为此方法设置断点

    >break 方法名:

    >c

    3. 接下来通过客户端操作来触发被设置断点的方法

    4. disas命令查看接下来要执行的指令,从结果中分析是否有其他敏感的方法名,以及objc_msgSendblx出现的地址

    5. 为每一个blx设置断点,查看接收信息的类和方法,查看敏感的方法,并进一步获得$r2的值,甚至篡改值

    >po $r2

    >set $r0

    PS:详细内容可以参照上面课程的第2122

    实例~~:我还没有针对我们的client实践成功过,等再开窍了再补吧

     

    Cycript

    1. 首先操作client到你想要的界面

    2. 通过Cycript命令获取当前界面的viewController,从结果可以知道当前的类

    3. 很庆幸,有源码!去源码里面搜索这个类,看看它都有一些什么属性和方法

    4. 如果很幸运发现了可能存在漏洞的属性和方法,就去改改看。对于我这样的菜鸟来说,最简单的莫过于参数为bool类型或者返回值为bool类型的方法了。改一下truefalse,可能发现UI就变化了,幸运的话,还可能显示了不该显示的东西

     

    实例:

    昨天改了一个控制list显示的东东,分享一下

    场景:

    用户当前没有权限显示list,但是通过下面的方式操作,变成可以显示:

    #cycript -p PROCESS_ID

    //获取当前界面的viewController

    cy# var rootController = UIApp.keyWindow.rootViewController

    cy# var visibleController = rootController.visibleViewController

    //然后得到当前的viewController的类


    //到源代码里面搜索类名,看看这个类里面有没有可以篡改的有意义的信息。上面说了,菜鸟就从返回值是bool类型或者参数是bool类型的开始看吧。

    发现了一个方法 参数为bool类型,使用objc的语法调用这个方法,并塞入参数为false

    cy#[visibleController Method:false]

     

    //ok,本不该显示的东东显示出来了。也就是说,通过篡改运行时状态,把本不该具有权限查看list变成了有权限。

     

    看起来挺简单的吧。相信高手肯定能找到更多的突破口。

     

    说完如何动态分析的思路和方法,最重要的目的是如何来防护。虽然黑客不像我们能看到源代码,但是也能无障碍读取没有任何保护的头文件信息,对一目了然的属性和方法进行为所欲为的操作。对我们来说,虽然没有一劳永逸的解决方案,但是总是可以做一些事情来增加黑客破解的难度,简单说就是制造麻烦,让那些junior的或者急性子的黑客知难而退。

     防护:

    1.检测设备是否越狱 http://blog.csdn.net/yiyaaixuexi/article/details/20286929

    2. 阻止GDB/LLDB debug http://resources.infosecinstitute.com/ios-application-security-part-23-defending-runtime-analysis-manipulation/#article

    3. 代码混淆 http://blog.csdn.net/yiyaaixuexi/article/details/29201699

        说起代码混淆,也挺有意思一件事。起初我以为就是把那些一目了然的名字改成连自己看了都不知道是干啥的东西,比如login改成abc。所以就困惑了,那代码怎么写,怎么理解啊!自己都不知道这是干啥的。看了上面这个文章才知道原来有更高级的方式。虽然我没试过是否可行,不过还是打消了我之前的顾虑。

    4. 敏感业务逻辑的代码用C来写 http://blog.csdn.net/yiyaaixuexi/article/details/29210413

     

    好记性不如烂笔头,尤其是我这个年纪的女人,汗!希望大家能看得懂。如果有一点帮助,就撒花鼓励一下,哈哈。

  • 路由器与交换机的主要区别

    2008-01-29 13:25:44


    1)工作层次不同

       
    最初的的交换机是工作在OSIRM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可以得到更多的协议信息,路由器可以做出更加智能的转发决策。

    2)数据转发所依据的对象不同

       
    交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有时这些第三层的地址也称为协议地址或者网络地址。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。

    3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

       
    由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。

    4)路由器提供了防火墙的服务

       
    路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

       
    路由器是互联网络中必不可少的网络设备之一,路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行翻译,以使它们能够相互懂对方的数据,从而构成一个更大的网络。 路由器有两大典型功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。

     

  • 功能测试用例的书写方式(适于新手学习)

    2007-02-05 17:02:43

    文章出处:blog 作者: 发布时间:2006-12-04

    功能性测试用例

    1. 测试的来源,即测试的需求

      测试用例的主要来源有:
    1) 需求说明”及相关文档
    2)相关的设计说明(概要设计,详细设计等)
    3)与开发组交流对需求理解的 记录(可以是开发人员的一个解释)
     4)已经基本成型的UI(可以有针对性地补充一些用例)
           简而言之,所有你能得到的项目文档,都尽量拿到。 从所得到的资料中,分解出若干小的“功能点”,理解“功能点”,编写相应的测试用例。

    2. 用例的组织方式

    不同的公司有不同的做法,原则上,只要方便管理和跟踪,怎么组织都可以的。
    用例可以按大的功能块组织,如查询功能模块的用例,可以组织在一起,打印模块的测试用例,可以另外组织在一起。
         在没有专门的测试用例管理工具的情况下,用例执行后会产生2种状态:“通过”、“失败”——这样加上“未 执行”的用例的状态,共3种状态。
        即从“未执行”用例中执行一个用例后,该用例状态应为“失败”或“通 过”。将同一状态的用例组织在一起。
      至于用例文件格式,可以是.DOC或.XLS(如果有专门的测试用例管理工具另当别论)。

    3. 用例与其他材料的关联方式,即如何解决用例跟踪的问题

    测试用例面临的比较大的风险有:需求的变更、设计的修改、需求的错误和遗漏等等。
    由于用例的主要来源是需求和设计的说明,所以对用例的跟踪其实就是对需求和设计的跟踪,需求和设计的 变更势必引起测试用例的变更。
      如前所说,将分解的功能点编号,与相应的用例联系起来。例如,你可以列一个表格,列出各个(编号的)功 能点和测试用例间的关联关系。
     这样,当需求和设计发生变化时,你只需要跟踪“功能点”是否变化,是否增加了新的功能点。
      4. 一个好的用例的表述要点,即用例中应当包含的信息

    一个优秀的测试用例,应该包含以下信息:
    1) 软件或项目的名称
    2) 软件或项目的版本(内部版本号)
     3) 功能模块名
     4) 测试用例的简单描述,即该用例执行的目的或方法
     5) 测试用例的参考信息(便于跟踪和参考)
     6) 本测试用例与其他测试用例间的依赖关系
     7) 本用例的前置条件,即执行本用例必须要满足的条件,如对数据库的访问权限
    8) 用例的编号(ID),如可以是 软件名称简写-功能块简写-NO.。
    9) 步骤号、操作步骤描述、测试数据描述
    10)预期结果(这是最重要的)和实际结果(如果有BUG管理工具,这条可以省略)
    11)开发人员(必须有)和测试人员(可有可无)
    12)测试执行日期

    5. 给出一个测试用例的例子该范例已经包含一个测试用例的模板。

     备注:本用例未考虑“企业代码”的输入情况;测试用例并未涵盖所有的非法输入,如非法输入中可能会有 “user=*,pw=*”的组合,对回车的默认操作,空格输入,对输入上溢的处理的处理(可能会跳过身份验证) 等等。
     如果你有兴趣,至少可以再补充5-10条左右的输入组合(当然,如果步骤超过15步,用例的易操作 性就降低,你可以再创建一个测试用例如TC-TEP_Login_2)

  • [同事之间]学会和同事相处的30个原则

    2006-12-18 15:54:39

       1.无论发生什么事情,都要首先想到自己是不是做错了。如果自己没错(那是不可能的),那么就站在对方的角度,体验一下对方的感觉。
        2.让自己去适应环境,因为环境永远不会来适应你。即使这是一个非常非常痛苦的过程。
        3.大方一点。不会大方就学大方一点。如果大方真的会让你很心疼,那就装大方一点。
        4.低调一点,低调一点,再低调一点(要比临时工还要低调,可能在别人眼中你还不如一个干了几年的临时工呢)。
        5.嘴要甜,平常不要吝惜你的喝彩声。 (会夸奖人。好的夸奖,会让人产生愉悦感,但不要过头到令人反感。)
        6.如果你觉得最近一段时间工作顺利的不得了,那你就要加小心了。
        7.有礼貌。打招呼时要看着对方的眼睛。以长辈的称呼和年纪大的人沟通,因为你就是不折不扣小子辈。
        8.少说多做。言多必失,人多的场合少说话。
        9.不要把别人的好,视为理所当然,要知道感恩。
        10.手高眼低。
        11.遵守时间,但不要期望别人也遵守时间。
        12.信首诺言,但不要轻易许诺。更不要把别人对你的承诺一直记在心上并信以为真。
        13.不要向同事借钱,如果借了,那么一定要准时还。
        14.不要借钱给同事,如果不得不借,那么就当送给他好了。
        15.不要推脱责任(即使是别人的责任。偶尔承担一次你会死啊?)。
        16.在一个同事的后面不要说另一个同事的坏话。要坚持在背后说别人好话,别担心这好话传不到当事人耳朵里。 如果有人在你面前说某人坏话时,你要微笑。
        17.避免和同事公开对立(包括公开提出反对意见,激烈的更不可取)。
        18.经常帮助别人,但是不能让被帮的人觉得理所应当。
        19.说实话会让你倒大霉。
        20.对事不对人;或对事无情,对人要有情;或做人第一,做事其次。
        21.经常检查自己是不是又自负了,又骄傲了,又看不起别人了。(即使你有通天之才没有别人的合作和帮助也是白搭)
        22.忍耐是人生的必修课。(要忍耐一生的啊,有的人一辈子到死这门功课也不及格)
        23.新到一个地方,不要急于融入到其中哪个圈子里去。等到了足够的时间,属于你的那个圈子会自动接纳你。
        24.有一颗平常心。没什么大不了的,好事要往坏处想,坏事要往好处想。
        25.尽量不要发生办公室恋情,如果实在避免不了,那就在办公室避免任何形式的身体接触,包括眼神。(如果你或者对方已婚,——恭喜你,兄弟。你,死,定,了!!!)
        26.会拍马屁(这是和顶头上司沟通的重要途径之一),但小心不要弄脏手。切忌用舌头去舔马屁。
        27.资历非常重要。不要和老家伙们耍心眼斗法,否则你回死得很难看的。
        28.好心有时不会有好结果,但不能因此而灰心。
        29.待上以敬,待下以宽。
        30.如果你带领一个团队,在总结工作时要把错误都揽在自己身上,把功劳都记在下属身上。当上司和下属同时在场时要记得及时表扬你的下属。批评人的时候一定要在只有你们两个人的情况下才能进行。
        31.如果你看到一个贴子还值得一看的话,那么你一定要回复,因为你的回复会给人继续前进的勇气,会给人很大的激励。同时也会让人感激你(呵呵,这条是在别的贴子上抄来的,写点东西不容易,大家捧场哈)。
  • 学用Linux命令(常用命令二)

    2006-12-12 14:54:32

      1.tar 命令

       这个程序可以用来管理那些TAR类型的文件,一般你会用到两种基本方式:

       将file.tar展开:tar xvf file.tar

       将directory下的所有文件压缩成file.tar:tar cvf file.tar directory

      

      2.chown/chgrp 命令

      这两个命令用于设置文件或目录的拥有者,例如,要把file分配给user1,使用命令

      chown user1 file

      要把file分配给grp1用户组,使用   

      chgrp grp1 file   

      如果要处理多级子目录,使用-R开关

      

      3.chmod 命令

      改变文件属性,属性规则是拥有者+同组+其他用户,例如,要给file以拥有者可以执行,同组可以写,其他人可以读取的权利,使用chmod u+x g+w o+r file  

      也可以使用数字来直接处理属性。   

      要给某个文件uid或者gid,使用u+s和g+s

        

      4.passwd 命令  

      一般情况下,这个命令改变使用者的口令,超级用户可以用它改变其他用户的口令。  

      新建的用户必须由root用passwd [用户名]激活后才能使用。

        

    5.kill 命令

    杀掉一个进程   

      用法:kill pid   

      pid可以从ps ax得到。

      

    6.killall 命令

    杀掉进程

      用法killall [程序名]

      例如,killall inetd杀掉inetd进程。

      有一个特殊的参数 -HUP用于重起进程,如killall -HUP inetd

     

    命令动词 简要说明 命令动词 简要说明

      adduser 创建新用户 alias 设置别名或替代名

      bg fg 使挂起的进程继续运行 & 后台运行某一程序

      ps ax 查询当前进程 mount 连接文件系统

      tar 管理tar文件 userdel 删除用户

      more less 浏览文件内容 chown chgrp 改变文件的拥有者

      chmod 改变文件属性 halt 关闭系统

      man 显示手册页 passwd 改变用户口令

      grep 查找字符串 cp 拷贝文件(cp file1 file2)

      find 查找文件 dd 复制磁盘或文件系统

      kill 杀掉一个进程 killall 杀掉进程

        

  • 学用Linux命令(常用命令一)

    2006-12-12 14:52:16

        1.& 命令

        &命令可用在其他任何命令的后面,它用来通知计算机在后台运行某一命令。通过把作业放在后台,用户可以继续使用当前的shell来处理其他命令;如果命令在前台运行的话,那么用户在此进程结束前不能继续使用当前的shell。

      

        2.adduser 命令

        adduser命令由root或其他具有权限的管理员用来创建新用户,跟在adduser 命令后面的是所要创建的账号名,例如: adduser flying

      

        3.alias 命令

        alias命令用来设置命令的别名或替代名。一般说来别名往往是实际命令名的缩写。例如用户为ls设置一个别名dir:

      alias dir=ls

        若仅输入alias本身时,系统将显示当前所有的别名。

      

        4.bg 命令

        bg命令用来迫使被挂起的进程在后台运行。例如,当你已经在前台启动了一个命令时(没有在此命令后使用&),你才想到这一命令将运行较长一段时间,但你这时还需使用shell。在这种情况下,可通过ctrl+z挂起当前运行的进程。此时你既可以使它长期挂起,也可以通过输入bg把这一进程放到后台运行。这样shell就可以用来执行其他的命令了。

    当我们打ctrl+z的时候一个任务就被挂起(就是暂停),同时屏幕上返回一个数字,这时候可以用 "bg %数字" 来把这个进程放到后台执行...这个很适合在你忘了加&的时候进行补救...同样 " fg %数字 "就能让这个进程放到前台来执行了...

      jobs命令用来查看当前的被bg的进程

      假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,终止这个程序,然后可以看到系统提示:
    [1]+ Stopped /root/bin/rsync.sh
    然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
    #bg 1
    [1]+ /root/bin/rsync.sh &
    jobs 命令查看正在运行的任务:
    #jobs
    [1]+ Running /root/bin/rsync.sh &
    如果想把它调回到前台运行,可以用
    #fg 1
    /root/bin/rsync.sh

        5.cat 命令

        cat通常是用来在屏幕上滚动显示文件的内容。它的格式是:

      cat〈filename〉

      

        6.cd 命令

        cd用来改变目录。这一命令非常有用,它有三种典型的使用方法。

        cd ..   移到目录树的上一层

        cd /d~user l) [m   移动到用户的主目录,与单独使用cd相同

        cd directory name 改变到指定的目录

      

        7.cp 命令

        cp用来拷贝对象。例如要把file1拷贝到file2,用如下命令:

      cp file1 file2

      

        8.dd 命令

        通过dd命令可以把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。dd命令的使用举例如下:

    # dd if = /dev/had ōf=had.bak bs=512 count=1
    dd
    命令的各参数解释如下:
    if = file
    输入文件名;
    of = file
    输入文件名;
    bs = n
    设置输入、输出块的大小为n字节;
    count = blocks
    只拷贝输入的blocks块。

     

        9.fg 命令

        fg命令用来激活某个被挂起的进程并使它在前台运行。当有一个进程正在运行时,由于某种原因需要挂起它,在执行完其他任务后,需要重新把这一进程调到前台运行,这时便可用fg命令使这一进程继续运行。

      

        10.find 命令

        find命令用来查找指定目录的文件。当找到后将按照用户的要求对文件进行处理。语法是:

        find 以它为起点进行搜索的目录 想要查找的文件名或元字符 对文件执行的操作

          详见http://www.ruanxue.com/czxt/2664.html

            通过文件名查找法:

    1)  find / -name httpd.conf  查找文件名为httpd.conf的文件,“find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,

    2)  find /etc -name httpd.conf “find/etc”就是只在 etc目录下查找文件

    3)  根据部分文件名查找方法:find /etc -name '*srm*' 查找etc目录下所有包含有这3个字母的文件

    find /etc -name 'srm*' 查找由srm 3个字母打头的文件

        11.grep 命令

        grep命令用来在指定的对象中搜索指定的文本。语法是:grep〈text〉〈 file〉。它还可以和其他命令的结果联合使用,例如:

      ps -ef|grep-v root

        这一命令要求grep接受ps命令的输出,并除去所有包含单词root的进程(-v 的含义是显示与文本不匹配的内容)。在不使用-v选项时,这一命令将显示进程清单中所有包含单词root的进程。

    假设在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:
    $ grep magic /usr/src/linux/Documentation/*
    搜索结果:

    sysrq.txt:* How do I enable the magic SysRQ key?
    sysrq.txt:* How do I use the magic SysRQ key?

    其中文件‘sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
    默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:
      grep: sound: Is a directory
    这可能会使‘grep’的输出难于阅读。这里有两种解决的办法:
    明确要求搜索子目录:grep -r
    或忽略子目录:grep -d skip
    当然,如果预料到有许多输出,可以通过 管道 将其转到‘less’上阅读:
    $ grep magic /usr/src/linux/Documentation/* | less
    这样就可以更方便地阅读。
    有一点要注意,必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果忘了,‘grep’会一直等着,直到该程序被中断。遇到了这样的情况,按 <CTRL c> ,然后再试。

        12.halt 命令

        halt命令用来通知内核关闭系统,它是一个只能由超级用户执行的命令。

      

        13.hostname 命令

        既可以用来显示系统当前的主机名或域名,也可用来设置系统的主机名(hostname=主机名,重启后生效)。

      

        14.login 命令

        当向系统注册时,将使用login。login命令也可用来随时从这一用户改变到另一用户。

      

        15.logout 命令

        logout命令用来使当前用户从系统中注销。如果这是你使用的注册到系统的唯一用户,那么将退出系统。

      

        16.ls 命令

        ls命令用来列出目录的内容,它的输出格式可通过选项来控制。没有任何选项的ls命令将按照字母顺序列出所有非隐藏文件,显示的列数以正好适合窗口的大小为准。最常用的一组选项是-la。这里a表示要列出所有的文件;l表示以长格式列出,它使输出结果成为一个详细的长列表。

      

        17.more 命令

        more是一个过滤程序,它可以每次一屏地翻阅文本文件的内容。这一命令只能对文件向下进行翻页。 没有less命令功能强大

      

        18mount 命令

        mount命令用来把特殊文件(通常是设备名,硬盘、光盘、软盘或MO盘等存储设备)指定的文件系统(vfat:Windows常用的FAT32文件系统 hpfs:OS2文件系统 ext3:Linux文件系统 iso9660:光盘文件系统)安装在作为一个参数被指定的目录上(/mnt目录,专门用作挂载点(Mount Point)目录)。只有超级用户能够安装文件。如果在运行mount命令时不使用任何参数,它将列出当前被安装的所有文件系统。参见http://softwareengineering.chinadir.net/40267.htm

    例如,如要挂装下列5个设备,需要执行下列命令:

     

    设备

    挂装命令

    移动硬盘

    mount -t vfat /dev/sda /mnt/myhd

    光盘(IDE光驱)

    mount /mnt/cdrom

    软盘

    mount /mnt/floppy

    光盘(SCSI光驱)

    光盘文件系统

      

        

     

        

     

     

     

    19.mv 命令

    mv命令用来把某个对象从这一位置移动到另一位置。如果最后一个变量指定的是一个现有的目录,那么这一命令将把命令行中指定的所有文件移到这一目录中;如果给出的是两个文件,mv将把第一个文件移到第二个文件中。只有当最后一个变量是一个目录时,mv命令的变量才可以超过两个。

      

        20.ps 命令

        ps用来报告进程的状态,它将显示一张当前进程的快照。

      

        21.rm 命令

        rm用来删除指定的文件。利用-r选项,rm将递归地删除文件(warning:危 险)。rm可与find命令联合使用,查找某一文件并删除它。在缺省的情况下,rm 命令不能删除目录。

      

        22.rmdir 命令

        rmdir用来删除指定的空目录。语法是: rmdir〈directory name〉

      

        23.umount 命令

        umount命令用来卸载文件。语法是:  umount〈filename〉

          例如umount /mnt/cdrom用于解挂装光盘(IDE光驱)。

        

    24.unalias 命令

        unalias用来取消别名。如前面曾把dir设置为ls命令的别名,要取消它只须输入unalias dir即可。

      

        25.unzip 命令

        unzip用来列出、检测或从某个zip文档中抽取文件,它的缺省用法是从文档中抽取文件。其基本语法是: unzip〈filename〉

      

        26.who 命令

        who命令用来显示当前注册到系统的每个用户的注册名、终端类型、注册时间和远程主机名。

        如果有两个非选项的参数传递给who命令,那么它将打印出正在运行此命令的用户的信息。

        如果想要查看某一对话所持续的时间,可利用-u选项。

      

        27.xset 命令

        xset命令用来设置X Window环境中的一些选项,可利用它来设置响铃(xser b〈volume〉〈frequency〉〈duration in milliseconds〉)、鼠标速度(xset m〈acceleration〉〈threshold〉),以及其它参数。

      

        28.zip 命令

        zip命令用来列出、检测或向某个zip文档中添加文件,它的缺省用法就是向某个文档中添加文件。

  • 与DOS功能相似的一些Linux命令

    2006-12-12 14:45:34

    Linux虽然是免费的,但它的确是一个非常优秀的操作系统,与MS-WINDOWS相比具有可靠、稳定、速度快等优点,且拥有丰富的根据UNIX版本改进的强大功能。下面,作为一个典型的DOS 和WINDOWS用户,让我们一起来学习Linux的一些主要命令,希望大家能尽快进入到Linux的世界里。

        一、启动

        Linux的启动操作过程和DOS相似(尽管如此,但作为操作系统本身,Linux在启动和退出时所作的工作要比DOS多得多),也可以通过按下Ctrl+Alt+Del三键进行热启动。不同的是Linux启动到最后时,需要进行登录。下面是一个典型的登录过程:

        ……

        RedHat Linux release 5.1

        Kernel 2.0.32 on an i686

        login:

        你键入:root后,计算机显示输口令(password:),输入你的口令(如果是第一次启动,则是你在安装时所输入的口令)即可。当计算机出现一个#提示 符时,表明你登录成功!

        [root@localhost root]#_  Linux提示符(如果是root用户下,即用户是管理员的话,前面的提示符是#,一般用户提示符是$

        C:\>_ DOS提示符

        二、常用的一些命令:

        1.显示文件目录命令ls(DOS下为DIR)

        在Linux中用ls命令显示文件及目录(当然,你仍然也可用DIR命令,只不过在这里的参数不同)。例如:#ls

        root mnt boot dev bin usr xiong tmp etc games

        看起来似乎简单(就相当于DOS中的DIR/W),但你会发现你看到的有些难懂,连哪些是目录哪些是文件都不清楚,哪些又是可执行文件呢?不要紧,请输入:#ls -F+root/ mnt/ boot/ dev/ bin/ usr/ xiong* tmp/ etc/ games / readme

        看清楚了吧,带*为可执行文件(相当于DOS中的EXE和COM文件),带/为子目录,其它的为通用文件。另外,我们可用ls -l显示文件目录的详细情况(相当于DOS中的DIR命令)。千万注意区分大小写!!如LS -f;Ls等都是错误的。另外,ls命令还有许多参数,你可以用man ls或ls--help去进一步了解。

        2.改变当前目录命令cd(DOS下为CD)

    比较

    Linux

    DOS

    进入子目录

    cd /mnt/cdrom,目录名的大小写必须与实际相同,cd后必须有空格

    C:\>CD\MNT\cdrom或cd\mnt\cdrom DOS不区分大小写,CD后不必空格

    退出到上一级目录

    cd .. 必须为小写,必须有空格

    C:\mnt\cdrom>cd ..或cd..或CD..

    退出到最上层目录

    cd / 总目录为/,cd与/必须有空格

    C:\mnt>cd\或C:\mnt>cd \

    pwd 显示当前目录  

    3.建立子目录mkdir(DOS下为MD或MKDIR)

        在Linux中只能用mkdir,可用相对路径和绝对路径,请比较:

        DOS系统: C:\>md xiong或md \xiong或md\xiong

        Linux系统:[root@localhost /]#mkdir xiong或mkdir /xiong

        

        4.删除子目录命令rmdir(DOS下为RD)

        在Linux中用rmdir命令删除子目录,例如:

        rmdir /mnt/cdrom 相当于rd \mnt\cdrom

        注意:同DOS一样,要删除的子目录必须是空的,而且必须在上一级目录中才能删除下一级 子目录。

        5.删除文件命令rm(DOS下为DEL或EARSE)

        在Linux中用rm命令删除文件,例:

        rm /ucdos.bat 相当于del \ucdos.bat

        6.文件改名命令mv(DOS下为REN或RENAME)

    在Linux中用mv命令给文件改名(注意要加上文件的扩展名),例:

        mv /mnt/floppy p相当于 ren \mnt\floppy p 将floppy改名为p

        说明:在Linux中的mv命令除了文件改名外,还有文件移动的功能,请看例子:

        mv /mnt/floppy /bin 相当于DOS中的命令 move \mnt\floppy \bin 将mnt下的文件floppy移动至bin目录下

        7.文件复制命令cp(DOS下为COPY)

        在Linux中用cp命令进行文件复制,例:

        cp /ucdos/* /fox 相当于copy \ucdos\*.* \fox 将ucdos目录下的文件复制到fox目录下

        注意:DOS中的*.*在Linux中用*代替。

        8.获取帮助信息命令man(DOS下为HELP)

        在Linux中用man命令获取帮助信息,例:

        man ls 相当于help dir

        ls --help 相当于dir/

        9.显示文件的内容less(DOS下为TYPE)

        在Linux中用less命令进行文件显示工作q’结束。例如我们要显示man1子目录下的mwm.lx的内容只需输入[root@localhost man1]#less mwm.lx即可。在Linux中,我们也可用另外一个命令more来显示文件内容,例如:more mwm.lx。你会看到,这两个命令非常相似,实际上,less命令的功能要比more强一些,你可以自己去摸索。在Linux中,还提供了两个DOS中没有的阅读文件的命令,它们是head和tail命令,分别用来显示文件的头部和后部的部分内容。使用格式为:head(tail) [n],缺省n时,显示10行,例如:

        head /usr/man/mwm.lx 显示文件mwm.lx前10行的内容

        head 15 /usr/man/mwm.lx 显示文件mwm.lx前15行的内容

        tail 17 /usr/man/mwm.lx 显示文件mwm.lx后17行的内容

        10.重定向与管道

        大家知道,在DOS中,我们可以通过重定向与管道方便地进行一些特殊的操作,如:dir>direct.txt将当前目录放入文件direct中;type readme.txt>>direct.txt,将文件readme的内容追加到文件direct中;又如:type readme.txt|more,分页显示文本文件readme.txt的内容。在Linux中的重定向与管道操作同DOS中的操作几乎一样,上面两个例子在Linux中应为:ls>direct.txt; less readme.txt|more(注:实际上,Linux中的more和less命令本身具有分页功能)。

        11.外壳程序(shell)(DOS命令解释器(command))

        在DOS系统中,我们绝大多数用户都是用的command.com这个命令解释器。当然,你也可换用Norton或DOS4.0以后的dosshell。在Linux中,有好几种shell。常见的有:ash,bash,ksh,tcsh,zsh等,从上面的环境变量中SHELL=/bin/bash可以看出你用的是哪种shell,它位于何处。计算机默认的一般是bash。

         以上讲到的仅仅是与DOS功能相似的一些Linux命令,而作为一个多用户、多任务的操作系统,其强大的功能还远不止于此。希望更多的人用上这个优秀的操作系统,相信你一定不会后悔的。

     

    -摘自网络资源并添加自己的修改和注释

Open Toolbar