Help
RSS
API
Feed
Maltego
Contact
Domain > cgpbl.freewillies.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-09-24
199.26.86.51
(
ClassC
)
2026-02-18
72.9.154.100
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyConnection: Keep-AliveKeep-Alive: timeout5, max100Content-Type: text/htmlContent-Length: 795Date: Wed, 18 Feb 2026 06:01:43 GMTServer: LiteSpeedLocation: https://cgpbl.freewillies.com/ !DOCTYPE html>html styleheight:100%>head>meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno />title> 301 Moved Permanently/title>style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}/style>/head>body stylecolor: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;>div styleheight:auto; min-height:100%; > div styletext-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;> h1 stylemargin:0; font-size:150px; line-height:150px; font-weight:bold;>301/h1>h2 stylemargin-top:20px;font-size: 30px;>Moved Permanently/h2>p>The document has been permanently moved./p>/div>/div>/body>/html>
Port 443
HTTP/1.1 200 OKConnection: Keep-AliveKeep-Alive: timeout5, max100Content-Type: text/htmlLast-Modified: Tue, 16 Sep 2025 20:01:06 GMTAccept-Ranges: bytesContent-Length: 16335Date: Wed, 18 Feb 2026 06:01:43 GMTServer: LiteSpeed !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>3D VR Lab Tour/title> script srchttps://cdn.tailwindcss.com>/script> style> body { margin: 0; overflow: hidden; background-color: #1a1a1a; font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; color: #ffffff; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } canvas { display: block; width: 100%; height: 100%; cursor: grab; } canvas:active { cursor: grabbing; } .info-box { position: absolute; top: 20px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.5); padding: 15px 25px; border-radius: 10px; text-align: center; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); backdrop-filter: blur(5px); } .controls-container { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; gap: 1rem; } .llm-output-box { position: absolute; bottom: 80px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.7); padding: 1rem; border-radius: 10px; max-width: 80%; max-height: 200px; overflow-y: auto; text-align: left; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); backdrop-filter: blur(5px); opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .llm-output-box.active { opacity: 1; visibility: visible; } .llm-output-box h2 { font-size: 1.25rem; margin-top: 0; } /style>/head>body>div classinfo-box> h1>Virtual Lab Tour/h1> p>Click and drag to look around the laboratory./p>/div>script srchttps://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js>/script>script> window.onload function() { // --- Setup basic three.js scene --- const scene new THREE.Scene(); const camera new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); let isDragging false; let previousMousePosition { x: 0, y: 0 }; // Add event listeners for mouse interaction document.addEventListener(mousedown, (e) > { isDragging true; previousMousePosition.x e.clientX; previousMousePosition.y e.clientY; }); document.addEventListener(mouseup, () > { isDragging false; }); document.addEventListener(mousemove, (e) > { if (!isDragging) return; const deltaX e.clientX - previousMousePosition.x; const deltaY e.clientY - previousMousePosition.y; // Adjust this value to change the mouse drag speed const rotationSpeed 0.001; camera.rotation.y - deltaX * rotationSpeed; camera.rotation.x - deltaY * rotationSpeed; const limit Math.PI / 2; camera.rotation.x Math.max(-limit, Math.min(limit, camera.rotation.x)); previousMousePosition.x e.clientX; previousMousePosition.y e.clientY; }); // Add mouse wheel listener for zoom document.addEventListener(wheel, (e) > { // e.preventDefault(); // Uncomment this line if you want to disable page scrolling const zoomSpeed 0.8; const fov camera.fov; if (e.deltaY > 0) { // Zoom out camera.fov Math.min(100, fov + zoomSpeed); } else { // Zoom in camera.fov Math.max(20, fov - zoomSpeed); } // Update the cameras projection matrix to apply the new FOV camera.updateProjectionMatrix(); }); window.addEventListener(resize, () > { camera.aspect window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }); // Touch event listeners for mobile devices let touchStart null; document.addEventListener(touchstart, (e) > { if (!renderer.xr.isPresenting) { isDragging true; touchStart e.touches0; previousMousePosition.x touchStart.clientX; previousMousePosition.y touchStart.clientY; } }); document.addEventListener(touchend, () > { isDragging false; touchStart null; }); document.addEventListener(touchmove, (e) > { if (isDragging && !renderer.xr.isPresenting) { const touch e.touches0; const deltaX touch.clientX - previousMousePosition.x; const deltaY touch.clientY - previousMousePosition.y; camera.rotation.y - deltaX * rotationSpeed; camera.rotation.x - deltaY * rotationSpeed; const limit Math.PI / 2; camera.rotation.x Math.max(-limit, Math.min(limit, camera.rotation.x)); previousMousePosition.x touch.clientX; previousMousePosition.y touch.clientY; } }); window.addEventListener(resize, () > { camera.aspect window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }); // --- Load textures from uploaded images using the standard Three.js loader --- const textureLoader new THREE.TextureLoader(); // Update the texture URLs to use local file names const textureURLs https://cgpbl.freewillies.com/1.jpg, // Right https://cgpbl.freewillies.com/2.jpg, // Left https://cgpbl.freewillies.com/lab2.jpg, // Top https://cgpbl.freewillies.com/lab1.jpg, // Bottom https://cgpbl.freewillies.com/vrlab1.png, // Front https://cgpbl.freewillies.com/lab6.jpg // Back ; const promises textureURLs.map(url > { return new Promise((resolve, reject) > { textureLoader.load(url, resolve, undefined, reject); }); }); Promise.all(promises) .then(textures > { const materials textures.map(texture > { return new THREE.MeshBasicMaterial({ map: texture, side: THREE.BackSide }); }); // Create the skybox geometry and mesh const geometry new THREE.BoxGeometry(100, 100, 100); const skybox new THREE.Mesh(geometry, materials); scene.add(skybox); camera.position.z 0.1; // Animation loop function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate(); }) .catch(error > { console.error(Failed to load one or more textures:, error); // Inform the user about the error const infoBox document.querySelector(.info-box); infoBox.innerHTML ` h1>Error/h1> p>Failed to load the lab images. This may be due to a temporary network issue or a problem with the image URLs./p> `; }); // --- Gemini API Integrations --- // Helper function to convert base64 to ArrayBuffer function base64ToArrayBuffer(base64) { const binary_string window.atob(base64); const len binary_string.length; const bytes new Uint8Array(len); for (let i 0; i len; i++) { bytesi binary_string.charCodeAt(i); } return bytes.buffer; } // Helper function to convert PCM to WAV format function pcmToWav(pcm16, sampleRate) { const buffer new ArrayBuffer(44 + pcm16.length * 2); const view new DataView(buffer); // WAV header // RIFF chunk writeString(view, 0, RIFF); view.setUint32(4, 36 + pcm16.length * 2, true); writeString(view, 8, WAVE); // fmt chunk writeString(view, 12, fmt ); view.setUint32(16, 16, true); view.setUint16(20, 1, true); // PCM format view.setUint16(22, 1, true); // Mono view.setUint32(24, sampleRate, true); view.setUint32(28, sampleRate * 2, true); view.setUint16(32, 2, true); view.setUint16(34, 16, true); // data chunk writeString(view, 36, data); view.setUint32(40, pcm16.length * 2, true); // Write PCM data for (let i 0; i pcm16.length; i++) { view.setInt16(44 + i * 2, pcm16i, true); } return new Blob(view, { type: audio/wav }); } function writeString(view, offset, string) { for (let i 0; i string.length; i++) { view.setUint8(offset + i, string.charCodeAt(i)); } } const llmOutputBox document.getElementById(llm-output-box); const llmOutputText document.getElementById(llm-output-text); const narrateBtn document.getElementById(narrateBtn); const describeBtn document.getElementById(describeBtn); let currentAudio null; // Function to call the Gemini Text-to-Speech API async function narrateTour() { if (currentAudio) { currentAudio.pause(); currentAudio.currentTime 0; } const prompt `This lab is a cutting-edge facility designed for research in bio-medical sciences. It features state-of-the-art equipment including an advanced fume hood, a sophisticated microscope station, and multiple workstations. The space is bright and organized, promoting a collaborative and innovative environment for students and researchers. A large whiteboard is used for brainstorming and problem-solving, and a comfortable seating area is available for breaks.`; const payload { contents: { parts: { text: prompt } }, generationConfig: { responseModalities: AUDIO, speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName: Rasalgethi } } } }, model: gemini-2.5-flash-preview-tts }; const apiKey ; const apiUrl `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent?key${apiKey}`; narrateBtn.textContent Generating...; narrateBtn.disabled true; try { const response await fetch(apiUrl, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(payload) }); if (!response.ok) { throw new Error(`API call failed with status: ${response.status}`); } const result await response.json(); const part result?.candidates?.0?.content?.parts?.0; const audioData part?.inlineData?.data; const mimeType part?.inlineData?.mimeType; if (audioData && mimeType && mimeType.startsWith(audio/)) { const sampleRate parseInt(mimeType.match(/rate(\d+)/)1, 10); const pcmData base64ToArrayBuffer(audioData); const pcm16 new Int16Array(pcmData); const wavBlob pcmToWav(pcm16, sampleRate); const audioUrl URL.createObjectURL(wavBlob); currentAudio new Audio(audioUrl); currentAudio.play(); } else { throw new Error(Invalid audio response from API); } } catch (error) { console.error(Error narrating tour:, error); llmOutputText.textContent Error: Could not generate narration.; } finally { narrateBtn.textContent ✨ Narrate Tour; narrateBtn.disabled false; } } // Function to call the Gemini Text Generation API async function getLabDescription() { const prompt Based on the visual cues in the provided lab images (uploaded by the user), describe the purpose of this laboratory. What kind of equipment is present, and what type of research or activities might take place here?; const payload { contents: { parts: { text: prompt } }, model: gemini-2.5-flash-preview-05-20 }; const apiKey ; const apiUrl `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key${apiKey}`; describeBtn.textContent Generating...; describeBtn.disabled true; llmOutputBox.classList.add(active); llmOutputText.textContent Generating a description...; try { const response await fetch(apiUrl, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(payload) }); if (!response.ok) { throw new Error(`API call failed with status: ${response.status}`); } const result await response.json(); const text result?.candidates?.0?.content?.parts?.0?.text || No description available.; llmOutputText.textContent text; } catch (error) { console.error(Error getting lab description:, error); llmOutputText.textContent Error: Could not generate a description.; } finally { describeBtn.textContent ✨ Explain Lab; describeBtn.disabled false; } } // Attach event listeners to buttons narrateBtn.addEventListener(click, narrateTour); describeBtn.addEventListener(click, getLabDescription); };/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]