Can someone help me with this please? Using Assembly 32 - need a software that e
ID: 3842298 • Letter: C
Question
Can someone help me with this please?
Using Assembly 32 - need a software that encrypt and decrypt files. so it takes a file and encrypt it and vice versa,
- the encryption will be using Adobe type 1 font encryption algorithm (encryption method explained on pages 61 to 65 on the pdf file https://www-cdf.fnal.gov/offline/PostScript/T1_SPEC.PDF )
->Support wild cards in filenames
-> support password (hash pswd string into constant used by the algorithm)
the code and the program in general can not be copied from someone else it has to be different, created from scratch work. code should be commented too.
Explanation / Answer
Answer:
Assembly Language Code:
std::operator|(std::_Ios_Openmode, std::_Ios_Openmode):
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
mov eax, DWORD PTR [rbp-4]
or eax, DWORD PTR [rbp-8]
pop rbp
ret
.LC0:
.string "Enter file name (with extension like file.txt) to encrypt : "
.LC1:
.string "Error in opening file..!!"
.LC2:
.string " Press any key to exit..."
.LC3:
.string "temp.txt"
.LC4:
.string "Error in creating temp.txt file..!!"
.LC5:
.string "Error in opening source file..!!"
.LC6:
.string "Error in opening temp.txt file...!!"
.LC7:
.string "File "
.LC8:
.string " encrypted successfully..!!"
main:
push rbp
mov rbp, rsp
push rbx
sub rsp, 1112
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::basic_fstream()
lea rax, [rbp-1120]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::basic_fstream()
mov esi, OFFSET FLAT:.LC0
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-48]
mov rdi, rax
call gets
mov esi, 16
mov edi, 8
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rcx, [rbp-48]
lea rax, [rbp-592]
mov rsi, rcx
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)
lea rax, [rbp-592]
add rax, 264
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::operator!() const
test al, al
je .L4
mov esi, OFFSET FLAT:.LC1
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:.LC2
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov edi, 1
call exit
.L4:
mov esi, 16
mov edi, 8
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rax, [rbp-1120]
mov esi, OFFSET FLAT:.LC3
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)
lea rax, [rbp-1120]
add rax, 264
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::operator!() const
test al, al
je .L5
mov esi, OFFSET FLAT:.LC4
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::close()
mov esi, OFFSET FLAT:.LC2
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov edi, 2
call exit
.L5:
lea rax, [rbp-592]
add rax, 264
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::eof() const
xor eax, 1
test al, al
je .L6
lea rdx, [rbp-49]
lea rax, [rbp-592]
mov rsi, rdx
mov rdi, rax
call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char&)
movzx eax, BYTE PTR [rbp-49]
add eax, 100
mov BYTE PTR [rbp-49], al
movzx eax, BYTE PTR [rbp-49]
movsx eax, al
lea rdx, [rbp-1120]
add rdx, 16
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)
jmp .L5
.L6:
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::close()
lea rax, [rbp-1120]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::close()
mov esi, 16
mov edi, 8
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rcx, [rbp-48]
lea rax, [rbp-592]
mov rsi, rcx
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)
lea rax, [rbp-592]
add rax, 264
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::operator!() const
test al, al
je .L7
mov esi, OFFSET FLAT:.LC5
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:.LC2
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov edi, 3
call exit
.L7:
mov esi, 16
mov edi, 8
call std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rax, [rbp-1120]
mov esi, OFFSET FLAT:.LC3
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)
lea rax, [rbp-1120]
add rax, 264
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::operator!() const
test al, al
je .L8
mov esi, OFFSET FLAT:.LC6
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::close()
mov esi, OFFSET FLAT:.LC2
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov edi, 4
call exit
.L8:
lea rax, [rbp-1120]
add rax, 264
mov rdi, rax
call std::basic_ios<char, std::char_traits<char> >::eof() const
xor eax, 1
test al, al
je .L9
lea rdx, [rbp-49]
lea rax, [rbp-1120]
mov rsi, rdx
mov rdi, rax
call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char&)
movzx eax, BYTE PTR [rbp-49]
movsx eax, al
lea rdx, [rbp-592]
add rdx, 16
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)
jmp .L8
.L9:
mov esi, OFFSET FLAT:.LC7
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
lea rax, [rbp-48]
mov rsi, rax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:.LC8
mov rdi, rax
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov esi, OFFSET FLAT:.LC2
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::close()
lea rax, [rbp-1120]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::close()
mov ebx, 0
lea rax, [rbp-1120]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::~basic_fstream()
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::~basic_fstream()
mov eax, ebx
jmp .L15
mov rbx, rax
lea rax, [rbp-1120]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::~basic_fstream()
jmp .L12
mov rbx, rax
.L12:
lea rax, [rbp-592]
mov rdi, rax
call std::basic_fstream<char, std::char_traits<char> >::~basic_fstream()
mov rax, rbx
mov rdi, rax
call _Unwind_Resume
.L15:
add rsp, 1112
pop rbx
pop rbp
ret
__static_initialization_and_destruction_0(int, int):
push rbp
mov rbp, rsp
sub rsp, 16
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
cmp DWORD PTR [rbp-4], 1
jne .L18
cmp DWORD PTR [rbp-8], 65535
jne .L18
mov edi, OFFSET FLAT:std::__ioinit
call std::ios_base::Init::Init()
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:std::__ioinit
mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
call __cxa_atexit
.L18:
nop
leave
ret
_GLOBAL__sub_I_main:
push rbp
mov rbp, rsp
mov esi, 65535
mov edi, 1
call __static_initialization_and_destruction_0(int, int)
pop rbp
ret
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.