def _send_stop(self): LogController.LogController().insert("パケット送信を停止します") # スレッド停止 if self.th_send is not None: self.th_send.stop() if self.th_monitor is not None: self.th_monitor.stop() MonitorParams.srcport.set("") MonitorParams.datalen.set(0) MonitorParams.send_btn.set("送信開始") # ウィジェット活性化 for widget in self.widgets.values(): widget.state(['!disabled']) # 無制限なら送信数Entryは非活性 CheckUnlimited(SendParams.unlimited, self.widgets['param_pps'])() # ICMPなら送信元/送信先ポート番号非活性 ChangeProtocol(SendParams.proto, self.widgets['srcport'], self.widgets['dstport'])() # # 管理者権限モード表示設定(管理者権限モードなし) # advanced_view(self.widgets) self.stat = 0
def _recv_start(self): # ログ出力インスタンス logger = LogController.LogController() # モニタースレッド開始 self.monitor_start() # パケット受信スレッド開始 # 0:TCP 1:UDP proto = RecvParams.proto.get() ip = RecvParams.ip.get() port = RecvParams.port.get() if proto == 0: logger.insert("TCPパケット受信を開始します({}:{})".format(ip, port)) self.recv_tcp_start() elif proto == 1: logger.insert("UDPパケット受信を開始します({}:{})".format(ip, port)) self.recv_udp_start() MonitorParams.recv_btn.set("受信停止") # ウィジェット非活性化 for widget in self.widgets.values(): widget.state(['disabled']) self.stat = 1
def _send_start(self): # ログ出力インスタンス logger = LogController.LogController() # モニタースレッド開始 self._monitor_start() # モニターデータ長セット MonitorParams.datalen.set(SendParams.datalen.get()) # パケット送信スレッド開始 # 0:TCP 1:UDP 2:Original(不使用) 3:ICMP proto = SendParams.proto.get() if proto == PROTO_TCP: logger.insert("TCPパケット送信を開始します\n{}".format( SendParams.dstaddr.address_list())) self._send_tcp_start() elif proto == PROTO_UDP: logger.insert("UDPパケット送信を開始します\n{}".format( SendParams.dstaddr.address_list())) self._send_udp_start() elif proto == PROTO_ORG: pass elif proto == PROTO_ICMP: logger.insert("ICMPパケット送信を開始します\n{}".format( SendParams.dstaddr.address_list())) self._send_icmp_start() MonitorParams.send_btn.set("送信停止") # ウィジェット非活性化 for widget in self.widgets.values(): widget.state(['disabled']) self.stat = 1
def tcp_exception(exc_obj): logger = LogController.LogController() if len(exc_obj.args) == 1: msg = "コネクションの確立に失敗しました。" else: msg = exc_obj.args[1] logger.insert(msg) messagebox.showwarning(title="warning", message=msg) SendAction().send_stop()
def __call__(self): filename = filedialog.asksaveasfilename( initialdir="/", title="ログの保存", filetypes=(("テキスト ファイル", "*.txt"), ("全ての ファイル", "*.*"))) log = LogController.LogController().get() f = open(filename, 'w') f.write(log) f.close()
def _recv_stop(self): LogController.LogController().insert("パケット受信を停止します") """ スレッド停止 """ # スレッド停止 if self.th_recv is not None: self.th_recv.stop() if self.th_monitor is not None: self.th_monitor.stop() MonitorParams().recv_btn.set("受信開始") # 設定ウィジェット活性化 for widget in self.widgets.values(): widget.state(['!disabled']) self.stat = 0
def __init__(self, master): scrolledtext.ScrolledText.__init__(self, master, height=5) # ここでLogControllerを最初に呼ぶこと LogController.LogController(self)