[python] regex

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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

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?

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

Je hebt re.DOTALL nodig ipv re.MULTILINE. Lees ook nog even de 2e en 3e paragraaf door van http://docs.python.org/library/re.html

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:58

Creepy

Tactical Espionage Splatterer

En waarom niet "gewoon" regel voor regel inlezen? zodra je een lege regel tegenkomt weet je dat je bij de volgende host bent. Geen regexp voor nodig. *wijst op sig*. Zodra je een regel tegenkomt die begint met "PORT" weet je dat de volgende regels de open poorten zijn. Die kan je dan weer splitten op whitespace. etc. etc. ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

Of, in plaats van het wiel opnieuw uitvinden, python-nmap gebruiken, of naar xml-output omschakelen