Нарезка в Голанге приводит к пустому терминалу и перепутанным нитям - PullRequest
0 голосов
/ 22 сентября 2018

Эй, я пытаюсь автоматизировать инструмент для проведения разведки. Я использую URL для хранения URL с https://, но есть инструмент whois and sublist3r, которому нужен адрес без https://, поэтому я нарезал строку, но когда я запускаюинструмент выходит из строя и отключает мой терминал, который я могу напечатать, но не вижу результатов.

import (
    "fmt"
    "log"
    "os/exec"
    "sync"
)

var url string
var wg sync.WaitGroup
var ip string
var nsurl string
func nikto(outChan chan<- []byte) {
    cmd := exec.Command("nikto", "-h", url)
    bs, err := cmd.Output()
    if err != nil {
        log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
}

func whois(outChan chan<- []byte) {

    cmd := exec.Command("whois",nsurl)
    bs, err := cmd.Output()
    if err != nil {
        log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
}
func nmap (outChan chan<-[]byte) {
    cmd := exec.Command("nmap","-sC","-sV","-oA","nmap",ip)
//  cmd := exec.Command("nmap","-h")
    bs,err := cmd.Output()
    if err != nil {
    log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
    }
func sniper(outChan chan<-[]byte){
    cmd:=exec.Command("sniper","-t",url)
    bs,err := cmd.Output()
    if err!=nil{
    log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
    }
func sublist3r(outChan chan<-[]byte) {
    cmd := exec.Command("sublist3r","-d",nsurl)
    bs,err := cmd.Output()
    if err!=nil {
    log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
    }

func inspy (outChan chan<-[]byte){
    cmd := exec.Command("inspy","--empspy","/opt/wordlists/wordlists/title-list-large.txt",url)
    bs,err := cmd.Output()
    if err!=nil {
    log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
    }
func wig (outChan chan<-[]byte){
    //nsurl = url[8:]
    cmd := exec.Command("wig",url)
    bs,err := cmd.Output()
    if err!=nil{
    log.Fatal(err)
    }
    outChan <- bs
    wg.Done()
    }
func main() {
    outChan := make(chan []byte)
    fmt.Printf("Please input URL with https:// \n")
    fmt.Scanln(&url)
    fmt.Printf("Please input IP \n")
    fmt.Scanln(&ip)
    nsurl = url[8:]
    wg.Add(1)
    go nikto(outChan)
    wg.Add(1)
    go whois(outChan)
    wg.Add(1)
    go nmap(outChan)
    wg.Add(1)
    go sniper(outChan)
    wg.Add(1)
    go sublist3r(outChan)
    wg.Add(1)
    go inspy(outChan)
    wg.Add(1)
    go wig(outChan)
    for i := 0; i <7 ; i++ {
        bs := <-outChan
        fmt.Println(string(bs))
    }

    close(outChan)
    wg.Wait()
}

1 Ответ

0 голосов
/ 22 сентября 2018

если «он выходит из строя и отключает мой терминал», то, вероятно, выходные данные программы содержат символы, которые ваш терминал плохо реагирует на

, добавьте «unicode / utf8» к импортам и попробуйте заменить

fmt.Println(string(bs))

с

if utf8.ValidString(bs) {
   fmt.Printf("%v\n",bs)
} else {
   fmt.Printf("warning, loosing output")
}

См. Этот ответ о том, как очистить вывод, чтобы сделать его читаемым Удалить недопустимые символы UTF-8 из строки (Go lang)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...