Skip to content

Commit a47ef4d

Browse files
committed
allow specifying own sts file ./tch-exploit-macos --sts='./file.sts'
1 parent 0643502 commit a47ef4d

File tree

6 files changed

+63
-9
lines changed

6 files changed

+63
-9
lines changed

dist/args.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = process.argv.slice(2, process.argv.length).reduce(function(args, str) {
2+
var arg, flag, value;
3+
arg = str.split('=');
4+
flag = arg[0].slice(2, arg[0].length);
5+
value = arg[1] || true;
6+
args[flag] = value;
7+
return args;
8+
}, {});

dist/cwmp/index.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ request = function(ip, req, res) {
7676
SoftwareVersion = (DeviceInfo || {}).SoftwareVersion;
7777
software = parseInt(SoftwareVersion.substring(0, 2));
7878
version = software < 17 ? 16 : software > 17 ? 18 : 17;
79-
file = files[version];
79+
if (files.custom != null) {
80+
file = files.custom;
81+
} else {
82+
file = files[version];
83+
}
8084
res.name = 'cwmp:Download';
8185
res.fileType = '3 Vendor Configuration File';
8286
res.fileSize = file.length;

dist/index.js

+23-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var Duplex, ask, createServer, cwmp, dhcpd, files, networkInterfaces, pkg, readline, route;
1+
var Duplex, args, ask, createServer, cwmp, dhcpd, e, existsSync, files, networkInterfaces, pkg, readFileSync, readline, ref, route;
22

33
pkg = require('../package.json');
44

@@ -10,6 +10,8 @@ createServer = require('http').createServer;
1010

1111
networkInterfaces = require('os').networkInterfaces;
1212

13+
ref = require('fs'), readFileSync = ref.readFileSync, existsSync = ref.existsSync;
14+
1315
dhcpd = require('./dhcp');
1416

1517
route = require('./router');
@@ -18,18 +20,29 @@ cwmp = require('./cwmp');
1820

1921
files = require('./files');
2022

23+
args = require('./args');
24+
25+
if (args.sts) {
26+
try {
27+
files.custom = readFileSync(args.sts);
28+
} catch (error) {
29+
e = error;
30+
throw e;
31+
}
32+
}
33+
2134
readline = require('readline').createInterface({
2235
input: process.stdin,
2336
output: process.stdout
2437
});
2538

2639
ask = function(cb) {
27-
var addr, addrInfo, cIp, i, ifaceDetails, ifaceName, ip, ips, len, name, ref;
40+
var addr, addrInfo, cIp, i, ifaceDetails, ifaceName, ip, ips, len, name, ref1;
2841
cIp = null;
2942
ips = {};
30-
ref = networkInterfaces();
31-
for (ifaceName in ref) {
32-
ifaceDetails = ref[ifaceName];
43+
ref1 = networkInterfaces();
44+
for (ifaceName in ref1) {
45+
ifaceDetails = ref1[ifaceName];
3346
for (i = 0, len = ifaceDetails.length; i < len; i++) {
3447
addrInfo = ifaceDetails[i];
3548
if (!addrInfo.internal) {
@@ -103,7 +116,11 @@ ask(function(intr) {
103116
if (version < 17) {
104117
version = 16;
105118
}
106-
file = files[version];
119+
if (files.custom != null) {
120+
file = files.custom;
121+
} else {
122+
file = files[version];
123+
}
107124
headers = {
108125
'Content-Type': 'text/plain',
109126
'Content-Length': file.length

src/args.coffee

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
module.exports = process.argv
3+
.slice 2, process.argv.length
4+
.reduce (args, str) ->
5+
arg = str.split '='
6+
flag = arg[0].slice 2, arg[0].length
7+
value = arg[1] or true
8+
9+
args[flag] = value
10+
args
11+
, {}

src/cwmp/index.coffee

+4-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ request = (ip, req, res) ->
7676
else if software > 17 then 18
7777
else 17
7878

79-
file = files[version]
79+
if files.custom?
80+
file = files.custom
81+
else
82+
file = files[version]
8083

8184
res.name = 'cwmp:Download'
8285
res.fileType = '3 Vendor Configuration File'

src/index.coffee

+12-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,19 @@ Technicolor OpenWRT Shell Unlocker v#{ pkg.version } By BoLaMN
1515
{ Duplex } = require 'stream'
1616
{ createServer } = require 'http'
1717
{ networkInterfaces } = require 'os'
18+
{ readFileSync, existsSync } = require 'fs'
1819

1920
dhcpd = require './dhcp'
2021
route = require './router'
2122
cwmp = require './cwmp'
2223
files = require './files'
24+
args = require './args'
25+
26+
if args.sts
27+
try
28+
files.custom = readFileSync args.sts
29+
catch e
30+
throw e
2331

2432
readline = require 'readline'
2533
.createInterface
@@ -127,7 +135,10 @@ ask (intr) ->
127135
if version < 17
128136
version = 16
129137

130-
file = files[version]
138+
if files.custom?
139+
file = files.custom
140+
else
141+
file = files[version]
131142

132143
headers =
133144
'Content-Type': 'text/plain'

0 commit comments

Comments
 (0)