Help
RSS
API
Feed
Maltego
Contact
Domain > ai-order.a-brand.it
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-01-06
159.100.14.69
(
ClassC
)
Port 80
HTTP/1.1 200 OKetag: 338b-684ae8a0-86832;;;last-modified: Thu, 12 Jun 2025 14:48:00 GMTcontent-type: text/htmlcontent-length: 13195accept-ranges: bytesdate: Tue, 06 Jan 2026 06:50:16 GMTserver: LiteSpeedconnection: Keep-Alive !DOCTYPE html>html langen>head> meta charsetUTF-8 /> title>Voice Chat MVP/title> meta nameviewport contentwidthdevice-width, initial-scale1.0> style> body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; background-color: #0d1117; /* Тёмны фон */ color: #c9d1d9; /* Светлый тес */ text-align: center; margin: 0; padding: 20px; } button { padding: 15px 30px; font-size: 18px; border: none; border-radius: 50px; color: white; cursor: pointer; margin: 10px 0; width: 80%; max-width: 300px; } .start { background-color: #238636; } /* Зеленая кнопк */ .stop { background-color: #da3633; } /* Красная нка */ #log { margin-top: 30px; white-space: pre-line; text-align: left; max-width: 600px; margin-left: auto; margin-right: auto; height: 300px; overflow-y: auto; border: 1px solid #30363d; padding: 10px; border-radius: 10px; background: #161b22; } #timer { margin-top: 10px; font-size: 16px; color: #8b949e; } /* Адаптация под мобильные */ @media (max-width: 600px) { #log { height: 200px; padding: 8px; font-size: 14px; } button { padding: 12px 20px; font-size: 16px; width: 90%; } #timer { font-size: 14px; } } audio { display: none; } /style>/head>body>h1>Voice Chat MVP/h1>p>In English only. Delivery order only./p>button idcallBtn classstart>📞 Call/button>div idtimer>/div>div idlog>h3 data-sourcepos3:1-3:23>General Information/h3>ul data-sourcepos5:1-8:0>li data-sourcepos5:1-5:33>strong>Pizzeria Name:/strong> Bella Napoli/li>li data-sourcepos6:1-6:26>strong>Address:/strong> Via Roma 42/li>li data-sourcepos7:1-8:0>strong>Currency:/strong> EUR/li>/ul>h3 data-sourcepos9:1-9:14>Pizza Menu/h3>ul data-sourcepos11:1-25:0>li data-sourcepos11:1-11:50>strong>Margherita/strong> (6.00 EUR): tomato and mozzarella/li>li data-sourcepos12:1-12:58>strong>Marinara/strong> (5.50 EUR): tomato, garlic, oil and oregano/li>li data-sourcepos13:1-13:68>strong>Prosciutto Cotto/strong> (7.00 EUR): tomato, mozzarella and cooked ham/li>li data-sourcepos14:1-14:57>strong>Funghi/strong> (6.50 EUR): tomato, mozzarella and mushrooms/li>li data-sourcepos15:1-15:69>strong>Salame Piccante/strong> (7.00 EUR): tomato, mozzarella and spicy salami/li>li data-sourcepos16:1-16:71>strong>Caprese/strong> (7.00 EUR): tomato, mozzarella, cherry tomatoes and basil/li>li data-sourcepos17:1-17:74>strong>Romana/strong> (7.50 EUR): tomato, mozzarella, oregano, anchovies and capers/li>li data-sourcepos18:1-18:82>strong>Prosciutto e Funghi/strong> (7.50 EUR): tomato, mozzarella, cooked ham and mushrooms/li>li data-sourcepos19:1-19:72>strong>Tonno e Cipolla/strong> (7.50 EUR): tomato, mozzarella, tuna and red onion/li>li data-sourcepos20:1-20:85>strong>4 Stagioni/strong> (8.00 EUR): tomato, mozzarella, cooked ham, mushrooms and artichokes/li>li data-sourcepos21:1-21:54>strong>Bufala/strong> (7.50 EUR): tomato and buffalo mozzarella/li>li data-sourcepos22:1-22:87>strong>4 Formaggi/strong> (8.00 EUR): tomato, mozzarella, fontina, grana, ricotta and gorgonzola/li>li data-sourcepos23:1-23:77>strong>Porcini/strong> (8.00 EUR): tomato, mozzarella, porcini mushrooms, grana cheese/li>li data-sourcepos24:1-25:0>strong>Calzone/strong> (7.50 EUR): tomato, mozzarella, cooked ham, mushrooms and ricotta/li>/ul>h3 data-sourcepos26:1-26:21>Sizes and Options/h3>ul data-sourcepos28:1-39:0>li data-sourcepos28:1-30:19>strong>Available Sizes:/strong>ul data-sourcepos29:5-30:19>li data-sourcepos29:5-29:21>regular (30 cm)/li>li data-sourcepos30:5-30:19>large (45 cm)/li>/ul>/li>li data-sourcepos31:1-34:26>strong>Extra Toppings (Extras):/strong>ul data-sourcepos32:5-34:26>li data-sourcepos32:5-32:16>prosciutto/li>li data-sourcepos33:5-33:12>funghi/li>li data-sourcepos34:5-34:26>mozzarella di bufala/li>/ul>/li>li data-sourcepos35:1-39:0>strong>Dough and Flour Options:/strong>ul data-sourcepos36:5-39:0>li data-sourcepos36:5-36:58>strong>Flour Types:/strong> normal, organic whole wheat, kamut./li>li data-sourcepos37:5-37:66>strong>Dough Types:/strong> normal dough, stretched dough, kamut dough./li>li data-sourcepos38:5-39:0>strong>Crusts:/strong> ricotta-stuffed crust./li>/ul>/li>/ul>h3 data-sourcepos40:1-40:24>Delivery and Payment/h3>ul data-sourcepos42:1-47:54>li data-sourcepos42:1-42:28>strong>Delivery Time:/strong> 15 min./li>li data-sourcepos43:1-43:27>strong>Delivery Cost:/strong> 1 EUR./li>li data-sourcepos44:1-46:17>strong>Payment Methods:/strong>ul data-sourcepos45:5-46:17>li data-sourcepos45:5-45:10>cash/li>li data-sourcepos46:5-46:17>credit card/li>/ul>/li>li data-sourcepos47:1-47:54>strong>WhatsApp Notifications:/strong> This option is disabled./li>/ul>/div>script> const callBtn document.getElementById(callBtn); const log document.getElementById(log); const timerEl document.getElementById(timer); let ws, mediaStream, audioCtx, mediaProcessor, sourceNode; let isCalling false; let startTime, timerInterval; let mediaSource, sourceBuffer, audioEl; let audioContext; let nextStartTime 0; // Вемя начал воспрозвеения следующег чнка const audioQueue ; // Очередь дл уеров, если нуно едзагружать let isPlaying false; async function startCall() { if (!audioContext) { audioContext new (window.AudioContext || window.webkitAudioContext)(); // (Нбязательно) Можо срзу попытатьс рабудить контект, н лучш по клику // if (audioContext.state suspended) { // audioContext.resume(); // } console.log(AudioContext created/resumed. State:, audioContext.state); nextStartTime audioContext.currentTime; // Инииализируем вемя } // арантируем робудение конткста по действию поьзовтеля if (audioContext.state suspended) { audioContext.resume(); } ws new WebSocket(wss://ai-order.a-brand.it:3004); ws.binaryType arraybuffer; audioCtx new (window.AudioContext || window.webkitAudioContext)({ sampleRate: 16000 }); // 🎧 Настройка MediaSource API mediaSource new MediaSource(); audioEl document.createElement(audio); audioEl.controls true; audioEl.src URL.createObjectURL(mediaSource); document.body.appendChild(audioEl); mediaSource.addEventListener(sourceopen, () > { sourceBuffer mediaSource.addSourceBuffer(audio/mpeg); }); mediaStream await navigator.mediaDevices.getUserMedia({ audio: true }); sourceNode audioCtx.createMediaStreamSource(mediaStream); const processor audioCtx.createScriptProcessor(4096, 1, 1); processor.onaudioprocess (e) > { const input e.inputBuffer.getChannelData(0); const buffer new Int16Array(input.length); for (let i 0; i input.length; i++) { bufferi inputi * 0x7fff; } if (ws.readyState WebSocket.OPEN) { ws.send(buffer.buffer); } }; sourceNode.connect(processor); processor.connect(audioCtx.destination); mediaProcessor processor; ws.onmessage async (event) > { if (event.data instanceof ArrayBuffer) { const audioChunk event.data; // Добавлям чанк очереь н обработку/воспризведени await processAndPlayChunk(audioChunk); } }; ws.onclose () > { if (mediaSource && mediaSource.readyState open) { try { mediaSource.endOfStream(); } catch (e) { console.warn(MediaSource заверше с ошибой:, e); } } }; startTime Date.now(); timerInterval setInterval(() > { const sec Math.floor((Date.now() - startTime) / 1000); const minutes String(Math.floor(sec / 60)).padStart(2, 0); const seconds String(sec % 60).padStart(2, 0); timerEl.innerText ` Duration: ${minutes}:${seconds}`; }, 1000); } async function processAndPlayChunk(arrayBuffer) { // Без async if (!audioContext || audioContext.state ! running) { console.warn(AudioContext not running. Skipping chunk.); // TODO: Возможно, стоит добвть чанк в очеедь а будущее return; } // Используем decodeAudioData - он сам оределит формат (MP3, WAV и .д.) // и вернет Promise с готвым AudioBuffer audioContext.decodeAudioData(arrayBuffer).then(function(decodedBuffer) { // Успешн декодировано! decodedBuffer - это наш AudioBuffer // Тепеь с ним ожно рабтать кк раньше // --- Планирвание воспроизвеения --- var source audioContext.createBufferSource(); source.buffer decodedBuffer; // Исользуем декодировнный буфр source.connect(audioContext.destination); var currentTime audioContext.currentTime; // Проврка и установка nextStartTime (как в преддущем примр) if (nextStartTime 0 && currentTime > 0) { nextStartTime currentTime; } else if (nextStartTime 0) { console.error(Cannot schedule accurately yet (currentTime is 0). Skipping chunk.); return; } var startTime Math.max(currentTime, nextStartTime); source.start(startTime); // бновляем вре нчала для СЛЕДУЮЩГО чанка // Используем duration з декодированнго буфера nextStartTime startTime + decodedBuffer.duration; }).catch(function(error) { // Ошибка при декдировании - воможн, чанк поврежде ии неизвестный фома console.error(Error decoding audio data:, error); // Возожне ошибки: // DOMException: Unable to decode audio data - чак нполнй или форма не подеживаетс браузером }); } function stopCall() { if (ws) { ws.send(JSON.stringify({ event: HANG_UP })); ws.close(); } if (mediaProcessor) mediaProcessor.disconnect(); if (sourceNode) sourceNode.disconnect(); if (mediaStream) mediaStream.getTracks().forEach(track > track.stop()); clearInterval(timerInterval); timerEl.innerText ; if (audioEl) audioEl.remove(); audioEl null; mediaSource null; sourceBuffer null; } callBtn.onclick () > { if (!isCalling) { isCalling true; callBtn.innerText 🔴 Cancel; callBtn.classList.remove(start); callBtn.classList.add(stop); startCall(); } else { isCalling false; callBtn.innerText Позвонить; callBtn.classList.remove(stop); callBtn.classList.add(start); stopCall(); } };/script>/body>/html>
Port 443
HTTP/1.1 200 OKetag: 338b-684ae8a0-86832;;;last-modified: Thu, 12 Jun 2025 14:48:00 GMTcontent-type: text/htmlcontent-length: 13195accept-ranges: bytesdate: Tue, 06 Jan 2026 06:50:17 GMTserver: LiteSpeedalt-svc: h3:443; ma2592000, h3-29:443; ma2592000, h3-Q050:443; ma2592000, h3-Q046:443; ma2592000, h3-Q043:443; ma2592000, quic:443; ma2592000; v43,46connection: Keep-Alive !DOCTYPE html>html langen>head> meta charsetUTF-8 /> title>Voice Chat MVP/title> meta nameviewport contentwidthdevice-width, initial-scale1.0> style> body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; background-color: #0d1117; /* Тёмны фон */ color: #c9d1d9; /* Светлый тес */ text-align: center; margin: 0; padding: 20px; } button { padding: 15px 30px; font-size: 18px; border: none; border-radius: 50px; color: white; cursor: pointer; margin: 10px 0; width: 80%; max-width: 300px; } .start { background-color: #238636; } /* Зеленая кнопк */ .stop { background-color: #da3633; } /* Красная нка */ #log { margin-top: 30px; white-space: pre-line; text-align: left; max-width: 600px; margin-left: auto; margin-right: auto; height: 300px; overflow-y: auto; border: 1px solid #30363d; padding: 10px; border-radius: 10px; background: #161b22; } #timer { margin-top: 10px; font-size: 16px; color: #8b949e; } /* Адаптация под мобильные */ @media (max-width: 600px) { #log { height: 200px; padding: 8px; font-size: 14px; } button { padding: 12px 20px; font-size: 16px; width: 90%; } #timer { font-size: 14px; } } audio { display: none; } /style>/head>body>h1>Voice Chat MVP/h1>p>In English only. Delivery order only./p>button idcallBtn classstart>📞 Call/button>div idtimer>/div>div idlog>h3 data-sourcepos3:1-3:23>General Information/h3>ul data-sourcepos5:1-8:0>li data-sourcepos5:1-5:33>strong>Pizzeria Name:/strong> Bella Napoli/li>li data-sourcepos6:1-6:26>strong>Address:/strong> Via Roma 42/li>li data-sourcepos7:1-8:0>strong>Currency:/strong> EUR/li>/ul>h3 data-sourcepos9:1-9:14>Pizza Menu/h3>ul data-sourcepos11:1-25:0>li data-sourcepos11:1-11:50>strong>Margherita/strong> (6.00 EUR): tomato and mozzarella/li>li data-sourcepos12:1-12:58>strong>Marinara/strong> (5.50 EUR): tomato, garlic, oil and oregano/li>li data-sourcepos13:1-13:68>strong>Prosciutto Cotto/strong> (7.00 EUR): tomato, mozzarella and cooked ham/li>li data-sourcepos14:1-14:57>strong>Funghi/strong> (6.50 EUR): tomato, mozzarella and mushrooms/li>li data-sourcepos15:1-15:69>strong>Salame Piccante/strong> (7.00 EUR): tomato, mozzarella and spicy salami/li>li data-sourcepos16:1-16:71>strong>Caprese/strong> (7.00 EUR): tomato, mozzarella, cherry tomatoes and basil/li>li data-sourcepos17:1-17:74>strong>Romana/strong> (7.50 EUR): tomato, mozzarella, oregano, anchovies and capers/li>li data-sourcepos18:1-18:82>strong>Prosciutto e Funghi/strong> (7.50 EUR): tomato, mozzarella, cooked ham and mushrooms/li>li data-sourcepos19:1-19:72>strong>Tonno e Cipolla/strong> (7.50 EUR): tomato, mozzarella, tuna and red onion/li>li data-sourcepos20:1-20:85>strong>4 Stagioni/strong> (8.00 EUR): tomato, mozzarella, cooked ham, mushrooms and artichokes/li>li data-sourcepos21:1-21:54>strong>Bufala/strong> (7.50 EUR): tomato and buffalo mozzarella/li>li data-sourcepos22:1-22:87>strong>4 Formaggi/strong> (8.00 EUR): tomato, mozzarella, fontina, grana, ricotta and gorgonzola/li>li data-sourcepos23:1-23:77>strong>Porcini/strong> (8.00 EUR): tomato, mozzarella, porcini mushrooms, grana cheese/li>li data-sourcepos24:1-25:0>strong>Calzone/strong> (7.50 EUR): tomato, mozzarella, cooked ham, mushrooms and ricotta/li>/ul>h3 data-sourcepos26:1-26:21>Sizes and Options/h3>ul data-sourcepos28:1-39:0>li data-sourcepos28:1-30:19>strong>Available Sizes:/strong>ul data-sourcepos29:5-30:19>li data-sourcepos29:5-29:21>regular (30 cm)/li>li data-sourcepos30:5-30:19>large (45 cm)/li>/ul>/li>li data-sourcepos31:1-34:26>strong>Extra Toppings (Extras):/strong>ul data-sourcepos32:5-34:26>li data-sourcepos32:5-32:16>prosciutto/li>li data-sourcepos33:5-33:12>funghi/li>li data-sourcepos34:5-34:26>mozzarella di bufala/li>/ul>/li>li data-sourcepos35:1-39:0>strong>Dough and Flour Options:/strong>ul data-sourcepos36:5-39:0>li data-sourcepos36:5-36:58>strong>Flour Types:/strong> normal, organic whole wheat, kamut./li>li data-sourcepos37:5-37:66>strong>Dough Types:/strong> normal dough, stretched dough, kamut dough./li>li data-sourcepos38:5-39:0>strong>Crusts:/strong> ricotta-stuffed crust./li>/ul>/li>/ul>h3 data-sourcepos40:1-40:24>Delivery and Payment/h3>ul data-sourcepos42:1-47:54>li data-sourcepos42:1-42:28>strong>Delivery Time:/strong> 15 min./li>li data-sourcepos43:1-43:27>strong>Delivery Cost:/strong> 1 EUR./li>li data-sourcepos44:1-46:17>strong>Payment Methods:/strong>ul data-sourcepos45:5-46:17>li data-sourcepos45:5-45:10>cash/li>li data-sourcepos46:5-46:17>credit card/li>/ul>/li>li data-sourcepos47:1-47:54>strong>WhatsApp Notifications:/strong> This option is disabled./li>/ul>/div>script> const callBtn document.getElementById(callBtn); const log document.getElementById(log); const timerEl document.getElementById(timer); let ws, mediaStream, audioCtx, mediaProcessor, sourceNode; let isCalling false; let startTime, timerInterval; let mediaSource, sourceBuffer, audioEl; let audioContext; let nextStartTime 0; // Вемя начал воспрозвеения следующег чнка const audioQueue ; // Очередь дл уеров, если нуно едзагружать let isPlaying false; async function startCall() { if (!audioContext) { audioContext new (window.AudioContext || window.webkitAudioContext)(); // (Нбязательно) Можо срзу попытатьс рабудить контект, н лучш по клику // if (audioContext.state suspended) { // audioContext.resume(); // } console.log(AudioContext created/resumed. State:, audioContext.state); nextStartTime audioContext.currentTime; // Инииализируем вемя } // арантируем робудение конткста по действию поьзовтеля if (audioContext.state suspended) { audioContext.resume(); } ws new WebSocket(wss://ai-order.a-brand.it:3004); ws.binaryType arraybuffer; audioCtx new (window.AudioContext || window.webkitAudioContext)({ sampleRate: 16000 }); // 🎧 Настройка MediaSource API mediaSource new MediaSource(); audioEl document.createElement(audio); audioEl.controls true; audioEl.src URL.createObjectURL(mediaSource); document.body.appendChild(audioEl); mediaSource.addEventListener(sourceopen, () > { sourceBuffer mediaSource.addSourceBuffer(audio/mpeg); }); mediaStream await navigator.mediaDevices.getUserMedia({ audio: true }); sourceNode audioCtx.createMediaStreamSource(mediaStream); const processor audioCtx.createScriptProcessor(4096, 1, 1); processor.onaudioprocess (e) > { const input e.inputBuffer.getChannelData(0); const buffer new Int16Array(input.length); for (let i 0; i input.length; i++) { bufferi inputi * 0x7fff; } if (ws.readyState WebSocket.OPEN) { ws.send(buffer.buffer); } }; sourceNode.connect(processor); processor.connect(audioCtx.destination); mediaProcessor processor; ws.onmessage async (event) > { if (event.data instanceof ArrayBuffer) { const audioChunk event.data; // Добавлям чанк очереь н обработку/воспризведени await processAndPlayChunk(audioChunk); } }; ws.onclose () > { if (mediaSource && mediaSource.readyState open) { try { mediaSource.endOfStream(); } catch (e) { console.warn(MediaSource заверше с ошибой:, e); } } }; startTime Date.now(); timerInterval setInterval(() > { const sec Math.floor((Date.now() - startTime) / 1000); const minutes String(Math.floor(sec / 60)).padStart(2, 0); const seconds String(sec % 60).padStart(2, 0); timerEl.innerText ` Duration: ${minutes}:${seconds}`; }, 1000); } async function processAndPlayChunk(arrayBuffer) { // Без async if (!audioContext || audioContext.state ! running) { console.warn(AudioContext not running. Skipping chunk.); // TODO: Возможно, стоит добвть чанк в очеедь а будущее return; } // Используем decodeAudioData - он сам оределит формат (MP3, WAV и .д.) // и вернет Promise с готвым AudioBuffer audioContext.decodeAudioData(arrayBuffer).then(function(decodedBuffer) { // Успешн декодировано! decodedBuffer - это наш AudioBuffer // Тепеь с ним ожно рабтать кк раньше // --- Планирвание воспроизвеения --- var source audioContext.createBufferSource(); source.buffer decodedBuffer; // Исользуем декодировнный буфр source.connect(audioContext.destination); var currentTime audioContext.currentTime; // Проврка и установка nextStartTime (как в преддущем примр) if (nextStartTime 0 && currentTime > 0) { nextStartTime currentTime; } else if (nextStartTime 0) { console.error(Cannot schedule accurately yet (currentTime is 0). Skipping chunk.); return; } var startTime Math.max(currentTime, nextStartTime); source.start(startTime); // бновляем вре нчала для СЛЕДУЮЩГО чанка // Используем duration з декодированнго буфера nextStartTime startTime + decodedBuffer.duration; }).catch(function(error) { // Ошибка при декдировании - воможн, чанк поврежде ии неизвестный фома console.error(Error decoding audio data:, error); // Возожне ошибки: // DOMException: Unable to decode audio data - чак нполнй или форма не подеживаетс браузером }); } function stopCall() { if (ws) { ws.send(JSON.stringify({ event: HANG_UP })); ws.close(); } if (mediaProcessor) mediaProcessor.disconnect(); if (sourceNode) sourceNode.disconnect(); if (mediaStream) mediaStream.getTracks().forEach(track > track.stop()); clearInterval(timerInterval); timerEl.innerText ; if (audioEl) audioEl.remove(); audioEl null; mediaSource null; sourceBuffer null; } callBtn.onclick () > { if (!isCalling) { isCalling true; callBtn.innerText 🔴 Cancel; callBtn.classList.remove(start); callBtn.classList.add(stop); startCall(); } else { isCalling false; callBtn.innerText Позвонить; callBtn.classList.remove(stop); callBtn.classList.add(start); stopCall(); } };/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
]