Skip to content

Instantly share code, notes, and snippets.

@mwgamera
Created June 3, 2014 10:23
Show Gist options
  • Select an option

  • Save mwgamera/5dc45b6c1176db2f3558 to your computer and use it in GitHub Desktop.

Select an option

Save mwgamera/5dc45b6c1176db2f3558 to your computer and use it in GitHub Desktop.
; 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