Skip to content

Commit 3abf34d

Browse files
committed
Initial commit
1 parent 204e82a commit 3abf34d

18 files changed

Lines changed: 2915 additions & 6 deletions

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,4 @@
77

88
## 💰 You can help me by Donating
99

10-
[![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/stalin143) [![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/stalinS143)
11-
12-
10+
[![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/stalin143) [![PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/stalinS143)

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ <h2>Hacker's Toolkit</h2>
109109

110110
<div class="footer">
111111
<p>&copy; 2025 Nexulean | All Rights Reserved</p>
112-
<p>Contact us: <a href="mailto:nexulaen@gmail.com">nexulean@gmail.com</a></p>
112+
<p>Contact us: <a href="mailto:nexulean@gmail.com">nexulean@gmail.com</a></p>
113113
</div>
114114

115115
</body>

package-lock.json

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"dependencies": {
1414
"express": "^4.21.2",
1515
"firebase": "^11.2.0",
16-
"node-fetch": "^2.7.0"
16+
"node-fetch": "^2.7.0",
17+
"cors": "^2.8.5"
1718
}
1819
}

public/abuse.html

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>IP Reputation Checker - AbuseIPDB</title>
7+
<style>
8+
body {
9+
font-family: Arial, sans-serif;
10+
background: #121212;
11+
color: #00ff00;
12+
text-align: center;
13+
padding: 20px;
14+
}
15+
input, button {
16+
padding: 10px;
17+
margin: 10px;
18+
font-size: 16px;
19+
border-radius: 5px;
20+
border: none;
21+
outline: none;
22+
}
23+
button {
24+
background: #1f1f1f;
25+
color: #00ff00;
26+
cursor: pointer;
27+
}
28+
button:hover {
29+
background: #333;
30+
}
31+
.result {
32+
margin-top: 20px;
33+
text-align: left;
34+
display: inline-block;
35+
}
36+
</style>
37+
</head>
38+
<body>
39+
<h1>IP Reputation Checker - AbuseIPDB</h1>
40+
<input type="text" id="ipInput" placeholder="Enter IP Address">
41+
<button onclick="checkAbuseIPDB()">Check AbuseIPDB</button>
42+
<div class="result" id="result"></div>
43+
44+
<script>
45+
async function checkAbuseIPDB() {
46+
const ip = document.getElementById("ipInput").value.trim();
47+
const resultDiv = document.getElementById("result");
48+
49+
if (!ip) {
50+
resultDiv.innerHTML = "<p>Please enter a valid IP address.</p>";
51+
return;
52+
}
53+
54+
resultDiv.innerHTML = "<p>Checking AbuseIPDB...</p>";
55+
56+
try {
57+
const abuseResponse = await fetch(`/api/abuseipdb?ip=${ip}`);
58+
const abuseData = await abuseResponse.json();
59+
60+
resultDiv.innerHTML = `
61+
<h3>Results for IP: ${ip}</h3>
62+
<h4>AbuseIPDB</h4>
63+
<p><b>Abuse Confidence Score:</b> ${abuseData.data?.abuseConfidenceScore || "N/A"}</p>
64+
<p><b>Categories:</b> ${abuseData.data?.category?.join(", ") || "N/A"}</p>
65+
<p><b>Country:</b> ${abuseData.data?.countryCode || "N/A"}</p>
66+
<p><b>ISP:</b> ${abuseData.data?.isp || "N/A"}</p>
67+
<p><b>Domain:</b> ${abuseData.data?.domain || "N/A"}</p>
68+
`;
69+
} catch (error) {
70+
console.error(error);
71+
resultDiv.innerHTML = "<p>Error fetching data from AbuseIPDB.</p>";
72+
}
73+
}
74+
</script>
75+
</body>
76+
</html>

public/both.html

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>IP Reputation Checker - Both Services</title>
7+
<style>
8+
body {
9+
font-family: Arial, sans-serif;
10+
background: #121212;
11+
color: #00ff00;
12+
text-align: center;
13+
padding: 20px;
14+
}
15+
input, button {
16+
padding: 10px;
17+
margin: 10px;
18+
font-size: 16px;
19+
border-radius: 5px;
20+
border: none;
21+
outline: none;
22+
}
23+
button {
24+
background: #1f1f1f;
25+
color: #00ff00;
26+
cursor: pointer;
27+
}
28+
button:hover {
29+
background: #333;
30+
}
31+
.result {
32+
margin-top: 20px;
33+
text-align: left;
34+
display: inline-block;
35+
}
36+
</style>
37+
</head>
38+
<body>
39+
<h1>IP Reputation Checker - Both Services</h1>
40+
<input type="text" id="ipInput" placeholder="Enter IP Address">
41+
<button onclick="checkBoth()">Check Both Services</button>
42+
<div class="result" id="result"></div>
43+
44+
<script>
45+
async function checkBoth() {
46+
const ip = document.getElementById("ipInput").value.trim();
47+
const resultDiv = document.getElementById("result");
48+
49+
if (!ip) {
50+
resultDiv.innerHTML = "<p>Please enter a valid IP address.</p>";
51+
return;
52+
}
53+
54+
resultDiv.innerHTML = "<p>Checking AbuseIPDB and VirusTotal...</p>";
55+
56+
try {
57+
const abuseResponse = await fetch(`/api/abuseipdb?ip=${ip}`);
58+
const abuseData = await abuseResponse.json();
59+
60+
const virusResponse = await fetch(`/api/virustotal?ip=${ip}`);
61+
const virusData = await virusResponse.json();
62+
63+
resultDiv.innerHTML = `
64+
<h3>Results for IP: ${ip}</h3>
65+
66+
<h4>AbuseIPDB</h4>
67+
<p><b>Abuse Confidence Score:</b> ${abuseData.data?.abuseConfidenceScore || "N/A"}</p>
68+
<p><b>Categories:</b> ${abuseData.data?.category?.join(", ") || "N/A"}</p>
69+
<p><b>Country:</b> ${abuseData.data?.countryCode || "N/A"}</p>
70+
<p><b>ISP:</b> ${abuseData.data?.isp || "N/A"}</p>
71+
<p><b>Domain:</b> ${abuseData.data?.domain || "N/A"}</p>
72+
73+
<h4>VirusTotal</h4>
74+
<p><b>Reputation:</b> ${virusData.data?.attributes?.reputation || "N/A"}</p>
75+
<p><b>Network:</b> ${virusData.data?.attributes?.network || "N/A"}</p>
76+
<p><b>Last Analysis Stats:</b> ${
77+
virusData.data?.attributes?.last_analysis_stats
78+
? JSON.stringify(virusData.data.attributes.last_analysis_stats)
79+
: "N/A"
80+
}</p>
81+
<p><b>Tags:</b> ${virusData.data?.attributes?.tags?.join(", ") || "N/A"}</p>
82+
<p><b>Whois:</b> ${virusData.data?.attributes?.whois || "N/A"}</p>
83+
`;
84+
} catch (error) {
85+
console.error(error);
86+
resultDiv.innerHTML = "<p>Error fetching data from both services.</p>";
87+
}
88+
}
89+
</script>
90+
</body>
91+
</html>

public/error.html

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Forbidden Access</title>
7+
<style>
8+
body {
9+
font-family: Arial, sans-serif;
10+
background-color: #121212;
11+
color: #fff;
12+
text-align: center;
13+
padding: 50px;
14+
}
15+
.error-box {
16+
background-color: #2c2c2c;
17+
border-radius: 10px;
18+
padding: 30px;
19+
display: inline-block;
20+
width: 300px;
21+
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
22+
}
23+
h1 {
24+
color: #e74c3c;
25+
}
26+
p {
27+
color: #bdc3c7;
28+
}
29+
.ip-address {
30+
font-weight: bold;
31+
color: #00ff00;
32+
}
33+
button {
34+
padding: 10px 20px;
35+
background-color: #e74c3c;
36+
border: none;
37+
border-radius: 5px;
38+
color: #fff;
39+
cursor: pointer;
40+
}
41+
button:hover {
42+
background-color: #c0392b;
43+
}
44+
</style>
45+
</head>
46+
<body>
47+
48+
<div class="error-box">
49+
<h1>403 Forbidden</h1>
50+
<p>You have no permission to access this resource.</p>
51+
<p>Your IP Address: <span class="ip-address" id="ip-address"></span></p>
52+
<button onclick="reloadLogin()">Try Again</button>
53+
</div>
54+
55+
<script>
56+
// Function to get the user's IP address
57+
function getUserIP(callback) {
58+
const xhr = new XMLHttpRequest();
59+
xhr.open('GET', 'https://api.ipify.org?format=json', true);
60+
xhr.onload = function () {
61+
if (xhr.status === 200) {
62+
const response = JSON.parse(xhr.responseText);
63+
callback(response.ip);
64+
} else {
65+
callback('Unable to fetch IP');
66+
}
67+
};
68+
xhr.send();
69+
}
70+
71+
// Function to reload the login page
72+
function reloadLogin() {
73+
window.location.href = 'login.html';
74+
}
75+
76+
// Fetch the user's IP address and display it
77+
getUserIP(function(ip) {
78+
document.getElementById('ip-address').textContent = ip;
79+
});
80+
</script>
81+
82+
</body>
83+
</html>

0 commit comments

Comments
 (0)