Надпись
- hacker
A hacker is any highly skilled computer expert. - script kiddie
A script kiddie is an unskilled individual who uses scripts or programs developed by others to attach computer systems and networks and deface websites
команда пинга
pingНазвание происходит от морских гидролокаторов. Его работа аналогична позиционированию гидролокатора. Просто сеть посылаетICMP
пакеты вместо звуковых волн. Цель этой команды состоит в том, чтобы определитьхозяинэто достижимо,расстояниетекущий хостКак далеко.
Собственно, два наших сетевых устройстваping
, есть дваcase
из.
- тот же сегмент сети
Как показано выше, ведущий A, приходитеping
Хост B, затем хост A, необходимо инкапсулироватьПакеты уровня 2, он проверит свойMAC
таблица адресов, если нет BMAC
адрес, широковещательный пакет ARP будет отправлен [в предыдущемСетевые статьиЯ уже ясно дал понять, поэтому не буду повторяться здесь.]
После того, как коммутатор получит это сообщение, коммутаторMAC
адресная функция, поэтому он получит, сохранил ли он хостB
изMAC
.
Если есть, вернуть хостуA
, если нет, то отправит на все портыARP
Получив трансляцию, другие хосты обнаружили, что ищут не себя, поэтому отбросили сообщение и проигнорировали его.
пока хозяинB
После получения сообщения, я немедленно отвечу, мойMAC
Что такое адрес и узнать хост в то же времяA
изMAC
адрес и нажмите ту жеARP
Формат сообщения возвращается хостуA
, как показано на рисунке:
В это время ведущийA
научился приниматьB
изMAC
, положи этоMAC
упаковано вICMP
Пакеты уровня 2 протокола к хостуB
Отправить, формат сообщения следующий:
Адрес назначения | адрес источника | исходный IP-адрес | IP-адрес назначения | ICMP-сообщение |
---|---|---|---|---|
00-50-56-C0-00-03 | 00-50-56-C0-00-01 | 1.1.1.1 | 1.1.1.3 | Echo request |
Быть хозяиномB
После получения этого сообщения обнаружено, что хостA
изICPM
Чтобы повторить запрос, просто нажмитетакой жеформат, возвращает значение хостуA
,Законченов одном сегменте сетиизping
процесс~~
Адрес назначения | адрес источника | исходный IP-адрес | IP-адрес назначения | ICMP-сообщение |
---|---|---|---|---|
00-50-56-C0-00-01 | 00-50-56-C0-00-03 | 1.1.1.3 | 1.1.1.1 | Echo answer |
На самом деле я долго мотался в локальной сетиPING
, реальный процесс не происходит1 мс~~
- Различные сегменты сети
ХозяинA
хочуping
хозяинC
, Затем хостA
обнаружить хозяинаC
изIP
и янеттот же сегмент сети.
ХозяинA
просто найдишлюзПроброс, но он не знает шлюзаMAC
Как насчет ситуации?
Он отправитARP
широковещательный, изученный шлюзMAC
, повторно отправить пакетICMP
сообщение дляшлюз маршрутизатор.
Формат сообщения следующий:
Адрес назначения | адрес источника | исходный IP-адрес | IP-адрес назначения | ICMP-сообщение |
---|---|---|---|---|
00-50-56-C0-00-02 | 00-50-56-C0-00-01 | 1.1.1.1 | 2.1.1.3 | Echo request |
когдамаршрутизаторполученный хостA
послалICMP
сообщение.
обнаруживает, что его адрес назначенияMAC
адрес, в зависимости от целиIP2.1.1.1
,чек об оплатетаблица маршрутизации,Обнаружить2.1.1.1/24
запись таблицы маршрутизации.
получить одинУказатель выхода, удалите оригиналMAC
голову. Добавьте своюMAC
адрес для хостаC
Вперед…
Если на шлюзе также нет хостаC
изMAC
Адрес остается таким же, как на предыдущем шаге,ARP
Вещайте, чтобы учиться друг у друга....
маршрутизатор2
Порт может узнать хостC
изMAC
, хозяинC
также узнать маршрутизатор2
портMAC
..
Формат сообщения следующий:
Адрес назначения | адрес источника | исходный IP-адрес | IP-адрес назначения | ICMP-сообщение |
---|---|---|---|---|
00-50-56-C0-00-05 | 00-50-56-C0-00-04 | 1.1.1.1 | 2.1.1.1 | Echo request |
Наконец, в хостеC
маршрутизатор узнал2
портMAC
, маршрутизатор2
проброс портов на роутер1
порт.
Маршрутизация1
порт узнал хостA
изMAC
случае, им не нужно делатьARP
разбирать, будетICMP
Ответ на эхо-запрос.
Адрес назначения | адрес источника | исходный IP-адрес | IP-адрес назначения | ICMP-сообщение |
---|---|---|---|---|
00-50-56-C0-00-04 | 00-50-56-C0-00-05 | 2.1.1.1 | 1.1.1.1 | Echo Answer |
Статьи кода
Теперь, когда вы понимаетеping
команда иICMP
, то мы можем использоватькодреализоватьавтоматизацияинструменты~~~
Чжао Си Николаскисказал раньше:Не изобретайте велосипед.
Итак, давайте знакомитьсяPython
иметь дело с网络协议
изСетевой уровень,транспортный уровень,связующий слойэкспертscapy
,а такжегусеничный фреймворк scrapy
Отношения двоюродных братьев, шучу~~
- Введение в Скапи
ScapyпользовательОтправить,Слушатьа такжеРазобратьи маскировать сетевые пакеты
Python
программа. Эти функции можно использовать для созданияобнаружить,сканированиеа такжеатаковать сетьИнструмент.
- Установить
pip3 install scapy
- API
- построить пакет
>>> a=IP(ttl=10) >>> a < IP ttl=10 |> >>> a.src ’127.0.0.1’ >>> a.dst="192.168.1.1" >>> a < IP ttl=10 dst=192.168.1.1 |> >>> a.src ’192.168.8.14’ >>> del(a.ttl) >>> a < IP dst=192.168.1.1 |> >>> a.ttl 64
- Куча плюс слои (5-уровневая сетевая модель)
Оператор **/** действует каккомбинацияэффект.
При использовании этого оператораНижний уровеньв соответствии с еговерхний слой, делая этоОдинилинесколькоПоля по умолчанию перегружены. (вы все еще можете назначить желаемое значение) строка также может использоваться в качестве необработанного слоя (raw layer
).
>>> IP() <IP |> >>> IP()/TCP() <IP frag=0 proto=TCP |<TCP |>> >>> Ether()/IP()/TCP() <Ether type=0x800 |<IP frag=0 proto=TCP |<TCP |>>> >>> IP()/TCP()/"GET / HTTP/1.0\r\n\r\n" <IP frag=0 proto=TCP |<TCP |<Raw load='GET / HTTP/1.0\r\n\r\n' |>>> >>> Ether()/IP()/IP()/UDP() <Ether type=0x800 |<IP frag=0 proto=IP |<IP frag=0 proto=UDP |<UDP |>>>> >>> IP(proto=55)/TCP() <IP frag=0 proto=55 |<TCP |>>
- Отправить
>>> a=Ether()/IP(dst="www.slashdot.org")/TCP()/"GET /index.html HTTP/1.0 \n\n" >>> hexdump(a) 00 02 15 37 A2 44 00 AE F3 52 AA D1 08 00 45 00 ...7.D...R....E. 00 43 00 01 00 00 40 06 78 3C C0 A8 05 15 42 23 .C....@.x<....B# FA 97 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 20 00 BB 39 00 00 47 45 54 20 2F 69 6E 64 65 78 ..9..GET /index 2E 68 74 6D 6C 20 48 54 54 50 2F 31 2E 30 20 0A .html HTTP/1.0 . 0A . >>> b=str(a) >>> b '\x00\x02\x157\xa2D\x00\xae\xf3R\xaa\xd1\x08\x00E\x00\x00C\x00\x01\x00\x00@\x06x<\xc0 \xa8\x05\x15B#\xfa\x97\x00\x14\x00P\x00\x00\x00\x00\x00\x00\x00\x00P\x02 \x00 \xbb9\x00\x00GET /index.html HTTP/1.0 \n\n'
принципа такжеAPI
Понял, пора нам показатьреальная технологияЛа
1. Создайте пакет ICMP
2. Отправьте и получите ответ от целевого хоста.
3. Если целевой хост доступен,3
для конечного кода и выхода из процесса
Python
Инструмент обнаружения предназначен для оценки сетевого подключения целевого хоста.
Но это недостаточно умно, нам нужно добавить несколько процессов для сканирования всей сети на наличие активных хостов, поэтому:
- Передайте I для сканирования
P
, рассчитать ток区域网
все хозяева - Многопоточность перед вызовом нашего инструмента зонда, проверка каждого хоста в сети в цикле.
- Хост, к которому можно подключиться, сохраняется
- Подготовьте почву для того, что мы собираемся сделать позже
Подпишитесь на публичный аккаунт WeChat【mindev】,Отвечать【ping] может получить один процесс
ping
изисходный код, присоединяйтесь к владельцу группыпланетаможет быть полученвсеисходный код.
Готов поделиться и обменяться с вами различными технологиями, личнымпубличный аккаунт[mindev] и Планета знаний[компьютерный мир]