Skip to content

Commit c4b1efe

Browse files
committed
add -k args
1 parent 5d2b80f commit c4b1efe

File tree

8 files changed

+67
-49
lines changed

8 files changed

+67
-49
lines changed

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ Example: python ctf-wscan.py http://ctf.test.com
1212

1313
![](1.gif)
1414

15+
# 新增-k参数
16+
```
17+
Useage : python ctf-wscan.py [website url] [key words ……]
18+
```
19+
由于觉得添加关键字这个功能还是蛮常用的,于是添加了个`-k`参数,可以在命令行中添加参数
1520

1621

1722
# 一些设置

config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# @Author: King kaki
33
# @Date: 2018-07-30 12:40:36
44
# @Last Modified by: kingkk
5-
# @Last Modified time: 2018-08-12 09:54:54
5+
# @Last Modified time: 2018-08-18 15:59:05
66

77
# 关键字
88
KEY_WORDS = ['flag','ctf', 'admin']

ctf-wscan.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,22 @@
22
# @Author: King kaki
33
# @Date: 2018-07-30 12:37:36
44
# @Last Modified by: kingkk
5-
# @Last Modified time: 2018-08-12 09:58:53
5+
# @Last Modified time: 2018-08-18 15:33:01
66

77
# url = 'http://localhost:80/'
88
# url = 'http://ctf5.shiyanbar.com/web/'
99
import sys
10-
10+
import argparse
1111
from lib.init import Init
1212

13+
1314
def main():
14-
scan = Init(sys.argv)
15+
parser = argparse.ArgumentParser()
16+
parser.add_argument('url', help="The website to be scanned", type=str)
17+
parser.add_argument('-k', '--keys', dest="key_words", nargs='+', help="Keys words to extend scan", type=str, default="")
18+
args = parser.parse_args()
19+
20+
scan = Init(args)
1521
scan.start()
1622

1723
if __name__ == '__main__':

dict/default.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ _viminfo
4242
%3f.back
4343
phpinfo.php
4444
robots.txt
45-
test.php
4645
.htaccess
4746
.bash_history
4847
.svn/
4948
.git/
5049
.index.php.swp
50+
index.php.swp
5151
index.php.bak
5252
.index.php~
5353
index.php.bak_Edietplus
@@ -148,7 +148,6 @@ login.php
148148
register.php
149149
upload.php
150150
home.php
151-
test.php
152151
log.php
153152
logs.php
154153
config.php

dict/ext.txt

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
$
12
$.txt
23
$.html
34
$/
@@ -11,6 +12,7 @@ $.gz
1112
$.tar
1213
$~
1314
$.swp
15+
.$.swp
1416
$.swp~
1517
$.save
1618
$.back

lib/generatedict.py

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
# -*- coding: utf-8 -*-
22
# @Author: King kaki
33
# @Date: 2018-07-30 14:24:51
4-
# @Last Modified by: King kaki
5-
# @Last Modified time: 2018-07-30 15:08:32
4+
# @Last Modified by: kingkk
5+
# @Last Modified time: 2018-08-18 16:00:09
66

77
from config import *
88

99
import re
1010

1111
class GenerateDcit:
12-
def __init__(self):
12+
def __init__(self, keywords):
1313
self.exts = self._getexts()
14-
self.keywords = KEY_WORDS
14+
15+
self.keywords = []
16+
17+
if KEY_WORDS:
18+
self.keywords += KEY_WORDS
19+
20+
if keywords:
21+
self.keywords += keywords
1522

1623

1724
def _getexts(self):

lib/init.py

+24-8
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@
22
# @Author: kingkk
33
# @Date: 2018-08-11 19:32:38
44
# @Last Modified by: kingkk
5-
# @Last Modified time: 2018-08-12 10:27:39
5+
# @Last Modified time: 2018-08-18 15:58:15
66
import sys
77
from config import *
88
from lib.log import Log
99
from lib.scan import Scan
10+
from lib.generatedict import GenerateDcit
11+
1012

1113
class Init:
12-
def __init__(self, argv):
13-
if len(argv) != 2:
14-
print('Params Error!')
15-
self.help()
16-
self.url = str(argv[1])
17-
self.url = self.init_url(self.url)
14+
def __init__(self, args):
15+
self.url = self.init_url(str(args.url))
16+
self.keywords = args.key_words
1817

1918

2019
def help(self):
@@ -37,11 +36,28 @@ def init_url(self, url):
3736

3837
return url
3938

39+
def get_files(self):
40+
# 获取默认扫描列表
41+
with open('dict/default.txt') as f:
42+
files = f.readlines()
43+
44+
45+
#生成关键字字典
46+
if KEY_WORDS or args.KEY_WORDS:
47+
g = GenerateDcit(self.keywords)
48+
for i in g.generate():
49+
files.append(i)
50+
51+
52+
files = (file.strip() for file in files)
53+
return files
54+
4055
def start(self):
4156
threadlist = []
4257
loglist = {}
58+
files = self.get_files()
4359
for i in range(NUMBER_OF_THREAD):
44-
threadlist.append(Scan(self.url, loglist))
60+
threadlist.append(Scan(self.url, loglist, files))
4561
for t in threadlist:
4662
t.start()
4763
for t in threadlist:

lib/scan.py

+14-31
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,41 @@
22
# @Author: King kaki
33
# @Date: 2018-07-30 13:18:58
44
# @Last Modified by: kingkk
5-
# @Last Modified time: 2018-08-12 09:55:23
5+
# @Last Modified time: 2018-08-18 15:59:23
66

77
import sys
88
import re
99
import threading
10-
1110
from config import *
12-
from lib.generatedict import GenerateDcit
1311

1412
import requests
1513

1614

17-
def setting():
18-
# 获取请求方式
19-
if REQUEST_METHOD == 1:
20-
req = requests.head
21-
elif REQUEST_METHOD == 2:
22-
req = requests.get
23-
24-
# 获取默认扫描列表
25-
with open('dict/default.txt') as f:
26-
files = f.readlines()
27-
28-
29-
#生成关键字字典
30-
if KEY_WORDS:
31-
g = GenerateDcit()
32-
for i in g.generate():
33-
files.append(i)
34-
35-
36-
files = (file.strip() for file in files)
37-
38-
return req, files
39-
40-
req, files = setting()
41-
4215
class Scan(threading.Thread):
43-
def __init__(self, url, log):
16+
def __init__(self, url, log, files):
4417
threading.Thread.__init__(self)
4518
self.url = url
4619
self.log = log
20+
self.req = self.setting()
21+
self.files = files
4722

4823
def run(self):
49-
for file in files:
24+
for file in self.files:
5025
try:
51-
r = req(self.url+file, timeout=TIME_OUT)
26+
r = self.req(self.url+file, timeout=TIME_OUT)
5227
except:
5328
continue
5429
with threading.Lock():
5530
self.display(r, file)
5631

32+
def setting(self):
33+
# 获取请求方式
34+
if REQUEST_METHOD == 1:
35+
req = requests.head
36+
elif REQUEST_METHOD == 2:
37+
req = requests.get
38+
return req
39+
5740

5841
def display(self, r, file):
5942
if r.status_code not in INVALID_CODE:

0 commit comments

Comments
 (0)