Advertisement
in73ct0rd3vil

tor_switcher.py

May 23rd, 2015
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.89 KB | None | 0 0
  1. #! /usr/bin/env python
  2.  
  3. """
  4. tor_switcher.py
  5. A light interface for issuing NEWNYM signals over TOR's control port. Usefull
  6. for making a PyLoris DoS attack look like a DDoS attack.
  7. """
  8.  
  9. import random, telnetlib, thread, time
  10. from Tkinter import *
  11.  
  12. class Switcher(Tk):
  13.     def __init__(self):
  14.         Tk.__init__(self)
  15.         self.title(string = ".o0O| TOR Switcher |O0o.")
  16.  
  17.         self.host = StringVar()
  18.         self.port = IntVar()
  19.         self.passwd = StringVar()
  20.         self.time = DoubleVar()
  21.  
  22.         self.host.set('localhost')
  23.         self.port.set('9051')
  24.         self.passwd.set('')
  25.         self.time.set('30')
  26.  
  27.         Label(self, text = 'Host:').grid(row = 1, column = 1)
  28.         Label(self, text = 'Port:').grid(row = 2, column = 1)
  29.         Label(self, text = 'Password:').grid(row = 3, column = 1)
  30.         Label(self, text = 'Interval:').grid(row = 4, column = 1)
  31.  
  32.         Entry(self, textvariable = self.host).grid(row = 1, column = 2, columnspan = 2)
  33.         Entry(self, textvariable = self.port).grid(row = 2, column = 2, columnspan = 2)
  34.         Entry(self, textvariable = self.passwd, show = '*').grid(row = 3, column = 2, columnspan = 2)
  35.         Entry(self, textvariable = self.time).grid(row = 4, column = 2, columnspan = 2)
  36.  
  37.         Button(self, text = 'Start', command = self.start).grid(row = 5, column = 2)
  38.         Button(self, text = 'Stop', command = self.stop).grid(row = 5, column = 3)
  39.  
  40.         self.output = Text(self, foreground="white", background="black", highlightcolor="white", highlightbackground="purple", wrap=WORD, height = 8, width = 40)
  41.         self.output.grid(row = 1, column = 4, rowspan = 5)
  42.  
  43.     def start(self):
  44.         self.write('TOR Switcher starting.')
  45.         self.ident = random.random()
  46.         thread.start_new_thread(self.newnym, ())
  47.  
  48.     def stop(self):
  49.         try:
  50.             self.write('TOR Switcher stopping.')
  51.         except:
  52.             pass
  53.         self.ident = random.random()
  54.  
  55.     def write(self, message):
  56.         t = time.localtime()
  57.         try:
  58.             self.output.insert(END, '[%02i:%02i:%02i] %s\n' % (t[3], t[4], t[3], message))
  59.         except:
  60.             print('[%02i:%02i:%02i] %s\n' % (t[3], t[4], t[3], message))
  61.            
  62.     def newnym(self):
  63.         key = self.ident
  64.         host = self.host.get()
  65.         port = self.port.get()
  66.         passwd = self.passwd.get()
  67.         interval = self.time.get()
  68.  
  69.         try:
  70.             tn = telnetlib.Telnet(host, port)
  71.             if passwd == '':
  72.                 tn.write("AUTHENTICATE\r\n")
  73.             else:
  74.                 tn.write("AUTHENTICATE \"%s\"\r\n" % (passwd))
  75.             res = tn.read_until('250 OK', 5)
  76.  
  77.             if res.find('250 OK') > -1:
  78.                 self.write('AUTHENTICATE accepted.')
  79.             else:
  80.                 self.write('Control responded "%s".')
  81.                 key = self.ident + 1
  82.                 self.write('Quitting.')
  83.         except Exception, ex:
  84.             self.write('There was an error: %s.' % (ex))
  85.             key = self.ident + 1
  86.             self.write('Quitting.')
  87.        
  88.         while key == self.ident:
  89.             try:
  90.                 tn.write("signal NEWNYM\r\n")
  91.                 res = tn.read_until('250 OK', 5)
  92.                 if res.find('250 OK') > -1:
  93.                     self.write('New identity established.')
  94.                 else:
  95.                     self.write('Control responded "%s".')
  96.                     key = self.ident + 1
  97.                     self.write('Quitting.')
  98.                 time.sleep(interval)
  99.             except Exception, ex:
  100.                 self.write('There was an error: %s.' % (ex))
  101.                 key = self.ident + 1
  102.                 self.write('Quitting.')
  103.  
  104.         try:
  105.             tn.write("QUIT\r\n")
  106.             tn.close()
  107.         except:
  108.             pass
  109.  
  110. if __name__ == '__main__':
  111.     mw = Switcher()
  112.     mw.mainloop()
  113.     mw.stop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement