ya-express-ntlm
Version:
74 lines • 3.82 kB
JavaScript
;
/* eslint-disable no-console */
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.startCoder = void 0;
const dotenv = __importStar(require("dotenv"));
const express_1 = __importDefault(require("express"));
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const index_1 = require("../index");
const createMessageType1_1 = require("../../node-ntlm-core/createMessageType1");
const createMessageType2_1 = require("../../node-ntlm-core/createMessageType2");
const createMessageType3_1 = require("../../node-ntlm-core/createMessageType3");
const startCoder = () => {
dotenv.config();
const host = process.env.DECODER_HOST || 'localhost';
const port = Number(process.env.DECODER_PORT) || 8081;
const app = (0, express_1.default)();
app.use(express_1.default.json());
app.post('/create', (req, res) => {
const { domain = '', workstation = '', username = '', password = '' } = req.body;
const messageType1Buf = (0, createMessageType1_1.createMessageType1Buf)({ domain, workstation });
const messageType1 = `NTLM ${messageType1Buf.toString('base64')}`;
const messageType2Buf = (0, createMessageType2_1.createMessageType2)(messageType1Buf);
const messageType2 = `NTLM ${messageType2Buf.toString('base64')}`;
const messageType2BufAnother = (0, createMessageType3_1.parseType2Message)(messageType2);
const messageType3 = (0, createMessageType3_1.createMessageType3)(messageType2BufAnother, { domain, workstation, username, password });
res.setHeader('Content-Type', 'application/json').send(JSON.stringify({ messageType1, messageType2, messageType3 }));
});
app.post('/decode', (req, res) => {
let { message } = req.body;
message = message.trim().replace(/(?:(?:Authorization|WWW-Authenticate): )?NTLM(?: |$)/, '');
const parsedData = (0, index_1.ntlmParse)(message);
res.setHeader('Content-Type', 'application/json').send(JSON.stringify(parsedData));
});
app.get('/', (req, res) => {
let html = fs.readFileSync(path.join(__dirname, 'coder.html').replace(/[\\/]dist[\\/](?:cjs|esm)/, ''), { encoding: 'utf8' });
html = html.replace(/{{host}}/g, host).replace(/{{port}}/g, String(port));
res.setHeader('Content-Type', 'text/html; charset=utf-8').send(html);
});
app.all('*', (req, res) => {
res.status(404).send('404 Not found');
});
app.listen(port, () => {
console.log(`Decoder web server listening on http://localhost:${port}`);
});
};
exports.startCoder = startCoder;
//# sourceMappingURL=coder.js.map