今天就跟大家聊聊有關使用python模擬TCP連接并實現發送數據,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
源碼如下
from scapy.all import * import logging logging.getLogger('scapy.runtime').setLevel(logging.ERROR) target_ip = '192.168.1.1' target_port = 80 data = 'GET / HTTP/1.0 \r\n\r\n' def start_tcp(target_ip,target_port): global sport,s_seq,d_seq #主要是用于TCP3此握手建立連接后繼續發送數據 try: #第一次握手,發送SYN包 ans = sr1(IP(dst=target_ip)/TCP(dport=target_port,sport=RandShort(),seq=RandInt(),flags='S'),verbose=False) sport = ans[TCP].dport #源隨機端口 s_seq = ans[TCP].ack #源序列號(其實初始值已經被服務端加1) d_seq = ans[TCP].seq + 1 #確認號,需要把服務端的序列號加1 #第三次握手,發送ACK確認包 send(IP(dst=target_ip)/TCP(dport=target_port,sport=sport,ack=d_seq,seq=s_seq,flags='A'),verbose=False) except Exception,e: print '[-]有錯誤,請注意檢查!' print e def trans_data(target_ip,target_port,data): #先建立TCP連接 start_tcp(target_ip=target_ip,target_port=target_port) #print sport,s_seq,d_seq #發起GET請求 ans = sr1(IP(dst=target_ip)/TCP(dport=target_port,sport=sport,seq=s_seq,ack=d_seq,flags=24)/data,verbose=False) #ans.show() #讀取服務端發來的數據 rcv = ans[Raw] print rcv if __name__ == '__main__': #start_tcp(target_ip,target_port) trans_data(target_ip,target_port,data)
新聞標題:使用python模擬TCP連接并實現發送數據-創新互聯
URL鏈接:http://vcdvsql.cn/article6/ceodog.html
成都網站建設公司_創新互聯,為您提供域名注冊、面包屑導航、微信公眾號、外貿網站建設、響應式網站、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯