• XSS.stack #1 – первый литературный журнал от юзеров форума

Мануал/Книга Книга Black Hat Go 2020

SkyFall

ripper
КИДАЛА
Регистрация
14.10.2019
Сообщения
90
Реакции
87
Гарант сделки
1
Пожалуйста, обратите внимание, что пользователь заблокирован
Думаю некоторые давно ждали выпуск. Помнится кому то даже предлагали ее перевести
https://www.sendspace.com/file/b0azpp
 
Сам начинаю изучать Golang по этому хочу внести комментарий по поводу раздела Sacnner tcp из учебника.

Код:
package main

import (
   "fmt"
   "net"
   "time"
)

func main()  {
   var name string
   fmt.Print("Enter the address: ")
   fmt.Scanf("%s\n", &name)

   for i := 1; i <= 1024; i++ {
      time.Sleep(30 * time.Millisecond)
      go func(j int) {
         address := fmt.Sprintf("%s:%d", name, j)

         timeout := net.Dialer{Timeout: 1*time.Second}
         conn, err := timeout.Dial("tcp", address)
         if err != nil {
            return

         }
         conn.Close()
         fmt.Printf("%d open\n", j)
      }(i)
   }


}

В данном примере добавлен time.sleep без которого код который в учебнике не будет работать, это обязательно для go рутин.
Также добавил timeout чтобы программа долго не ждала соединение с сервером.
Еще я добавил ввод адреса для сканирования через консоль.
 
Последнее редактирование:
Всем советую данную книгу, т.к. это бааза. И читать её лучше на английском, потому что она написана просто. Некоторые слова конечно придётся переводить, но это только плюс, ибо как ещё пополнять свой словарный запас? К тому же страницы небольшие, читается за неделю.

12/10
 
Сам начинаю изучать Golang по этому хочу внести комментарий по поводу раздела Sacnner tcp из учебника.

Код:
package main

import (
   "fmt"
   "net"
   "time"
)

func main()  {
   var name string
   fmt.Print("Enter the address: ")
   fmt.Scanf("%s\n", &name)

   for i := 1; i <= 1024; i++ {
      time.Sleep(30 * time.Millisecond)
      go func(j int) {
         address := fmt.Sprintf("%s:%d", name, j)

         timeout := net.Dialer{Timeout: 1*time.Second}
         conn, err := timeout.Dial("tcp", address)
         if err != nil {
            return

         }
         conn.Close()
         fmt.Printf("%d open\n", j)
      }(i)
   }


}

В данном примере добавлен time.sleep без которого код который в учебнике не будет работать, это обязательно для go рутин.
Также добавил timeout чтобы программа долго не ждала соединение с сервером.
Еще я добавил ввод адреса для сканирования через консоль.

Я не изучаю go, но это чушь полная. Ты ставишь слип между вызовами горутин, но главный поток не ожидает их завершения. В книге дальше по тексту написано почему так, и что надо использоваь sync.WaitGroup
На русском у издательства Питер продается только бумажная версия. Возможно скоро выпустят pdf
 
Я не изучаю go, но это чушь полная. Ты ставишь слип между вызовами горутин, но главный поток не ожидает их завершения. В книге дальше по тексту написано почему так, и что надо использоваь sync.WaitGroup
На русском у издательства Питер продается только бумажная версия. Возможно скоро выпустят pdf
Если ты не изучааешь GO то когда откроешь книгу , или офф мануал то увидешь для чего там нужен sleep , а sync.WaitGroup это одно из, так что не надо свои 5 копеек вставлять пока не разобрался полностью .
 
Твой код из-за слипа стал не конкуретный, а последовательный. Тоже самое было бы без горутин, как обычный цикл. В конце он не дойдет до конца, потому что мейн завершится не дав последним горутинам отработать.
К тому же, если хост медленный, и таймаут будет отрабатывать всегда, то последние 33 порта не прочекаются никогда. При любом их количестве, хоть 1000 хоть 100, даже из 34 только 1 сработает. Догаешься почему?
Поэтому прежде чем советы раздавать и учить "как надо", разберись в теме получше
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх