Files
hanger/index.mjs

41 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-07-24 16:40:40 +02:00
import { createServer } from 'node:http';
import { clearInterval, setInterval } from 'node:timers';
2024-07-25 23:04:36 +02:00
const msg = ':) you are an idiot hahahahaha :)';
2024-07-24 16:40:40 +02:00
const server = createServer((req, res) => {
2024-07-24 19:15:07 +02:00
const connOpenDate = new Date();
2024-07-25 23:04:36 +02:00
const dateLogText = connOpenDate.toLocaleString('pl');
2024-07-24 19:15:07 +02:00
const attacker = req.headers['x-forwarded-for'];
const host = req.headers['x-forwarded-host'];
2024-07-24 19:19:39 +02:00
2024-07-24 16:40:40 +02:00
console.log(
2024-07-25 23:04:36 +02:00
`[${dateLogText}] ${attacker} targeted ${host} on ${req.method} ${req.url}`
2024-07-24 16:40:40 +02:00
);
let charIdx = 0;
2024-07-24 19:15:07 +02:00
const intervalId = setInterval(() => {
2024-07-24 16:40:40 +02:00
if (charIdx === msg.length) {
charIdx = 0;
res.write('\n');
} else {
res.write(msg[charIdx++]);
}
}, 3000);
2024-07-24 19:15:07 +02:00
res.once('close', () => {
const connCloseDate = new Date();
const timeDiff = connCloseDate.getTime() - connOpenDate.getTime();
2024-07-25 23:04:36 +02:00
const dateLogText = connCloseDate.toLocaleString('pl');
2024-07-24 19:15:07 +02:00
const diffText = new Date(timeDiff).toISOString().substring(11, 19);
clearInterval(intervalId);
console.log(
2024-07-25 23:04:36 +02:00
`[${dateLogText}] ${attacker} aborted connection after ${diffText}`
2024-07-24 19:15:07 +02:00
);
});
2024-07-24 16:40:40 +02:00
});
server.listen(3000);