diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 71b76d5..605685a 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2364,6 +2364,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) // Adding PE_Parser, since it is very userful for windows.. Refer to /modules/PE_Parser.js to see a human readable version duk_peval_string_noresult(ctx, "addCompressedModule('PE_Parser', Buffer.from('eJytV0tz2kgQvlPFf+j1RSjL8rJCEVM+EOxUqPWCC4FTOQ7SCKYsZrSjkTGbyn/fHkkIiad2KzogNNPzdffXL6n5oVoZimAr2XKloNNq92DEFfVhKGQgJFFM8GqlWnliDuUhdSHiLpWgVhQGAXHwlu7U4YXKEKWh02hBTQvcpFs3Zr9a2YoI1mQLXCiIQooILASP+RTou0MDBYyDI9aBzwh3KGyYWsVaUoxGtfI9RRALRVCYoHiAT15eDIjS1gJeK6WCu2Zzs9k0SGxpQ8hl00/kwubTaPg4th//QGv1iTn3aRiCpH9HTKKbiy2QAI1xyAJN9MkGhASylBT3lNDGbiRTjC/rEApPbYik1YrLQiXZIlIFnnamob95AWSKcLgZ2DCyb+DzwB7Z9Wrl22j2dTKfwbfBdDoYz0aPNkymMJyMH0az0WSMT19gMP4Of47GD3WgyBJqoe+B1NajiUwzSF2ky6a0oN4TiTlhQB3mMQed4suILCksxRuVHH2BgMo1C3UUQzTOrVZ8tmYqToLw2CNU8qGpyWs2YUpVJDnygmrW8QEgCxGpJM70nTqR0lRWK17EnXg/IDKkNdx6JmplVis/kri9EYlhUC/Eh3v48bO/X/VCXEkjVDO80DDzmy5uemFDBJTbW+7sgOtgyEVBcrFVNJxS4ubWXBF+xRX07x4+R55HZYP4vnBqXSt/lKvTUp2ClAhSsf4uF2OCiBuT9zCxYRVvJ3uZOYn9Ev/F9ntufW9WHVp16Fp42yliHtSy7fjUHAu33X16rLXMhhI2Jhpf1tpd/TAPMLJDgnSb8Ns9GB8H1oNhJkAp7fpSKyk2UDMiLqkjlpz9oyuBcSK3kMQ1I/LnKdfGs9Ke7ZiMHds9NHzKlzpkx47ddtCxbsvMu58dC3VV1xDIynlurOi7kbrbsj628Lrgsm5LBJ4f45aU91LfQuxGziqnsEC3VaT7WIeDxIPRthzjTtN120FO1X5bX0nCNxKSkS7jvdc1+kWZBWp97R/C9rpdK8HtWmVwUfoKrks9EvkqxpzzVy42/DKobgwe49S9AJzlS3oYawR7APETQm3MNAQ6zW8ny/mzZweuGzfA+wuZA7/jeDtZkTu8QvJmRXxY62eN3Fl5Ke0z1Djvs6cSia/NL/aiaD19GRzQX+BpuKLOqx2tn8V1Ziz86VpFnjWzE28oXB2bva2F45Z56syI42wkvu4fD0SR88d7J4/PeWmAdsfM3N6V6bHo9bZ4tmpbn/NVm3bDYp5nkThj46eO2T9ZQUMqlR7FRNGZHo77ND7rba8kVFpR53Buy5qkccrmD6KeBpVvxFZEqrJlqsE+dUu1v84uPkn3+1/xabfKsno9QJb1awJk/ZdAlw6Q1ft1AWq3D6N9bpAUpXYTNx0tgPoj/XaKbSx+R53suvFfZMmcOzBQ15mea12s6MvTqOj9ENXrUZakStZR9FvG5VQ47hv5yUIi/OWKObqHOnsEbP3cx28Xnqxiy9KP+oTHZKgAz8itucfU/X7lHo2iQo4cjhqUj4cM3rPxcsWXHFoqmbP5ULnGLeRGy7xkzjFgbN3xckljMSv2nl21/ISa/YviAvMFX4sugzxsnmJVCHbC82Jeoe+OL0KaOp+bcfobKc0ovRq/Fa2FG/m0gR9xQipde/GHUZyD1cq/OIedMw==', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('win-authenticode-opus', Buffer.from('eJy1V21z2kYQ/s4M/2HrD0FKVBmw66QmaYsBu2rMSxBO6slkNGfpgGuETj6dghk3/717IEDCErgforFH6O7Zt2f39u6OX5ZLLR4uBJtMJdSr9TpYgaQ+tLgIuSCS8aBc+oPEcsoFXIgFCWDIablULl0zlwYR9SAOPCpATik0Q+LiK5kx4CMVESqAulkFTQGOkqkjvVEuLXgMM7KAgEuII4oaWARj5lOgDy4NJbAAXD4LfUYCl8KcyenSSqLDLJduEw38ThIEE4SH+DVOw4BI5S3gM5UyPD8+ns/nJll6anIxOfZXuOj42mp1enbnZ/RWSdwEPo0iEPQ+ZgLDvFsACdEZl9yhiz6ZAzJCJoLinOTK2blgkgUTAyI+lnMikCaPRVKwu1hmeFq7hvGmAcgU0nvUtMGyj+CiaVu2US59skZ/9m9G8Kk5HDZ7I6tjQ38IrX6vbY2sfg+/LqHZu4X3Vq9tAEWW0Ap9CIXyHl1kikHqIV02pRnzY75yJwqpy8bMxaCCSUwmFCb8GxUBxgIhFTMWqSxG6JxXLvlsxuSyLqKnEaGRl8eKPBenJfz9S/VXp2n3nE6v1W9bvSt4B9WH6uqpNdawwfuW7bzOBdYUcgNMzWpPdf+bp0jfCLc6w5Hz4aYzvHX6F391WiPn0rru5HuUwiLRo05v5Cjdrx3buup12k6ne9Fpo2ituk/k8rp5lS+n1eDt2+dZyQ3gsj/sNkfOhdVrDm+VH3tASy82yCeWM6pSxrr21cqPoWP1LvvOoDlsdlHB2QZiD1qOPXD6gxt7BUFaLRXdUc08Mc/MmnmK/ye1mlnHd61+1FCVMY4DV1UPLiziaSGRU71celwt0G9EwJUykiw6reJc0YAK5naJiKbErygH10hXLLBJvEMJs4XKJO1hWX6jA8EfFlqlpWZP6qbnb6WWEgm4S7GleQnuQ0zFon/3D3XlYXA3mlxROSCCzA6D29TlHk2p3vrvzTsBTqpVlgriIxFMdRjtNB2rN29x7MuBHC1C+hz4JRcz8kz01JZcZHADztCa0DIojPsQxpvbbIIJs4IxP2w3MDDRUezLDS1sDNqaymxatPzla+TYUDVlwCNuGB49ByliCt91Y2Vg93n+qj2s4Ol6K5CpFoxvC6IQkKqCQsw29QWQVb6LJjHNRX7r5kfiw0/YMuHFiy0mlbHU2tCUJrNNBR1ru/Tnd5cd0C5Nu9/pYtt6pq9Aj1usKrXwQF2mdZmSX8TjsSptUzWpGzwRndSvO5q+Xb/q2SnWHxl6yv3/Q8IOEWsyiJSikT+8PIlESFHKYhJIrXpqQO1ML5Bs8ThQ3XirpZjHDI3qUScRLVB7cQMCeLtViJ+vXulZ8OPT6lT4rO2Vz28MeKOvE9HYK2eywBV0hosLHXkJ9dM8vEp50baXqEmMmTa6Ekz0pzpy3F/zeOfzO8joqZ0diGAt6s3bRJLinlss6SqTynJipWrAqb43d0Wawh1Nu+znS+4so/SGqa1PcXltPj8PuoFuGBiUgYtI/a2IyV0az8jKOjQexlFB41Dq97eMIsU/MnLl8LOD309AsYx6BJWxCEB7BI9GrmChOtydL+1v1sJm1/g9O/4Jd+j6zejyDZxDEPu+AbHwM7KZEirQk8Xkje3awfPAnrR8z5/KGd4ZSn0mP5PXmiNlW1n+njoG+9z9Sj0tFix7Dh6nj8Hq5lrRzRBPwfRGsCU6dZC6R+zYVOceM8LLntQqvys0DzH2ZMDYHFXnU3XF1u5NnwYTvFL/VrRnSv4V73So+j6r6l0lzZ4q4hXyc/WLiU1vpqnucc3nVLRIRDVdtcZKRAVeKZlXKd6aUpUUROcY0JRH0gDmnSeufK59yWbuIMsz7sU+NfE2zIWMlowSr7E7bq5ygNOrH43/AFoooa4=', 'base64'), '2022-01-21T01:13:53.000-08:00');"); // Windows Message Pump, refer to modules/win-message-pump.js duk_peval_string_noresult(ctx, "addCompressedModule('win-userconsent', Buffer.from('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', 'base64'), '2022-01-19T20:11:35.000-08:00');"); diff --git a/modules/win-authenticode-opus.js b/modules/win-authenticode-opus.js new file mode 100644 index 0000000..52a9d7c --- /dev/null +++ b/modules/win-authenticode-opus.js @@ -0,0 +1,115 @@ +/* +Copyright 2022 Intel Corporation +@author Bryan Roe + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const X509_ASN_ENCODING = 0x00000001; +const PKCS_7_ASN_ENCODING = 0x00010000; +const ENCODING = (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING); +const CERT_QUERY_OBJECT_FILE = 0x00000001; +const CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10; +const CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED); +const CERT_QUERY_FORMAT_BINARY = 1; +const CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY); +const CMSG_SIGNER_INFO_PARAM = 6; +const SPC_SP_OPUS_INFO_OBJID = "1.3.6.1.4.1.311.2.1.12"; + +function read(path) +{ + var GM = require('_GenericMarshal'); + var crypt = GM.CreateNativeProxy('Crypt32.dll'); + crypt.CreateMethod('CryptQueryObject'); + crypt.CreateMethod('CryptMsgGetParam'); + crypt.CreateMethod('CryptDecodeObject'); + + var dwEncoding = GM.CreateVariable(4); + var dwContentType = GM.CreateVariable(4); + var dwFormatType = GM.CreateVariable(4); + var hStore = GM.CreatePointer(); + var hMsg = GM.CreatePointer(); + var dwSignerInfo = GM.CreateVariable(4); + var n, result; + + if (crypt.CryptQueryObject(CERT_QUERY_OBJECT_FILE, GM.CreateVariable(path, { wide: true }), + CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, + CERT_QUERY_FORMAT_FLAG_BINARY, + 0, + dwEncoding, + dwContentType, + dwFormatType, + hStore, + hMsg, + 0).Val != 0 && + crypt.CryptMsgGetParam(hMsg.Deref(), + CMSG_SIGNER_INFO_PARAM, + 0, + 0, + dwSignerInfo).Val != 0) + { + var pSignerInfo = GM.CreateVariable(dwSignerInfo.toBuffer().readUInt32LE()); + + if (crypt.CryptMsgGetParam(hMsg.Deref(), + CMSG_SIGNER_INFO_PARAM, + 0, + pSignerInfo, + dwSignerInfo).Val != 0) + { + var attr; + var attributes = pSignerInfo.Deref(104, 16); + var attrCount = attributes.toBuffer().readUInt32LE(); + + for (n = 0; n < attrCount; n++) + { + attr = attributes.Deref(8, 8).Deref(); + attr = attr.increment(n * 24); + if (SPC_SP_OPUS_INFO_OBJID == attr.Deref().String) + { + var blob = attr.Deref(16, 8).Deref(); + var dwData = GM.CreateVariable(4); + + var cb = blob.Deref(0, 4).toBuffer().readUInt32LE(); + var pb = blob.Deref(8, 8).Deref(); + + if (crypt.CryptDecodeObject(ENCODING, GM.CreateVariable(SPC_SP_OPUS_INFO_OBJID), pb, cb, 0, 0, dwData).Val != 0) + { + var opus = GM.CreateVariable(dwData.toBuffer().readUInt32LE()); + if (crypt.CryptDecodeObject(ENCODING, GM.CreateVariable(SPC_SP_OPUS_INFO_OBJID), pb, cb, 0, opus, dwData).Val != 0) + { + + return ({ description: opus.Deref().Val != 0 ? opus.Deref().Wide2UTF8 : null, url: opus.Deref(8, 8).Deref().Val != 0 ? opus.Deref(8, 8).Deref().Deref(8, 8).Deref().Wide2UTF8 : null }); + } + } + } + } + } + } + return (null); +} +function locked(uri) +{ + var f = require('http').parseUri(uri); + var q = f.path.split('?').pop().split(','); + while (q.length > 0) + { + var tokens = q.pop().split('='); + if (tokens[0].trim().toLowerCase() == 'serverid') + { + return ({ dns: f.host, id: tokens[1] }); + } + } + return (null); +} +module.exports = read; +module.exports.locked = locked; \ No newline at end of file