激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現TCP協議下的端口映射功能的腳本程序示例

Python實現TCP協議下的端口映射功能的腳本程序示例

2020-08-27 11:59hutaow Python

端口映射一個最基本的運作形態就是通過一個中間端口將一個端口發送的數據全部轉給另一個端口,well,這里我們就來看一下Python實現TCP協議下的端口映射功能的腳本程序示例

1 端口映射

舉個例子來說明一下端口映射的作用。

有A、B、C三臺計算機,A、B互通,B、C互通,但是A、C不通,這個時候在C上開了一個Web服務,如何讓A訪問C的Web服務?

最簡單有效的辦法就是在B上開一個端口映射服務,然后讓A訪問B的某個端口,B將這個端口上的所有流量全部轉發到C的Web服務端口上,同時將C上Web服務返回的流量也全部轉發給A。這樣對A來說,以B為跳板,實現了間接訪問C上Web服務的目的。

2 實現流程

端口映射的原理并不復雜,本文以TCP為例介紹一下實現過程,簡單畫了個時序圖(如下),這里就不再用文字贅述了。

Python實現TCP協議下的端口映射功能的腳本程序示例

需要注意的是,由于端口映射只是單純的流量轉發,對應用層數據不進行處理,所以對于多通道協議是無法支持的(如FTP協議)。

3 代碼示例

按照上面的流程,Python實現如下(建議從后向前看):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# -*- coding: utf-8 -*-
# tcp mapping created by hutaow(hutaow.com) at 2014-08-31
 
import socket
import threading
 
# 端口映射配置信息
CFG_REMOTE_IP = '192.168.0.10'
CFG_REMOTE_PORT = 22
CFG_LOCAL_IP = '0.0.0.0'
CFG_LOCAL_PORT = 10022
 
# 接收數據緩存大小
PKT_BUFF_SIZE = 2048
 
# 調試日志封裝
def send_log(content):
  print content
  return
 
# 單向流數據傳遞
def tcp_mapping_worker(conn_receiver, conn_sender):
  while True:
    try:
      data = conn_receiver.recv(PKT_BUFF_SIZE)
    except Exception:
      send_log('Event: Connection closed.')
      break
 
    if not data:
      send_log('Info: No more data is received.')
      break
 
    try:
      conn_sender.sendall(data)
    except Exception:
      send_log('Error: Failed sending data.')
      break
 
    # send_log('Info: Mapping data > %s ' % repr(data))
    send_log('Info: Mapping > %s -> %s > %d bytes.' % (conn_receiver.getpeername(), conn_sender.getpeername(), len(data)))
 
  conn_receiver.close()
  conn_sender.close()
 
  return
 
# 端口映射請求處理
def tcp_mapping_request(local_conn, remote_ip, remote_port):
  remote_conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
  try:
    remote_conn.connect((remote_ip, remote_port))
  except Exception:
    local_conn.close()
    send_log('Error: Unable to connect to the remote server.')
    return
 
  threading.Thread(target=tcp_mapping_worker, args=(local_conn, remote_conn)).start()
  threading.Thread(target=tcp_mapping_worker, args=(remote_conn, local_conn)).start()
 
  return
 
# 端口映射函數
def tcp_mapping(remote_ip, remote_port, local_ip, local_port):
  local_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  local_server.bind((local_ip, local_port))
  local_server.listen(5)
 
  send_log('Event: Starting mapping service on ' + local_ip + ':' + str(local_port) + ' ...')
 
  while True:
    try:
      (local_conn, local_addr) = local_server.accept()
    except KeyboardInterrupt, Exception:
      local_server.close()
      send_log('Event: Stop mapping service.')
      break
 
    threading.Thread(target=tcp_mapping_request, args=(local_conn, remote_ip, remote_port)).start()
 
    send_log('Event: Receive mapping request from %s:%d.' % local_addr)
 
  return
 
# 主函數
if __name__ == '__main__':
  tcp_mapping(CFG_REMOTE_IP, CFG_REMOTE_PORT, CFG_LOCAL_IP, CFG_LOCAL_PORT)

4 運行

運行效果如下,192.168.0.20通過連接映射服務器的10022端口,成功訪問192.168.0.10的SSH服務(22端口):

Python實現TCP協議下的端口映射功能的腳本程序示例

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产免费一区二区三区最新不卡 | av在线中文 | 久久成人午夜视频 | 成人免费毛片网站 | 黄色免费大片 | 在线观看中文字幕av | 成人在线a | 欧美精品成人一区二区在线观看 | 91成人一区 | xxx日本视频 | 韩国一级免费视频 | 国产精品视频专区 | 久草在线视频福利 | 欧美日韩免费观看视频 | 精品国产一二区 | 红杏网站永久免费视频入口 | 91短视频网页版 | 激情在线观看视频 | 欧美一级免费在线观看 | 精国品产一区二区三区有限公司 | www.精品在线 | 久久久久久久久久久久久国产精品 | 日韩在线播放一区二区 | av中文字幕免费在线观看 | 中文字幕在线一 | 成人永久在线 | 九九热免费视频在线观看 | 久久久久久精 | 国产呻吟 | 97风流梦电影| 精品国产乱码久久久久久久久 | 国产亚洲精品久久久久5区 综合激情网 | 爽爽视频免费看 | 一级免费视频 | 成人免费观看49www在线观看 | 欧美三级一级 | 日韩视频一区 | 色播视频在线播放 | 日韩视频在线视频 | 亚洲 91 | 久久免费视频7 |