Voor een project wil ik de output van NMAP naar een database mappen. Het leek me praktisch dit met een pyton scriptje te doen. Echter lijken multiline en nodot niet te werken.
Dataset
Als ik de uitvoer met een hexeditor bekijk zie ik dat tussen twee blokken duidelijk twee keer een 0A 0A (\n lijkt me) staat. Echter matchen op \b0 lijkt niet te werken. De python code:
Het probleem is dus dat ik tussen elk blok een SEPERATOR verwacht en niet enkel op het einde. Iemand een suggestie?
Dataset
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Interesting ports on x (192.168.0.1): Not shown: 998 filtered ports PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 1.3.x ((Unix)) 8081/tcp open 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi : SF..... SF:x20realm=\"HuaweiHomeGateway\"\r\nContent-Length:\x200\r\n\r\n"); Interesting ports onxl (192.168.0.1): Not shown: 999 filtered ports PORT STATE SERVICE VERSION 5060/tcp open sip (SIP end point; Status: 500 Server Internal Error) 1 service unrecognized despite.... SF-.... SF:\r\nContent-Length:\x200\r\n\r\n"); |
Als ik de uitvoer met een hexeditor bekijk zie ik dat tussen twee blokken duidelijk twee keer een 0A 0A (\n lijkt me) staat. Echter matchen op \b0 lijkt niet te werken. De python code:
code:
1
2
3
4
5
| re_open_ports = re.compile("Interesting.*\n\n",re.MULTILINE ) re_ip_pattern = re.compile("[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*") for host in re_open_ports.findall(fileContent): print host + "SEPERATOR" |
Het probleem is dus dat ik tussen elk blok een SEPERATOR verwacht en niet enkel op het einde. Iemand een suggestie?