內網主機埠————》外網主機埠。
訪問外網埠————》內網主機埠。
路由器上設定乙個埠對映。
外部埠和內部埠一 一對應
外部埠和內部ip一 一對應
兩個程式,監聽相同的埠。
埠復用技術中最重要的乙個函式是setsockopt()
setsockopt() 函式,用於任意型別、任意狀態套介面的設定選項值。
設定socket的so_reuseaddr選項,即可實現埠復用
so_reuseaddr:套接字繫結多個埠,埠繫結多個套接字
1、多個套接字繫結1個埠
但每個例項繫結的ip位址是不能相同的。(例如路由器)
import socket
tcp1 = socket.socket(socket.af_inet, socket.sock_stream)
tcp2 = socket.socket(socket.af_inet, socket.sock_stream)
#在繫結前呼叫setsockopt讓套接字允許位址重用
tcp1.setsockopt(socket.sol_socket, socket.so_reuseport, 1)
tcp2.setsockopt(socket.sol_socket, socket.so_reuseport, 1)
#接下來兩個套接字都也可以繫結到同乙個埠上
tcp1.bind(('0.0.0.0', 12345))
tcp2.bind(('0.0.0.1, 12345))
2、乙個套接字繫結多個埠
每個socket繫結的ip位址不同。
接收乙個埠,傳送另乙個埠
#coding=utf-8
import socket
import sys
import select
host='192.168.1.8'
port=80
s=socket.socket(socket.af_inet,socket.sock_stream)
s.setsockopt( socket.sol_socket, socket.so_reuseaddr, 1 )
s.bind((host,port))
s.listen(10)
s1=socket.socket(socket.af_inet,socket.sock_stream)
s1.connect(('127.0.0.1',3389))
print "start listen 80 =>3389....."while 1:
infds,outfds,errfds=select.select([s,],,,5) #**3389需去除
if len(infds)!=0:#**3389需去除
conn,(addr,port)=s.accept()
print '[*] connected from ',addr,port
data=conn.recv(4096)
s1.send(data)
recv_data=s1.recv(4096)
conn.send(recv_data)
print '[-] connected down',
s1.close()
s.close()
木馬控制技術(二) 埠復用
此為 木馬技術揭秘與防禦 系列讀書筆記 埠復用,字面意思就是,重複使用乙個埠 記得有一次同學的 sina 微博總是自動發訊息,當時讓他檢視本地埠,再通過埠找到對應程式 學了埠復用和執行緒注入之後,發現這種方法對 高階點 的木馬完全沒用 還是需要一些強大的 hip 工具來檢查 回到正題 埠復用,使用到...
Golang 埠復用測試
先給出結論 同乙個程序,使用乙個埠,然後連線關閉,大約需要30s後才可再次使用這個埠。首先使用埠9001連線服務端,傳送資料,然後關閉連線,接著再次使用埠9001連線服務端,如果連線失敗,間隔15s後,再次嘗試,最多嘗試3次,client package main import bufio fmt ...
埠復用和重對映
stm32除核心外還有很多內建外設,如串列埠,adc,與gpio復用 一些gpio可以復用為內建外設的功能引腳,如 pa9,pa10可復用為功能串列埠1的傳送接收引腳 晶元資料手冊 gpio埠復用時鐘使能 rcc apb2periphclockcmd rcc apb2periph gpio,enab...