Ich habe diesen Server hier genutzt:
https://docs.python.org/3/library/socketserver.html
und in diesem Beispiel umgesetzt.
Code: Alles auswählen
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print("{}:{} wrote:".format(self.client_address[0],self.client_address[1]))
print(self.data)
# just send back the same data, but upper-cased
#self.request.sendall(self.data.upper())
msg = self.data
print(msg)
if msg[2] == 0x07:
print("<- U (STARTDT act)")
data = bytearray(msg)
data[2] = 0x0B
self.request.sendall(data)
print("-> U (STARTDT con)")
elif msg[2] == 0x43:
print("<- U (TESTFR act)")
data = bytearray(msg)
data[2] = 0x83
self.request.sendall(data)
print("-> U (TESTFR con)")
else:
print("NIL: {}".fomat(msg))
HOST, PORT = "localhost", 2404
# Create the server, binding to localhost on port 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
Allerdings kommen nicht alle Frames des Client an.
In Wireshark sehe ich das Frame (126 11.557244):
Im Code nicht:17 1.538268 127.0.0.1 52036 127.0.0.1 2404 TCP 56 52036 → 2404 [SYN] Seq=0 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
18 1.538378 127.0.0.1 2404 127.0.0.1 52036 TCP 56 2404 → 52036 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
19 1.538419 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [ACK] Seq=1 Ack=1 Win=2161152 Len=0
20 1.539193 127.0.0.1 52036 127.0.0.1 2404 IEC 60870-5-104 50 <- U (STARTDT act)
21 1.539231 127.0.0.1 2404 127.0.0.1 52036 TCP 44 2404 → 52036 [ACK] Seq=1 Ack=7 Win=2161152 Len=0
22 1.543046 127.0.0.1 2404 127.0.0.1 52036 IEC 60870-5-104 50 -> U (STARTDT con)
23 1.543099 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [ACK] Seq=7 Ack=7 Win=2161152 Len=0
24 1.544044 127.0.0.1 2404 127.0.0.1 52036 TCP 44 2404 → 52036 [FIN, ACK] Seq=7 Ack=7 Win=2161152 Len=0
25 1.544097 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [ACK] Seq=7 Ack=8 Win=2161152 Len=0
26 1.544191 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [FIN, ACK] Seq=7 Ack=8 Win=2161152 Len=0
27 1.544264 127.0.0.1 2404 127.0.0.1 52036 TCP 44 2404 → 52036 [ACK] Seq=8 Ack=8 Win=2161152 Len=0
28 1.545093 127.0.0.1 52037 127.0.0.1 2404 TCP 56 52037 → 2404 [SYN] Seq=0 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
29 1.545224 127.0.0.1 2404 127.0.0.1 52037 TCP 56 2404 → 52037 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
30 1.545277 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [ACK] Seq=1 Ack=1 Win=2161152 Len=0
71 6.545328 127.0.0.1 52037 127.0.0.1 2404 IEC 60870-5-104 50 <- U (STARTDT act)
72 6.545383 127.0.0.1 2404 127.0.0.1 52037 TCP 44 2404 → 52037 [ACK] Seq=1 Ack=7 Win=2161152 Len=0
73 6.549790 127.0.0.1 2404 127.0.0.1 52037 IEC 60870-5-104 50 -> U (STARTDT con)
74 6.549861 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [ACK] Seq=7 Ack=7 Win=2161152 Len=0
75 6.551681 127.0.0.1 2404 127.0.0.1 52037 TCP 44 2404 → 52037 [FIN, ACK] Seq=7 Ack=7 Win=2161152 Len=0
76 6.551740 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [ACK] Seq=7 Ack=8 Win=2161152 Len=0
77 6.551891 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [FIN, ACK] Seq=7 Ack=8 Win=2161152 Len=0
78 6.551971 127.0.0.1 2404 127.0.0.1 52037 TCP 44 2404 → 52037 [ACK] Seq=8 Ack=8 Win=2161152 Len=0
79 6.552910 127.0.0.1 52038 127.0.0.1 2404 TCP 56 52038 → 2404 [SYN] Seq=0 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
80 6.553087 127.0.0.1 2404 127.0.0.1 52038 TCP 56 2404 → 52038 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
81 6.553171 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [ACK] Seq=1 Ack=1 Win=2161152 Len=0
122 11.553990 127.0.0.1 52038 127.0.0.1 2404 IEC 60870-5-104 50 <- U (STARTDT act)
123 11.554025 127.0.0.1 2404 127.0.0.1 52038 TCP 44 2404 → 52038 [ACK] Seq=1 Ack=7 Win=2161152 Len=0
124 11.556558 127.0.0.1 2404 127.0.0.1 52038 IEC 60870-5-104 50 -> U (STARTDT con)
125 11.556600 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [ACK] Seq=7 Ack=7 Win=2161152 Len=0
126 11.557244 127.0.0.1 52038 127.0.0.1 2404 IEC 60870-5 ASDU 60 <- I (0,0) ASDU=65535 C_IC_NA_1 Act IOA=0
127 11.557277 127.0.0.1 2404 127.0.0.1 52038 TCP 44 2404 → 52038 [ACK] Seq=7 Ack=23 Win=2161152 Len=0
128 11.557540 127.0.0.1 2404 127.0.0.1 52038 TCP 44 2404 → 52038 [FIN, ACK] Seq=7 Ack=23 Win=2161152 Len=0
129 11.557571 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [ACK] Seq=23 Ack=8 Win=2161152 Len=0
130 11.557626 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [FIN, ACK] Seq=23 Ack=8 Win=2161152 Len=0
Code: Alles auswählen
127.0.0.1:52036 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:13,855 - INFO - <- U (STARTDT act)
2022-01-25 21:47:13,856 - INFO - -> U (STARTDT con)
127.0.0.1:52037 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:18,861 - INFO - <- U (STARTDT act)
2022-01-25 21:47:18,863 - INFO - -> U (STARTDT con)
127.0.0.1:52038 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:23,869 - INFO - <- U (STARTDT act)
2022-01-25 21:47:23,870 - INFO - -> U (STARTDT con)
127.0.0.1:52039 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:28,873 - INFO - <- U (STARTDT act)
2022-01-25 21:47:28,873 - INFO - -> U (STARTDT con)
127.0.0.1:52042 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:33,876 - INFO - <- U (STARTDT act)
2022-01-25 21:47:33,876 - INFO - -> U (STARTDT con)
127.0.0.1:52043 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:38,881 - INFO - <- U (STARTDT act)
2022-01-25 21:47:38,882 - INFO - -> U (STARTDT con)
127.0.0.1:52044 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:43,888 - INFO - <- U (STARTDT act)
2022-01-25 21:47:43,889 - INFO - -> U (STARTDT con)
127.0.0.1:52046 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'