Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
cebor committed Jul 18, 2015
1 parent 6127ffb commit 57031b7
Showing 1 changed file with 73 additions and 68 deletions.
141 changes: 73 additions & 68 deletions osc.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,102 +19,107 @@

# init vars
if path.isfile('config.ini'):
config.read('config.ini')
config.read('config.ini')

auth = {
'asdf': config.get('CREDENTIALS', 'user'),
'fdsa': config.get('CREDENTIALS', 'pw'),
'submit': 'Anmelden'
}
auth = {
'asdf': config.get('CREDENTIALS', 'user'),
'fdsa': config.get('CREDENTIALS', 'pw'),
'submit': 'Anmelden'
}

ids = {
'kontoOnTop': config.get('IDS', 'konto_on_top'),
'konto': config.get('IDS', 'konto')
}
ids = {
'kontoOnTop': config.get('IDS', 'konto_on_top'),
'konto': config.get('IDS', 'konto')
}

startId = int(config.get('BRUTEFORCE', 'start_id'))
rng = int(config.get('BRUTEFORCE', 'range'))
pa = int(config.get('BRUTEFORCE', 'parallel_auths'))
pr = int(config.get('BRUTEFORCE', 'parallel_requests'))
slt = float(config.get('BRUTEFORCE', 'sleep'))
startId = int(config.get('BRUTEFORCE', 'start_id'))
rng = int(config.get('BRUTEFORCE', 'range'))
pa = int(config.get('BRUTEFORCE', 'parallel_auths'))
pr = int(config.get('BRUTEFORCE', 'parallel_requests'))
slt = float(config.get('BRUTEFORCE', 'sleep'))

url = 'https://qis.fh-rosenheim.de/qisserver/'
auth_url = url + 'rds?state=user&type=1&category=auth.login'
link_url = url + 'rds?state=change&type=1&moduleParameter=studyPOSMenu&next=menu.vm&xml=menu'
content_url = url + 'rds?state=notenspiegelStudent&next=list.vm&nextdir=qispos/notenspiegel/student' + \
'&createInfos=Y&struct=abschluss&nodeID=auswahlBaum|abschluss:abschl=84,stgnr=1,stg=INF,pversion=20122' + \
'|studiengang:stg=INF|kontoOnTop:labnrzu=%(kontoOnTop)s|konto:labnrzu=%(konto)s' % ids
url = 'https://qis.fh-rosenheim.de/qisserver/'
auth_url = url + 'rds?state=user&type=1&category=auth.login'
link_url = url + 'rds?state=change&type=1&moduleParameter=studyPOSMenu&next=menu.vm&xml=menu'
content_url = url + 'rds?state=notenspiegelStudent&next=list.vm&nextdir=qispos/notenspiegel/student' + \
'&createInfos=Y&struct=abschluss&nodeID=auswahlBaum' + \
'|abschluss:abschl=84,stgnr=1,stg=INF,pversion=20122' + \
'|studiengang:stg=INF|kontoOnTop:labnrzu=%(kontoOnTop)s|konto:labnrzu=%(konto)s' % ids

# auth queue
queue = Queue(pa)

# auth queue
queue = Queue(pa)
# event pool
pool = Pool(pr)

# event pool
pool = Pool(pr)

# fill queue with auth sessions
def init_queue():
for r in pool.imap_unordered(lambda _: auth_asi(), range(pa)):
queue.put(r)
for r in pool.imap_unordered(lambda _: auth_asi(), range(pa)):
queue.put(r)


# get auth session and asi token
def auth_asi():
s = Session()
s.post(auth_url, data=auth)
r = s.get(link_url)
doc = pq(r.text)
asi = parse_qs(doc('a[href*="&asi="]').attr('href'))['asi'][0]
return {'session': s, 'asi': asi}
s = Session()
s.post(auth_url, data=auth)
r = s.get(link_url)
doc = pq(r.text)
asi, = parse_qs(doc('a[href*="&asi="]').attr('href'))['asi']
return {'session': s, 'asi': asi}


# print score if exists
def print_score(i):
auth = queue.get()
queue.put(auth)
auth = queue.get()
queue.put(auth)

s = auth['session']
asi = auth['asi']
s = auth['session']
asi = auth['asi']

param = '|pruefung:labnr=%s' % i
param = '|pruefung:labnr=%s' % i

r = s.get(content_url + param + '&asi=' + asi)
doc = pq(r.text)
r = s.get(content_url + param + '&asi=' + asi)

subject = doc('table tr td.tabelle1:nth-child(2)').text()
score = doc('table tr td.tabelle1:nth-child(4)').text()
if r.status_code is not 200:
print "Error!"

if subject and score:
print(subject + ' - ' + score)
doc = pq(r.text)

subject = doc('table tr td.tabelle1:nth-child(2)').text()
score = doc('table tr td.tabelle1:nth-child(4)').text()

if subject or score:
print(str(i) + ' - ' + subject + ' - ' + score)


# if no config exits, default config will be created
def check_config():
if not path.isfile('config.ini'):
config.add_section('CREDENTIALS')
config.add_section('IDS')
config.add_section('BRUTEFORCE')
config.set('CREDENTIALS', 'user', 'username')
config.set('CREDENTIALS', 'pw', 'passsword')
config.set('IDS', 'konto_on_top', '')
config.set('IDS', 'konto', '')
config.set('BRUTEFORCE', 'start_id', '1873537')
config.set('BRUTEFORCE', 'range', '1000')
config.set('BRUTEFORCE', 'parallel_auths', '5')
config.set('BRUTEFORCE', 'parallel_requests', '10')
config.set('BRUTEFORCE', 'sleep', '0.05')
with open('config.ini', 'w') as configfile:
config.write(configfile)
print('Creating config.ini! Please setup and rerun!')
return False
return True
if not path.isfile('config.ini'):
config.add_section('CREDENTIALS')
config.add_section('IDS')
config.add_section('BRUTEFORCE')
config.set('CREDENTIALS', 'user', 'username')
config.set('CREDENTIALS', 'pw', 'passsword')
config.set('IDS', 'konto_on_top', '')
config.set('IDS', 'konto', '')
config.set('BRUTEFORCE', 'start_id', '1873537')
config.set('BRUTEFORCE', 'range', '1000')
config.set('BRUTEFORCE', 'parallel_auths', '5')
config.set('BRUTEFORCE', 'parallel_requests', '10')
config.set('BRUTEFORCE', 'sleep', '0.01')
with open('config.ini', 'w') as configfile:
config.write(configfile)
print('Creating config.ini! Please setup and rerun!')
return False
return True


if __name__ == "__main__":
if check_config():
init_queue()
if check_config():
init_queue()

# bruteforce
for i in range(startId, startId + rng):
sleep(slt)
pool.spawn(print_score, i)
# bruteforce
for i in range(startId, startId + rng):
sleep(slt)
pool.spawn(print_score, i)

0 comments on commit 57031b7

Please sign in to comment.