.file "gre.c" .section .rodata.str1.1,"aMS",@progbits,1 .LC0: .string "Usage: %s\n" .section .rodata.str1.8,"aMS",@progbits,1 .align 8 .LC1: .string "\t IP options: -d [-s src ip]\n" .align 8 .LC2: .string "\t GRE options: [-v] set RFC 2637 mode (PPP in GRE) (default is RFC 1701 for IP in GRE)\n" .align 8 .LC3: .string "\t\t RFC 1701 options (IP in GRE):\n" .align 8 .LC4: .string "\t\t [-c sum] [-r routing] [-k key] [-n seqnum]\n" .align 8 .LC5: .string "\t\t IP in GRE options: [-S src ip] [-D dst ip]\n" .align 8 .LC6: .string "\t\t RFC 2637 options (PPP in GRE):\n" .section .rodata.str1.1 .LC7: .string "\t\t [-a ack]\n" .text .p2align 4,,15 .globl usage .type usage, @function usage: .LFB104: pushq %rbx .LCFI0: movq %rdi, %rcx leaq .LC0(%rip), %rdx movl $1, %esi subq $16, %rsp .LCFI1: movq stderr@GOTPCREL(%rip), %rbx movq %fs:40, %rax movq %rax, 8(%rsp) xorl %eax, %eax movq (%rbx), %rdi call __fprintf_chk@PLT movq (%rbx), %rcx leaq .LC1(%rip), %rdi movl $39, %edx movl $1, %esi call fwrite@PLT movq (%rbx), %rcx leaq .LC2(%rip), %rdi movl $87, %edx movl $1, %esi call fwrite@PLT movq (%rbx), %rcx leaq .LC3(%rip), %rdi movl $33, %edx movl $1, %esi call fwrite@PLT movq (%rbx), %rcx leaq .LC4(%rip), %rdi movl $49, %edx movl $1, %esi call fwrite@PLT movq (%rbx), %rcx leaq .LC5(%rip), %rdi movl $49, %edx movl $1, %esi call fwrite@PLT movq (%rbx), %rcx leaq .LC6(%rip), %rdi movl $34, %edx movl $1, %esi call fwrite@PLT movq (%rbx), %rcx leaq .LC7(%rip), %rdi movl $14, %edx movl $1, %esi call fwrite@PLT movl $1, %edi call exit@PLT .LFE104: .size usage, .-usage .section .rodata.str1.8 .align 8 .LC8: .string "libnet 1.1 packet shaping: GRE [link]" .section .rodata.str1.1 .LC9: .string "libnet_init: %s" .LC10: .string "d:s:D:S:c:r:k:n:va:" .section .rodata.str1.8 .align 8 .LC11: .string "Can't build TCP header (GRE): %s\n" .align 8 .LC12: .string "Can't build IP header (GRE): %s\n" .align 8 .LC14: .string "Can't build PPP header (GRE): %s\n" .align 8 .LC15: .string "Can't build GRE last SRE header: %s\n" .section .rodata.str1.1 .LC16: .string "Can't build GRE header: %s\n" .LC17: .string "11:11:11:11:11:11" .section .rodata.str1.8 .align 8 .LC18: .string "Can't build ethernet header: %s\n" .section .rodata.str1.1 .LC19: .string "Write error: %s\n" .section .rodata.str1.8 .align 8 .LC20: .string "Wrote %d byte GRE packet; check the wire.\n" .section .rodata .LC13: .string "" .string "\001" .zero 1 .text .p2align 4,,15 .globl main .type main, @function main: .LFB105: pushq %r15 .LCFI2: pushq %r14 .LCFI3: pushq %r13 .LCFI4: pushq %r12 .LCFI5: movl %edi, %r12d leaq .LC8(%rip), %rdi pushq %rbp .LCFI6: movq %rsi, %rbp pushq %rbx .LCFI7: subq $408, %rsp .LCFI8: leaq 128(%rsp), %rbx movq %fs:40, %rax movq %rax, 392(%rsp) xorl %eax, %eax call puts@PLT xorl %esi, %esi xorl %edi, %edi movq %rbx, %rdx call libnet_init@PLT testq %rax, %rax movq %rax, %r13 je .L5 leaq .L18(%rip), %r14 movq $0, 72(%rsp) movq $0, 80(%rsp) movq $0, 88(%rsp) xorl %r15d, %r15d movw $0, 102(%rsp) movq $0, 112(%rsp) movq $0, 120(%rsp) xorl %ebx, %ebx movq $0, 104(%rsp) .p2align 4,,10 .p2align 3 .L46: leaq .LC10(%rip), %rdx movq %rbp, %rsi movl %r12d, %edi call getopt@PLT cmpb $-1, %al je .L51 subl $68, %eax cmpb $50, %al jbe .L52 .L7: movl $1, %edi call exit@PLT .p2align 4,,10 .p2align 3 .L52: movzbl %al, %eax movslq (%r14,%rax,4),%rax addq %r14, %rax jmp *%rax .section .rodata .align 4 .align 4 .L18: .long .L8-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L9-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L10-.L18 .long .L7-.L18 .long .L11-.L18 .long .L12-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L13-.L18 .long .L7-.L18 .long .L7-.L18 .long .L14-.L18 .long .L7-.L18 .long .L7-.L18 .long .L7-.L18 .long .L15-.L18 .long .L16-.L18 .long .L7-.L18 .long .L7-.L18 .long .L17-.L18 .text .p2align 4,,10 .p2align 3 .L17: orw $8193, %bx jmp .L46 .p2align 4,,10 .p2align 3 .L16: movq optarg@GOTPCREL(%rip), %rax movl $1, %edx movq %r13, %rdi movq (%rax), %rsi call libnet_name2addr4@PLT mov %eax, %eax movq %rax, 72(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L15: movq optarg@GOTPCREL(%rip), %rax orb $64, %bh movq (%rax), %rax movq %rax, 104(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L14: movq optarg@GOTPCREL(%rip), %rax movl $10, %edx xorl %esi, %esi orb $16, %bh movq (%rax), %rdi call strtol@PLT cltq movq %rax, 120(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L13: movq optarg@GOTPCREL(%rip), %rax movl $10, %edx xorl %esi, %esi orb $32, %bh movq (%rax), %rdi call strtol@PLT cltq movq %rax, 112(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L12: movq optarg@GOTPCREL(%rip), %rax movl $1, %edx movq %r13, %rdi movq (%rax), %rsi call libnet_name2addr4@PLT mov %eax, %eax movq %rax, 80(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L11: movq optarg@GOTPCREL(%rip), %rax movl $10, %edx xorl %esi, %esi orw $-32768, %bx movq (%rax), %rdi call strtol@PLT movw %ax, 102(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L10: testb $1, %bl je .L53 .L19: movq optarg@GOTPCREL(%rip), %rax movl $10, %edx xorl %esi, %esi orb $-128, %bl movq (%rax), %rdi call strtol@PLT cltq movq %rax, 120(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L9: movq optarg@GOTPCREL(%rip), %rax movl $1, %edx movq %r13, %rdi movq (%rax), %rsi call libnet_name2addr4@PLT mov %eax, %eax movq %rax, 88(%rsp) jmp .L46 .p2align 4,,10 .p2align 3 .L8: movq optarg@GOTPCREL(%rip), %rax movl $1, %edx movq %r13, %rdi movq (%rax), %rsi call libnet_name2addr4@PLT mov %eax, %r15d jmp .L46 .p2align 4,,10 .p2align 3 .L53: movq (%rbp), %rdi call usage@PLT .p2align 4,,4 .p2align 3 jmp .L19 .p2align 4,,10 .p2align 3 .L51: cmpq $0, 80(%rsp) .p2align 4,,3 .p2align 3 je .L54 .L21: cmpq $0, 72(%rsp) .p2align 4,,5 .p2align 3 je .L55 .L22: testq %r15, %r15 .p2align 4,,3 .p2align 3 je .L56 .L23: cmpq $0, 88(%rsp) .p2align 4,,3 .p2align 3 je .L57 .L24: movzwl %bx, %ebp movl %ebp, %eax andl $7, %eax je .L58 xorl %r14d, %r14d xorl %r12d, %r12d subl $1, %eax je .L59 .L29: testl $16384, %ebp je .L34 xorl %esi, %esi movq %r13, %rdi call libnet_build_gre_last_sre@PLT addl $1, %eax je .L48 movq 104(%rsp), %rdi call strlen@PLT movq 104(%rsp), %rcx xorl %r9d, %r9d xorl %r8d, %r8d xorl %esi, %esi movzbl %al, %edx movl $2048, %edi movq %rax, %rbx movl $0, 8(%rsp) movq %r13, (%rsp) call libnet_build_gre_sre@PLT addl $1, %eax leaq 8(%r12,%rbx), %r12 je .L48 .L34: movl %ebp, %edi call libnet_getgre_length@PLT mov %eax, %eax movzwl 102(%rsp), %edx movl 120(%rsp), %r9d leaq (%rax,%r12), %rbx movl %ebp, %eax movl 112(%rsp), %r8d andl $1, %eax movzwl %r14w, %ecx movl %ebp, %edi cmpl $1, %eax movzwl %bx, %eax movl $0, 32(%rsp) sbbl %esi, %esi movq %r13, 24(%rsp) movl $0, 16(%rsp) andl $-32779, %esi movq $0, 8(%rsp) movl %eax, (%rsp) addl $34827, %esi call libnet_build_gre@PLT addl $1, %eax je .L60 movl 72(%rsp), %edx movl 80(%rsp), %eax leaq 20(%rbx), %rdi xorl %ecx, %ecx xorl %esi, %esi movl $47, %r9d movzwl %di, %edi movl $255, %r8d movl $0, 48(%rsp) movl %edx, 8(%rsp) movl $255, %edx movq %r13, 40(%rsp) movl $0, 32(%rsp) movq $0, 24(%rsp) movl %eax, 16(%rsp) movl $0, (%rsp) call libnet_build_ipv4@PLT addl $1, %eax je .L49 leaq .LC17(%rip), %rdi movq %r13, %rdx movl $2048, %esi call libnet_autobuild_ethernet@PLT addl $1, %eax je .L61 movq %r13, %rdi call libnet_write@PLT cmpb $-1, %al .p2align 4,,2 .p2align 3 je .L62 movsbl %al,%ecx movq stderr@GOTPCREL(%rip), %rax leaq .LC20(%rip), %rdx movl $1, %esi movq (%rax), %rdi xorl %eax, %eax call __fprintf_chk@PLT movq %r13, %rdi call libnet_destroy@PLT xorl %eax, %eax .p2align 4,,10 .p2align 3 .L43: movq 392(%rsp), %rdx xorq %fs:40, %rdx jne .L63 addq $408, %rsp popq %rbx popq %rbp popq %r12 popq %r13 popq %r14 popq %r15 ret .L58: movl $32767, %r9d movl $2, %r8d movl $33686018, %ecx movl $16843009, %edx movl $53, %esi movl $1234, %edi movl $0, 48(%rsp) movq %r13, 40(%rsp) movl $0, 32(%rsp) movq $0, 24(%rsp) movl $20, 16(%rsp) movl $0, 8(%rsp) movl $0, (%rsp) call libnet_build_tcp@PLT addl $1, %eax je .L64 movl 88(%rsp), %edx xorl %ecx, %ecx xorl %esi, %esi movl $6, %r9d movl $64, %r8d movl $40, %edi movl $0, 48(%rsp) movq %r13, 40(%rsp) xorl %r14d, %r14d movl %edx, 8(%rsp) movl $242, %edx movl $0, 32(%rsp) movq $0, 24(%rsp) movl %r15d, 16(%rsp) movl $40, %r12d movl $0, (%rsp) call libnet_build_ipv4@PLT addl $1, %eax jne .L29 .L49: movq %r13, %rdi call libnet_geterror@PLT leaq .LC12(%rip), %rdx movq %rax, %rcx .L47: .L27: movq stderr@GOTPCREL(%rip), %rax movl $1, %esi movq (%rax), %rdi xorl %eax, %eax call __fprintf_chk@PLT movq %r13, %rdi call libnet_destroy@PLT movl $1, %eax jmp .L43 .L57: movl $5, %edi call libnet_get_prand@PLT mov %eax, %eax movq %rax, 88(%rsp) jmp .L24 .L56: movl $5, %edi call libnet_get_prand@PLT mov %eax, %r15d jmp .L23 .L55: movq %r13, %rdi call libnet_get_ipaddr4@PLT mov %eax, %eax movq %rax, 72(%rsp) jmp .L22 .L54: movq (%rbp), %rdi call usage@PLT jmp .L21 .L61: movq %r13, %rdi call libnet_geterror@PLT leaq .LC18(%rip), %rdx movq %rax, %rcx jmp .L47 .L64: movq %r13, %rdi call libnet_geterror@PLT leaq .LC11(%rip), %rdx movq %rax, %rcx jmp .L47 .L48: movq %r13, %rdi call libnet_geterror@PLT leaq .LC15(%rip), %rdx movq %rax, %rcx jmp .L47 .L60: movq %r13, %rdi call libnet_geterror@PLT leaq .LC16(%rip), %rdx movq %rax, %rcx jmp .L47 .L59: movl $3, %edi xorl %r12d, %r12d call libnet_get_prand@PLT testb %bpl, %bpl movl %eax, %r14d jns .L65 .L33: movl %ebx, %ebp andl $16383, %ebp jmp .L29 .L62: movq %r13, %rdi call libnet_geterror@PLT leaq .LC19(%rip), %rdx movq %rax, %rcx jmp .L47 .L5: movq stderr@GOTPCREL(%rip), %rax leaq .LC9(%rip), %rdx movq %rbx, %rcx movl $1, %esi movq (%rax), %rdi xorl %eax, %eax call __fprintf_chk@PLT movl $1, %edi call exit@PLT .L65: movl .LC13(%rip), %eax movl $5, %edi movl %eax, 384(%rsp) call libnet_get_prand@PLT leaq 384(%rsp), %rdi xorl %ecx, %ecx movq %r13, %rdx movl $2, %esi movl %eax, %ebp call libnet_build_data@PLT addl $1, %eax je .L32 mov %ebp, %ebp orb $16, %bh movw $2, 102(%rsp) movq %rbp, 112(%rsp) movb $2, %r12b jmp .L33 .L63: call __stack_chk_fail@PLT .L32: movq %r13, %rdi call libnet_geterror@PLT leaq .LC14(%rip), %rdx movq %rax, %rcx jmp .L47 .LFE105: .size main, .-main .globl enet_src .data .type enet_src, @object .size enet_src, 6 enet_src: .byte 13 .byte 14 .byte 10 .byte 13 .byte 0 .byte 0 .globl enet_dst .type enet_dst, @object .size enet_dst, 6 enet_dst: .byte 0 .byte 16 .byte 103 .byte 0 .byte -79 .byte -122 .globl ip_src .type ip_src, @object .size ip_src, 4 ip_src: .byte 10 .byte 0 .byte 0 .byte 1 .globl ip_dst .type ip_dst, @object .size ip_dst, 4 ip_dst: .byte 10 .byte 0 .byte 0 .byte 2 .globl fddi_src .type fddi_src, @object .size fddi_src, 6 fddi_src: .byte 0 .byte 13 .byte 14 .byte 10 .byte 13 .byte 0 .globl fddi_dst .type fddi_dst, @object .size fddi_dst, 6 fddi_dst: .byte 0 .byte 16 .byte 103 .byte 0 .byte -79 .byte -122 .globl tr_src .type tr_src, @object .size tr_src, 6 tr_src: .byte 0 .byte 13 .byte 14 .byte 10 .byte 13 .byte 0 .globl tr_dst .type tr_dst, @object .size tr_dst, 6 tr_dst: .byte 0 .byte 16 .byte 103 .byte 0 .byte -79 .byte -122 .globl org_code .bss .type org_code, @object .size org_code, 3 org_code: .zero 3 .section .eh_frame,"a",@progbits .Lframe1: .long .LECIE1-.LSCIE1 .LSCIE1: .long 0x0 .byte 0x1 .string "zR" .uleb128 0x1 .sleb128 -8 .byte 0x10 .uleb128 0x1 .byte 0x1b .byte 0xc .uleb128 0x7 .uleb128 0x8 .byte 0x90 .uleb128 0x1 .align 8 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 .LASFDE1: .long .LASFDE1-.Lframe1 .long .LFB104-. .long .LFE104-.LFB104 .uleb128 0x0 .byte 0x4 .long .LCFI0-.LFB104 .byte 0xe .uleb128 0x10 .byte 0x4 .long .LCFI1-.LCFI0 .byte 0xe .uleb128 0x20 .byte 0x83 .uleb128 0x2 .align 8 .LEFDE1: .LSFDE3: .long .LEFDE3-.LASFDE3 .LASFDE3: .long .LASFDE3-.Lframe1 .long .LFB105-. .long .LFE105-.LFB105 .uleb128 0x0 .byte 0x4 .long .LCFI2-.LFB105 .byte 0xe .uleb128 0x10 .byte 0x4 .long .LCFI3-.LCFI2 .byte 0xe .uleb128 0x18 .byte 0x4 .long .LCFI4-.LCFI3 .byte 0xe .uleb128 0x20 .byte 0x4 .long .LCFI5-.LCFI4 .byte 0xe .uleb128 0x28 .byte 0x8c .uleb128 0x5 .byte 0x8d .uleb128 0x4 .byte 0x8e .uleb128 0x3 .byte 0x8f .uleb128 0x2 .byte 0x4 .long .LCFI6-.LCFI5 .byte 0xe .uleb128 0x30 .byte 0x86 .uleb128 0x6 .byte 0x4 .long .LCFI7-.LCFI6 .byte 0xe .uleb128 0x38 .byte 0x4 .long .LCFI8-.LCFI7 .byte 0xe .uleb128 0x1d0 .byte 0x83 .uleb128 0x7 .align 8 .LEFDE3: .ident "GCC: (Gentoo Hardened 4.3.2-r8 p1.5, ssp, fortify, pie-10.2.3) 4.3.2" .section .note.GNU-stack,"",@progbits