深圳網(wǎng)站制作公司訊息站長統(tǒng)計(jì)幸福寶下載
文章目錄
- 1 老版瑞士軍刀:netcat(nc)
- 部分參數(shù):
- 示例:
- 2 新版瑞士軍刀:socat
- 基本命令:
- 示例:
- 3 最后
1 老版瑞士軍刀:netcat(nc)
參考:https://zhuanlan.zhihu.com/p/83959309
netcat 主要有 GNU版 和 OpenBSD版,一般軟連接為nc
查看方法:readlink -f $(which nc)
/bin/nc.traditional: 默認(rèn) GNU 基礎(chǔ)版本,一般系統(tǒng)自帶。
/bin/nc.openbsd: openbsd 版本,強(qiáng)大很多。
nmap 自帶的一個(gè)更好的 netcat 分支,比 openbsd 版本還強(qiáng)
-N 傳輸完就退出
-n 不進(jìn)行dns解析
-l 偵聽
-p 端口號(hào)
-u 代表udp協(xié)議
-z 代表不發(fā)送數(shù)據(jù),僅連接
-vv 顯示更多信息 -v、-vv、-vvv
# http端口測試(tcp 80):
$ nc -vz 192.168.32.13 80 # 類別telnet 192.168.32.13 80# tcp端口測試:
$ nc -l -p 8080 # 服務(wù)器端偵聽8080端口,默認(rèn)tcp協(xié)議
$ nc 192.168.1.2 8080 # 連接服務(wù)器(192.168.1.2)的8080端口# udp端口測試:
$ nc -u -l -p 8080 # 服務(wù)器端偵聽8080端口
$ nc -u 192.168.1.2 8080# 傳輸目錄:
$ nc -l -p 3333 | tar -x ./ # 服務(wù)器端偵聽3333端口。收到tar包數(shù)據(jù)流,并解包到當(dāng)前目錄
$ tar -cO ./2018 | nc -N 192.168.32.13 3333 # 創(chuàng)建tar包,并輸出到標(biāo)準(zhǔn)輸出,再通過管道傳輸?shù)椒?wù)器(192.168.32.13)的3333端口。 說明:-O 輸出到標(biāo)準(zhǔn)輸出。
## 或壓縮后傳輸:
$ nc -l -p 3333 | tar -zx ./ # 服務(wù)器端偵聽3333端口。收到tar.gz包數(shù)據(jù)流,并解壓解包到當(dāng)前目錄
$ tar -zcO ./2018 | nc -N 192.168.32.13 3333 # 創(chuàng)建tar.gz包,并輸出到標(biāo)準(zhǔn)輸出,再通過管道傳輸?shù)椒?wù)器(192.168.32.13)的3333端口。# 傳輸目錄為tar文件:
$ nc -l -p 3333 > xx.tar.gz # 服務(wù)器端偵聽3333端口。收到tar.gz包數(shù)據(jù)流保存到xx.tar.gz
$ tar -zcO ./2018 | nc -N 192.168.32.13 3333 # 創(chuàng)建tar.gz包,并輸出到標(biāo)準(zhǔn)輸出,再通過管道傳輸?shù)椒?wù)器3333端口# 傳輸文件:
$ nc -l -p 3333 > xx.tar.gz # 服務(wù)器端偵聽3333端口。收到tar.gz包數(shù)據(jù)流保存到xx.tar.gz
$ nc -N 192.168.32.13 3333 < xx.tar.gz # 將文件xx.tar.gz輸出到服務(wù)器3333端口# 網(wǎng)速吞吐量測試:
$ nc -vv -n -l -p 3333 > /dev/null # 服務(wù)器端偵聽3333端口。將收到的數(shù)據(jù)丟棄
$ dd if=/dev/zero bs=1MB count=100 | nc -N -n 192.168.32.13 3333 # 通過dd輸入 100x1MB 數(shù)據(jù)到服務(wù)器3333端口
## 或方法二即時(shí)顯示網(wǎng)速
$ nc -l -p 3333 | pv # 需要安裝:sudo apt install pv
$ nc 192.168.32.13 3333 < /dev/zero# 連接bash shell:
$ mkfifo /tmp/f # 新建管道文件
$ cat /tmp/f | /bin/bash 2>&1 | nc -v -n -l -p 3333 > /tmp/f # 這個(gè)命令要從nc命令處開始理解,首先nc收到遠(yuǎn)程傳來的內(nèi)容(命令),將其輸出到管道,然后將管道里的內(nèi)容cat到bash,然后bash執(zhí)行完成后又輸出到stdout,stdout又會(huì)被輸出到遠(yuǎn)程的屏幕進(jìn)行回顯
$ nc 192.168.32.13 3333
## 用完注意將 /tmp/f 這個(gè) fifo 管道文件刪除。
2 新版瑞士軍刀:socat
參考:https://zhuanlan.zhihu.com/p/347722248
socat [參數(shù)] <地址1> <地址2>
[參數(shù)]請(qǐng)參考help
使用 socat 需要提供兩個(gè)地址,然后 socat 做的事情就是把這兩個(gè)地址的數(shù)據(jù)流串起來,把第左邊地址的輸出數(shù)據(jù)傳給右邊,同時(shí)又把右邊輸出的數(shù)據(jù)傳到左邊。最簡單的地址就是一個(gè)減號(hào)“-”,代表標(biāo)準(zhǔn)輸入輸出,例如:
$ socat - - # 把標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出對(duì)接,輸入什么顯示什么
# 網(wǎng)絡(luò)測試:
$ socat - TCP-LISTEN:8080 # 啟動(dòng) server 監(jiān)聽 TCP
$ socat - TCP:192.168.32.13:8080 # 連接server 8080
## 或:
$ socat TCP-LISTEN:8080 -
$ socat TCP:192.168.32.13:8080 -
## 說明:上面兩種方法效果一樣,因?yàn)榫褪前炎笥覂蓚€(gè)地址的輸入輸出接在一起,除非前面指明 -u 或者 -U 顯示指明數(shù)據(jù)“從左到右”還是“從右到左”。# 也可以用udp協(xié)議:
$ socat - UDP-LISTEN:8080 # 終端1 上啟動(dòng) server 監(jiān)聽 UDP
$ socat - UDP:192.168.32.13:8080 # 終端2 上啟動(dòng) client 鏈接 UDP# 一般如果客戶端結(jié)束結(jié)束會(huì)話,服務(wù)端也會(huì)結(jié)束,但加額外參數(shù)可以避免:
$ socat - TCP-LISTEN:8080,fork,reuseaddr # 終端1 上啟動(dòng) server
$ socat - TCP:192.168.32.13:8080 # 終端2 上啟動(dòng) client
## 注釋:
## fork 能同時(shí)應(yīng)答多個(gè)鏈接過來的客戶端,每個(gè)客戶端會(huì) fork 一個(gè)進(jìn)程出來進(jìn)行通信
## reuseaddr 地址重用,防止鏈接沒斷開玩無法監(jiān)聽的問題# 端口轉(zhuǎn)發(fā)1:
$ socat TCP-LISTEN:8080,fork,reuseaddr TCP:www.baidu.com:443 # 轉(zhuǎn)發(fā)本地端口的數(shù)據(jù)到遠(yuǎn)程www.baidu.com:443# 端口轉(zhuǎn)發(fā)2:
$ socat TCP-LISTEN:8080,fork,reuseaddr EXEC:/usr/bin/bash # 服務(wù)端提供 shell
$ socat - TCP:192.168.32.13:8080 # 客戶端登錄
3 最后
愛你!