FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sqlmap/lib/core/shell.py at master · baixiangcpp/sqlmap · GitHub
baixiangcpp
sqlmap
Repository navigation
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
sqlmap
/
lib
/
core
/
shell.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
129 lines (104 loc) · 3.96 KB
Breadcrumbs
sqlmap
/
lib
/
core
/
shell.py
Copy path
File metadata and controls
129 lines (104 loc) · 3.96 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/env python
"""
Copyright (c) 2006-2015 sqlmap developers (http://sqlmap.org/)
See the file 'doc/COPYING' for copying permission
"""
import
atexit
import
os
import
rlcompleter
from
lib
.
core
import
readlineng
as
readline
from
lib
.
core
.
common
import
Backend
from
lib
.
core
.
data
import
logger
from
lib
.
core
.
data
import
paths
from
lib
.
core
.
enums
import
AUTOCOMPLETE_TYPE
from
lib
.
core
.
enums
import
OS
from
lib
.
core
.
settings
import
MAX_HISTORY_LENGTH
def
readlineAvailable
():
"""
Check if the readline is available. By default
it is not in Python default installation on Windows
"""
return
readline
.
_readline
is
not
None
def
clearHistory
():
if
not
readlineAvailable
():
return
readline
.
clear_history
()
def
saveHistory
(
completion
=
None
):
if
not
readlineAvailable
():
return
if
completion
==
AUTOCOMPLETE_TYPE
.
SQL
:
historyPath
=
paths
.
SQL_SHELL_HISTORY
elif
completion
==
AUTOCOMPLETE_TYPE
.
OS
:
historyPath
=
paths
.
OS_SHELL_HISTORY
else
:
historyPath
=
paths
.
SQLMAP_SHELL_HISTORY
try
:
with
open
(
historyPath
,
"w+"
)
as
f
:
pass
except
:
pass
readline
.
set_history_length
(
MAX_HISTORY_LENGTH
)
try
:
readline
.
write_history_file
(
historyPath
)
except
IOError
,
msg
:
warnMsg
=
"there was a problem writing the history file '%s' (%s)"
%
(
historyPath
,
msg
)
logger
.
warn
(
warnMsg
)
def
loadHistory
(
completion
=
None
):
if
not
readlineAvailable
():
return
clearHistory
()
if
completion
==
AUTOCOMPLETE_TYPE
.
SQL
:
historyPath
=
paths
.
SQL_SHELL_HISTORY
elif
completion
==
AUTOCOMPLETE_TYPE
.
OS
:
historyPath
=
paths
.
OS_SHELL_HISTORY
else
:
historyPath
=
paths
.
SQLMAP_SHELL_HISTORY
if
os
.
path
.
exists
(
historyPath
):
try
:
readline
.
read_history_file
(
historyPath
)
except
IOError
,
msg
:
warnMsg
=
"there was a problem loading the history file '%s' (%s)"
%
(
historyPath
,
msg
)
logger
.
warn
(
warnMsg
)
class
CompleterNG
(
rlcompleter
.
Completer
):
def
global_matches
(
self
,
text
):
"""
Compute matches when text is a simple name.
Return a list of all names currently defined in self.namespace
that match.
"""
matches
=
[]
n
=
len
(
text
)
for
ns
in
(
self
.
namespace
,):
for
word
in
ns
:
if
word
[:
n
]
==
text
:
matches
.
append
(
word
)
return
matches
def
autoCompletion
(
completion
=
None
,
os
=
None
,
commands
=
None
):
if
not
readlineAvailable
():
return
if
completion
==
AUTOCOMPLETE_TYPE
.
OS
:
if
os
==
OS
.
WINDOWS
:
# Reference: http://en.wikipedia.org/wiki/List_of_DOS_commands
completer
=
CompleterNG
({
"copy"
:
None
,
"del"
:
None
,
"dir"
:
None
,
"echo"
:
None
,
"md"
:
None
,
"mem"
:
None
,
"move"
:
None
,
"net"
:
None
,
"netstat -na"
:
None
,
"ver"
:
None
,
"xcopy"
:
None
,
"whoami"
:
None
,
})
else
:
# Reference: http://en.wikipedia.org/wiki/List_of_Unix_commands
completer
=
CompleterNG
({
"cp"
:
None
,
"rm"
:
None
,
"ls"
:
None
,
"echo"
:
None
,
"mkdir"
:
None
,
"free"
:
None
,
"mv"
:
None
,
"ifconfig"
:
None
,
"netstat -natu"
:
None
,
"pwd"
:
None
,
"uname"
:
None
,
"id"
:
None
,
})
readline
.
set_completer
(
completer
.
complete
)
readline
.
parse_and_bind
(
"tab: complete"
)
elif
commands
:
completer
=
CompleterNG
(
dict
(((
_
,
None
)
for
_
in
commands
)))
readline
.
set_completer_delims
(
' '
)
readline
.
set_completer
(
completer
.
complete
)
readline
.
parse_and_bind
(
"tab: complete"
)
loadHistory
(
completion
)
atexit
.
register
(
saveHistory
,
completion
)
Back
|
FazBrowse Home
|
New Git URL