Skip to content

Commit 26586b4

Browse files
committed
add: -d --base64 --base64-safe --proxy-freq
1 parent f00d271 commit 26586b4

File tree

8 files changed

+63
-23
lines changed

8 files changed

+63
-23
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ don't use python2 any more please.
2323
- `./sqlmap_gtk.py`
2424

2525
#### FUNCTION
26-
- sqlmap(1.3.12.1#dev) all options(except -d)
26+
- all sqlmap(1.4.12.45#dev) options(except --all)
2727
- sqlmapapi client
2828
- built-in terminal
2929
- session: autosave current options before quit, autoload last used options
30-
- language switch: english, chinese
30+
- language switch(see `ABOUT` page): English, Chinese
3131

3232
#### ABOUT
3333
- v0.3.5

handlers.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ def _get_target(self):
192192
("-r ", m._request_file.get_text),
193193
("-m ", m._bulkfile.get_text),
194194
("-c ", m._configfile.get_text),
195-
("-g ", m._google_dork.get_text)]
195+
("-g ", m._google_dork.get_text),
196+
("-d ", m._direct_connect.get_text)]
196197

197198
_target_tmp = _target_list[_current_pagenum][1]().strip()
198199
if _target_tmp:
@@ -214,6 +215,11 @@ def _collect_opts(self):
214215
m._page1_general_parse_errors_ckbtn),
215216
self._get_text_only_ckbtn("--cleanup",
216217
m._page1_misc_cleanup_ckbtn),
218+
self._get_text_from_entry("--base64=",
219+
m._page1_general_base64_ckbtn,
220+
m._page1_general_base64_entry),
221+
self._get_text_only_ckbtn("--base64-safe",
222+
m._page1_general_base64_safe_ckbtn),
217223
self._get_text_from_entry("--table-prefix=",
218224
m._page1_general_table_prefix_ckbtn,
219225
m._page1_general_table_prefix_entry),
@@ -569,6 +575,9 @@ def _collect_opts(self):
569575
m._request_area_ignore_proxy_ckbtn),
570576
self._get_http_proxy(),
571577
self._get_http_proxy_cred(),
578+
self._get_text_from_entry("--proxy-freq=",
579+
m._request_area_proxy_freq_ckbtn,
580+
m._request_area_proxy_freq_entry),
572581
self._get_text_from_entry("--proxy-file=",
573582
m._request_area_proxy_file_ckbtn,
574583
m._request_area_proxy_file_entry),
@@ -695,8 +704,6 @@ def _collect_opts(self):
695704
self._get_text_only_ckbtn("--wizard",
696705
m._page1_misc_wizard_ckbtn),
697706
self._get_tampers(),
698-
self._get_text_only_ckbtn("--base64",
699-
m._hidden_area_base64_ckbtn),
700707
self._get_text_only_ckbtn("--crack",
701708
m._hidden_area_crack_ckbtn),
702709
self._get_text_only_ckbtn("--debug",

locale_text.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def __init__(self, language = 'en'):
7575
self.text_dict['General'] = '通用项'
7676
self.text_dict['Misc'] = '杂项'
7777

78-
self.text_dict['check if exists:'] = '检查是否存在:'
78+
self.text_dict['check existence of:'] = '检查是否存在:'
7979
self.text_dict['cat'] = '查看'
8080
self.text_dict['with Meterpreter(TCP connect):'] = 'Meterpreter相关(TCP连接):'
8181
self.text_dict['operate:'] = '操作:'

model.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def __init__(self, language):
2626
self._configfile = FileEntry()
2727
self._configfile_chooser = btn.new_with_label(_('open'))
2828
self._google_dork = et()
29+
self._direct_connect = et()
2930
# OPTIONS(1)
3031
# collected options:
3132
self._cmd_entry = et()
@@ -119,7 +120,6 @@ def __init__(self, language):
119120
self._page1_misc_wizard_ckbtn = cb(_('--wizard'))
120121
# Hidden
121122
self._hidden_frame = Frame.new(_('Hidden'))
122-
self._hidden_area_base64_ckbtn = cb(_('--base64'))
123123
self._hidden_area_crack_ckbtn = cb(_('--crack'))
124124
self._hidden_area_debug_ckbtn = cb(_('--debug'))
125125
self._hidden_area_profile_ckbtn = cb(_('--profile'))
@@ -219,10 +219,12 @@ def __init__(self, language):
219219
self._request_area_safe_freq_ckbtn = cb(_('--safe-freq'))
220220
self._request_area_safe_freq_entry = et(width_chars = 10)
221221
self._request_area_ignore_proxy_ckbtn = cb(_('--ignore-proxy'))
222-
self._request_area_proxy_ckbtn = cb(_('--proxy'))
222+
self._request_area_proxy_freq_ckbtn = cb(_('--proxy-freq'))
223+
self._request_area_proxy_freq_entry = NumberEntry()
223224
self._request_area_proxy_file_ckbtn = cb(_('--proxy-file'))
224225
self._request_area_proxy_file_entry = FileEntry()
225226
self._request_area_proxy_file_chooser = btn.new_with_label(_('open'))
227+
self._request_area_proxy_ckbtn = cb(_('--proxy'))
226228
self._request_area_proxy_ip_label = label.new('IP:')
227229
self._request_area_proxy_ip_entry = et()
228230
self._request_area_proxy_port_label = label.new('PORT:')
@@ -345,6 +347,9 @@ def __init__(self, language):
345347
self._page1_general_forms_ckbtn = cb(_('--forms'))
346348
self._page1_general_parse_errors_ckbtn = cb(_('--parse-errors'))
347349
self._page1_misc_cleanup_ckbtn = cb(_('--cleanup'))
350+
self._page1_general_base64_ckbtn = cb(_('--base64'))
351+
self._page1_general_base64_entry = et()
352+
self._page1_general_base64_safe_ckbtn = cb(_('--base64-safe'))
348353
self._page1_general_table_prefix_ckbtn = cb(_('--table-prefix'))
349354
self._page1_general_table_prefix_entry = et(width_chars = 15)
350355
self._page1_general_binary_fields_ckbtn = cb(_('--binary-fields'))

opts_gtk.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,6 @@ def _build_page1_setting_general(self, m):
328328
def _build_page1_setting_hidden(self, m):
329329
_boxes = [Box() for _ in range(6)]
330330

331-
_boxes[0].pack_start(m._hidden_area_base64_ckbtn, False, True, 5)
332331
_boxes[0].pack_start(m._hidden_area_crack_ckbtn, False, True, 5)
333332
_boxes[0].pack_start(m._hidden_area_debug_ckbtn, False, True, 5)
334333
_boxes[0].pack_start(m._hidden_area_profile_ckbtn, False, True, 5)
@@ -541,14 +540,17 @@ def _build_page1_request_proxy(self, m):
541540
[m._request_area_proxy_file_entry]
542541
)
543542

543+
m._request_area_proxy_freq_entry.set_width_chars(10)
544544
m._request_area_proxy_port_entry.set_width_chars(10)
545545
m._request_area_tor_port_entry.set_width_chars(10)
546546

547547
_boxes[3].pack_start(m._request_area_ignore_proxy_ckbtn, False, True, 5)
548-
_boxes[3].pack_start(m._request_area_proxy_ckbtn, False, True, 5)
548+
_boxes[3].pack_start(m._request_area_proxy_freq_ckbtn, False, True, 5)
549+
_boxes[3].pack_start(m._request_area_proxy_freq_entry, False, True, 5)
549550
_boxes[3].pack_start(m._request_area_proxy_file_ckbtn, False, True, 5)
550551
_boxes[3].pack_start(m._request_area_proxy_file_entry, True, True, 0)
551552
_boxes[3].pack_start(m._request_area_proxy_file_chooser, False, True, 5)
553+
_boxes[4].pack_start(m._request_area_proxy_ckbtn, False, True, 5)
552554
_boxes[4].pack_start(m._request_area_proxy_ip_label, False, True, 5)
553555
_boxes[4].pack_start(m._request_area_proxy_ip_entry, True, True, 5)
554556
_boxes[4].pack_start(m._request_area_proxy_port_label, False, True, 5)
@@ -725,7 +727,7 @@ def _build_page1_enumeration_brute_force(self, m):
725727
_brute_force_area_opts = Box(orientation=VERTICAL)
726728

727729
_row1 = Box()
728-
_row1.pack_start(label.new(m.text.gettext('check if exists:')), False, True, 10)
730+
_row1.pack_start(label.new(m.text.gettext('check existence of:')), False, True, 10)
729731
_row1.pack_start(m._brute_force_area_common_tables_ckbtn, False, True, 0)
730732
_row1.pack_start(m._brute_force_area_common_columns_ckbtn, False, True, 5)
731733
_row1.pack_start(m._brute_force_area_common_files_ckbtn, False, True, 0)
@@ -910,6 +912,9 @@ def _build_page1_other_general(self, m):
910912
_boxes[i].pack_start(m._page1_general_forms_ckbtn, False, True, 5)
911913
_boxes[i].pack_start(m._page1_general_parse_errors_ckbtn, False, True, 5)
912914
_boxes[i].pack_start(m._page1_misc_cleanup_ckbtn, False, True, 5)
915+
_boxes[i].pack_start(m._page1_general_base64_ckbtn, False, True, 5)
916+
_boxes[i].pack_start(m._page1_general_base64_entry, False, True, 5)
917+
_boxes[i].pack_start(m._page1_general_base64_safe_ckbtn, False, True, 5)
913918

914919
m._page1_general_preprocess_chooser.connect(
915920
'clicked',

sqlmap_gtk.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,13 +225,19 @@ def _build_target_notebook(self, target_nb):
225225
_google_dork_area = Box()
226226
_google_dork_area.pack_start(m._google_dork, True, True, 0)
227227

228+
_direct_connect_area = Box()
229+
m._direct_connect.set_text('mysql://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME or '
230+
'access://DATABASE_FILEPATH')
231+
_direct_connect_area.pack_start(m._direct_connect, True, True, 0)
232+
228233
_ = m.text.gettext
229234
target_nb.append_page(_url_area, label.new(_('-u URL')))
230235
target_nb.append_page(_burp_area, label.new(_('-l LOGFILE')))
231236
target_nb.append_page(_request_area, label.new(_('-r REQUESTFILE')))
232237
target_nb.append_page(_bulkfile_area, label.new(_('-m BULKFILE')))
233238
target_nb.append_page(_configfile_area, label.new(_('-c CONFIGFILE')))
234239
target_nb.append_page(_google_dork_area, label.new(_('-g GOOGLEDORK')))
240+
target_nb.append_page(_direct_connect_area, label.new(_('-d DIRECT')))
235241

236242
def _build_page1(self):
237243
box = Box(orientation=VERTICAL, spacing=6)

tooltips.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ def set_all_placeholders(self, m):
2525
m._configfile)
2626
self._set_placeholder('-g: Process Google dork results as target URLs',
2727
m._google_dork)
28+
self._set_placeholder('-d: DIRECT Connection string for direct database connection',
29+
m._direct_connect)
2830
# OPTIONS(page1)
2931
# 1.Inject(Q)
3032
self._set_placeholder('id,user-agent',
@@ -179,7 +181,7 @@ def set_all_tooltips(self, m):
179181
self._set_tooltip('--no-cast Turn off payload casting mechanism\n'
180182
'When retrieving results, all entries would be casted to string type\n'
181183
'and replaced with a whitespace character in case of NULL values.\n'
182-
'if in trouble(e.g. older versions of MySQL), check it.',
184+
'if got problem(e.g. older versions of MySQL), check it.',
183185
m._inject_area_no_cast_ckbtn)
184186
self._set_tooltip('--no-escape\n'
185187
'unchecked: select \'foobar\' become select char(102)+char(111)...\n'
@@ -195,7 +197,7 @@ def set_all_tooltips(self, m):
195197
'True: id=13, False: id=akewmc',
196198
m._inject_area_invalid_string_ckbtn)
197199
self._set_tooltip('--text-only\n'
198-
'In cases with lot of resource(e.g. js, embeds) in some HTTP responses\' body'
200+
'In cases with lots of resource(e.g. js, embeds) in some HTTP responses\' body'
199201
'check it so that sqlmap focus on textual content\n'
200202
'to know the distinction of a True query from a False one',
201203
m._detection_area_text_only_ckbtn)
@@ -271,7 +273,7 @@ def set_all_tooltips(self, m):
271273
'combining with -b would be more accurate.',
272274
m._general_area_finger_ckbtn)
273275
self._set_tooltip('--hex\n'
274-
'In lost of cases retrieval of non-ASCII data requires special needs.'
276+
'In lost of cases retrieval of non-ASCII data requires special needs.\n'
275277
'checked: data is encoded to hexadecimal form before being retrieved and afterwards unencoded.\n',
276278
m._general_area_hex_ckbtn)
277279
self._set_tooltip('--wizard vector mode for beginner.',
@@ -338,9 +340,19 @@ def set_all_tooltips(self, m):
338340
'Load and use safe HTTP request from a file.',
339341
m._request_area_safe_req_ckbtn,
340342
m._request_area_safe_req_entry)
341-
self._set_tooltip('--safe-freq=SAFE.. Test requests between two visits to a given safe URL',
343+
self._set_tooltip('--safe-freq=SAFE.. Test requests between two visits to a given safe URL',
342344
m._request_area_safe_freq_ckbtn,
343345
m._request_area_safe_freq_entry)
346+
self._set_tooltip('--ignore-proxy Ignore system default proxy settings',
347+
m._request_area_ignore_proxy_ckbtn)
348+
self._set_tooltip('--proxy-freq=PRO.. Requests between change of proxy from a given list',
349+
m._request_area_proxy_freq_ckbtn,
350+
m._request_area_proxy_freq_entry)
351+
self._set_tooltip('--proxy-cred=PRO.. Proxy authentication credentials (name:password)',
352+
m._request_area_proxy_username_label,
353+
m._request_area_proxy_username_entry,
354+
m._request_area_proxy_password_label,
355+
m._request_area_proxy_password_entry)
344356
# 3.Enumerate(E)
345357
self._set_tooltip('-b get DB banner: version()/@@version',
346358
m._enum_area_opts_ckbtns[0][0])
@@ -419,7 +431,7 @@ def set_all_tooltips(self, m):
419431
' 2.the session user has the needed privileges',
420432
m._file_read_area_file_read_ckbtn,
421433
m._file_read_area_file_read_entry)
422-
self._set_tooltip('just view the file that has downloaded.',
434+
self._set_tooltip('just view the downloaded file.',
423435
m._file_read_area_file_read_btn)
424436
self._set_tooltip('--udf-inject\n'
425437
'UDF: user-defined function, only for MySQL or PostgreSQL.\n',
@@ -551,7 +563,7 @@ def set_all_tooltips(self, m):
551563
'level': 1, 'risk': 1,
552564
}
553565
5. click "set:" to send the dict
554-
6. click start after sending the dict
566+
6. click "start" after sending the dict
555567
Note: 1. click "view tasks" to recheck tasks' status.
556568
2. sqlmapapi's options are not the same with sqlmap;
557569
sqlmapapi accept options, but won't verify it!

tooltips_zh.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ def set_all_placeholders(self, m):
2525
m._configfile)
2626
self._set_placeholder('-g: 将google dork的结果作为目标url',
2727
m._google_dork)
28+
self._set_placeholder('-d: 直接连接远程DB的连接字符串',
29+
m._direct_connect)
2830
# 选项区(page1)
2931
# 1.测试页面(Q)
3032
self._set_placeholder('id,user-agent',
@@ -404,21 +406,24 @@ def set_all_tooltips(self, m):
404406
self._set_tooltip('--safe-req=',
405407
m._request_area_safe_req_ckbtn,
406408
m._request_area_safe_req_entry)
407-
self._set_tooltip('--safe-freq=SAFE.. Test requests between two visits to a given safe URL',
409+
self._set_tooltip('--safe-freq=SAFE.. Test requests between two visits to a given safe URL',
408410
m._request_area_safe_freq_ckbtn,
409411
m._request_area_safe_freq_entry)
410-
self._set_tooltip('--ignore-proxy',
412+
self._set_tooltip('--ignore-proxy Ignore system default proxy settings',
411413
m._request_area_ignore_proxy_ckbtn)
414+
self._set_tooltip('--proxy-freq=PRO.. Requests between change of proxy from a given list',
415+
m._request_area_proxy_freq_ckbtn,
416+
m._request_area_proxy_freq_entry)
417+
self._set_tooltip('--proxy-file=',
418+
m._request_area_proxy_file_ckbtn,
419+
m._request_area_proxy_file_entry)
412420
self._set_tooltip('--proxy=',
413421
m._request_area_proxy_ckbtn,
414422
m._request_area_proxy_ip_label,
415423
m._request_area_proxy_ip_entry,
416424
m._request_area_proxy_port_label,
417425
m._request_area_proxy_port_entry)
418-
self._set_tooltip('--proxy-file=',
419-
m._request_area_proxy_file_ckbtn,
420-
m._request_area_proxy_file_entry)
421-
self._set_tooltip('--proxy-cred=',
426+
self._set_tooltip('--proxy-cred=PRO.. Proxy authentication credentials (name:password)',
422427
m._request_area_proxy_username_label,
423428
m._request_area_proxy_username_entry,
424429
m._request_area_proxy_password_label,

0 commit comments

Comments
 (0)