Skip to content

Commit ee7d9f7

Browse files
committed
add copy/paste in EXECUTION
1 parent 465f9df commit ee7d9f7

File tree

6 files changed

+156
-77
lines changed

6 files changed

+156
-77
lines changed

README.md

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,31 @@
1-
## sqlmap-gtk
1+
## sqlmap-gtk-zh
22
sqlmap GUI, using PyGObject(gtk+3)
33

4-
此GUI只能在linux下运行, 已在kali, debian系中测试通过.
5-
如果想在win下使用, 可以使用[sqlmap-wx](https://github.com/needle-wang/sqlmap-wx)(维护慢, 还有很大的改善空间).
6-
欢迎使用, 反馈!
7-
8-
sqlmap已经移植到了python3!
9-
来自sqlmap's FAQ:
10-
"Both Python 2 and 3 are supported from May of 2019"
4+
此GUI只能在linux下运行, 已在Mint 20, kali 2020.4 中通过测试.
5+
win下可以使用[sqlmap-wx](https://github.com/needle-wang/sqlmap-wx)(维护慢, 还有很大的改善空间).
6+
sqlmap已经移植到了python3.
7+
请不要再使用python2.
118

129
#### 截图
1310
![screenshot](https://github.com/needle-wang/sqlmap-gtk/blob/master/screenshots/sqlmap-ui1.png)
1411

1512
#### 为什么需要GUI?
16-
选项太多了, 没有GUI, 总会忘了选项, 含义及使用.
17-
于是不时地: sqlmap -hh和sqlmap wiki和google. 翻找半天, 阅读又要琢磨半天.
18-
我学使用sqlmap断续好些年了, 存了看了好些资料, 等过段时间, 又模糊了, 没用.
19-
光一个中文手册就看了好多遍, 总感觉缺点什么, 后来想明白了, 缺少视觉上的位置记忆.
20-
滚动+链接跳转的文献, 缺少纸张的阅读痕迹, 也就是位置记忆.
21-
当然, 还有个使用时长的原因.
22-
23-
另外, 光会选项也没有用, wiki上的介绍过于零碎, 选项背后的技术细节很多,
24-
工具描述不够详细, 很多选项有前提要求, 这就要求使用者要有相应的知识储备了
25-
可记性就是不好, 怎么办? 边用边学? 过段时间又忘了, 毕竟只在特定场景才有效.
26-
计算机是个大类, 要记的东西太多了.
13+
选项太多, 容易忘记选项, 含义及使用.
14+
需要经常: sqlmap -hh, sqlmap wiki和google.
15+
视觉上的位置记忆: 滚动+链接跳转的文献, 缺少纸张的阅读痕迹, 也就是位置记忆.
16+
17+
光会选项也没用, wiki上的介绍过于零碎, 选项背后的技术细节很多,
18+
工具描述不够详细, 很多选项有前提要求, 只在特定场景才有效.
2719

2820
这里, 我将选项进行了分类, wiki集成进了GUI, 增加了使用前提, 使用时会有提示,
29-
也许会方便些吧. 熟练后可以注释掉tooltip.
21+
也许会方便些. 熟练后可以自行注释掉tooltip.
3022

3123
#### 安装与使用
3224
1. **要求**
33-
- python3.6+, GTK+3.20
34-
- pygobject: `pip3 install PyGObject` or `apt-get install python3-gi`
25+
- python3.6+, GTK+3.20以上(linux下已自带)
26+
- pygobject: (二选一)
27+
- `apt-get install python3-gi`(推荐)
28+
- `pip3 install PyGObject`
3529
- requests: `pip3 install requests`
3630
- 最新的[sqlmap](https://github.com/sqlmapproject/sqlmap): `git clone` it.
3731
2. **下载本GUI**
@@ -47,12 +41,12 @@ sqlmap已经移植到了python3!
4741
- 会话功能, 自动保存和载入上一次的选项
4842

4943
#### 关于
50-
- V0.3.4.2
51-
2019年10月10日 08:06:05
52-
作者: needle wang
53-
- 使用PyGObject(Gtk+3 + python3-gi)重写sqm.py
54-
- 感谢[sqm](https://github.com/kxcode/gui-for-sqlmap)带来的灵感, 其作者: [KINGX](https://github.com/kxcode) (sqm UI 使用的是python2 + tkinter)
44+
- V0.3.4.3
45+
2021年01月01日 02:18:45
46+
- 使用PyGObject(python3-gi + Gtk+3)重写sqm.py
47+
- 感谢[sqm]<https://github.com/kxcode/gui-for-sqlmap>带来的灵感,
48+
其作者: [KINGX](https://github.com/kxcode)(sqm UI 使用的是python2 + tkinter)
5549

5650
#### 参考文献
57-
- Python GTK+3教程: https://python-gtk-3-tutorial.readthedocs.io/en/latest/
58-
- PyGObject API: https://lazka.github.io/pgi-docs/Gtk-3.0/
51+
- Python GTK+3教程: <https://python-gtk-3-tutorial.readthedocs.io/en/latest/>
52+
- PyGObject API: <https://lazka.github.io/pgi-docs/Gtk-3.0/>

handlers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env python3
2-
# encoding: utf-8
32
#
43
# 2018年 08月 29日 星期三 15:34:10 CST
54

@@ -41,7 +40,7 @@ def build_all(self, button):
4140

4241
def run_cmdline(self, button):
4342
'''
44-
only for posix, won't code it for win now.
43+
only for posix, won't work for win now.
4544
'''
4645
sqlmap_path = self.get_sqlmap_path()
4746
_target = self._get_target()

model.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ def __init__(self):
339339
self._page1_general_har_ckbtn = cb('转存至HAR文件')
340340
self._page1_general_har_entry = FileEntry()
341341
self._page1_general_har_chooser = btn.new_with_label('打开')
342-
self._page1_general_flush_session_ckbtn = cb('清空目标的会话文件')
342+
self._page1_general_flush_session_ckbtn = cb('<b>清空目标的会话文件</b>')
343343
self._page1_general_dump_format_ckbtn = cb('dump结果的文件格式')
344344
self._page1_general_dump_format_entry = et(width_chars = 6)
345345
self._page1_general_csv_del_ckbtn = cb('(csv文件的)分隔符')
@@ -364,7 +364,7 @@ def __init__(self):
364364
self._page1_misc_gpage_spinbtn = sp.new_with_range(1, 100, 1)
365365
self._page1_misc_beep_ckbtn = cb('响铃')
366366
self._page1_misc_offline_ckbtn = cb('离线模式(仅使用本地会话数据)')
367-
self._page1_misc_purge_ckbtn = cb('抹除所有本地记录!')
367+
self._page1_misc_purge_ckbtn = cb('<b>抹除所有本地记录!</b>')
368368
self._page1_misc_dependencies_ckbtn = cb('检查丢失的(非核心的)sqlmap依赖')
369369
self._page1_misc_update_ckbtn = cb('更新sqlmap')
370370
self._page1_misc_alert_ckbtn = cb('发现注入时运行本地命令:')
@@ -382,6 +382,7 @@ def __init__(self):
382382
# 输出区(2)
383383
# self._page2_cmdline_str_label = label.new('')
384384
self._page2_respwan_btn = btn.new_with_label('重开终端')
385+
self._page2_right_btn = btn.new_with_label('context menu')
385386
self._page2_terminal = Vte.Terminal.new()
386387
# 日志区(3)
387388
self._page3_log_view = tv(editable = False, wrap_mode = g.WrapMode.WORD)

opts_gtk.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env python3
2-
# encoding: utf-8
32
#
43
# 2019年 05月 14日 星期二 19:44:19 CST
54

@@ -212,9 +211,9 @@ def _build_page1_setting_detection(self, m):
212211
'Level 5 追加: Host报头',
213212
halign = g.Align.START)
214213
_risk_note = label(label = 'Risk 1(默认): 基本无风险\n'
215-
'Risk 2 追加: 大量时间型盲注\n'
216-
'Risk 3 追加: OR型布尔盲注',
217-
halign = g.Align.START)
214+
'Risk 2 追加: 大量时间型盲注\n'
215+
'Risk 3 追加: OR型布尔盲注',
216+
halign = g.Align.START)
218217
# _risk_note.override_background_color(g.StateFlags.NORMAL, d.RGBA(255, 0, 0, 1))
219218
_boxes[8].pack_start(_level_note, True, True, 5)
220219
_boxes[8].pack_start(_risk_note, True, True, 5)
@@ -1012,6 +1011,8 @@ def _build_page1_other_general(self, m):
10121011
[m._page1_general_save_entry]
10131012
)
10141013

1014+
m._page1_general_flush_session_ckbtn.get_children()[0].set_use_markup(True)
1015+
10151016
_boxes[8].pack_start(m._page1_general_flush_session_ckbtn, False, True, 5)
10161017
_boxes[8].pack_start(m._page1_general_dump_format_ckbtn, False, True, 5)
10171018
_boxes[8].pack_start(m._page1_general_dump_format_entry, False, True, 5)
@@ -1052,6 +1053,8 @@ def _build_page1_other_misc(self, m):
10521053

10531054
_boxes = [Box() for _ in range(5)]
10541055

1056+
m._page1_misc_purge_ckbtn.get_children()[0].set_use_markup(True)
1057+
10551058
_boxes[0].pack_start(m._page1_misc_skip_waf_ckbtn, False, True, 5)
10561059
_boxes[0].pack_start(m._page1_misc_unstable_ckbtn, False, True, 5)
10571060
_boxes[0].pack_start(m._page1_misc_list_tampers_ckbtn, False, True, 5)
@@ -1124,7 +1127,7 @@ def main():
11241127
win.show_all()
11251128
# --------
11261129
end = time.process_time()
1127-
print('loading cost: %s Seconds' % (end - start))
1130+
print('loading cost: %.3f Seconds' % (end - start))
11281131
g.main()
11291132

11301133

0 commit comments

Comments
 (0)