Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import wx
- import datetime
- def genSeed(t1):
- dt = t1 - datetime.datetime(1601, 1, 1, 0, 0, 0)
- t = dt.days*864000000000 + dt.seconds*10000000 + dt.microseconds*10
- tA = (t/2**32 + 0xFE624E21)
- tB = (t%2**32 + 0x2AC18000) % (1<<32)
- if tA >= (1<<32):
- tA += 1
- tA %= 1<<32
- r = (tA % 0x989680) * (2**32)
- r = ((r + tB) / 0x989680) % (2**31)
- return r
- def monthDays(month,year):
- if month in [11, 4, 6, 9]:
- return 30
- if month in [1, 3, 5, 7, 8, 10, 12]:
- return 31
- if year % 4 == 0 and year % 100 != 0:
- return 29
- if year % 400 == 0:
- return 29
- return 28
- def prettyBytes(size):
- for x in ['B','KB','MB','GB']:
- if size < 1024.0:
- return "%3.1f %s" % (size, x)
- size /= 1024.0
- def prettySeconds(time):
- for x in [[60.,'sec.'],[60.,'min.'],[24.,'hours'],[365.,'days']]:
- if time < x[0]:
- return "%3.1f %s" % (time, x[1])
- time /= x[0]
- class MainFrame(wx.Frame):
- def __init__(self, *args, **kwargs):
- super(MainFrame, self).__init__(*args, **kwargs)
- self.InitUI()
- def InitUI(self):
- self.panel = wx.Panel(self,-1)
- #Window
- self.sb = self.CreateStatusBar(style=0)
- self.sb.SetStatusText(" v1.0 - 10.03.2013 | alexaltea123@gmail.com")
- self.sb.SetForegroundColour(wx.RED)
- self.SetWindowStyle(wx.CLOSE_BOX | wx.MINIMIZE_BOX | wx.CAPTION | wx.CLIP_CHILDREN | wx.SYSTEM_MENU)
- self.SetSize((460, 460))
- self.SetTitle('TP-Link Routers: Seed Generator')
- #Static
- months = ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December']
- #Frame: Select Method
- self.method1 = wx.RadioButton(self.panel, label='Method 1: Get seeds between two dates.', pos=(20, 15), style=wx.RB_GROUP)
- self.method2 = wx.RadioButton(self.panel, label='Method 2: Get seeds before or after a certain date.', pos=(20, 135))
- wx.StaticBox(self.panel, pos=(30,34), size=(396,80))
- wx.StaticBox(self.panel, pos=(30,154), size=(396,80))
- #Frame: Method 1
- wx.StaticText(self.panel, label="Start date:", pos=(50, 50+4))
- wx.StaticText(self.panel, label="End date:", pos=(50, 82+2))
- self.year1 = wx.SpinCtrl(self.panel, pos=(160, 50), size=(60, -1))
- self.year2 = wx.SpinCtrl(self.panel, pos=(160, 82), size=(60, -1))
- self.month1 = wx.ComboBox(self.panel, pos=(230, 50), size=(120,-1), choices=months, style=wx.CB_READONLY)
- self.month2 = wx.ComboBox(self.panel, pos=(230, 82), size=(120,-1), choices=months, style=wx.CB_READONLY)
- self.day1 = wx.SpinCtrl(self.panel, pos=(360, 50), size=(50,-1))
- self.day2 = wx.SpinCtrl(self.panel, pos=(360, 82), size=(50,-1))
- timenow = datetime.datetime.utcnow()
- self.year1.SetRange(1601, timenow.year)
- self.year2.SetRange(1601, timenow.year)
- self.year1.SetValue(2010)
- self.year2.SetValue(timenow.year)
- self.month1.SetValue('January')
- self.month2.SetValue(months[timenow.month-1])
- self.day1.SetValue(1)
- self.day2.SetValue(timenow.day)
- #Frame: Method 2
- wx.StaticText(self.panel, label="Select date:", pos=(50,170+4))
- wx.StaticText(self.panel, label="Margin of error:", pos=(50,202+4))
- wx.StaticText(self.panel, label="day(s)", pos=(230,202+4))
- self.year3 = wx.SpinCtrl(self.panel, pos=(160, 170), size=(60, -1))
- self.month3 = wx.ComboBox(self.panel, pos=(230, 170), size=(120,-1), choices=months, style=wx.CB_READONLY)
- self.day3 = wx.SpinCtrl(self.panel, pos=(360, 170), size=(50,-1))
- self.dday = wx.SpinCtrl(self.panel, pos=(160, 202), size=(60,-1))
- self.year3.SetRange(1601, timenow.year)
- self.year3.SetValue(timenow.year)
- self.month3.SetValue(months[timenow.month-1])
- self.day3.SetValue(timenow.day)
- self.dday.SetRange(1, 65535)
- #Frame: Events
- self.method1.Bind(wx.EVT_RADIOBUTTON, self.updateSeeds)
- self.method2.Bind(wx.EVT_RADIOBUTTON, self.updateSeeds)
- self.year1.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- self.year2.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- self.year3.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- self.year1.Bind(wx.EVT_SPINCTRL, lambda e: self.updateDayRange(1))
- self.year2.Bind(wx.EVT_SPINCTRL, lambda e: self.updateDayRange(2))
- self.year3.Bind(wx.EVT_SPINCTRL, lambda e: self.updateDayRange(3))
- self.month1.Bind(wx.EVT_COMBOBOX, self.updateSeeds)
- self.month2.Bind(wx.EVT_COMBOBOX, self.updateSeeds)
- self.month3.Bind(wx.EVT_COMBOBOX, self.updateSeeds)
- self.month1.Bind(wx.EVT_COMBOBOX, lambda e: self.updateDayRange(1))
- self.month2.Bind(wx.EVT_COMBOBOX, lambda e: self.updateDayRange(2))
- self.month3.Bind(wx.EVT_COMBOBOX, lambda e: self.updateDayRange(3))
- self.day1.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- self.day2.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- self.day3.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- self.dday.Bind(wx.EVT_SPINCTRL, self.updateSeeds)
- #Frame: Results
- wx.StaticText(self.panel, label="Initial seed:", pos=(30,260+4))
- wx.StaticText(self.panel, label="Final seed:", pos=(30,290+4))
- self.seedAhex = wx.StaticText(self.panel, label=" ", pos=(240,260+4))
- self.seedBhex = wx.StaticText(self.panel, label=" ", pos=(240,290+4))
- self.seedA = wx.TextCtrl(self.panel, pos=(120, 260), size=(100,-1), style=wx.TE_READONLY)
- self.seedB = wx.TextCtrl(self.panel, pos=(120, 290), size=(100,-1), style=wx.TE_READONLY)
- #Frame: Info
- self.infoA = wx.StaticText(self.panel, label=" ", pos=(30,340+2))
- self.infoB = wx.StaticText(self.panel, label=" ", pos=(30,365+2))
- self.infoC = wx.StaticText(self.panel, label=" ", pos=(30,390+2))
- #Frame: Calls
- self.updateSeeds(0)
- self.updateDayRange(1)
- self.updateDayRange(2)
- self.updateDayRange(3)
- self.Show(True)
- def updateSeeds(self, e):
- months = {'January':1, 'February':2, 'March':3, 'April':4, 'May':5, 'June':6,
- 'July':7, 'August':8, 'September':9, 'October':10, 'November':11, 'December':12}
- #Using Method 1
- if self.method1.GetValue():
- timeA = datetime.datetime(
- self.year1.GetValue(),
- months[self.month1.GetValue()],
- self.day1.GetValue(),
- 0,0,0)
- timeB = datetime.datetime(
- self.year2.GetValue(),
- months[self.month2.GetValue()],
- self.day2.GetValue(),
- 0,0,0)
- seedA = genSeed(timeA)
- seedB = genSeed(timeB)
- if seedA > seedB:
- seedA, seedB = seedB, seedA
- if seedA == seedB:
- seedB += 24*60*60
- #Using Method 2
- if self.method2.GetValue():
- time = datetime.datetime(
- self.year3.GetValue(),
- months[self.month3.GetValue()],
- self.day3.GetValue(),
- 0,0,0)
- dtime = datetime.timedelta(
- days=self.dday.GetValue()
- )
- seedA = genSeed(time-dtime)
- seedB = genSeed(time+dtime)
- self.seedA.SetValue(str(seedA))
- self.seedB.SetValue(str(seedB))
- self.seedAhex.SetLabel("Hex: " + hex(seedA)[2:].upper().replace('L',''))
- self.seedBhex.SetLabel("Hex: " + hex(seedB)[2:].upper().replace('L',''))
- infoB = prettyBytes(11*(seedB-seedA+1))
- infoB += " (WPA/WPA2) or "
- infoB += prettyBytes(14*(seedB-seedA+1))
- infoB += " (WEP)"
- infoC = prettySeconds((seedB-seedA+1)/20000)
- infoC += " (GPU) or "
- infoC += prettySeconds((seedB-seedA+1)/2000)
- infoC += " (CPU)"
- self.infoA.SetLabel("Total seeds/passwords: "+str(seedB-seedA+1))
- self.infoB.SetLabel("Size of dictionary: "+infoB)
- self.infoC.SetLabel("Est. time of cracking: "+infoC)
- def updateDayRange(self, dayID):
- months = {'January':1, 'February':2, 'March':3, 'April':4, 'May':5, 'June':6,
- 'July':7, 'August':8, 'September':9, 'October':10, 'November':11, 'December':12}
- if dayID == 1:
- year = self.year1.GetValue()
- month = months[self.month1.GetValue()]
- self.day1.SetRange(1, monthDays(month,year))
- if dayID == 2:
- year = self.year2.GetValue()
- month = months[self.month2.GetValue()]
- self.day2.SetRange(1, monthDays(month,year))
- if dayID == 3:
- year = self.year3.GetValue()
- month = months[self.month3.GetValue()]
- self.day3.SetRange(1, monthDays(month,year))
- self.updateSeeds(0)
- def init(self):
- ex = wx.App(0)
- MainWindow = MainFrame(None)
- ex.MainLoop()
- return 0
- if __name__ == '__main__':
- init(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement