Разобрать результат работы 'masscan' в формате ip: port - PullRequest
0 голосов
/ 25 декабря 2018

Я начал изучать программирование, я пытаюсь написать простой парсер, но я запутался.Я буду очень рад, если кто-нибудь мне поможет.

mres.txt

# Masscan 1.0.3 scan initiated Sun Dec 23 23:00:31 2018
# Ports scanned: TCP(1;80-80) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 192.168.1.1 ()    Ports: 80/open/tcp////
Host: 192.168.1.1 ()    Ports: 801/open/tcp////
Host: 192.168.1.2 ()    Ports: 801/open/tcp////
Host: 192.168.1.2 ()    Ports: 445/open/tcp////
Host: 192.168.1.3 ()    Ports: 80/open/tcp////
Host: 192.168.1.3 ()    Ports: 8080/open/tcp////
Host: 192.168.1.3 ()    Ports: 21/open/tcp////
# Masscan done at Sun Dec 23 23:00:45 2018

Я хочу получать данные в формате:

192.168.1.1 80, 801
192.168.1.2 801, 445
192.168.1.3 80, 8080, 21

script.py

#!/usr/bin/env python
import sys, re, os

ports = []
ip = None

with open('mres.txt','r') as f:

for elem in f.readlines():

    if not elem.startswith('#'):
          if ip != None:
              if elem.split(' ')[1] == ip:
                  ports.append(elem.split(' ')[3].split('/')[0])
                  continue
              else:
                  print(ip + str(ports))
                  ports=[]
          else:
              #print('Unic: '+str(ip) + ' port: '+ str(elem.split(' ')[3].split('/')[0]))
              ip = elem.split(' ')[1]
              ports.append(elem.split(' ')[3].split('/')[0]) 

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Это манипулирует вашими данными и печатает желаемый вывод.Я постарался объяснить это как можно лучше в комментариях ниже, но, пожалуйста, задавайте вопросы по всем вопросам, которые не ясны.

0 голосов
/ 25 декабря 2018

Вам лучше использовать dict для обработки данных: 1) IP может быть ключом в Dict. 2) List может быть значением в Dict.

, если необходимо, я могу создать пример кода для вас.

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