@@ -163,7 +163,7 @@ def getChar(idx, charTbl=asciiTbl, sequentialOrder=True):
163163 return None
164164
165165 maxChar = maxValue = charTbl [- 1 ]
166- minValue = charTbl [0 ]
166+ minChar = minValue = charTbl [0 ]
167167
168168 while len (charTbl ) != 1 :
169169 position = (len (charTbl ) >> 1 )
@@ -201,17 +201,27 @@ def getChar(idx, charTbl=asciiTbl, sequentialOrder=True):
201201 charTbl = xrange (charTbl [0 ], charTbl [position ])
202202
203203 if len (charTbl ) == 1 :
204- if maxValue == 1 :
205- return None
206- elif minValue == maxChar :
207- charTbl = xrange (maxChar + 1 , (maxChar + 1 ) << 8 )
208- maxChar = maxValue = charTbl [- 1 ]
209- minValue = charTbl [0 ]
210- elif sequentialOrder :
211- retVal = minValue + 1
212- return chr (retVal ) if retVal < 128 else unichr (retVal )
204+ if sequentialOrder :
205+ if maxValue == 1 :
206+ return None
207+ elif minValue == maxChar :
208+ charTbl = xrange (maxChar + 1 , (maxChar + 1 ) << 8 )
209+ maxChar = maxValue = charTbl [- 1 ]
210+ minChar = minValue = charTbl [0 ]
211+ else :
212+ retVal = minValue + 1
213+ return chr (retVal ) if retVal < 128 else unichr (retVal )
213214 else :
215+ if minValue == maxChar or maxValue == minChar :
216+ return None
214217 retVal = originalTbl [originalTbl .index (minValue ) + 1 ]
218+ forgedPayload = safeStringFormat (payload .replace ('%3E' , '%3D' ), (expressionUnescaped , idx , retVal ))
219+ queriesCount [0 ] += 1
220+ result = Request .queryPage (urlencode (forgedPayload ))
221+ if result :
222+ return chr (retVal ) if retVal < 128 else unichr (retVal )
223+ else :
224+ return None
215225
216226 def etaProgressUpdate (charTime , index ):
217227 if len (progressTime ) <= ( (length * 3 ) / 100 ):
0 commit comments