ホームページ >バックエンド開発 >Python チュートリアル >Python rawソケットプログラミングのサンプル共有

Python rawソケットプログラミングのサンプル共有

WBOY
WBOYオリジナル
2016-06-16 08:45:111743ブラウズ

HTTP データ パケットの構築を始めましょう、

IP 層と TCP 層は Python の Impacket ライブラリを使用し、http コンテンツは自分で入力します。

コードをコピー コードは次のとおりです:

#!/usr/bin/env python

#-- ----------------------------------------------- --- ------------------------
# 名前: raw_http.py
# 目的: raw http get パケットを構築する
#
# 著者: Yangjun
#
# 作成日: 08/02/2014
# 著作権: (c) Yangjun 2014
# ライセンス: <あなたのライセンス>
# ------------------------------------------------ -- ------------------------

import sys
import ソケット
from impacket import ImpactDecoder、ImpactPacket

def main():

if len(sys.argv) < 3:
print "使用: %s % sys .argv[0]
print "使用: %s " % sys.argv[0]
sys.exit(1)
elif len (sys.argv) == 3:
src = sys.argv[1]
dst = sys.argv[2]
cnt = 1
elif len(sys.argv) == 4 :
src = sys.argv[1]
dst = sys.argv[2]
cnt = sys.argv[3]
else:
print "入力エラー!"
sys.exit(1)
#print src, dst
ip = ImpactPacket.IP()
ip.set_ip_src(src)
ip.set_ip_dst(dst)

# ECHO タイプの新しい ICMP パケットを作成します。
icmp = ImpactPacket.ICMP()
tcp = ImpactPacket.TCP()
tcp.set_th_sport(55968)
tcp.set_th_dport(80)
tcp.set_th_seq(1)
tcp.set_th_ack(1)
tcp.set_th_flags(0x18)
tcp.set_th_win(64)

tcp.contains( ImpactPacket.Data("GET / att/DIYLife/41264/528 HTTP/1.1rnHost: 192.168.111.1rnAccept-Encoding:identityrnrn"))

ip.contains(tcp)

# raw ソケットを開きます。特別なアクセス許可は次のとおりです。通常は必須です。
s =ソケット.socket(socket.AF_INET,ソケット.SOCK_RAW,socket.IPPROTO_TCP)
s.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
seq_id = 0
while cnt >= 1:
# チェックサムを計算します。
seq_id = seq_id + 1
tcp.set_th_seq(seq_id)
tcp.calculate_checksum()

# に送信します。ターゲットホスト。
s.sendto(ip.get_packet(), (dst,80))
cnt= cnt -1

if __name__ == '__main__':
main ()


実行後のパケット キャプチャは次のようになります:

Python rawソケットプログラミングのサンプル共有
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。