Created
June 3, 2014 10:23
-
-
Save mwgamera/5dc45b6c1176db2f3558 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; Quick hack to print 16 bytes from /dev/urandom with minimal overhead. | |
| ; nasm -f elf64 -o random.o random.asm && ld -s -o random random.o | |
| ; klg, Jun 2014 | |
| read equ 00h | |
| write equ 01h | |
| open equ 02h | |
| exit equ 3Ch | |
| LEN equ 16 | |
| global _start | |
| _start: | |
| sub rsp, 2*LEN+1 | |
| mov rdi, path | |
| mov rsi, 0 | |
| mov rdx, 0 | |
| mov rax, open | |
| syscall | |
| cmp rax, 0 | |
| jl done | |
| mov rdi, rax | |
| mov rsi, rsp | |
| mov rdx, LEN | |
| mov rax, read | |
| syscall | |
| cmp rax, LEN | |
| jne done | |
| mov rcx, rax | |
| binhex: | |
| mov rbx, 0 | |
| mov bl, [rcx+rsp-1] | |
| mov rdx, rbx | |
| shr rbx, 4 | |
| and rdx, 0xf | |
| mov al, [hexa+rdx] | |
| mov [2*rcx+rsp-1], al | |
| mov al, [hexa+rbx] | |
| mov [2*rcx+rsp-2], al | |
| loop binhex | |
| mov [rsp+LEN*2], byte 0x0a | |
| mov rsi, rsp | |
| mov rdx, 2*LEN+1 | |
| mov rdi, 1 | |
| mov rax, write | |
| syscall | |
| cmp rax, 2*LEN+1 | |
| jne done | |
| mov rax, 0 | |
| done: | |
| mov rdi, rax | |
| mov rax, exit | |
| syscall | |
| path db "/dev/urandom", 0 | |
| hexa db "0123456789abcdef" | |
| ; vim: set ft=nasm ai : |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment