-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.py
More file actions
81 lines (61 loc) · 2.57 KB
/
Copy pathcli.py
File metadata and controls
81 lines (61 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import argparse
import threading
import Pyro5.api
from modules import arp_spoof, dns_spoof, ssl_strip
def main():
parser = argparse.ArgumentParser(description="🛠️ MITM CLI Toolkit")
parser.add_argument("-l", "--list", help="List all ARP entries or DNS entries if dns flag is also supplied", action="store_true")
parser.add_argument("-t", "--target", help="Target IP")
parser.add_argument("--domain", help="Domain name for DNS spoofing")
parser.add_argument("-g", "--gateway", help="Gateway IP")
parser.add_argument("-d", "--delete", help="Delete ARP entry", action="store_true")
parser.add_argument("-c", "--clear", help="Clear all ARP entries", action="store_true")
parser.add_argument("-i", "--interface", help="Network Interface", default="eth0")
parser.add_argument("--dns", help="Enable DNS spoofing", action="store_true", default=False)
parser.add_argument("--sslstrip", help="Enable SSL stripping", action="store_true", default=False)
args = parser.parse_args()
mitm_daemon = Pyro5.api.Proxy("PYRONAME:mitm.toolkit")
if args.dns and args.list:
print(mitm_daemon.list_dns())
return
if args.list:
print(mitm_daemon.list_arp())
return
if args.clear and args.dns:
mitm_daemon.clear_dns()
return
if args.clear and not args.dns:
mitm_daemon.clear_arp()
return
if args.target and args.gateway and not args.delete:
mitm_daemon.spoof_arp(args.target, args.gateway, args.dns, args.sslstrip)
return
if args.delete and args.target and args.gateway:
mitm_daemon.delete_arp(args.target, args.gateway)
return
if args.dns and args.target and args.domain and not args.delete:
mitm_daemon.add_dns(args.domain, args.target)
return
if args.dns and args.delete and args.domain:
mitm_daemon.delete_dns(args.domain)
return
raise ValueError("Invalid arguments. Use -h for help.")
# threads = []
# if args.arp:
# t = threading.Thread(target=arp_spoof.arp_spoof_loop, args=(args.target, args.gateway))
# threads.append(t)
# if args.dns:
# t = threading.Thread(target=dns_spoof.dns_spoof_start)
# threads.append(t)
# if args.sslstrip:
# t = threading.Thread(target=ssl_strip.start_sslstrip_proxy)
# threads.append(t)
# for t in threads:
# t.start()
# try:
# for t in threads:
# t.join()
# except KeyboardInterrupt:
# flush_iptables()
if __name__ == "__main__":
main()