Skip to content

Commit 295ce63

Browse files
committed
Phase 2 - more name fixes, added openssl to seed rng where available, fallback to os.time() if unavailable.
1 parent d9f6cb2 commit 295ce63

7 files changed

Lines changed: 36 additions & 29 deletions

File tree

src/prometheus/compiler/compile_core.lua

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ local statementHandlers = require("prometheus.compiler.statements");
99
local expressionHandlers = require("prometheus.compiler.expressions");
1010
local Ast = require("prometheus.ast");
1111
local logger = require("logger");
12-
local AstKind = Ast.AstKind;
1312

1413
return function(Compiler)
1514
compileTop(Compiler);

src/prometheus/namegenerators/Il.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,27 @@ local offset = 0;
1515
local VarDigits = chararray("Il1");
1616
local VarStartDigits = chararray("Il");
1717

18-
local function generateName(id, scope)
18+
local function generateName(id, _)
1919
local name = ''
2020
id = id + offset;
2121
local d = id % #VarStartDigits
2222
id = (id - d) / #VarStartDigits
2323
name = name..VarStartDigits[d+1]
2424
while id > 0 do
25-
local d = id % #VarDigits
26-
id = (id - d) / #VarDigits
27-
name = name..VarDigits[d+1]
25+
local e = id % #VarDigits
26+
id = (id - e) / #VarDigits
27+
name = name..VarDigits[e+1]
2828
end
2929
return name
3030
end
3131

32-
local function prepare(ast)
32+
local function prepare(_)
3333
util.shuffle(VarDigits);
3434
util.shuffle(VarStartDigits);
3535
offset = math.random(3 ^ MIN_CHARACTERS, 3 ^ MAX_INITIAL_CHARACTERS);
3636
end
3737

3838
return {
39-
generateName = generateName,
39+
generateName = generateName,
4040
prepare = prepare
4141
};

src/prometheus/namegenerators/confuse.lua

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
-- This Script provides a function for generation of confusing variable names
66

77
local util = require("prometheus.util");
8-
local chararray = util.chararray;
98

109
local varNames = {
1110
"index",
@@ -146,24 +145,24 @@ local varNames = {
146145
"a", "b", "c", "i", "j", "m",
147146
}
148147

149-
local function generateName(id, scope)
148+
local function generateName(id, _)
150149
local name = {};
151150
local d = id % #varNames
152151
id = (id - d) / #varNames
153152
table.insert(name, varNames[d + 1]);
154153
while id > 0 do
155-
local d = id % #varNames
156-
id = (id - d) / #varNames
157-
table.insert(name, varNames[d + 1]);
154+
local e = id % #varNames
155+
id = (id - e) / #varNames
156+
table.insert(name, varNames[e + 1]);
158157
end
159158
return table.concat(name, "_");
160159
end
161160

162-
local function prepare(ast)
161+
local function prepare(_)
163162
util.shuffle(varNames);
164163
end
165164

166165
return {
167-
generateName = generateName,
166+
generateName = generateName,
168167
prepare = prepare
169168
};

src/prometheus/namegenerators/mangled.lua

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@
88
local util = require("prometheus.util");
99
local chararray = util.chararray;
1010

11-
local idGen = 0
1211
local VarDigits = chararray("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_");
1312
local VarStartDigits = chararray("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
1413

15-
return function(id, scope)
14+
return function(id, _)
1615
local name = ''
1716
local d = id % #VarStartDigits
1817
id = (id - d) / #VarStartDigits
1918
name = name..VarStartDigits[d+1]
2019
while id > 0 do
21-
local d = id % #VarDigits
22-
id = (id - d) / #VarDigits
23-
name = name..VarDigits[d+1]
20+
local e = id % #VarDigits
21+
id = (id - e) / #VarDigits
22+
name = name..VarDigits[e+1]
2423
end
2524
return name
2625
end

src/prometheus/namegenerators/mangled_shuffled.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@ local chararray = util.chararray;
1111
local VarDigits = chararray("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_");
1212
local VarStartDigits = chararray("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
1313

14-
local function generateName(id, scope)
14+
local function generateName(id, _)
1515
local name = ''
1616
local d = id % #VarStartDigits
1717
id = (id - d) / #VarStartDigits
1818
name = name..VarStartDigits[d+1]
1919
while id > 0 do
20-
local d = id % #VarDigits
21-
id = (id - d) / #VarDigits
22-
name = name..VarDigits[d+1]
20+
local e = id % #VarDigits
21+
id = (id - e) / #VarDigits
22+
name = name..VarDigits[e+1]
2323
end
2424
return name
2525
end
2626

27-
local function prepare(ast)
27+
local function prepare(_)
2828
util.shuffle(VarDigits);
2929
util.shuffle(VarStartDigits);
3030
end
3131

3232
return {
33-
generateName = generateName,
33+
generateName = generateName,
3434
prepare = prepare
3535
};

src/prometheus/namegenerators/number.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66

77
local PREFIX = "_";
88

9-
return function(id, scope)
9+
return function(id, _)
1010
return PREFIX .. tostring(id);
1111
end

src/prometheus/pipeline.lua

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,15 @@ function Pipeline:addStep(step)
105105
table.insert(self.steps, step);
106106
end
107107

108-
function Pipeline:resetSteps(step)
108+
function Pipeline:resetSteps(_)
109109
self.steps = {};
110110
end
111111

112112
function Pipeline:getSteps()
113113
return self.steps;
114114
end
115115

116-
function Pipeline:setOption(name, value)
116+
function Pipeline:setOption(name, _)
117117
assert(false, "TODO");
118118
if(Pipeline.DefaultSettings[name] ~= nil) then
119119

@@ -159,11 +159,21 @@ function Pipeline:apply(code, filename)
159159
local startTime = gettime();
160160
filename = filename or "Anonymous Script";
161161
logger:info(string.format("Applying Obfuscation Pipeline to %s ...", filename));
162+
162163
-- Seed the Random Generator
163164
if(self.Seed > 0) then
164165
math.randomseed(self.Seed);
165166
else
166-
math.randomseed(os.time())
167+
-- try to use secure random number generator
168+
local success, seed = pcall(function()
169+
return tonumber(io.popen("openssl rand -hex 8"):read("*a"):gsub("\n", ""), 16)
170+
end)
171+
if success then
172+
math.randomseed(seed)
173+
else
174+
logger:warn("OpenSSL is unavailable. Falling back to unix time.");
175+
math.randomseed(os.time())
176+
end
167177
end
168178

169179
logger:info("Parsing ...");

0 commit comments

Comments
 (0)