it_ninja

Untitled

Feb 1st, 2016
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.09 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. from multiprocessing import Process, Pipe
  4. from subprocess import Popen, PIPE, STDOUT
  5. import os
  6. import shlex
  7. import sys
  8. import logging
  9. import sqlite3
  10. import configparser
  11.  
  12. # Logging Config settings
  13. logging.basicConfig(level=logging.DEBUG,
  14.                     format='[%(asctime)s] [%(levelname)-8s] [%(message)s]',
  15.                     datefmt='%a %d %b %Y] [%H:%M:%S',
  16.                     filename='tcpdump.log',
  17.                     filemode='a')
  18.  
  19. # DEFINE CONFIG VARIABLES
  20. config = configparser.RawConfigParser()
  21. config.read('config.cfg')
  22. config.sections()
  23.  
  24. # Configure Database
  25. # host = config.get('DataBase','host')
  26. # user = config.get('DataBase','user')
  27. # password = config.get('DataBase','password')
  28. # db = config.get('DataBase','db')
  29.  
  30.  
  31. class ExternalProcess(Process):
  32.     def __init__(self, command, pipe):
  33.         super().__init__()
  34.         self.command = command
  35.         self.pipe = pipe
  36.  
  37.     def run(self):
  38.         with Popen(self.command, stdout=PIPE, stderr=STDOUT, universal_newlines=True) as process:
  39.             for line in process.stdout:
  40.                 self.pipe.send(line)
  41.  
  42.  
  43. def tcpdump():
  44.     # Configure network port
  45.     networkport = ('network', 'adapter')
  46.     logging.debug(networkport)
  47.     # tcpdumpcommand = 'tcpdump', '-e', '-n', '-i {}', 'src', 'port 67', 'and',' net',' not',' 127.0.0.1/24'.format(networkport)
  48.     # tcpdump -n -i eno16777736 tcp port 22 and host shinobi.noip.me
  49.     # tcpdumpcommand = ['tcpdump','-n','-i','eno16777736','tcp','port 22','and', 'host 0300C-tiger.ecs.andrews.edu']
  50.     # tshark = subprocess.check_output(shlex.split("""tshark -V -l -i "any" -f 'udp port 67'"""))
  51.     # tshark = ['tshark']
  52.     # process = subprocess.Popen(tshark,shell=True,stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[1]
  53.     tcpdump_cmd = ['sudo',
  54.                    'tcpdump',
  55.                    '-e',
  56.                    '-n',
  57.                    '-i', 'en0',
  58.                    'src', 'port', '67', 'and', 'net', 'not', '127.0.0.1']
  59.     tcpdump_send_con, tcpdump_recv_con = Pipe()
  60.     tcpdump_process = ExternalProcess(tcpdump_cmd, tcpdump_send_con)
  61.     tcpdump_process.start()
  62.     tshark_cmd = ['sudo',
  63.                   'tshark',
  64.                   '-ni', 'en0',
  65.                   '-Y', 'bootp.option.type == 53',
  66.                   '-T', 'fields',
  67.                   '-e', 'frame.number',
  68.                   '-e', 'frame.time',
  69.                   '-e', 'ip.src',
  70.                   '-e', 'ip.dst',
  71.                   '-e', 'bootp.option.type',
  72.                   '-e', 'bootp.ip.client']
  73.     tshark_send_con, tshark_recv_con = Pipe()
  74.     tshark_process = ExternalProcess(tshark_cmd, tshark_send_con)
  75.     tshark_process.start()
  76.     while True:
  77.         try:
  78.             if tcpdump_recv_con.poll():
  79.                 print('tcpdump output:', tcpdump_recv_con.recv())
  80.             elif tshark_recv_con.poll():
  81.                 print('tshark output:', tshark_recv_con.recv())
  82.         except KeyboardInterrupt:
  83.             tcpdump_process.terminate()
  84.             tshark_process.terminate()
  85.             sys.exit(0)
  86.  
  87.  
  88. tcpdump()
Add Comment
Please, Sign In to add comment