Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2021, 18:47
Новичок на форуме
Отправить личное сообщение для sabot4ge Посмотреть профиль Найти все сообщения от sabot4ge
 
Регистрация: 29.07.2021
Сообщений: 6

Скрипт на Node для замены hex на dec
ищу помощи в написании скрипта для node или python
для того чтобы он искал в файле все Hex числа в виде выражений, высчитывал их и заменял на Dec
пользовался банальным
console.log(parseInt(0x2294+-0x3d6*-0x1+-0x24c6))

для получения цифр, но вручную по 1 выражению занимает очень много времени. т.к. в файле их тысячи
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2021, 19:58
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Наверное это продолжение темы https://javascript.ru/forum/node-js-...e-modulya.html

Думаю у тебя задача не правильно сформулирована нужен не парсинг а синтаксический анализатор на подобии https://esprima.org/demo/parse.html# что бы найти лексемы в выражениях и заменить их на более читаемый вид.

Ну или использовать http://www.jsnice.org/
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2021, 20:03
Новичок на форуме
Отправить личное сообщение для sabot4ge Посмотреть профиль Найти все сообщения от sabot4ge
 
Регистрация: 29.07.2021
Сообщений: 6

Сообщение от MallSerg Посмотреть сообщение
Наверное это продолжение темы https://javascript.ru/forum/node-js-...e-modulya.html

Думаю у тебя задача не правильно сформулирована нужен не парсинг а синтаксический анализатор на подобии https://esprima.org/demo/parse.html# что бы найти лексемы в выражениях и заменить их на более читаемый вид.

Ну или использовать http://www.jsnice.org/
отчасти возможно.
в коде есть подобное
nC=0x1*0x256f+-0x82f2+-0x5*-0x2b02,
nd=0x546e+0x2491+0x1*0x89,
S0=-0x4157+0xd991+-0x61*0x51,
S1=0xd3e+-0x24b3+0xd*0x253,
S2=-0xc863+0x1728+-0x1*-0x1522b,
S3=-0x1bee+0xef*0x3+0x1bfb,
S4=-0x266f*0x1+0xa*-0xcdb+-0x1*-0x147f7,
S5=0x5a*-0x124+0x366d*0x2+0x9ac9,
S6=-0x7ba6*0x2+-0x2*0x8964+0x2ab10,
S7=-0x390e*0x2+-0xe51*-0x2+0xf677,


файл очень большой (~0.9mb)
нужно найти все вот эти выражения, прокалькулировать и вывести результат в виде 1 единственной цифры на каждое выражение естественно.
чтобы по итогу вышло так
no=20910,
nm=1200,
nL=31100,
np=520,
na=31110,

jsnice пробовал, но все эти деобфускаторы, бьютифаеры только код ломают
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2021, 21:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от sabot4ge Посмотреть сообщение
нужно найти все вот эти выражения, прокалькулировать и вывести результат в виде 1 единственной цифры на каждое выражение естественно.
чтобы по итогу вышло так
no=20910,
nm=1200,
nL=31100,
np=520,
na=31110,
Так пойдет?
let str = `
	nC=0x1*0x256f+-0x82f2+-0x5*-0x2b02,
	nd=0x546e+0x2491+0x1*0x89,
	S0=-0x4157+0xd991+-0x61*0x51,
	S1=0xd3e+-0x24b3+0xd*0x253,
	S2=-0xc863+0x1728+-0x1*-0x1522b,
	S3=-0x1bee+0xef*0x3+0x1bfb,
	S4=-0x266f*0x1+0xa*-0xcdb+-0x1*-0x147f7,
	S5=0x5a*-0x124+0x366d*0x2+0x9ac9,
	S6=-0x7ba6*0x2+-0x2*0x8964+0x2ab10,
	S7=-0x390e*0x2+-0xe51*-0x2+0xf677,
`
str = str.replace(/=(.*)(?=,)/g, (e, p) => '=' + eval(p))
alert(str)

Последний раз редактировалось ksa, 28.08.2021 в 21:20.
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2021, 21:18
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Думаю тебе будет правильно разобраться с такой темой как "AST дерево".

Найти для ноды парсер JavaScript который строит это самое AST дерево.
Это позволит работать с кодом как с древовидной структурой найти нужные тебе лексемы проверить на наличие соседних лексем и в случае необходимости заменить узлы на необходимые тебе. Именно так и работают деобфускаторы, бьютифаеры и прочее. Просто это гораздо легче и эффективнее чем парсинг грубой силой регулярными выражениями.

Реальная твоя задача для меня еще не понятна возможно то что ты хочешь получить уже есть в строковых значениях в снапшоте отладчика ну или это можно поймать в другом месте парой кликов.
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2021, 22:06
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

https://www.youtube.com/watch?v=ILSpvViUlPU хороший доклад про AST
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что выбрать для проекта: Node или Apache/nginx AlexOv Node.JS 8 30.06.2017 19:51
Скрипт версии для слабовидящих yotobo Общие вопросы Javascript 0 02.04.2017 21:23
нужна помощь (есть работа) Редирект скрипт для iOS 9+ Возможно на AngularJS dimazap Мобильный JavaScript 1 20.01.2017 18:46
Где найти скрипт - Социальный Замок для html ? klimentino Общие вопросы Javascript 1 25.10.2013 06:39
скрипт для браузерки ванка Общие вопросы Javascript 11 11.10.2013 12:20