ネットワークプログラミング Python
ネットワークプログラミングメモ
netaddr ライブラリ
とりあえずインストール
sudo pip install netaddr
そして、
>>> from netaddr import IPNetwork >>> for i in IPNetwork("192.168.0.0/24"): ... print i ... 192.168.0.0 192.168.0.1 192.168.0.2 〜省略〜 192.168.0.254 192.168.0.255
わりと便利。
TCPクライアント
# coding: utf-8 import socket target_host = '0.0.0.0' target_port = 1234 # ソケットオブジェクトの生成 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # サーバへの接続 client.connect((target_host,target_port)) # データの送信 client.send("SYN!") # データの受信 response = client.recv(4096) print response
TCPサーバ
# coding: utf-8 import socket import threading bind_ip = "0.0.0.0" bind_port = 1234 # ソケット作成 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # Bind server.bind((bind_ip,bind_port)) # Listen server.listen(3) print "Listening on %s %d" % (bind_ip,bind_port) # クライアントからの接続を処理するスレッド def handle_client(client_socket): # クライアントが送信してきたデータを表示 request = client_socket.recv(1024) print "[*] Recieved %s" % request # パケットの返送 client_socket.send("ACK!") client_socket.close() while True: client, addr = server.accept() print "Accepted connection from %s:%d" % (addr[0],addr[1]) # 受信データを処理するスレッドの起動 client_handler = threading.Thread(target=handle_client,args=(client,)) client_handler.start()
UDPクライアント
# coding: utf-8 import socket target_host = 'www.google.com' target_port = 80 # ソケットオブジェクトの生成 client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # データの受信 client.sendto("AAABBBCCC",(target_host,target_port)) # データの受信 data, addr = client.recvfrom(4096) print data
参考文献ではスキャナーとかのプログラムが紹介されてておもしろかった。
参考文献
サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
- 作者: Justin Seitz,青木一史,新井悠,一瀬小夜,岩村誠,川古谷裕平,星澤裕二
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る