Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitad2f822

Browse files
committed
- Refactoring
- Better consistency in parameter order- Better UX and responsivness for the headers inside the tabs- Popup messages- Optimization for the config load from the URL
1 parent0777a9e commitad2f822

File tree

3 files changed

+187
-164
lines changed

3 files changed

+187
-164
lines changed

‎app.js‎

Lines changed: 148 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,130 @@
11
classSQLMapGenerator{
22
constructor(){
33
this.config={};
4+
5+
this.paramMapping={
6+
'-u':'url',
7+
'-d':'directDb',
8+
'-g':'googleDork',
9+
'-m':'targetsFile',
10+
'-l':'burpFile',
11+
'--scope':'burpFileScope',
12+
13+
'--timeout':'timeout',
14+
'--delay':'delay',
15+
'--threads':'threads',
16+
'--force-ssl':'forceSsl',
17+
'--keep-alive':'keepAlive',
18+
'--null-connection':'nullConnection',
19+
20+
'--proxy':'proxy',
21+
'--proxy-cred':'proxyCred',
22+
'--proxy-file':'proxyFile',
23+
'--proxy-freq':'proxyFreq',
24+
'--ignore-proxy':'proxyIgnore',
25+
'--tor':'tor',
26+
'--check-tor':'checkTor',
27+
'--tor-port':'torPort',
28+
'--tor-type':'torType',
29+
30+
'--method':'method',
31+
'--param-del':'paramDel',
32+
'-r':'requestFile',
33+
'--data':'data',
34+
35+
'--host':'host',
36+
'-A':'userAgent',
37+
'--random-agent':'userAgent',
38+
'--mobile':'mobileUserAgent',
39+
'--referer':'referer',
40+
'-H':'headers',
41+
42+
'--cookie':'cookie',
43+
'--cookie-del':'cookieDel',
44+
'--live-cookies':'cookieLive',
45+
'--load-cookies':'cookieLoad',
46+
'--drop-set-cookie':'cookieDrop',
47+
'--auth-type':'authType',
48+
'--auth-cred':'authCred',
49+
'--auth-file':'authFile',
50+
51+
'--csrf-token':'csrfToken',
52+
'--csrf-method':'csrfMethod',
53+
'--csrf-url':'csrfUrl',
54+
'--csrf-retries':'csrfRetries',
55+
56+
'-p':'paramTest',
57+
'--skip':'paramSkip',
58+
'--param-exclude':'paramExclude',
59+
'--param-filter':'paramFilter',
60+
'--prefix':'prefix',
61+
'--suffix':'suffix',
62+
63+
'--string':'string',
64+
'--regexp':'regexp',
65+
'--not-string':'notString',
66+
'--code':'code',
67+
'--titles':'titles',
68+
'--text-only':'textOnly',
69+
'--level':'level',
70+
71+
'--risk':'risk',
72+
'--dbms':'dbms',
73+
'--os':'os',
74+
'--second-url':'secondUrl',
75+
'--second-req':'secondReq',
76+
'--technique':'technique',
77+
'--invalid-bignum':'invalidBignum',
78+
'--invalid-logical':'invalidLogical',
79+
'--invalid-string':'invalidString',
80+
'--no-cast':'noCast',
81+
'--no-escape':'noEscape',
82+
'--predict-output':'predictOutput',
83+
84+
'--all':'all',
85+
'--banner':'banner',
86+
'--columns':'columns',
87+
'--comments':'comments',
88+
'--count':'count',
89+
'--current-user':'currentUser',
90+
'--current-db':'currentDb',
91+
'--dbs':'dbs',
92+
'--dump':'dump',
93+
'--dump-all':'dumpAll',
94+
'--exclude-sysdbs':'excludeSysdbs',
95+
'--hostname':'hostname',
96+
'--is-dba':'isDba',
97+
'--passwords':'passwords',
98+
'--privileges':'privileges',
99+
'--roles':'roles',
100+
'--schema':'schema',
101+
'--search':'search',
102+
'--statements':'statements',
103+
'--tables':'tables',
104+
'--users':'users',
105+
106+
'-D':'database',
107+
'-T':'table',
108+
'-C':'column',
109+
'-X':'exclude',
110+
'-U':'user',
111+
'--pivot-column':'pivotColumn',
112+
'--where':'where',
113+
'--start':'start',
114+
'--stop':'stop',
115+
'--first':'first',
116+
'--last':'last',
117+
'--sql-query':'sqlQuery',
118+
'--sql-file':'sqlFile',
119+
120+
'--tamper':'tamper',
121+
122+
'-v':'verbose',
123+
'-t':'trafficFile',
124+
'--batch':'batch',
125+
'--parse-errors':'parseErrors'
126+
};
127+
4128
this.tamperScriptList=[
5129
"0eunion",
6130
"apostrophemask",
@@ -431,7 +555,10 @@ class SQLMapGenerator {
431555
if(suffix)config['--suffix']=suffix;
432556

433557
constsecondUrl=document.getElementById('secondUrl').value.trim();
434-
if(secondUrl)config['--second-url']=secondUrl;
558+
if(secondUrl)config['--second-url']=secondUrl;
559+
560+
constsecondReq=document.getElementById('secondReq').value.trim();
561+
if(secondReq)config['--second-req']=secondReq;
435562

436563
// Techniques
437564
consttechniques=[];
@@ -493,6 +620,7 @@ class SQLMapGenerator {
493620
if(document.getElementById('dumpAll').checked)config['--dump-all']=true;
494621
if(document.getElementById('hostname').checked)config['--hostname']=true;
495622
if(document.getElementById('isDba').checked)config['--is-dba']=true;
623+
if(document.getElementById('excludeSysdbs').checked)config['--exclude-sysdbs']=true;
496624
if(document.getElementById('passwords').checked)config['--passwords']=true;
497625
if(document.getElementById('privileges').checked)config['--privileges']=true;
498626
if(document.getElementById('roles').checked)config['--roles']=true;
@@ -530,11 +658,17 @@ class SQLMapGenerator {
530658
if(stop)config['--stop']=stop;
531659

532660
constfirst=document.getElementById('first').value.trim();
533-
if(first)config['--first']=first;
661+
if(first)config['--first']=first;
534662

535663
constlast=document.getElementById('last').value.trim();
536664
if(last)config['--last']=last;
537665

666+
constsqlQuery=document.getElementById('sqlQuery').value.trim();
667+
if(sqlQuery)config['--sql-query']=sqlQuery;
668+
669+
constsqlFile=document.getElementById('sqlFile').value.trim();
670+
if(sqlFile)config['--sql-file']=sqlFile;
671+
538672
returnconfig;
539673
}
540674

@@ -543,26 +677,7 @@ class SQLMapGenerator {
543677
letcommand='sqlmap';
544678

545679
// Order of parameters for better readability
546-
constparamOrder=[
547-
'-u','-d','-r','-m','-l','--scope','-g',
548-
'--timeout','--delay','--threads',
549-
'--proxy','--proxy-cred','--proxy-file','--proxy-freq','--ignore-proxy',
550-
'--tor','--check-tor','--tor-port','--tor-type',
551-
'--force-ssl','--keep-alive','--null-connection','--http2',
552-
'--method','--data','--param-del',
553-
'--string','--not-string','--regexp','--code','--text-only','--titles',
554-
'--host','-A','--mobile','--random-agent',"--referer","-H",
555-
'--cookie','--cookie-del','--live-cookies','--load-cookies','--drop-set-cookie',
556-
'--auth-type','--auth-cred','--auth-file',
557-
'--csrf-token','--csrf-url','--csrf-method','--csrf-retries',
558-
'-p','--skip','--param-exclude','--param-filter','--level','--risk','--dbms','--os',
559-
'--technique','--invalid-bignum','--invalid-logical','--invalid-string','--no-cast','--no-escape','--predict-output',
560-
'--batch','-v','-t','--parse-errors','--test-filter',
561-
'--all','--banner','--columns','--comments','--count','--current-user','--current-db','--dbs','--dump','--dump-all',
562-
'--hostname','--is-dba','--passwords','--privileges','--roles','--schema','--search','--statements','--tables','--users',
563-
'-D','-T','-C','-X','-U','--pivot-column','--where','--start','--stop','--first','--last',
564-
'--tamper','--prefix','--suffix','--csrf-token','--csrf-url','--second-url'
565-
];
680+
constparamOrder=Object.keys(this.paramMapping);
566681

567682
// Add parameters in order
568683
paramOrder.forEach(param=>{
@@ -592,9 +707,10 @@ class SQLMapGenerator {
592707
// Check if we have hashtag with proper config and load it if so
593708
try{
594709
lethashtag=location.hash.substr(1);
595-
if(hashtag.length>0){
710+
if(hashtag.length>0&&hashtag!=="e30="){
596711
lethashtagCmd=JSON.parse(atob(hashtag));
597712
this.applyConfiguration(hashtagCmd);
713+
this.showMessage("Configuration loaded from URL",'success');
598714
}
599715
}catch(ex){
600716
console.log(ex);
@@ -792,119 +908,12 @@ class SQLMapGenerator {
792908

793909
applyConfiguration(config){
794910
// Reset form first
795-
this.resetConfiguration();
911+
this.resetConfiguration(true);
796912

797913
// Apply configuration
798914
Object.entries(config).forEach(([param,value])=>{
799-
// Map parameters to form element IDs
800-
constparamMapping={
801-
'-u':'url',
802-
'-d':'directDb',
803-
'-r':'requestFile',
804-
'-m':'targetsFile',
805-
'-l':'burpFile',
806-
'--scope':'burpFileScope',
807-
'-g':'googleDork',
808-
'--force-ssl':'forceSsl',
809-
'--timeout':'timeout',
810-
'--delay':'delay',
811-
'--threads':'threads',
812-
'--proxy':'proxy',
813-
'--proxy-cred':'proxyCred',
814-
'--proxy-file':'proxyFile',
815-
'--proxy-freq':'proxyFreq',
816-
'--ignore-proxy':'proxyIgnore',
817-
'--tor':'tor',
818-
'--check-tor':'checkTor',
819-
'--tor-port':'torPort',
820-
'--tor-type':'torType',
821-
'--method':'method',
822-
'--data':'data',
823-
'--param-del':'paramDel',
824-
'--prefix':'prefix',
825-
'--suffix':'suffix',
826-
'--host':'host',
827-
'-A':'userAgent',
828-
'--string':'string',
829-
'--not-string':'notString',
830-
'--regexp':'regexp',
831-
'--code':'code',
832-
'--titles':'titles',
833-
'--text-only':'textOnly',
834-
'--mobile':'mobileUserAgent',
835-
'--random-agent':'userAgent',
836-
'--referer':'referer',
837-
'-H':'headers',
838-
'--cookie':'cookie',
839-
'--cookie-del':'cookieDel',
840-
'--live-cookies':'cookieLive',
841-
'--drop-set-cookie':'cookieDrop',
842-
'--load-cookies':'cookieLoad',
843-
'--auth-type':'authType',
844-
'--auth-cred':'authCred',
845-
'--auth-file':'authFile',
846-
'--csrf-token':'csrfToken',
847-
'--csrf-url':'csrfUrl',
848-
'--csrf-method':'csrfMethod',
849-
'--csrf-retries':'csrfRetries',
850-
'-p':'paramTest',
851-
'--skip':'paramSkip',
852-
'--param-exclude':'paramExclude',
853-
'--param-filter':'paramFilter',
854-
'--level':'level',
855-
'--risk':'risk',
856-
'--dbms':'dbms',
857-
'--os':'os',
858-
'--technique':'technique',
859-
'--invalid-bignum':'invalidBignum',
860-
'--invalid-logical':'invalidLogical',
861-
'--invalid-string':'invalidString',
862-
'--no-cast':'noCast',
863-
'--no-escape':'noEscape',
864-
'--predict-output':'predictOutput',
865-
'--keep-alive':'keepAlive',
866-
'--batch':'batch',
867-
'-v':'verbose',
868-
'-t':'trafficFile',
869-
'--parse-errors':'parseErrors',
870-
'--test-filter':'testFilter',
871-
'--all':'all',
872-
'--banner':'banner',
873-
'--columns':'columns',
874-
'--comments':'comments',
875-
'--count':'count',
876-
'--current-user':'currentUser',
877-
'--current-db':'currentDb',
878-
'--dbs':'dbs',
879-
'--dump':'dump',
880-
'--dump-all':'dumpAll',
881-
'--hostname':'hostname',
882-
'--is-dba':'isDba',
883-
'--passwords':'passwords',
884-
'--privileges':'privileges',
885-
'--roles':'roles',
886-
'--schema':'schema',
887-
'--search':'search',
888-
'--statements':'statements',
889-
'--tables':'tables',
890-
'--users':'users',
891-
'-D':'database',
892-
'-T':'table',
893-
'-C':'column',
894-
'-X':'exclude',
895-
'-U':'user',
896-
'--where':'where',
897-
'--start':'start',
898-
'--stop':'stop',
899-
'--first':'first',
900-
'--last':'last',
901-
'--pivot-column':'pivotColumn',
902-
'--null-connection':'nullConnection',
903-
'--tamper':'tamper',
904-
'--second-url':'secondUrl'
905-
};
906915

907-
constelementId=paramMapping[param];
916+
constelementId=this.paramMapping[param];
908917
if(elementId){
909918
constelement=document.getElementById(elementId);
910919
if(element){
@@ -947,7 +956,7 @@ class SQLMapGenerator {
947956
this.updateCommand();
948957
}
949958

950-
resetConfiguration(){
959+
resetConfiguration(skipResetAlert=false){
951960
// Reset all form fields
952961
document.querySelectorAll('input, select, textarea').forEach(element=>{
953962
if(element.type==='checkbox'){
@@ -974,29 +983,25 @@ class SQLMapGenerator {
974983
document.getElementById('customCsrfMethodGroup').style.display='none';
975984

976985
this.updateCommand();
977-
this.showMessage('Configuration deleted','info');
986+
if(!skipResetAlert){
987+
this.showMessage('Configuration loaded','info');
988+
}
978989
}
979990

980991
showMessage(message,type='info'){
981992
// Create message element
982993
constmessageEl=document.createElement('div');
983994
messageEl.className=`status status--${type}`;
984995
messageEl.textContent=message;
985-
messageEl.style.position='fixed';
986-
messageEl.style.top='20px';
987-
messageEl.style.right='20px';
988-
messageEl.style.zIndex='1000';
989-
messageEl.style.minWidth='300px';
990-
messageEl.style.padding='12px 16px';
991996

992-
document.body.appendChild(messageEl);
997+
document.getElementById("status-container").appendChild(messageEl);
993998

994-
// Remove after10 seconds
999+
// Remove after6 seconds
9951000
setTimeout(()=>{
9961001
if(messageEl.parentNode){
9971002
messageEl.parentNode.removeChild(messageEl);
9981003
}
999-
},10000);
1004+
},6000);
10001005
}
10011006
}
10021007

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp