Eggdrop Nmap.tcl

nmap.py

bind pub - !nmap port_scan

proc port_scan {nick uhost handle chan args} {
    if {$args eq ""} {
        putserv "PRIVMSG $chan : Hiba: Add meg a cél IP-t vagy tartományt! Syntax: !nmap <cél>"
        return
    }
    putserv "PRIVMSG $chan : Scanning $args..."
    set data_var [exec nmap $args 2>/dev/null]
    set lines [split $data_var "\n"]
    set open_ports []

    foreach line $lines {
        if {[regexp {(\d+/tcp\s+open\s+\S+)} $line match]} {
            lappend open_ports $match
        }
    }

    if {[llength $open_ports] > 0} {
        set max_length 250
        set message_prefix "Open ports for $args: "
        set current_message $message_prefix
        set messages []

        foreach port $open_ports {
            # Csatlakoztatás pipával | a portok közé
            append current_message "$port | "

            # Ellenőrizzük, hogy a karakterek száma meghaladja-e a maximális hosszt
            if {[string length $current_message] > $max_length} {
                lappend messages [string trimright $current_message "| "]
                set current_message ""
            }
        }

        # Ha maradt egy nem küldött üzenet, azt is küldjük el
        if {[string length $current_message] > 0} {
            lappend messages [string trimright $current_message "| "]
        }

        # Üzenetek elküldése
        foreach msg $messages {
            putserv "PRIVMSG $chan :$msg"
        }
    } else {
        putserv "PRIVMSG $chan : No open ports found for $args."
    }

    putlog "<<$chan>> $nick used !nmap on $args"
}

putlog "!nmap command loaded successfully."