php shell打开mp3文件_shell如何打开文件,不知道文件名 - CSDN
精华内容
参与话题
  • Shell下curl的使用

    万次阅读 2012-09-25 23:22:02
    curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。... 通用语法: ...curl [option] [URL...] ...

     curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。本文只探讨其强大的HTTP功能。

    通用语法:

    curl [option] [URL...]

    在处理URL的时候其支持类型于SHELL的名称扩展功能,如http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL

    下面介绍选项功能:

    不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上

    -o out  将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件

    -O  按服务器上的名称保存下载的文件

    -r/--range  from-to 下载指定range内的数据

    -C 在保存文件时进行续传

    -A/--user-agent  <ua>  指定发送请求的用户代理 如 curl -A My-Agent/1.0.0 www.apple.com 

    -x  ip:port 指定使用的http代理,如curl -x 192.168.1.1:8080 www.apple.com

    -D head.txt  将服务器的返回的header保存为文件,头部的cookie也可被保存   curl -D header.txt www.apple.com

    -c <file> 保存服务器的cookie文件

    -b/--cookie  <name=data>   向服务器提交cookie,若无=则name视为文件名  curl -b cookie.txt www.apple.com

    -e url  设置引用头的值

    -T localfile  向服务器PUT文件 如curl -T 1.mp3  www.apple.com/upload.php

    -d <key=value>  向服务器POST表单数据 如curl -d "order=111&count=2" http://www.apple.com/buy

    -F <key=value> 向服务器POST表单 curl -F "web=@index.html;type=text/html" url.com

    如果希望从本地文件中获取表单数据,则在文件名前加@ 如 curl -d @data.xml http://www.apple.com

    若希望从标准输入获取则用curl -d - http://www.apple.com

    -E cert.pem  指定本地证书

    -H <header:value>  为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.apple.com

    -I  构造一个HEAD请求

    -X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com

    --compressed 采用压缩方式接收返回数据

    --connect-timeout <s> 设置超时时间

    -v 详细输出,包含请求和响应的首部

    --retry num

    --retry timeo 指定重试的次数和间隔

    --tcp-nodelay 打开TCP_NODELAY选项  不进行捎带确认

    环境 变量:http_proxy [protocol://]<host>[:port]




     





    展开全文
  • Linux下的文件文件后缀名

    万次阅读 2013-03-14 15:34:39
    ++++++++++++++++++++++++++++++++++++++ ...一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件的后缀就能判断文件的类型。但在Li

    ++++++++++++++++++++++++++++++++++++++
    正文
    ++++++++++++++++++++++++++++++++++++++

    1、Linux文件的扩展名;

    一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件的后缀就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。

    现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux桌面环境和Windows桌面没有太大的区别。

    在Linux中,带有扩展名的文件,只能代表程序的关联,并不能说明文件是可以执行,从这方面来说,Linux的扩展名没有太大的意义。

    file.tar.gz file.tgz file.tar.bz2 file.rar file.gz file.zip ... ... 这些大家都熟悉,是归档文件。要通过相应的工具来解压或提取;

    file.php 这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;

    file.so 这类是库文件;

    file.doc file.obt 这是OpenOffice 能打开的文件;

    ... ...

    用一些工具创建的文件,其后缀也不相同,就看我们用什么工具了,比如 Gimp,gedit,OpenOffice 等工具,创建出来的文件后缀名也不一样。


    2、Linux 文件类型;

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。

    Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等;现在我们进行一个简要的说明;


    2.1 普通文件;

    [root@localhost ~]# ls -lh install.log
    -rw-r--r-- 1 root root 53K 03-16 08:54 install.log

    我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令;


    2.2 目录;

    [root@localhost ~]# ls -lh
    总计 14M

    -rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale
    -rw-r--r-- 1 root root   53K 03-16 08:54 install.log
    -rw-r--r-- 1 root root   14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
    drwxr-xr-x 2 1000 users 4.0K 04-04 23:30 mkuml-2004.07.17
    drwxr-xr-x 2 root root  4.0K 04-19 10:53 mydir
    drwxr-xr-x 2 root root  4.0K 03-17 04:25 Public

    当我们在某个目录下执行,看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d。创建目录的命令可以用 mkdir 命令,或cp命令,cp可以把一个目录复制为另一个目录。删除用rm 或rmdir命令。


    2.3 字符设备或块设备文件;

    如时您进入/dev目录,列一下文件,会看到类似如下的;

    [root@localhost ~]# ls -la /dev/tty
    crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty
    [root@localhost ~]# ls -la /dev/hda1
    brw-r----- 1 root disk 3, 1 2006-04-19 /dev/hda1

    我们看到/dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备;

    我们看到 /dev/hda1 的属性是 brw-r----- ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备;

    这个种类的文件,是用mknode来创建,用rm来删除。目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件。因为这些文件是和内核相关联的。


    2.4 套接口文件;

    当我们启动MySQL服务器时,会产生一个mysql.sock的文件。

    [root@localhost ~]# ls -lh /var/lib/mysql/mysql.sock
    srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock

    注意这个文件的属性的第一个字符是 s。我们了解一下就行了。


    2.5 符号链接文件;

    [root@localhost ~]# ls -lh setup.log
    lrwxrwxrwx 1 root root 11 04-19 11:18 setup.log -> install.log

    当我们查看文件属性时,会看到有类似 lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名新文件名。上面是一个例子,表示setup.log是install.log的软链接文件。怎么理解呢?这和Windows操作系统中的快捷方式有点相似。

    符号链接文件的创建方法举例;

    [root@localhost ~]# ls -lh kernel-2.6.15-1.2025_FC5.i686.rpm
    -rw-r--r-- 1 root root 14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
    [root@localhost ~]# ln -s kernel-2.6.15-1.2025_FC5.i686.rpm  kernel.rpm
    [root@localhost ~]# ls -lh kernel*
    -rw-r--r-- 1 root root 14M 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
    lrwxrwxrwx 1 root root  33 04-19 11:27 kernel.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm


    3、关于本文;

       在Linux环境下一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。

         现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个linux文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux桌面环境和Windows桌面没有太大的区别。
         在Linux中,带有扩展名的文件,只能代表程序的关联,并不能说明文件是可以执行,从这方面来说,Linux的扩展名没有太大的意义。

     

    Linux下常见的文件扩展名


    *.php ------这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;
    *.so -------这类是库文件;
    *.doc  *.obt --------这是OpenOffice 能打开的文件;

    .bz2 ------bzip2的压缩文件

    .gz ------gzip的压缩文件

    .tar ------tar打包文件(是包文件不是压缩文件)

    .tbz------tar打包并用bzip压缩文件

    .tgz-----tar打包并用gzip压缩的文件

    .au -----audio文件

    .gif -----gif图象文件

    .html/.htm-----HTML文件

    .jpg-----JPEG图象文件

    .pdf------电子文档(PDF格式的)

    .png-----PNG图象文件

    .ps------postscinpt文件(打印格式文件)

    .txt------纯文本文件

    .wav-----audio文件

    .xpm-----图象文件

    .conf-------配置文件

    .lock-------LOCK文件(用来判断一个文件或设备是否被使用)

    .rpm------REDHATPackage.Manager文件(套件包或软件包)

    .c -------C源程序代码文件

    .cpp------C++源程序代码文件

    .h -------C或C++程序的头文件

    .o------程序目标文件

    .pl------perl脚本文件

    .so-----类库文件

     

    以下是部分后缀的详细解释:

    1.*.sh

      sh是linux,unix命令,
      用途:调用缺省 shell。
      语法:请参阅 ksh 命令的语法。将 /usr/bin/sh 文件链接到 Korn shell。
      描述:sh 命令调用缺省 shell 并使用它的语法和标志。链接到 /usr/bin/sh 路径的 shell 是缺省的 shell。操作系统的标准配置把 /usr/bin/sh 路径链接到 Korn shell。关于 Korn shell 功能的具体信息,请参阅《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『Korn Shell 或 POSIX Shell 命令』。
      标志:请参阅 Korn shell(ksh 命令)的标志。

      文件:/usr/bin/sh 包含 sh 命令。

     

    2.*.cfg

         这只是一个为开发及使用方便而"发明"的一个后缀名。这种文件没有固定的格式,用途也仅仅是保存用户的设置。一般为只读,也可以用于读写。

         同样,为了方便起见,里面的内容大多数时候也确实是文本。可以用任何文本编辑器打开。本例中用Source insight。

         智能手机中的文件:CFG 是一个引导文件, CFG 和TFS文件放在同一文件夹中,相当于程序里的头文件。tfs的cfg文件,可以用resource manager 生成。

          CFG(Config)脚本文件,一般用于程序读取指定值,以下为常见格式:
    例:

    102 (Home)
    115 (VolumeUp)
    114 (VolumeDown)
    248 (Reading)
    158 (Back)
    139 (Menu)
    end

    3. *.ko

       是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块,一般是驱动程序。

       加载:

       modprobe module-name       or          insmod /path-to/module-name.ko
       但要注意的是,该模块在跟你系统环境类似的库及内核版本下编译才可以使用,否则会出错。

     

     

    4. *.conf

        程序配置文件,启动netmeeting

        应用系统中的配置文件,在类unix系统使用广泛,大多数同时有windows和类unix系统版本的软件也使用

     

    5. *.allow和*.deny

    /etc/hosts.allow和/etc/hosts.deny
         这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问.这两个配置文件的格式如下:
        #服务进程名:主机列表:当规则匹配时可选的命令操作
        server_name:hosts-list[:command]
     
         /etc/hosts.allow控制可以访问本机的ip地址,
         /etc/hosts.deny控制禁止访问本机的IP.
         如果两个文件的配置有冲突,以/etc/hosts.deny为准.下面是一个/etc/hosts.allow的示例:
    ALL:127.0.0.1 #允许本机访问本机所有服务进程
    smbd:192.168.0.0/255.255.255.0 #允许192.168.0.网段的IP访问smbd服务
    ALL关键字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况.
     
    6. *.types
       在遇到有2个后缀的文件时,在该文件中检查这个有2个后缀的文件是否被定义了,以便选择合适的文件处理方法。
       This file controls what Internet media types are sent to the client for given file extension(s).
        每遇到一种后双重后缀名(如xxx.php.rar)的文件,Apache都会去conf/mime.types 文件中检查最后一个后缀, 如果最后一个后缀并没有在mime.types文件中定义, 则使用前一个后缀来解释 , 因为在默认情况下,rar并未在mime.types中定义, 故Apache会使用php后缀来解释文件。(这就是漏洞的原因所在)
     
    7. *.rc
        VC中以rc为扩展名的文件称为资源脚本文件, 其中包含了应用程序中用到的所有的windows资源, rc文件可以直接在VC集成环境中以可视化的方法进行编辑和修改。
    8. *.so
       在linux环境下,c++编译得到库文件后缀包括:.so or .a or .la,当然,linux下文件的类型是不依赖于其后缀名的,后缀及其含义:
    .so 为共享库 : 动态库(shared library/shared object/dynamic link library)
    .so.1, .so.6等:后边的是表示版本而已,这都是动态运行库,大部分属于基础库,即glibc。
    .a为静态库 : archive / static library
    .la为libtool自动生成的一些共享库,可以用vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式   file *.la
    展开全文
  • 文件解析漏洞总结-Apache

    万次阅读 多人点赞 2017-08-21 19:39:28
    本文详细论述、测试了Apache的三种文件解析漏洞:多后缀名、罕见后缀和利用.htaccess

    我最为熟悉的便是Apache了,先来研究它的文件解析漏洞。百度许久,又谷歌一番,最终发觉,Apache关于文件解析,似乎只有三种“漏洞”。之所以打引号是因为我觉得这三种“漏洞”都不是Apache的漏洞,只是其特性,而很多程序员不了解这种特性,故而写出有问题的代码,这才给黑客可趁之机,造成漏洞。但大家都称呼这是Apache的文件解析漏洞,我也只好随大流了。

    1.多后缀名

    先说第一种特性:多后缀名。这是怎么的一种鲜为人知的特性呢?原来是这样的,Apache认为,一个文件可以有多个后缀,如:werner.txt.png.mp3。这一文件,放在Windows里,毫无疑问,就是个mp3文件,Windows只认最后一个“.”及其后面的字符“mp3”,觉得该文件后缀为“.mp3”,这也是大多数操作系统、应用软件的处理方式、是正常人习惯。而在Apache中,则可能有所不同,如果有必要,Apache会从后(右)往前(左),一一辨别后缀。何时有必要?当Apache不认识某个后缀时,便有必要。如某文件名为:werner.mp3.html.qwe.arex,Apache在处理时,先读取最后一个后缀,为“.arex”,一看,这啥玩意啊,不认识,继续读取下一个后缀“.qwe”,一看,呀,这又是啥,还是不认识,继续读下一个后缀“.html”,一看,哦,这是个超文本标记语言文件,俗称网页文件,这回认识了,也就不继续读下一个后缀了。若是所有后缀都看完了没有一个认识怎么办?此时就会把该文件当做默认类型进行处理了,一般来说,默认类型是text/plain。据说在Apache的配置文件中搜索“DefaultType”就能看到默认类型的明确定义了,但我却不知为何,没有找到。

    哪些后缀Apache认识,哪些不认识?有一个名为mime.types的文件,其中记录着Apache认识的后缀。在Ubuntu下,该文件位于/etc/mime.types,在Windows下,该文件位于C:/apache/conf/mime.types(类似这样的,注意Apache的安装路径)。该文件是一个一对多的映射表,定义了某一种文件类型,对应的几种后缀。除了该文件,在Apache的配置文件中,还可以用AddCharset语句添加映射,如:

      AddCharset us-ascii   .ascii .us-ascii
      AddCharset ISO-2022-CN .iso2022-cn .cis
    

    mime.types是个很长的文件,大概看了下,Apache认识的后缀比我多多了。节选部分如下所示:

      application/java-archive          jar
      application/m3g                         m3g
      application/java-vm                   class
      application/javascript                js
      application/json                    json
      text/html                             html htm shtml
      text/x-diff                             diff patch
      video/x-flv                             flv
      video/x-la-asf                          lsf lsx
      video/x-mng                             mng
      video/x-ms-asf                          asf asx
      video/x-ms-wm                         wm

    这一特性会带来什么问题呢?网站往往有上传文件的功能,但一定不想让用户上传程序,因为这很可能会危害网站安全,故而会检查上传文件的后缀名,若是.php,则拒绝上传(假设这是个php站)。此时用户只需上传文件evildoer.php.qwe,若是程序员不了解Apache的这一特性,编写的程序检查后缀时只看“.qwe”,而认为这不是程序文件,允许上传,则用户成功地绕过了上传时的安全检查,上传了php程序文件。该文件的最后一个后缀“.qwe”是Apache不认识的,故而Apache会以倒数第二个后缀“.php”为准,把该文件当做是php文件,解析执行。

    这总是奏效的吗?按理来说,由于这是特性而不是漏洞,所以适用于所有版本的Apache。这一奇怪的特性,说不定正是Apache的自豪之处呢。但是,在我的测试中却发现,类似aaa.php.xxx的文件并不会被作为php程序执行,而是被当成文本文件,返回给浏览器,在浏览器中可以看到php源码,而不是执行结果。测试环境是Ubuntu14.04+Apache2.4.7+php5。

    这是怎么回事?难道前面几百字都是废话,说的是错的?我们来做个实验。准备一个文件,内容随意,命名为test.jpg.aaa,放置在Apache中,然后在浏览器中访问它,结果如下图所示:

    这里写图片描述

    可见浏览器是将该文件作为图片处理的。浏览器为何认为test.jpg.aaa是图片呢?aaa可不是图片文件的后缀。这是因为服务器的响应HTTP头中的Content-Type字段值为image/jpeg,浏览器看到image/jpeg,便知这是图片文件。这说明服务器(此处即Apache)是把test.jpg.aaa当做图片的,也说明,前面分析的Apache的多后缀处理是没有错的。

    那么aaa.php.xxx为何没有被作为php代码执行呢?我猜是这样的,当然只是我的猜测,实在是找不到相关资料,只好猜了。Apache看到文件aaa.php.xxx,按照多后缀名的解析规则,认为该文件是php程序文件,把该文件作为php程序文件处理。怎么处理呢?交给php解释器,Apache本身并不懂php。而php解释器却有着和Apache不同的后缀解析规则,可能只认最后一个后缀,故而认为aaa.php.xxx不是php程序文件,拒绝执行。在我的测试环境中,php以模块(module)的模式工作于Apache的领导下。这种模式下php接受到领导Apache分配的任务——aaa.php.xxx,一看,不是php程序文件,没法执行,但也没有报错,而是返回了文件内容本身。php还可以以FASTCGI的模式工作于Apache中,此种模式下php遇到类似aaa.php.xxx这种不是php程序的文件,会触发500错误。

    php本身是如何识别文件的呢?我在Apache的模块的配置文件中找到了php5.conf,内容如下:

      <FilesMatch ".+\.ph(p[345]?|t|tml)$">
          SetHandler application/x-httpd-php
      </FilesMatch>
      <FilesMatch ".+\.phps$">
          SetHandler application/x-httpd-php-source
          # Deny access to raw php sources by default
          # To re-enable it's recommended to enable access to the files
          # only in specific virtual host or directory
          Order Deny,Allow
          Deny from all
      </FilesMatch>
      # Deny access to files without filename (e.g. '.php')
      <FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
          Order Deny,Allow
          Deny from all
      </FilesMatch>
    
      # Running PHP scripts in user directories is disabled by default
      #
      # To re-enable PHP in user directories comment the following lines
      # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
      # prevents .htaccess files from disabling it.
      <IfModule mod_userdir.c>
          <Directory /home/*/public_html>
              php_admin_flag engine Off
          </Directory>
      </IfModule>

    阅读上示配置文件可知,被当做php程序执行的文件名要符合正则表达式:”.+\.ph(p[345]?|t|tml)"”符号在正则中匹配结束,故而可知php本身确实是只看最后一个后缀的。就算Apache把某文件当php程序,php自己不认它,也是无用。

    进一步试验,把php5.conf文件中刚刚提到的正则表达式的“$”换成“\.”,即:

      ".+\.ph(p[345]?|t|tml)\."

    然后重启Apache使配置文件生效,再在浏览器中访问aaa.php.xxx,这次,aaa.php.xxx果然被当做php程序执行了,在浏览器中,看到的是程序执行结果而不是源码。这也从侧面验证了,我的猜测是正确的。测试完之后,一定要记得改回去。

    2.罕见后缀

    计算机世界自开天辟地以来,便自由多彩。还记得mime.types文件吗?在该文件中搜索“php”这三个字母,结果如下所示:

      werner@Yasser:~$ cat /etc/mime.types | grep php
      #application/x-httpd-php          phtml pht php
      #application/x-httpd-php-source           phps
      #application/x-httpd-php3         php3
      #application/x-httpd-php3-preprocessed        php3p
      #application/x-httpd-php4         php4
      #application/x-httpd-php5         php5

    还记得正则表达式”.+\.ph(p[345]?|t|tml)$”吗,该正则表达式匹配的不仅仅有php,还有php3、php4、php5、pht和phtml。

    好吧,原来不仅php,就连phtml、pht、php3、php4和php5都是Apache和php认可的php程序的文件后缀。我原本只知道“.php”的,真是大开眼界。这就好比,不仅py是Python程序文件的后缀,还有pyc和pyo也都是。写上传过滤规则的程序员是否博学多识,也知道这些知识呢?我想,大抵是不知道的。利用这些“罕见”的后缀名,也可能绕过安全检查,干些“坏事”。

    我在Ubuntu14.04+Apache2.4.7中进行测试,先准备文件text.php,其内容是经典的Hello World:

      <?php echo 'HELLO WORLD'; ?>
    

    然后在浏览器中打开它,成功显示“HELLO WORLD”。再修改该文件后缀为各种后缀,进行测试。测试结果是,以php、phtml、pht、php3、php4和php5为后缀,能成功看到“HELLO WORLD”;以phps为后缀,会报403错误,Forbidden;以php3p为后缀,会在浏览器中看到源码。

    3.妙用.htaccess

    .htaccess是Apache的又一特色。一般来说,配置文件的作用范围都是全局的,但Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件)。

    要想使.htaccess文件生效,需要两个条件,一是在Apache的配置文件中写上:

      AllowOverride All
    

    若这样写则.htaccess不会生效:

      AllowOverride None
    

    二是Apache要加载mod_Rewrite模块。加载该模块,需要在Apache的配置文件中写上:

      LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
    

    若是在Ubuntu中,可能还需要执行命令:

      sudo a2enmod rewrite
    

    配置完后需要重启Apache。

    需要注意Apache可能有多个配置文件,后加载的配置文件会覆盖先加载的配置文件中的配置。所以在某个配置文件中将AllowOverride设置成All,若是其后加载的某个配置文件中AllowOverride的设置是None,则也是没有用的。一般来说,先加载httpd.conf,再加载conf.d/中的配置文件,最后加载sites-enabled/中的配置文件。

    这意味着,.htaccess并不总是有效的。而且不幸的是,在我的测试环境中.htaccess默认无效。好吧,为了测试,我只好将它改为有效。以下讨论均在.htaccess有效的前提下进行。

    .htaccess文件可以配置很多事情,如是否开启站点的图片缓存、自定义错误页面、自定义默认文档、设置WWW域名重定向、设置网页重定向、设置图片防盗链和访问权限控制。但我们这里只关心.htaccess文件的一个作用——MIME类型修改。如在.htaccess文件中写入:

      AddType application/x-httpd-php xxx
    

    就成功地使该.htaccess文件所在目录及其子目录中的后缀为.xxx的文件被Apache当做php文件。另一种写法是:

      <FilesMatch "shell.jpg">
        SetHandler application/x-httpd-php
      </FilesMatch>

    该语句会让Apache把shell.jpg文件解析为php文件。

    下面是一次测试,测试前已经打开Apache对.htaccess文件的支持。在网站根目录中准备如下文件树:

      │
      ├── htaccess_test/
      │   ├── .htaccess
      │   ├── shell.jpg
      │   ├── type.xxx
      │   └── test/
      │       ├── shell.jpg
      │       └── type.xxx
      ├── shell.jpg
      └── type.xxx

    其中,文件.htaccess的内容为:

      AddType application/x-httpd-php xxx
    
      <FilesMatch "shell.jpg">
      SetHandler application/x-httpd-php
      </FilesMatch>

    文件shell.jpg和type.xxx的内容相同,均为:

      <?php echo 'HELLO WORLD'; ?>
    

    然后在浏览器中访问各文件,结果如下表所示:

    访问路径 访问结果
    /type.xxx <?php echo ‘HELLO WORLD’; ?>
    /shell.jpg 加载失败的图片
    /htaccess_test/type.xxx HELLO WORLD
    /htaccess_test/shell.jpg HELLO WORLD
    /htaccess_test/test/type.xxx HELLO WORLD
    /htaccess_test/test/shell.jpg HELLO WORLD

    这一测试结果和预期是相符的。

    但是,按照前面的猜测,就算Apache认为type.xxx是php文件,php自己不这么认为,不也是不能执行的吗?这次怎么就能执行了,好生奇怪。但不管怎么说,我们都已经知道,当.htaccess文件有效时,用.htaccess文件可以很好地设置文件后缀的解析方式。

    展开全文
  • MFC中ShellManager的使用

    千次阅读 2014-03-22 21:08:25
    也许大家看到这个题目,未曾进行windows shell编程的同学呢,会不明白是什么意思,这里简单的介绍一下,windows shell就是可以使编写的程序与系统关联(如快捷方式,托盘图标等),管理系统资源(如文件,文件夹等)...

    也许大家看到这个题目,未曾进行windows shell编程的同学呢,会不明白是什么意思,这里简单的介绍一下,windows shell就是可以使编写的程序与系统关联(如快捷方式,托盘图标等),管理系统资源(如文件,文件夹等)的编程方式。在说的简单一点,就是通过编程控制windows系统的各种行为以及外观,对windows系统进行各种操作和设置。在windows中的所有资源,主要是文件和文件夹,在windows中是通过shell名字空间来管理,windows系统的每个文件和文件夹都在shell名字空间中有一个唯一的标示符,叫PIDL,通过它可以唯一标示一个系统资源,但是对于我们普通用户来说,是通过全路径在定位一个文件,如c:/hello.mp3.这两者之间可以进行转换。


    上面大概对Shell编程的理解,ShellManager主要就是用来获取系统中某个文件夹的路径而使用,在Win32中的使用是比较麻烦的,在mfc中,它的使用就很简单了,主要通过类CShellManager来管理的,首先来看看界面,认识一下ShellManager,如下图:


    有的时候,我们需要枚举某个文件件的某种类型的文件,例如,在酷狗播放器中,添加歌曲的时候,有一个选项就是从文件夹添加,选中一个包含了mp3文件的文件夹,然后就可以枚举获取所有这个文件加下的mp3文件,而不用通过打开文件对话框去获取文件的路径。

    MFC默认其实就添加了对ShellManager的支持,为什么这么说呢,我们先来看在基于对话框的mfc程序中,在app类的InitInstance函数中有这样一句:


    如果你建立的对话框是继承与CWinapp的,会有这么一句,如果你的对话框是基于CWinAppEx的,那么就不用我们手动创建,而是在继承于CWinAppEx的类的Initinstance中调用InitShellManager(),由框架为我们创建,这种创建方式,只要我们在需要使用到ShellManager的地方,就是用GetShellManager函数就会返回它的指针,就可以进行使用。

    下面我们来讲使用,首先我建立了一个对话框,然后添加了一个按钮,名称为ShellManager的按钮,我打算在点击这个按钮的时候,显示一个ShellManager。如下图:


    然后再看看按钮的处理,我添加代码要显示一个ShellManager对话框获取某个文件夹的路径,并用消息框显示出来,代码如下:


    现在运行,效果如下图:


    这样就可以获取指定的文件夹了,另外,我们还可以在设置root(根)节点的位置,这样,就一开始会显示该目录一下的文件夹。比如,我在这里设置G:\Kugou。代码修改如下:


    然后再次运行,效果如下:


    另外还有许多标记可以设置,来控制它的特征行为。

    上面我使用的是继承与CWinAppEx的app类的初始化ShellManager的方式来使用的,如果我使用继承与CWinApp类的初始化方式,我就要自己实例化CShellManager对象。然后将对象指针作为app类的成员,然后在我们之后就可以调用,如声明一个成员用来保存CShellManager对象:


    然后在Initinstance中进行初始化:


    在程序结束的时候,要删除对象:


    在程序使用:


    这样的效果和前面的就是一样,不同的是如果我们使用前面那种方法,就是继承与CWinAppEx的方式,我们就只管用,程序结束时,也不用我们销毁对象,如果使用CWinAppEx,就不要在Initinstance中用new的方式自己创建对象,否则会出现程序崩溃的错误。

    下面,我就是用上面获取的文件夹路径写一个枚举指定文件夹中文件的程序,首先利用CShellManager的方法ItemFromPath将获取的路径转换为PIDL。然后再枚举其中所选择的文件夹中的文件。如下图:


    选取一个文件夹,这里我选择G:\mp3文件夹,点击确定:


    然后选择"枚举item",就可以枚举这个文件夹下的存在的文件:


    好了,今天就说这么多了!!

    有关本文的代码:http://download.csdn.net/detail/xinzhiyounizhiyouni/7082807

    http://www.panshy.com/article/Sort_Desktop/SystemDev/2012-03-21/278.php

    展开全文
  • Apache文件解析漏洞

    千次阅读 2018-03-08 10:00:58
    我最为熟悉的便是Apache了,先来研究它的文件解析漏洞。百度许久,又谷歌一番,最终发觉,Apache关于文件解析,似乎只有三种“漏洞”。之所以打引号是因为我觉得这三种“漏洞”都不是Apache的漏洞,只是其特性,而很...
  • Linux下的文件类型及文件后缀名详解

    千次阅读 2013-11-20 07:52:52
    一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件的后缀就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看...
  • CURL Shell下curl的使用

    千次阅读 2019-05-28 18:16:45
    POST请求 http://172.16.102.208:8089/wiapi/score?leaderboard_id=1&score=36&app_key=66 目的1:通过脚本发送post请求。 ... curl -d "leaderboard_id=7778a8143f111272&...a...
  • 深度剖析E680G应用二.MPKG

    千次阅读 2006-09-26 09:45:00
    深度剖析E680G应用二.MPKG草木瓜 20060818相关资源下载 http://play.younet.com/view.php?tid=18578...这里还需要补充说明一下,上文提到Shell脚本在E680g图形化界面下是不能直接运行的。这里有两种办法,一种通过关
  • hfg1977 发表于 2010-10-29 05:11 注册表中%1与%*对批处理参数传递的影响 ...[color=blue]目的[/color]: 把bat加到右键菜单,多选文件时,把多个文件作为参数传给bat; (不采用拖放) [color=blue
  • ffmpeg编译

    万次阅读 2009-09-16 15:57:00
    下面开始: 由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译。要想使用FFMpeg,最先要解决的问题就是在Windows下配置一个类似...
  • Fedora16 安装相关

    千次阅读 2012-03-13 21:23:12
    安装BCM4312无线网卡驱动 Linux系统BCM4312无线网卡驱动的安装 ...http://www.broadcom.com/support/802.11/linux_sta.php 下载上面的驱动,根据系统的版本选择,我的装系统是32位的,下载的 32-bit driver
  • php下调用 Ffmpeg(待优化)

    千次阅读 2018-07-31 17:29:18
    背景是公司有一个业务需求是用到了科大讯飞的文字语音转换,需要对科大讯飞转换出来的语音文件做合成。 在linux下现有的音频合成软件用的最多的应该也就是ffmpeg了,所以选择了ffmpeg。 虽然在开发前就对ffmpeg的...
  • 炫酷ubantu桌面,compiz特效和配置

    万次阅读 2012-08-18 12:27:49
    1 安装CCSM设置管理器 ...  在弹出的“Ubuntu 软件中心”窗口右上角的搜索栏中,输入“compiz”,  可以看到,默认的“Compiz”这个软件已经安装在系统上了,3D桌面就是由这个软件来运行才能实现的。...
  • Linux必学的60个命令

    万次阅读 2013-04-08 14:01:58
    GNU/Linux Distribution Timeline(Version 12.10):    Linux 命令 ◆ 安装和登录命令:  login、shutdown、halt、
  • 渗透之——Metasploit命令及模块

    千次阅读 2019-01-26 10:26:29
    show exploits 列出metasploit框架中的所有渗透攻击模块。 show payloads 列出metasploit框架中的所有攻击载荷。 show auxiliary 列出metasploit框架中的所有辅助攻击载荷。 search name 查找metasploit框架中所有的...
  • LINUX命令总结

    万次阅读 2014-01-27 15:54:23
    1、 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2、从Linux上远程显示Windows桌面 安装rdesktop包 3、 手动添加默认网关 以root用户, 执行: route add default...
1 2 3 4 5 ... 20
收藏数 3,384
精华内容 1,353
关键字:

php shell打开mp3文件