mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-10-31 16:07:55 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| """
 | |
| $Id$
 | |
| 
 | |
| Copyright (c) 2006-2012 sqlmap developers (http://www.sqlmap.org/)
 | |
| See the file 'doc/COPYING' for copying permission
 | |
| """
 | |
| 
 | |
| class _Getch:
 | |
|     """
 | |
|     Gets a single character from standard input.  Does not echo to
 | |
|     the screen (reference: http://code.activestate.com/recipes/134892/)
 | |
|     """
 | |
|     def __init__(self):
 | |
|         try:
 | |
|             self.impl = _GetchWindows()
 | |
|         except ImportError:
 | |
|             try:
 | |
|                 self.impl = _GetchMacCarbon()
 | |
|             except(AttributeError, ImportError):
 | |
|                 self.impl = _GetchUnix()
 | |
| 
 | |
|     def __call__(self): return self.impl()
 | |
| 
 | |
| 
 | |
| class _GetchUnix:
 | |
|     def __init__(self):
 | |
|         import tty
 | |
| 
 | |
|     def __call__(self):
 | |
|         import sys, tty, termios
 | |
|         fd = sys.stdin.fileno()
 | |
|         old_settings = termios.tcgetattr(fd)
 | |
|         try:
 | |
|             tty.setraw(sys.stdin.fileno())
 | |
|             ch = sys.stdin.read(1)
 | |
|         finally:
 | |
|             termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
 | |
|         return ch
 | |
| 
 | |
| 
 | |
| class _GetchWindows:
 | |
|     def __init__(self):
 | |
|         import msvcrt
 | |
| 
 | |
|     def __call__(self):
 | |
|         import msvcrt
 | |
|         return msvcrt.getch()
 | |
| 
 | |
| 
 | |
| class _GetchMacCarbon:
 | |
|     """
 | |
|     A function which returns the current ASCII key that is down;
 | |
|     if no ASCII key is down, the null string is returned.  The
 | |
|     page http://www.mactech.com/macintosh-c/chap02-1.html was
 | |
|     very helpful in figuring out how to do this.
 | |
|     """
 | |
|     def __init__(self):
 | |
|         import Carbon
 | |
|         Carbon.Evt #see if it has this (in Unix, it doesn't)
 | |
| 
 | |
|     def __call__(self):
 | |
|         import Carbon
 | |
|         if Carbon.Evt.EventAvail(0x0008)[0]==0: # 0x0008 is the keyDownMask
 | |
|             return ''
 | |
|         else:
 | |
|             #
 | |
|             # The event contains the following info:
 | |
|             # (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1]
 | |
|             #
 | |
|             # The message (msg) contains the ASCII char which is
 | |
|             # extracted with the 0x000000FF charCodeMask; this
 | |
|             # number is converted to an ASCII character with chr() and
 | |
|             # returned
 | |
|             #
 | |
|             (what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1]
 | |
|             return chr(msg & 0x000000FF)
 | |
| 
 | |
| 
 | |
| getch = _Getch()
 |