summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlassulus <Lassulus@googlemail.com>2011-11-14 15:35:34 +0100
committerlassulus <Lassulus@googlemail.com>2011-11-14 15:35:34 +0100
commitcdd486bae5227b53a9bd2bd07751aa8da15e5277 (patch)
treeb0ef9f5d36a35d44d8cc0b99a3c133820b4da912
parentb92f01466d34d23647a3c619f18a3d1f92400546 (diff)
parent1f61333b2ae21ccb985e7321f07c2c5c94eb8a4c (diff)
Merge branch 'master' of github.com:krebscode/painload
-rw-r--r--cholerab/news/Candidate6
-rw-r--r--too_old/mechanize_tickets.py53
2 files changed, 59 insertions, 0 deletions
diff --git a/cholerab/news/Candidate b/cholerab/news/Candidate
index 31d2c670..00c64361 100644
--- a/cholerab/news/Candidate
+++ b/cholerab/news/Candidate
@@ -100,8 +100,14 @@ Nachdem Gedaechnistausch von Fuerkrebs und Urkrebs hat es ja wie beschrieben die
Der Graphengenerator fuer KD;RP (siehe [ɐ]ist ueberarbeitet worden und bietet seit dem 2011-10-23 die moeglichkeit Statistiken zu dem Netzwerk und einzelnen Nodes auszugeben. Hervorzuheben ist hierbei die funktionalitaet die Availability von Nodes zu beschreiben, also wie wahrscheinlich es ist einen Knoten X zu einem Zeitpunkt Y im Darknet anzutreffen. Zusaetzlich wurde die Stats-generator engine ueberarbeitet und laeuft nun besonders bei grossen /var/log/syslog files schneller [⠣].
+## TODO 10. Ticket-fetcher fuer den 28C2
+
+Da die 28C3 Presales Tickets rar sind und Leute anfangen das einkaufen zu automatisieren kann nicht auf das glueck des tuechtigen gehofft werden, sondern auch fuer den shack wird automatisiert. Herausgekommen ist ein Skript[Բ] (basierend auf einem anderen Skript[в] welches aber zu hart gesuckt hat) welches sich auf der Presales seite einloggt und dort den "Confirm Order" button drueckt. Das ganze wird in eine ELoop gepackt und den Tickets steht nun nichts mehr im wege. Gebaut wurde das Skript in der nacht am 14.November (T-10H) bis zur naechsten Presales Runde fuer den 28C3.
+
[⠣] https://github.com/krebscode/painload/commit/822c43a763aa61c1accce3768090d066048faaff
[⌅] man dd
+[в] http://pastebin.com/SRwtNwKS
[Ȳ] http://shackspace.de/wiki/doku.php?id=project:krebs#fuerkrebs
+[Բ] https://github.com/krebscode/painload/blob/master/too_old/mechanize_tickets.py
[Ƀ] https://github.com/krebscode/painload/tree/master/census
[ɐ] http://euer.krebsco.de/graphs/retiolum/retiolum_1.svg
diff --git a/too_old/mechanize_tickets.py b/too_old/mechanize_tickets.py
new file mode 100644
index 00000000..1f12a996
--- /dev/null
+++ b/too_old/mechanize_tickets.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+import mechanize
+import cookielib
+import time,sys
+USERNAME = 'momo'
+PASSWORD = ''
+
+
+def main():
+ try:
+ br = init_browser()
+ while not do_login(br):
+ print ("Could Not Login, retrying!")
+ while not fetch_ticket(br):
+ time.sleep(0.2)
+ print ("Could not fetch ticket, retrying!")
+ except Exception,e:
+ print ("Caught Exception: %s" % str(e))
+ exit (1)
+ print ("We won? yay")
+ exit(0)
+
+def init_browser():
+ br = mechanize.Browser()
+ br.open("https://presale.events.ccc.de/order")
+ cj = cookielib.LWPCookieJar()
+ br.set_cookiejar(cj)
+ br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
+ return br
+def do_login(br):
+ br.select_form(nr=0)
+ br.form['account[username]'] = USERNAME
+ br.form['account[password]'] = PASSWORD
+ br.submit()
+ ret = br.response().read()
+ if 'Signed in successfully.' in ret:
+ if not "Confirm Order" in ret:
+ print("Something else is wrong, cannot find 'Confirm Order' button!")
+ raise Exception("Cannot find Confirm Order button")
+ return True
+ else: return False
+
+def fetch_ticket(br):
+ br.select_form(nr=0)
+ br.submit()
+ ret = br.response().read()
+ if not 'There are currently not enough tickets available.' in ret:
+ print ("we won? Better sleep some time to be sure")
+ return True
+ else: return False
+
+if __name__ == "__main__":
+ main()