summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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()