Skip to content

Commit b36e3d6

Browse files
add nc
添加了nc工具包,现在对nc脚本题可以在python里直接批处理啦
1 parent 7e9bde7 commit b36e3d6

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

test_netcat.py

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import argparse
2+
import socket
3+
import sys
4+
import threading
5+
6+
def handle_input(client_socket):
7+
while True:
8+
data = sys.stdin.readline()
9+
client_socket.sendall(data.encode())
10+
11+
def handle_output(client_socket):
12+
while True:
13+
data = client_socket.recv(1024)
14+
if not data:
15+
break
16+
sys.stdout.write(data.decode())
17+
18+
def netcat(host, port):
19+
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
20+
client_socket.connect((host, port))
21+
22+
input_thread = threading.Thread(target=handle_input, args=(client_socket,))
23+
output_thread = threading.Thread(target=handle_output, args=(client_socket,))
24+
25+
input_thread.start()
26+
output_thread.start()
27+
28+
input_thread.join()
29+
output_thread.join()
30+
31+
client_socket.close()
32+
33+
def main():
34+
parser = argparse.ArgumentParser(description='Python Netcat Tool')
35+
parser.add_argument('-l', '--listen', action='store_true', help='Listen mode')
36+
parser.add_argument('-p', '--port', type=int, default=8080, help='Port to connect or listen')
37+
parser.add_argument('host', type=str, help='Host to connect')
38+
39+
args = parser.parse_args()
40+
41+
if args.listen:
42+
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
43+
server_socket.bind(('0.0.0.0', args.port))
44+
server_socket.listen(1)
45+
client_socket, _ = server_socket.accept()
46+
handle_input(client_socket)
47+
handle_output(client_socket)
48+
server_socket.close()
49+
else:
50+
netcat(args.host, args.port)
51+
52+
if __name__ == '__main__':
53+
main()
54+

0 commit comments

Comments
 (0)