def build_page1_setting_tech(self, m): _f = Frame.new(m._('Technique')) _boxes = [Box() for _ in range(9)] _boxes[0].pack_start(m._tech_area_tech_ckbtn, False, True, 5) _boxes[0].pack_end(m._tech_area_tech_entry, False, True, 5) _boxes[1].pack_start(m._tech_area_time_sec_ckbtn, False, True, 5) _boxes[1].pack_end(m._tech_area_time_sec_entry, False, True, 5) _boxes[2].pack_start(m._tech_area_union_col_ckbtn, False, True, 5) _boxes[2].pack_end(m._tech_area_union_col_entry, False, True, 5) _boxes[3].pack_start(m._tech_area_union_char_ckbtn, False, True, 5) _boxes[3].pack_end(m._tech_area_union_char_entry, False, True, 5) _boxes[4].pack_start(m._tech_area_union_from_ckbtn, False, True, 5) _boxes[4].pack_end(m._tech_area_union_from_entry, False, True, 5) _boxes[5].pack_start(m._tech_area_dns_ckbtn, True, True, 5) _boxes[5].pack_end(m._tech_area_dns_entry, True, True, 5) _boxes[6].pack_start(m._tech_area_second_url_ckbtn, True, True, 5) _boxes[6].pack_end(m._tech_area_second_url_entry, True, True, 5) _boxes[7].pack_start(m._tech_area_second_req_ckbtn, False, True, 5) m._tech_area_second_req_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._tech_area_second_req_entry] ) _boxes[8].pack_end(m._tech_area_second_req_chooser, False, True, 5) _boxes[8].pack_end(m._tech_area_second_req_entry, True, True, 5) _tech_area_opts = Box(orientation=VERTICAL, spacing=3) for _ in _boxes: _tech_area_opts.add(_) _f.add(_tech_area_opts) return _f
def build_page1_file_os_registry(self, m): _f = Frame.new(m._('Access to register in remote WIN')) _boxes = [Box() for _ in range(3)] m._registry_area_reg_combobox.append('--reg-read', m._('read')) m._registry_area_reg_combobox.append('--reg-add', m._('add')) m._registry_area_reg_combobox.append('--reg-del', m._('delete')) m._registry_area_reg_combobox.set_active(0) _boxes[0].pack_start(m._registry_area_reg_ckbtn, False, True, 5) _boxes[0].pack_start(m._registry_area_reg_combobox, False, True, 5) _boxes[1].pack_start(m._registry_area_reg_key_label, False, True, 5) _boxes[1].pack_start(m._registry_area_reg_key_entry, True, True, 5) _boxes[1].pack_start(m._registry_area_reg_value_label, False, True, 5) _boxes[1].pack_start(m._registry_area_reg_value_entry, True, True, 5) _boxes[2].pack_start(m._registry_area_reg_data_label, False, True, 5) _boxes[2].pack_start(m._registry_area_reg_data_entry, True, True, 5) _boxes[2].pack_start(m._registry_area_reg_type_label, False, True, 5) _boxes[2].pack_start(m._registry_area_reg_type_entry, True, True, 5) _registry_area_opts = Box(orientation=VERTICAL) for _ in _boxes: _registry_area_opts.add(_) _f.add(_registry_area_opts) return _f
def build_page1_setting_hidden(self, m): _f = Frame.new(m._('Hidden')) _boxes = [Box() for _ in range(6)] _ = 0 _boxes[_].pack_start(m._hidden_area_crack_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_debug_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_profile_ckbtn, False, True, 5) _ += 1 _boxes[_].pack_start(m._hidden_area_disable_precon_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_disable_stats_ckbtn, False, True, 5) _ += 1 _boxes[_].pack_start(m._hidden_area_force_dbms_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_force_dns_ckbtn, False, True, 0) _boxes[_].pack_start(m._hidden_area_force_pivoting_ckbtn, False, True, 5) _ += 1 _boxes[_].pack_start(m._hidden_area_smoke_test_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_live_test_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_vuln_test_ckbtn, False, True, 5) _ += 1 _boxes[_].pack_start(m._hidden_area_murphy_rate_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_stop_fail_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_run_case_ckbtn, False, True, 5) _ += 1 _boxes[_].pack_start(m._hidden_area_dummy_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_api_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_taskid_ckbtn, False, True, 5) _boxes[_].pack_start(m._hidden_area_database_ckbtn, False, True, 5) _hidden_area_opts = Box(orientation=VERTICAL, spacing=5) for _ in _boxes: _hidden_area_opts.add(_) _f.add(_hidden_area_opts) return _f
def build_page1_setting_optimize(self, m): _f = Frame.new(m._('Optimize')) _boxes = [Box() for _ in range(5)] m._optimize_area_turn_all_ckbtn.connect('clicked', self.optimize_area_controller) _boxes[0].pack_start(m._optimize_area_turn_all_ckbtn, False, True, 5) m._optimize_area_thread_num_ckbtn.connect( 'clicked', self.cb_single, m._optimize_area_predict_ckbtn) _boxes[1].pack_start(m._optimize_area_thread_num_ckbtn, False, True, 5) _boxes[1].pack_start(m._optimize_area_thread_num_spinbtn, True, True, 5) m._optimize_area_predict_ckbtn.connect( 'clicked', self.cb_single, m._optimize_area_thread_num_ckbtn) _boxes[2].pack_start(m._optimize_area_predict_ckbtn, False, True, 5) m._optimize_area_keep_alive_ckbtn.connect( 'clicked', self.cb_single, m._request_area_proxy_ckbtn) _boxes[3].pack_start(m._optimize_area_keep_alive_ckbtn, False, True, 5) m._optimize_area_null_connect_ckbtn.connect( 'clicked', self.cb_single, m._detection_area_text_only_ckbtn) _boxes[4].pack_start(m._optimize_area_null_connect_ckbtn, False, True, 5) _optimize_area_opts = Box(orientation=VERTICAL, spacing=6) for _ in _boxes: _optimize_area_opts.add(_) _f.add(_optimize_area_opts) return _f
def build_page1_enumeration_meta(self, m): _f = Frame.new(m._('DB, Table, Column name...')) _boxes = [Box() for _ in range(3)] _boxes[0].pack_start(m._meta_area_D_ckbtn, False, True, 5) _boxes[0].pack_start(m._meta_area_D_entry, True, True, 5) _boxes[0].pack_start(m._meta_area_T_ckbtn, False, True, 5) _boxes[0].pack_start(m._meta_area_T_entry, True, True, 5) _boxes[0].pack_start(m._meta_area_C_ckbtn, False, True, 5) _boxes[0].pack_start(m._meta_area_C_entry, True, True, 5) _boxes[1].pack_start(m._meta_area_U_ckbtn, False, True, 5) _boxes[1].pack_start(m._meta_area_U_entry, True, True, 5) _boxes[1].pack_start(m._meta_area_X_ckbtn, False, True, 5) _boxes[1].pack_start(m._meta_area_X_entry, True, True, 5) _boxes[1].pack_start(m._meta_area_pivot_ckbtn, False, True, 5) _boxes[1].pack_start(m._meta_area_pivot_entry, True, True, 5) _boxes[2].pack_start(m._meta_area_where_ckbtn, False, True, 5) _boxes[2].pack_start(m._meta_area_where_entry, True, True, 5) _meta_area_opts = Box(orientation=VERTICAL) for _ in _boxes: _meta_area_opts.pack_start(_, False, True, 5) _f.add(_meta_area_opts) return _f
def _build_page1_file_os_access(self, m): f = Frame.new('访问后端OS') _boxes = [Box() for _ in range(3)] _boxes[0].pack_start(m._file_os_access_os_cmd_ckbtn, False, True, 5) _boxes[0].pack_start(m._file_os_access_os_cmd_entry, True, True, 5) _for_msf_label = label(label='Meterpreter相关(TCP连接):', margin_start=50) _boxes[1].pack_start(m._file_os_access_os_shell_ckbtn, False, True, 5) _boxes[1].pack_start(_for_msf_label, False, True, 5) _boxes[1].pack_start(m._file_os_access_os_pwn_ckbtn, False, True, 5) _boxes[1].pack_start(m._file_os_access_os_smbrelay_ckbtn, False, True, 5) _boxes[1].pack_start(m._file_os_access_os_bof_ckbtn, False, True, 5) _boxes[1].pack_start(m._file_os_access_priv_esc_ckbtn, False, True, 5) m._file_os_access_msf_path_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._file_os_access_msf_path_entry, '选择 本地Metasploit安装目录']) _boxes[2].pack_start(m._file_os_access_msf_path_ckbtn, False, True, 5) _boxes[2].pack_start(m._file_os_access_msf_path_entry, True, True, 0) _boxes[2].pack_start(m._file_os_access_msf_path_chooser, False, True, 5) _boxes[2].pack_start(m._file_os_access_tmp_path_ckbtn, False, True, 5) _boxes[2].pack_start(m._file_os_access_tmp_path_entry, True, True, 5) _file_os_access_opts = Box(orientation=VERTICAL, spacing=6) for _ in _boxes: _file_os_access_opts.add(_) f.add(_file_os_access_opts) return f
def _build_page1_file_os_registry(self, m): f = Frame.new('访问WIN下注册表') _boxes = [Box() for _ in range(3)] m._file_os_registry_reg_combobox.append('--reg-read', '读取') m._file_os_registry_reg_combobox.append('--reg-add', '新增') m._file_os_registry_reg_combobox.append('--reg-del', '删除') m._file_os_registry_reg_combobox.set_active(0) _boxes[0].pack_start(m._file_os_registry_reg_ckbtn, False, True, 5) _boxes[0].pack_start(m._file_os_registry_reg_combobox, False, True, 5) _boxes[1].pack_start(m._file_os_registry_reg_key_label, False, True, 5) _boxes[1].pack_start(m._file_os_registry_reg_key_entry, True, True, 5) _boxes[1].pack_start(m._file_os_registry_reg_value_label, False, True, 5) _boxes[1].pack_start(m._file_os_registry_reg_value_entry, True, True, 5) _boxes[2].pack_start(m._file_os_registry_reg_data_label, False, True, 5) _boxes[2].pack_start(m._file_os_registry_reg_data_entry, True, True, 5) _boxes[2].pack_start(m._file_os_registry_reg_type_label, False, True, 5) _boxes[2].pack_start(m._file_os_registry_reg_type_entry, True, True, 5) _file_os_registry_opts = Box(orientation=VERTICAL) for _ in _boxes: _file_os_registry_opts.add(_) f.add(_file_os_registry_opts) return f
def _build_page1_enumeration_meta(self, m): f = Frame.new('数据库名, 表名, 列名...') _boxes = [Box() for _ in range(3)] _boxes[0].pack_start(m._meta_area_D_ckbtn, False, True, 5) _boxes[0].pack_start(m._meta_area_D_entry, True, True, 5) _boxes[0].pack_start(m._meta_area_T_ckbtn, False, True, 5) _boxes[0].pack_start(m._meta_area_T_entry, True, True, 5) _boxes[0].pack_start(m._meta_area_C_ckbtn, False, True, 5) _boxes[0].pack_start(m._meta_area_C_entry, True, True, 5) _boxes[1].pack_start(m._meta_area_U_ckbtn, False, True, 5) _boxes[1].pack_start(m._meta_area_U_entry, True, True, 5) _boxes[1].pack_start(m._meta_area_X_ckbtn, False, True, 5) _boxes[1].pack_start(m._meta_area_X_entry, True, True, 5) _boxes[1].pack_start(m._meta_area_pivot_ckbtn, False, True, 5) _boxes[1].pack_start(m._meta_area_pivot_entry, True, True, 5) _boxes[2].pack_start(m._meta_area_where_ckbtn, False, True, 5) _boxes[2].pack_start(m._meta_area_where_entry, True, True, 5) _meta_area_opts = Box(orientation=VERTICAL) for _ in _boxes: _meta_area_opts.pack_start(_, False, True, 5) f.add(_meta_area_opts) return f
def build_page1_request_header(self, m): _f = Frame.new(m._('HTTP header')) _boxes = [Box() for _ in range(3)] m._request_area_random_agent_ckbtn.set_active(True) _boxes[0].pack_start(m._request_area_random_agent_ckbtn, False, True, 5) _boxes[0].pack_start(m._request_area_mobile_ckbtn, False, True, 5) _boxes[0].pack_start(m._request_area_user_agent_ckbtn, False, True, 5) _boxes[0].pack_start(m._request_area_user_agent_entry, True, True, 5) _boxes[1].pack_start(m._request_area_host_ckbtn, False, True, 5) _boxes[1].pack_start(m._request_area_host_entry, True, True, 5) _boxes[1].pack_start(m._request_area_referer_ckbtn, False, True, 5) _boxes[1].pack_start(m._request_area_referer_entry, True, True, 5) _boxes[2].pack_start(m._request_area_header_ckbtn, False, True, 5) _boxes[2].pack_start(m._request_area_header_entry, True, True, 5) _boxes[2].pack_start(m._request_area_headers_ckbtn, False, True, 5) _boxes[2].pack_start(m._request_area_headers_entry, True, True, 5) _request_header_opts = Box(orientation=VERTICAL, spacing = 5) for _ in _boxes: _request_header_opts.add(_) _f.add(_request_header_opts) return _f
def build_page1_file_write(self, m): _f = Frame.new(m._('Upload local file')) _boxes = [Box() for _ in range(3)] m._file_write_area_shared_lib_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._file_write_area_shared_lib_entry] ) _boxes[0].pack_start(m._file_write_area_udf_ckbtn, False, True, 5) _boxes[0].pack_start(m._file_write_area_shared_lib_ckbtn, False, True, 5) _boxes[0].pack_start(m._file_write_area_shared_lib_entry, True, True, 0) _boxes[0].pack_start(m._file_write_area_shared_lib_chooser, False, True, 5) m._file_write_area_file_write_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._file_write_area_file_write_entry] ) _boxes[1].pack_start(m._file_write_area_file_write_ckbtn, False, True, 5) _boxes[1].pack_start(m._file_write_area_file_write_entry, True, True, 0) _boxes[1].pack_start(m._file_write_area_file_write_chooser, False, True, 5) _boxes[2].pack_start(m._file_write_area_file_dest_ckbtn, False, True, 5) _boxes[2].pack_start(m._file_write_area_file_dest_entry, True, True, 5) _file_write_area_opts = Box(orientation=VERTICAL, spacing=6) for _ in _boxes: _file_write_area_opts.pack_start(_, False, True, 5) _f.add(_file_write_area_opts) return _f
def build_page1_file_os_access(self, m): _f = Frame.new(m._('Access to the OS behind the DBMS')) _boxes = [Box() for _ in range(3)] _boxes[0].pack_start(m._os_access_area_os_cmd_ckbtn, False, True, 5) _boxes[0].pack_start(m._os_access_area_os_cmd_entry, True, True, 5) _for_msf_label = label(label = m._('with Meterpreter(TCP connect):'), margin_start = 50) _boxes[1].pack_start(m._os_access_area_os_shell_ckbtn, False, True, 5) _boxes[1].pack_start(_for_msf_label, False, True, 5) _boxes[1].pack_start(m._os_access_area_os_pwn_ckbtn, False, True, 5) _boxes[1].pack_start(m._os_access_area_os_smbrelay_ckbtn, False, True, 5) _boxes[1].pack_start(m._os_access_area_os_bof_ckbtn, False, True, 5) _boxes[1].pack_start(m._os_access_area_priv_esc_ckbtn, False, True, 5) m._os_access_area_msf_path_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._os_access_area_msf_path_entry, 'choose local Metasploit install path'] ) _boxes[2].pack_start(m._os_access_area_msf_path_ckbtn, False, True, 5) _boxes[2].pack_start(m._os_access_area_msf_path_entry, True, True, 0) _boxes[2].pack_start(m._os_access_area_msf_path_chooser, False, True, 5) _boxes[2].pack_start(m._os_access_area_tmp_path_ckbtn, False, True, 5) _boxes[2].pack_start(m._os_access_area_tmp_path_entry, True, True, 5) _os_access_area_opts = Box(orientation=VERTICAL, spacing=6) for _ in _boxes: _os_access_area_opts.add(_) _f.add(_os_access_area_opts) return _f
def build_page1_enumeration_enum(self, m): _f = Frame.new(m._('Enumeration')) _grid = g.Grid(column_spacing = 20, margin_left = 5, margin_right = 5) for _x in range(len(m._enum_area_opts_ckbtns)): for _y in range(len(m._enum_area_opts_ckbtns[_x])): _grid.attach(m._enum_area_opts_ckbtns[_x][_y], _x, _y, 1, 1) _f.add(_grid) return _f
def _build_page1_request_data(self, m): f = Frame.new('HTTP data') _boxes = [Box() for _ in range(8)] _boxes[0].pack_start(m._request_area_method_ckbtn, False, True, 5) _boxes[0].pack_start(m._request_area_method_entry, False, True, 5) _boxes[0].pack_start(m._request_area_param_del_ckbtn, False, True, 5) _boxes[0].pack_start(m._request_area_param_del_entry, False, True, 5) _boxes[0].pack_start(m._request_area_chunked_ckbtn, False, True, 5) _boxes[1].pack_start(m._request_area_post_ckbtn, False, True, 5) _boxes[1].pack_start(m._request_area_post_entry, True, True, 5) _boxes[2].pack_start(g.Separator.new(HORIZONTAL), True, True, 5) _boxes[3].pack_start(m._request_area_cookie_ckbtn, False, True, 5) _boxes[3].pack_start(m._request_area_cookie_entry, True, True, 5) _boxes[3].pack_start(m._request_area_cookie_del_ckbtn, False, True, 5) _boxes[3].pack_start(m._request_area_cookie_del_entry, False, True, 5) m._request_area_load_cookies_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._request_area_load_cookies_entry]) _boxes[4].pack_start(m._request_area_load_cookies_ckbtn, False, True, 5) _boxes[4].pack_start(m._request_area_load_cookies_entry, True, True, 0) _boxes[4].pack_start(m._request_area_load_cookies_chooser, False, True, 5) _boxes[4].pack_start(m._request_area_drop_set_cookie_ckbtn, False, True, 5) _boxes[5].pack_start(g.Separator.new(HORIZONTAL), True, True, 5) m._request_area_auth_file_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._request_area_auth_file_entry]) _boxes[6].pack_start(m._request_area_auth_type_ckbtn, False, True, 5) _boxes[6].pack_start(m._request_area_auth_type_entry, True, True, 5) _boxes[6].pack_start(m._request_area_auth_cred_ckbtn, False, True, 5) _boxes[6].pack_start(m._request_area_auth_cred_entry, True, True, 5) _boxes[6].pack_start(m._request_area_auth_file_ckbtn, False, True, 5) _boxes[6].pack_start(m._request_area_auth_file_entry, True, True, 0) _boxes[6].pack_start(m._request_area_auth_file_chooser, False, True, 5) _boxes[7].pack_start(m._request_area_csrf_method_ckbtn, False, True, 5) _boxes[7].pack_start(m._request_area_csrf_method_entry, False, True, 5) _boxes[7].pack_start(m._request_area_csrf_token_ckbtn, False, True, 5) _boxes[7].pack_start(m._request_area_csrf_token_entry, True, True, 5) _boxes[7].pack_start(m._request_area_csrf_url_ckbtn, False, True, 5) _boxes[7].pack_start(m._request_area_csrf_url_entry, True, True, 5) _request_data_opts = Box(orientation=VERTICAL, spacing=5) for _ in _boxes: _request_data_opts.add(_) f.add(_request_data_opts) return f
def _build_page1_setting_detection(self, m): f = Frame.new('探测选项') _boxes = [Box() for _ in range(9)] m._detection_area_level_ckbtn.connect('clicked', self.cb_single, m._inject_area_param_ckbtn) _boxes[0].pack_start(m._detection_area_level_ckbtn, False, True, 5) _boxes[0].pack_start(m._detection_area_level_scale, True, True, 5) _boxes[1].pack_start(m._detection_area_risk_ckbtn, False, True, 5) _boxes[1].pack_start(m._detection_area_risk_scale, True, True, 10) _boxes[2].pack_start(m._detection_area_str_ckbtn, False, True, 5) _boxes[2].pack_end(m._detection_area_str_entry, True, True, 5) _boxes[3].pack_start(m._detection_area_not_str_ckbtn, False, True, 5) _boxes[3].pack_end(m._detection_area_not_str_entry, True, True, 5) _boxes[4].pack_start(m._detection_area_re_ckbtn, False, True, 5) _boxes[4].pack_end(m._detection_area_re_entry, True, True, 5) _boxes[5].pack_start(m._detection_area_code_ckbtn, False, True, 5) _boxes[5].pack_start(m._detection_area_code_entry, False, True, 5) m._detection_area_text_only_ckbtn.connect( 'clicked', self.cb_single, m._optimize_area_null_connect_ckbtn) m._detection_area_text_only_ckbtn.connect( 'clicked', self.cb_single, m._detection_area_titles_ckbtn) m._detection_area_titles_ckbtn.connect( 'clicked', self.cb_single, m._detection_area_text_only_ckbtn) _boxes[6].pack_start(m._detection_area_text_only_ckbtn, False, True, 5) _boxes[6].pack_start(m._detection_area_titles_ckbtn, True, False, 5) _boxes[6].pack_start(m._detection_area_smart_ckbtn, False, True, 5) _boxes[7].pack_start(g.Separator.new(HORIZONTAL), True, True, 5) _boxes[8].set_spacing(6) _level_note = label(label='Level 1(默认): 所有GET, POST参数\n' 'Level 2 追加: Cookie\n' 'Level 3 追加: User-Agent/Referer\n' 'Level 4 追加: 啥?\n' 'Level 5 追加: Host报头', halign=g.Align.START) _risk_note = label(label='Risk 1(默认): 基本无风险\n' 'Risk 2 追加: 大量时间型盲注\n' 'Risk 3 追加: OR型布尔盲注', halign=g.Align.START) # _risk_note.override_background_color(g.StateFlags.NORMAL, d.RGBA(255, 0, 0, 1)) _boxes[8].pack_start(_level_note, True, True, 5) _boxes[8].pack_start(_risk_note, True, True, 5) _detection_area_opts = Box(orientation=VERTICAL, spacing=3) for _ in _boxes: _detection_area_opts.add(_) f.add(_detection_area_opts) return f
def build_page1_other_misc(self, m): _f = Frame.new(m._('Misc')) _boxes = [Box() for _ in range(5)] m._misc_area_purge_ckbtn.get_children()[0].set_use_markup(True) _boxes[0].pack_start(m._misc_area_skip_heuristics_ckbtn, False, True, 5) _boxes[0].pack_start(m._misc_area_skip_waf_ckbtn, False, True, 5) _boxes[0].pack_start(m._misc_area_unstable_ckbtn, False, True, 5) _boxes[0].pack_start(m._misc_area_list_tampers_ckbtn, False, True, 5) _boxes[0].pack_start(m._misc_area_sqlmap_shell_ckbtn, False, True, 5) _boxes[0].pack_start(m._misc_area_disable_color_ckbtn, False, True, 5) _boxes[0].pack_start(m._general_area_eta_ckbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_gpage_ckbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_gpage_spinbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_beep_ckbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_offline_ckbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_purge_ckbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_dependencies_ckbtn, False, True, 5) _boxes[1].pack_start(m._misc_area_update_ckbtn, False, True, 5) m._misc_area_tmp_dir_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._misc_area_tmp_dir_entry, 'choose temp dir'] ) _boxes[2].pack_start(m._misc_area_alert_ckbtn, False, True, 5) _boxes[2].pack_start(m._misc_area_alert_entry, True, True, 5) _boxes[2].pack_start(m._misc_area_tmp_dir_ckbtn, False, True, 5) _boxes[2].pack_start(m._misc_area_tmp_dir_entry, True, True, 0) _boxes[2].pack_start(m._misc_area_tmp_dir_chooser, False, True, 5) _boxes[3].pack_start(m._misc_area_answers_ckbtn, False, True, 5) _boxes[3].pack_start(m._misc_area_answers_entry, True, True, 5) _boxes[3].pack_start(m._misc_area_z_ckbtn, False, True, 5) _boxes[3].pack_start(m._misc_area_z_entry, True, True, 5) m._misc_area_results_file_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._misc_area_results_file_entry] ) _boxes[4].pack_start(m._misc_area_results_file_ckbtn, False, True, 5) _boxes[4].pack_start(m._misc_area_results_file_entry, True, True, 0) _boxes[4].pack_start(m._misc_area_results_file_chooser, False, True, 5) _page1_other_misc_opts = Box(orientation=VERTICAL, spacing=6) for _ in _boxes: _page1_other_misc_opts.add(_) _f.add(_page1_other_misc_opts) return _f
def build_page1_enumeration_brute_force(self, m): _f = Frame.new(m._('Brute force')) _brute_force_area_opts = Box(orientation=VERTICAL) _row1 = Box() _row1.pack_start(label.new(m._('check existence of:')), False, True, 10) _row1.pack_start(m._brute_force_area_common_tables_ckbtn, False, True, 0) _row1.pack_start(m._brute_force_area_common_columns_ckbtn, False, True, 5) _row1.pack_start(m._brute_force_area_common_files_ckbtn, False, True, 0) _brute_force_area_opts.pack_start(_row1, False, True, 5) _f.add(_brute_force_area_opts) return _f
def build_page1_file_read(self, m): _f = Frame.new(m._('Read remote file')) _file_read_area_opts = Box(orientation=VERTICAL, spacing=6) _row1 = Box() m._file_read_area_file_read_btn.connect('clicked', self._handlers.read_dumped_file) _row1.pack_start(m._file_read_area_file_read_ckbtn, False, True, 5) _row1.pack_start(m._file_read_area_file_read_entry, True, True, 0) _row1.pack_start(m._file_read_area_file_read_btn, False, True, 5) _file_read_area_opts.pack_start(_row1, False, True, 5) _f.add(_file_read_area_opts) return _f
def _build_page1_setting_tamper(self, m): ''' frame套box, box再套scroll会出现: 一直按回车出现滚动条后, 光标会下移 直到移出可见区, 原内容不会上移 即内容的显示没有 下滑 滚轮的效果. ''' f = Frame.new('tamper脚本') _scrolled = g.ScrolledWindow() _scrolled.set_size_request(300, -1) _scrolled.set_policy(g.PolicyType.NEVER, g.PolicyType.ALWAYS) _scrolled.add(m._tamper_area_tamper_view) f.add(_scrolled) return f
def build_page1_setting_detection(self, m): _f = Frame.new(m._('Detection')) _boxes = [Box() for _ in range(9)] m._detection_area_level_ckbtn.connect( 'clicked', self.cb_single, m._inject_area_param_ckbtn) _boxes[0].pack_start(m._detection_area_level_ckbtn, False, True, 5) _boxes[0].pack_start(m._detection_area_level_scale, True, True, 5) _boxes[1].pack_start(m._detection_area_risk_ckbtn, False, True, 5) _boxes[1].pack_start(m._detection_area_risk_scale, True, True, 10) _boxes[2].pack_start(m._detection_area_str_ckbtn, False, True, 5) _boxes[2].pack_end(m._detection_area_str_entry, True, True, 5) _boxes[3].pack_start(m._detection_area_not_str_ckbtn, False, True, 5) _boxes[3].pack_end(m._detection_area_not_str_entry, True, True, 5) _boxes[4].pack_start(m._detection_area_re_ckbtn, False, True, 5) _boxes[4].pack_end(m._detection_area_re_entry, True, True, 5) _boxes[5].pack_start(m._detection_area_code_ckbtn, False, True, 5) _boxes[5].pack_start(m._detection_area_code_entry, False, True, 5) m._detection_area_text_only_ckbtn.connect( 'clicked', self.cb_single, m._optimize_area_null_connect_ckbtn) m._detection_area_text_only_ckbtn.connect( 'clicked', self.cb_single, m._detection_area_titles_ckbtn) m._detection_area_titles_ckbtn.connect( 'clicked', self.cb_single, m._detection_area_text_only_ckbtn) _boxes[6].pack_start(m._detection_area_text_only_ckbtn, False, True, 5) _boxes[6].pack_start(m._detection_area_titles_ckbtn, True, False, 5) _boxes[6].pack_start(m._detection_area_smart_ckbtn, False, True, 5) _boxes[7].pack_start(g.Separator.new(HORIZONTAL), True, True, 5) # m._detection_area_risk_note.override_background_color(g.StateFlags.NORMAL, # d.RGBA(255, 0, 0, 1)) _boxes[8].set_spacing(6) _boxes[8].pack_start(m._detection_area_level_note, True, True, 5) _boxes[8].pack_start(m._detection_area_risk_note, True, True, 5) _detection_area_opts = Box(orientation=VERTICAL, spacing=3) for _ in _boxes: _detection_area_opts.add(_) _f.add(_detection_area_opts) return _f
def _build_page1(self): box = Box(orientation=VERTICAL, spacing=6) box.set_border_width(10) # sqlmap命令语句 _cmd_area = Frame.new('A.收集选项 的结果显示在这:') _cmd_area.add(m._cmd_entry) box.pack_start(_cmd_area, False, True, 0) # 主构造区 _notebook = Notebook(m, self._handlers) m._page1_misc_purge_ckbtn.connect('toggled', self._show_warn, '这将抹除所有本地记录!\n确定勾选?') m._page1_general_flush_session_ckbtn.connect('toggled', self._show_warn, '这将清除本地缓存!\n确定勾选?') _notebook.add_events(d.EventMask.SCROLL_MASK | d.EventMask.SMOOTH_SCROLL_MASK) _notebook.connect('scroll-event', self.scroll_page) box.pack_start(_notebook, True, True, 0) # 构造与执行 _exec_area = Box() _build_button = btn.new_with_mnemonic('A.收集选项(_A)') _build_button.connect('clicked', self._handlers.build_all) # 用于改善ui的使用体验 _unselect_all_btn = btn.new_with_mnemonic('反选所有复选框(_S)') _unselect_all_btn.connect('clicked', self.unselect_all_ckbtn) _clear_all_entry = btn.new_with_mnemonic('清空所有输入框(_D)') _clear_all_entry.connect('clicked', self.clear_all_entry) _run_button = btn.new_with_mnemonic('B.开始(_F)') _run_button.connect('clicked', self._handlers.run_cmdline) _exec_area.pack_start(_build_button, False, True, 0) _exec_area.pack_start(_unselect_all_btn, True, False, 0) _exec_area.pack_start(_clear_all_entry, True, False, 0) _exec_area.pack_end(_run_button, False, True, 0) box.pack_end(_exec_area, False, True, 0) return box
def _build_page1_other_misc(self, m): f = Frame.new('杂项') _boxes = [Box() for _ in range(5)] _boxes[0].pack_start(m._page1_misc_skip_waf_ckbtn, False, True, 5) _boxes[0].pack_start(m._page1_misc_unstable_ckbtn, False, True, 5) _boxes[0].pack_start(m._page1_misc_list_tampers_ckbtn, False, True, 5) _boxes[0].pack_start(m._page1_misc_sqlmap_shell_ckbtn, False, True, 5) _boxes[0].pack_start(m._page1_misc_disable_color_ckbtn, False, True, 5) _boxes[0].pack_start(m._page1_general_eta_ckbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_gpage_ckbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_gpage_spinbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_beep_ckbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_offline_ckbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_purge_ckbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_dependencies_ckbtn, False, True, 5) _boxes[1].pack_start(m._page1_misc_update_ckbtn, False, True, 5) m._page1_misc_tmp_dir_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._page1_misc_tmp_dir_entry, '选择 本地临时目录']) _boxes[2].pack_start(m._page1_misc_alert_ckbtn, False, True, 5) _boxes[2].pack_start(m._page1_misc_alert_entry, True, True, 5) _boxes[2].pack_start(m._page1_misc_tmp_dir_ckbtn, False, True, 5) _boxes[2].pack_start(m._page1_misc_tmp_dir_entry, True, True, 0) _boxes[2].pack_start(m._page1_misc_tmp_dir_chooser, False, True, 5) _boxes[3].pack_start(m._page1_misc_answers_ckbtn, False, True, 5) _boxes[3].pack_start(m._page1_misc_answers_entry, True, True, 5) _boxes[3].pack_start(m._page1_misc_z_ckbtn, False, True, 5) _boxes[3].pack_start(m._page1_misc_z_entry, True, True, 5) m._page1_misc_results_file_chooser.connect( 'clicked', self._handlers.set_file_entry_text, [m._page1_misc_results_file_entry]) _boxes[4].pack_start(m._page1_misc_results_file_ckbtn, False, True, 5) _boxes[4].pack_start(m._page1_misc_results_file_entry, True, True, 0) _boxes[4].pack_start(m._page1_misc_results_file_chooser, False, True, 5) _page1_other_misc_opts = Box(orientation=VERTICAL, spacing=6) for _ in _boxes: _page1_other_misc_opts.add(_) f.add(_page1_other_misc_opts) return f
def build_page1(self): box = Box(orientation=VERTICAL, spacing=6) box.set_border_width(10) _ = m._ # sqlmap命令语句 _cmd_area = Frame.new(_('A.Options are collected here:')) _cmd_area.add(m._cmd_entry) # 主构造区 _notebook = Notebook(m, self._handlers) m._general_area_flush_session_ckbtn.connect( 'toggled', self._show_warn, 'check --flush-session:\n\n' 'Flush session files for current target?') m._misc_area_purge_ckbtn.connect( 'toggled', self._show_warn, 'check --purge:\n\n' 'Safely remove all content from sqlmap data directory?') _notebook.add_events(d.EventMask.SCROLL_MASK | d.EventMask.SMOOTH_SCROLL_MASK) _notebook.connect('scroll-event', self.scroll_page) # 构造与执行 _exec_area = Box() _build_button = btn.new_with_mnemonic(_('A.collect(_A)')) _build_button.connect('clicked', self._handlers.build_all) _unselect_all_btn = btn.new_with_mnemonic(_('unselect(_S)')) _unselect_all_btn.connect('clicked', self.unselect_all_ckbtn) _clear_all_entry = btn.new_with_mnemonic(_('clear all inputs(_D)')) _clear_all_entry.connect('clicked', self.clear_all_entry) _run_button = btn.new_with_mnemonic(_('B.run(_F)')) _run_button.connect('clicked', self._handlers.run_cmdline) _exec_area.pack_start(_build_button, False, True, 0) _exec_area.pack_start(_unselect_all_btn, True, False, 0) _exec_area.pack_start(_clear_all_entry, True, False, 0) _exec_area.pack_end(_run_button, False, True, 0) box.pack_start(_cmd_area, False, True, 0) box.pack_start(_notebook, True, True, 0) box.pack_end(_exec_area, False, True, 0) return box
def _build_page1_enumeration_enum(self, m): f = Frame.new('枚举') _enum_area_opts = Box(spacing=6) _enu_area_opts_cols = [Box(orientation=VERTICAL) for _ in range(3)] for _x in range(len(m._enum_area_opts_ckbtns)): for _y in m._enum_area_opts_ckbtns[_x]: # 每列, 至上往下add _enu_area_opts_cols[_x].add(_y) # 添加三列, 方便对齐... _enum_area_opts.pack_start(_enu_area_opts_cols[_x], False, True, 10) f.add(_enum_area_opts) return f
def build_page1_enumeration_blind(self, m): _f = Frame.new(m._('Blind inject options')) _boxes = [Box() for _ in range(2)] _boxes[0].pack_start(m._blind_area_first_ckbtn, False, True, 5) _boxes[0].pack_end(m._blind_area_first_entry, False, True, 5) # _boxes[0].pack_start(label.new('个字符'), False, True, 5) _boxes[1].pack_start(m._blind_area_last_ckbtn, False, True, 5) _boxes[1].pack_end(m._blind_area_last_entry, False, True, 5) # _boxes[1].pack_start(label.new('个字符'), False, True, 5) _blind_area_opts = Box(orientation=VERTICAL) for _ in _boxes: _blind_area_opts.pack_start(_, False, True, 10) _f.add(_blind_area_opts) return _f
def build_page1_enumeration_limit(self, m): _f = Frame.new(m._('Limit')) _boxes = [Box() for _ in range(2)] _boxes[0].pack_start(m._limit_area_start_ckbtn, False, True, 5) _boxes[0].pack_end(m._limit_area_start_entry, False, True, 5) # _boxes[0].pack_start(label.new('行'), False, True, 5) _boxes[1].pack_start(m._limit_area_stop_ckbtn, False, True, 5) _boxes[1].pack_end(m._limit_area_stop_entry, False, True, 5) # _boxes[1].pack_start(label.new('行'), False, True, 5) _limit_area_opts = Box(orientation=VERTICAL) for _ in _boxes: _limit_area_opts.pack_start(_, False, True, 10) _f.add(_limit_area_opts) return _f
def _build_page1_enumeration_brute_force(self, m): f = Frame.new('暴破表名/列名') _brute_force_area_opts = Box(orientation=VERTICAL) _row1 = Box() _row1.pack_start(label.new('检查是否存在:'), False, True, 10) _row1.pack_start(m._brute_force_area_common_tables_ckbtn, False, True, 0) _row1.pack_start(m._brute_force_area_common_columns_ckbtn, False, True, 5) _row1.pack_start(m._brute_force_area_common_files_ckbtn, False, True, 0) _brute_force_area_opts.pack_start(_row1, False, True, 5) f.add(_brute_force_area_opts) return f
def build_page1_setting_offen(self, m): _f = Frame.new(m._('Offen')) _boxes = [Box() for _ in range(5)] _general_area_opts = Box(orientation=VERTICAL, spacing=6) m._general_area_verbose_scale.set_value(1.0) _boxes[0].pack_start(m._general_area_verbose_ckbtn, False, True, 5) _boxes[0].pack_start(m._general_area_verbose_scale, True, True, 5) _boxes[1].pack_start(m._general_area_finger_ckbtn, False, True, 5) _boxes[2].pack_start(m._general_area_hex_ckbtn, False, True, 5) _boxes[3].pack_start(m._general_area_batch_ckbtn, False, True, 5) _boxes[4].pack_start(m._misc_area_wizard_ckbtn, False, True, 5) for _ in _boxes: _general_area_opts.add(_) _f.add(_general_area_opts) return _f
def _build_page1_enumeration_blind(self, m): f = Frame.new('盲注选项') _boxes = [Box() for _ in range(3)] _boxes[0].pack_start(m._blind_area_first_ckbtn, False, True, 5) _boxes[0].pack_start(m._blind_area_first_entry, False, True, 0) _boxes[0].pack_start(label.new('个字符'), False, True, 5) _boxes[1].pack_start(m._blind_area_last_ckbtn, False, True, 5) _boxes[1].pack_start(m._blind_area_last_entry, False, True, 0) _boxes[1].pack_start(label.new('个字符'), False, True, 5) _boxes[2].pack_start(label.new('只适用于盲注,\n因为报错,union注入要求列数相同'), False, True, 5) _blind_area_opts = Box(orientation=VERTICAL) for _ in _boxes: _blind_area_opts.pack_start(_, False, True, 10) f.add(_blind_area_opts) return f
def build_page1_enumeration_dump(self, m): _f = Frame.new(m._('Dump')) _dump_area_opts = Box(spacing=6) # for padding in HORIZONTAL _dump_area_opts_cols = Box(orientation=VERTICAL) _dump_area_opts_cols.add(m._dump_area_dump_ckbtn) _dump_area_opts_cols.add(m._dump_area_repair_ckbtn) _dump_area_opts_cols.add(m._dump_area_statements_ckbtn) _ = Box() _.pack_start(m._dump_area_search_ckbtn, False, True, 0) _.pack_start(m._dump_area_no_sys_db_ckbtn, True, False, 0) _dump_area_opts_cols.add(_) _dump_area_opts_cols.add(m._dump_area_dump_all_ckbtn) _dump_area_opts.pack_start(_dump_area_opts_cols, False, True, 10) _f.add(_dump_area_opts) return _f
def _build_page1_enumeration_dump(self, m): f = Frame.new('Dump(转储)') _dump_area_opts = Box(spacing=6) # 加这一层, 只是为了横向上有padding _dump_area_opts_cols = Box(orientation=VERTICAL) _dump_area_opts_cols.add(m._dump_area_dump_ckbtn) _dump_area_opts_cols.add(m._dump_area_repair_ckbtn) _dump_area_opts_cols.add(m._dump_area_statements_ckbtn) _ = Box() _.pack_start(m._dump_area_search_ckbtn, False, True, 0) _.pack_start(m._dump_area_no_sys_db_ckbtn, True, False, 0) _dump_area_opts_cols.add(_) _dump_area_opts_cols.add(m._dump_area_dump_all_ckbtn) _dump_area_opts.pack_start(_dump_area_opts_cols, False, True, 10) f.add(_dump_area_opts) return f