⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 np_tcpdisplay.py

📁 该软件根据网络数据生成NetFlow记录。NetFlow可用于网络规划、负载均衡、安全监控等
💻 PY
📖 第 1 页 / 共 2 页
字号:
#! /usr/bin/env python################################################################################                                                                             ##   Copyright 2005 University of Cambridge Computer Laboratory.               ##                                                                             ##   This file is part of Nprobe.                                              ##                                                                             ##   Nprobe is free software; you can redistribute it and/or modify            ##   it under the terms of the GNU General Public License as published by      ##   the Free Software Foundation; either version 2 of the License, or         ##   (at your option) any later version.                                       ##                                                                             ##   Nprobe is distributed in the hope that it will be useful,                 ##   but WITHOUT ANY WARRANTY; without even the implied warranty of            ##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             ##   GNU General Public License for more details.                              ##                                                                             ##   You should have received a copy of the GNU General Public License         ##   along with Nprobe; if not, write to the Free Software                     ##   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA ##                                                                             ################################################################################################################################################################ #### ## #### ############################################################################ from Tkinter import *import Numericimport osfrom tempfile import mktempimport stringfrom minmax import MIN, MAXfrom nprobe import SERVER, CLIENTfrom np_TCP_Window import TCP_Window, TCP_canv, TCP_WDW_HT, TCP_WDW_WIfrom  np_longutil import Longstringfrom np_packet_markers import *from np_TCP import TCP_Machine, TCPNoModel, TCPModelPkts, \     TCPModelNoTrans, trig_strfrom TCP_Imp import TCP_Impsfrom np_atypes import Atypefrom np_widgets import PCan, PListB, BarButton, XSCROLL, YSCROLL, XYSCROLLimport np_grabrec#from np_grabrec import grab#from print_col import whoops########################################################################################################################################################ROOT_WI = 600#ROOT_WI = 500ROOT_HI = 750#ROOT_HI = 500ROOT_WDW_TOOLBAR_HT = 25ROOT_XPOS = 25ROOT_YPOS = 25#ROOT_YPOS = 0#DISPLAY_XPOS = 500DISPLAY_XPOS = ROOT_XPOS + ROOT_WI +10# where to place the windowsRootGeom = '%dx%d+%d+%d' % (ROOT_WI, ROOT_HI, ROOT_XPOS,ROOT_YPOS)DisplayGeom = '%dx%d+%d+%d' % (TCP_WDW_WI, TCP_WDW_HT, 			       DISPLAY_XPOS, ROOT_YPOS)#RootGeom = '%dx%d' % (ROOT_WI, ROOT_HI)#DisplayGeom = '%dx%d' % (TCP_WDW_WI, TCP_WDW_HT)######################################################################################################################################################### display - externally scoped pointer needed for set Imp callbacksdisplay = None########################################################################################################################################################class TcpDisplay:    def __init__(self, connlist, standalone='no', path='', logfun=None, 		 trace=0):	if not len(connlist):	    print 'TCP_Display: empty connection list'	    return        if standalone == 'yes':            self.root = Tk()        else:            self.root = Toplevel()            	self.root.geometry(RootGeom)	self.root.minsize(200, 200)	self.display = Tcp_Disp(connlist, standalone=standalone, 				master=self.root, 				path=path, logfun=logfun, trace=trace)        if standalone == 'yes':            self.root.mainloop()        else:            self.root.wait_window(self.root)########################################################################################################################################################class Tcp_Disp(Frame):    def __init__(self, connlist, standalone, master = None, path='.', 		 logfun=None, trace=0, **cnf):	apply(Frame.__init__, (self, master), cnf)	self.configure(width=ROOT_WI, height=ROOT_HI)	self.pack(expand=1, fill=BOTH)	self.master = master	self.trace = trace	# Set up the TCP implementations	self.TCP_imps = TCP_Imps()	#print self.TCP_imps	# create a toolbar	toolbar = self.toolbar = Frame(self)	toolbar.configure(bg='grey')	toolbar.pack(side=TOP, fill=X)	if len(connlist) > 1:	    # prev button	    toolbar.prevb = Button(toolbar, text="Prev", width=6, 				   command=self.draw_prev_conn)	    toolbar.prevb.configure(bg='grey', fg='black')	    toolbar.prevb.pack(side=LEFT, padx=2)	    toolbar.prevb.config(state=DISABLED)	    # next button	    toolbar.nextb = Button(toolbar, text="Next", width=6, 				   command=self.draw_next_conn)	    toolbar.nextb.configure(bg='grey', fg='black')	    toolbar.nextb.pack(side=LEFT, padx=2)	# TCP implementations menu	self.make_impmenu(toolbar)        # Show pkts/transactions        self.show_what = StringVar()                toolbar.show_whatb = swb = BarButton(self.toolbar, 				text='Show', bg='gray', 				relief=RAISED, padx=2).menu        swb.add_radiobutton(label='Pkts', 				  command=self.show_what_fun, 				  variable=self.show_what,				  value='Pkts', indicatoron=0, 				  selectcolor='blue')        swb.add_radiobutton(label='Trans', 				  command=self.show_what_fun, 				  variable=self.show_what,				  value='Trans', indicatoron=0, 				  selectcolor='blue')        swb.add_radiobutton(label='Both', 				  command=self.show_what_fun, 				  variable=self.show_what,				  value='Both', indicatoron=0, 				  selectcolor='blue')        self.show_what.set('Trans')        		# quit button	if standalone == 'yes':	    quitfun = self.finish	else:	    quitfun = self._destroy	toolbar.quitb = Button(toolbar, text="Quit", width=6, 			       command=quitfun)	toolbar.quitb.configure(bg='grey', fg='red')	toolbar.quitb.pack(side=RIGHT, padx=2)	# print button	toolbar.printb = Button(toolbar, text="Print", width=6, 			       command=self.print_conn)	toolbar.printb.configure(bg='grey', fg='black')	toolbar.printb.pack(side=RIGHT, padx=25)        # grab button	toolbar.grabb = Button(self.toolbar, text="grab", width=5,		   command=self.grab)	toolbar.grabb.configure(bg='grey')	toolbar.grabb.pack(side=LEFT, padx=2)	# Pkt info display        self.canv = ConnPktInfo(self, ROOT_HI-ROOT_WDW_TOOLBAR_HT)	# Conn/pkt info display        self.lb = ConnTransInfo(self)        self.lb.pack(side=TOP, fill=BOTH, expand=1)                self.transdata = None	self.connlist = connlist	self.conn_indx = 0	self.path = path # where the rep file is	self.logfun = logfun # to write any logged stuff	self.display = None	self.draw_next_conn() # Draw the first conn############################################################################    def finish(self):	#print 'Finish called'	sys.exit(0)############################################################################    def _destroy(self):	if self.display:	    self.display.destroy()	    del(self.display)	self.master.destroy()############################################################################    def grab(self):        #print self.clist[self.indx].FileRec        #np_grabrec.grab(self.curr_conn.FileRec)        np_grabrec.grab(self.curr_conn)############################################################################    def show_what_fun(self):        show_what = self.show_what.get()        show_pkts = (show_what == 'Pkts') or (show_what == 'Both')        show_trans = (show_what == 'Trans') or (show_what == 'Both')        self.canv.pack_forget()        self.lb.pack_forget()                    if show_pkts:            self.canv.pack(side=TOP, fill=BOTH, expand=1)                    if show_trans:            self.lb.pack(side=TOP, fill=BOTH, expand=1)        elif not show_pkts:            self.canv.pack(side=TOP, fill=BOTH, expand=1)            self.show_pkts.set(1)            	############################################################################     def message(self, str):	canv = self.canv	canv.delete(ALL)	canv.create_text(5, 5, fill='white', anchor=NW, text=str,  font=("helvetica", 8))	############################################################################    def set_titlebar(self, conn):	tstr = 'Packet list for connection #%d' % (conn.id)	self.winfo_toplevel().title(tstr)	############################################################################    def draw_next_conn(self):		if len(self.connlist) > 1 and self.conn_indx >= len(self.connlist):	    self.message('All connections drawn')	    self.toolbar.nextb.config(state=DISABLED)	    return	#print len(self.connlist)	#print self.connlist	self.curr_conn = conn = self.connlist[self.conn_indx]	self.set_titlebar(conn)	if self.display != None: #not the first	    self.display.clear_canvasses()	    self.toolbar.prevb.config(state=NORMAL)	#conn.make_clusters()	if self.trace or 1:	    self.canv.list_pkts(conn, 1)            self.lb.transdata = None            self.lb.list_trans(conn)	self.TCP_imps.set_start()        conn.logfun = self.logfun        conn.model(self.TCP_imps, None)        if self.trace:            if conn.modelled:                extend = 'true'            else:                extend = 'false'            self.canv.list_pkts(conn, 1, extend=extend)        if self.display != None: #not the first            self.display.draw_conn(conn)        else:            self.display = TCP_Window(conn, self, self)            self.display.geometry(DisplayGeom)                    	self.conn_indx = self.conn_indx + 1############################################################################    def draw_prev_conn(self):		if self.conn_indx < 2:	    self.toolbar.prevb.config(state=DISABLED)	    #self.message('First connection shown')	    return	self.conn_indx = self.conn_indx - 2	self.curr_conn = conn = self.connlist[self.conn_indx]	self.set_titlebar(conn)	self.display.clear_canvasses()	if conn.modelled:	    self.display.draw_conn(conn)	self.set_titlebar(conn)	self.canv.list_pkts(conn, conn.modelled, extend=conn.modelled)        self.lb.transdata = None	self.lb.list_trans(conn)	self.toolbar.nextb.config(state=NORMAL)	self.conn_indx = self.conn_indx + 1############################################################################    def re_draw(self):	self.clear()	conn = self.curr_conn	t = TCP_Machine(conn, self.TCP_imps, self.logfun, trace=self.trace)	try:	    simp, cimp = t.do_pkts()	    conn.modelled = 1	    self.add_imps(simp, cimp)	    self.display.draw_conn(conn)		except TCPNoModel:	    pass	############################################################################    def print_conn(self):	cm = [0.0, 0.0, 0.0, 'green']## 	canv = self.display.canvasses[self.display.canvas_curr].canv## 	canv.postscript(file='./foo')	conn = self.curr_conn	if not conn.modelled:	    return	indx1 = self.display.canvasses[self.display.canvas_curr].indx1	indx2 = self.display.canvasses[self.display.canvas_curr].indx2	connstr = '#%d' % (conn.id)	if indx1 != 0 or indx2 != len(conn.pktlist)-1:	    indxstr = '.%d-%d' % (indx1, indx2)	else:	    indxstr = ''	suffstr = '.ps'	path = self.path + connstr + indxstr + suffstr	d = TCP_canv(self.display, conn, conn.pktlist, 			indx1, indx2, 550, 800, 0, 0, 			bgcol='white', fgcol='black')	d.canv.postscript(file=path, width=600, height=900, 			  colormode='color', colormap=cm, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -