Help
RSS
API
Feed
Maltego
Contact
Domain > bo3bdo.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2022-10-09
13.249.139.52
(
ClassC
)
2022-10-14
108.139.15.22
(
ClassC
)
2025-08-28
77.69.251.220
(
ClassC
)
Port 80
HTTP/1.1 302 FoundDate: Thu, 28 Aug 2025 04:59:18 GMTServer: ApacheLocation: https://bo3bdo.com/Content-Length: 203Content-Type: text/html; charsetiso-8859-1 !DOCTYPE HTML PUBLIC -//IETF//DTD HTML 2.0//EN>html>head>title>302 Found/title>/head>body>h1>Found/h1>p>The document has moved a hrefhttps://bo3bdo.com/>here/a>./p>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 28 Aug 2025 04:59:19 GMTServer: ApacheCache-Control: max-age0, must-revalidate, no-cache, no-store, privatePragma: no-cacheExpires: Fri, 01 Jan 1990 00:00:00 GMTSet-Cookie: XSRF-TOKENeyJpdiI6IkxhMHNBR3VCTkpHWGpRcWVuTVBPWlE9PSIsInZhbHVlIjoiSWVBblV5dXFBczhuNm5US1N6Q2RWOFpkdU5JaHVmVUNIbG9NT0NPcUFBK1RVaEFSa3ptRWFycnA1WEhtR0VybDVYNU5GT3JULzNBZXU1U2hLTHJraGFpVHVPcEE5ZzhJR3BYTnVMS1JYeWUxUW02ZThyRWoxRURrTG1uM0U4QVoiLCJtYWMiOiJiZWM0ZGMyZTE1NzZkNWVhYWRjZmZiMjAzMjI2YWNhZWU0ZTM2YWExMjU0MWFhMGUzZmUyZjBlMDYyMTEzMTQ2IiwidGFnIjoiIn0%3D; expiresThu, 28 Aug 2025 06:59:19 GMT; Max-Age7200; path/; secure; samesitelaxSet-Cookie: bo3bdo_sessioneyJpdiI6ImJyaEVQTURzc0IvcXl3RWxSN2ZidHc9PSIsInZhbHVlIjoiaFhXdXdyTFl1bFRPK0YrekZQVzJRK2tLZFBaQTNsck9MMDBTTENVR1gwNmxZd2ZKYUFNZEJlY0RXZUd5eXcxMTJUYkZzanBrUXZ6NXd4Z2ZsanlyUTZEa3ZTaVlxS1k5QTFxaWFIdTRid0FEV0t6a2VTSGoxcjVNQk5kRmZod2kiLCJtYWMiOiI1M2Y5N2FmYWNjOTYzMWM4NTRjMWEyOThiZjVkZmIxMTQ3NzBjNThkZGMwZDc4Zjg2ZTUzMzE0OWNiNjkwMTg3IiwidGFnIjoiIn0%3D; expiresThu, 28 Aug 2025 06:59:19 GMT; Max-Age7200; path/; secure; httponly; samesitelaxUpgrade: h2,h2cConnection: UpgradeVary: Accept-EncodingTransfer-Encoding: chunkedContent-Type: text/html; charsetUTF-8 !DOCTYPE html>html langen>head> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1> meta namecsrf-token contentT6cdsNP3h8nZwYpMpoPBTrnl78CdsoIrEpwtu539> title>My Developer Blog/title> !-- Fonts --> link relpreconnect hrefhttps://fonts.bunny.net> link hrefhttps://fonts.bunny.net/css?familyinter:400,500,600,700&displayswap relstylesheet /> !-- Highlight.js for syntax highlighting --> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/tokyo-night-dark.min.css> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/php.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/javascript.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/css.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/html.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/sql.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/json.min.js>/script> !-- Content styles --> link relstylesheet hrefhttps://bo3bdo.com/css/content-styles.css> !-- Styles --> link relpreload asstyle hrefhttps://bo3bdo.com/build/assets/app-B2Wf4fNX.css />link relmodulepreload asscript hrefhttps://bo3bdo.com/build/assets/app-C_ecZGEM.js />link relstylesheet hrefhttps://bo3bdo.com/build/assets/app-B2Wf4fNX.css data-navigate-trackreload />script typemodule srchttps://bo3bdo.com/build/assets/app-C_ecZGEM.js data-navigate-trackreload>/script> !-- Livewire Styles -->style >wire\:loadingwire\:loading, wire\:loading\.delaywire\:loading\.delay, wire\:loading\.inline-blockwire\:loading\.inline-block, wire\:loading\.inlinewire\:loading\.inline, wire\:loading\.blockwire\:loading\.block, wire\:loading\.flexwire\:loading\.flex, wire\:loading\.tablewire\:loading\.table, wire\:loading\.gridwire\:loading\.grid, wire\:loading\.inline-flexwire\:loading\.inline-flex {display: none;}wire\:loading\.delay\.nonewire\:loading\.delay\.none, wire\:loading\.delay\.shortestwire\:loading\.delay\.shortest, wire\:loading\.delay\.shorterwire\:loading\.delay\.shorter, wire\:loading\.delay\.shortwire\:loading\.delay\.short, wire\:loading\.delay\.defaultwire\:loading\.delay\.default, wire\:loading\.delay\.longwire\:loading\.delay\.long, wire\:loading\.delay\.longerwire\:loading\.delay\.longer, wire\:loading\.delay\.longestwire\:loading\.delay\.longest {display: none;}wire\:offlinewire\:offline {display: none;}wire\:dirty:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}x-cloak {display: none !important;}wire\:cloak {display: none !important;}/style>/head>body classbg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 antialiased> div classmin-h-screen> !-- Navigation --> nav classbg-white dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700 sticky top-0 z-50> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8> div classflex justify-between items-center h-16> !-- Logo --> div classflex items-center> a hrefhttps://bo3bdo.com classtext-xl font-bold text-gray-900 dark:text-white> bo3bdo /a> /div> !-- Navigation Links --> div classhidden md:flex items-center space-x-8> a hrefhttps://bo3bdo.com classtext-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white transition-colors text-blue-600 dark:text-blue-400> Home /a> a hrefhttps://bo3bdo.com/posts classtext-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white transition-colors > Posts /a> a hrefhttps://bo3bdo.com/categories classtext-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white transition-colors > Categories /a> /div> !-- Mobile menu button --> div classmd:hidden> button idmobile-menu-toggle classtext-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6h16M4 12h16M4 18h16 /> /svg> /button> /div> !-- Theme Toggle & Admin --> div classhidden md:flex items-center space-x-4> !-- Theme Toggle --> button idtheme-toggle classp-2 rounded-lg text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors> svg classw-5 h-5 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z /> /svg> /button> /div> /div> !-- Mobile menu --> div idmobile-menu classmd:hidden hidden> div classpx-2 pt-2 pb-3 space-y-1 border-t border-gray-200 dark:border-gray-700> a hrefhttps://bo3bdo.com classblock px-3 py-2 rounded-md text-base font-medium text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900> Home /a> a hrefhttps://bo3bdo.com/posts classblock px-3 py-2 rounded-md text-base font-medium text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors > Posts /a> a hrefhttps://bo3bdo.com/categories classblock px-3 py-2 rounded-md text-base font-medium text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors > Categories /a> !-- Mobile Theme Toggle --> div classpx-3 py-2> button idmobile-theme-toggle classflex items-center space-x-2 w-full text-left p-2 rounded-lg text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors> svg classw-5 h-5 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z /> /svg> span>Toggle Theme/span> /button> /div> /div> /div> /div> /nav> !-- Main Content --> main> div wire:snapshot{"data":,"memo":{"id":"Ie4eJ6ClyKr9tQX89zho","name":"home-page","path":"\/","method":"GET","children":,"scripts":,"assets":,"errors":,"locale":"en"},"checksum":"245231d8b1c340d4d5123c944b26673c8cfbc3f36be5147e10fe29c82b45d625"} wire:effects wire:idIe4eJ6ClyKr9tQX89zho classmin-h-screen bg-white dark:bg-gray-900> div classmax-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-12> !-- Enhanced Hero Section with Typed.js --> div classtext-center mb-16> div classmb-6> h1 classtext-4xl md:text-5xl lg:text-6xl font-bold text-gray-900 dark:text-white mb-4 leading-tight> Hello, Im span classtext-blue-600 dark:text-blue-400>bo3bdo/span> /h1> div classtext-2xl md:text-3xl font-semibold text-gray-700 dark:text-gray-300 mb-8> span idtyped-text>/span> /div> /div> p classtext-lg md:text-xl text-gray-600 dark:text-gray-400 mb-8 max-w-3xl mx-auto leading-relaxed> I share my experiences in web development, programming tutorials, and the latest technologies in the tech world. Discover useful articles and educational tutorials here. /p> div classflex flex-col sm:flex-row gap-4 justify-center> a hrefhttps://bo3bdo.com/posts classinline-flex items-center px-8 py-4 bg-blue-600 text-white text-lg font-medium rounded-lg hover:bg-blue-700 transform hover:scale-105 transition-all duration-200 shadow-lg hover:shadow-xl> svg classw-5 h-5 mr-2 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z>/path> /svg> Browse Articles /a> a hrefhttps://bo3bdo.com/categories classinline-flex items-center px-8 py-4 border-2 border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 text-lg font-medium rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800 transform hover:scale-105 transition-all duration-200> svg classw-5 h-5 mr-2 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM19 11H5m14-7l2 2-2 2M5 4l2 2-2 2>/path> /svg> Categories /a> /div> /div> !-- Recent Posts Header --> div classmb-8> h2 classtext-2xl font-bold text-gray-900 dark:text-white mb-2>Recent Posts/h2> p classtext-gray-600 dark:text-gray-400 text-sm>Latest articles from the blog/p> /div> !-- Posts List --> div classspace-y-6> article classgroup bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 hover:shadow-lg transition-all duration-200> div classflex flex-col md:flex-row> !-- محتوى المقال على اليسار --> div classflex-1 p-6> div classflex items-center justify-between mb-3> span classinline-flex items-center px-3 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200> Ubuntu /span> time classtext-sm text-gray-500 dark:text-gray-400 datetime2025-07-25 21:55:19> Jul 25, 2025 /time> /div> h3 classtext-xl font-bold text-gray-900 dark:text-white mb-3 line-clamp-2> a hrefhttps://bo3bdo.com/posts/zsh-cheat-sheet-free-pdf-download classhover:text-gray-700 dark:hover:text-gray-300 transition-colors> Zsh Cheat Sheet Free PDF Download /a> /h3> p classtext-gray-600 dark:text-gray-300 mb-4 line-clamp-2 leading-relaxed> Zsh is a powerful command-line shell for operating systems based on Unix that is renowned for its customization options and wide range of fe... /p> div classflex items-center justify-between> div classflex items-center space-x-3 text-sm text-gray-500 dark:text-gray-400> span>by Hamad/span> span>•/span> span>1 min read/span> /div> a hrefhttps://bo3bdo.com/posts/zsh-cheat-sheet-free-pdf-download classinline-flex items-center px-4 py-2 bg-gray-800 text-white text-sm font-medium rounded-lg hover:bg-gray-900 transition-colors > Read Article svg classw-4 h-4 ml-2 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM17 8l4 4m0 0l-4 4m4-4H3>/path> /svg> /a> /div> /div> !-- صورة المقال على اليمين --> div classflex-shrink-0 md:w-96> img src/storage/posts/featured-images/01K11SAQKZCEWAJ5D1CZCBR1PR.png altZsh Cheat Sheet Free PDF Download classw-full h-48 md:h-full object-cover rounded-t-lg md:rounded-t-none md:rounded-r-lg> /div> /div> /article> article classgroup bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 hover:shadow-lg transition-all duration-200> div classflex flex-col md:flex-row> !-- محتوى المقال على اليسار --> div classflex-1 p-6> div classflex items-center justify-between mb-3> span classinline-flex items-center px-3 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200> Ubuntu /span> time classtext-sm text-gray-500 dark:text-gray-400 datetime2025-07-25 21:45:06> Jul 25, 2025 /time> /div> h3 classtext-xl font-bold text-gray-900 dark:text-white mb-3 line-clamp-2> a hrefhttps://bo3bdo.com/posts/how-to-set-up-ssh-key-authentication-on-ubuntu-2404 classhover:text-gray-700 dark:hover:text-gray-300 transition-colors> How to Set Up SSH Key Authentication on Ubuntu 24.04 /a> /h3> p classtext-gray-600 dark:text-gray-300 mb-4 line-clamp-2 leading-relaxed> If you're tired of typing your password every time you connect to your server — or you're aiming for stronger security — using SSH keys is... /p> div classflex items-center justify-between> div classflex items-center space-x-3 text-sm text-gray-500 dark:text-gray-400> span>by Hamad/span> span>•/span> span>2 min read/span> /div> a hrefhttps://bo3bdo.com/posts/how-to-set-up-ssh-key-authentication-on-ubuntu-2404 classinline-flex items-center px-4 py-2 bg-gray-800 text-white text-sm font-medium rounded-lg hover:bg-gray-900 transition-colors > Read Article svg classw-4 h-4 ml-2 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM17 8l4 4m0 0l-4 4m4-4H3>/path> /svg> /a> /div> /div> !-- صورة المقال على اليمين --> div classflex-shrink-0 md:w-96> img src/storage/posts/featured-images/01K11RR0WMPJT21CE7VQEW7XKB.png altHow to Set Up SSH Key Authentication on Ubuntu 24.04 classw-full h-48 md:h-full object-cover rounded-t-lg md:rounded-t-none md:rounded-r-lg> /div> /div> /article> article classgroup bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 hover:shadow-lg transition-all duration-200> div classflex flex-col md:flex-row> !-- محتوى المقال على اليسار --> div classflex-1 p-6> div classflex items-center justify-between mb-3> span classinline-flex items-center px-3 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200> windows /span> time classtext-sm text-gray-500 dark:text-gray-400 datetime2025-07-25 10:14:21> Jul 25, 2025 /time> /div> h3 classtext-xl font-bold text-gray-900 dark:text-white mb-3 line-clamp-2> a hrefhttps://bo3bdo.com/posts/windows-terminal classhover:text-gray-700 dark:hover:text-gray-300 transition-colors> windows terminal /a> /h3> p classtext-gray-600 dark:text-gray-300 mb-4 line-clamp-2 leading-relaxed> Windows Terminal is a modern, feature-rich terminal application for command-line users that includes many of the features you might need. Bu... /p> div classflex items-center justify-between> div classflex items-center space-x-3 text-sm text-gray-500 dark:text-gray-400> span>by Hamad/span> span>•/span> span>3 min read/span> /div> a hrefhttps://bo3bdo.com/posts/windows-terminal classinline-flex items-center px-4 py-2 bg-gray-800 text-white text-sm font-medium rounded-lg hover:bg-gray-900 transition-colors > Read Article svg classw-4 h-4 ml-2 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM17 8l4 4m0 0l-4 4m4-4H3>/path> /svg> /a> /div> /div> !-- صورة المقال على اليمين --> div classflex-shrink-0 md:w-96> img src/storage/posts/featured-images/01K10H77QJBC4THV1PZ60KFGZE.png altwindows terminal classw-full h-48 md:h-full object-cover rounded-t-lg md:rounded-t-none md:rounded-r-lg> /div> /div> /article> /div> !-- View All Posts Button --> div classmt-12 text-center> a hrefhttps://bo3bdo.com/posts classinline-flex items-center px-8 py-3 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors border border-gray-200 dark:border-gray-600> View All Posts svg classw-5 h-5 ml-2 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM13 7l5 5m0 0l-5 5m5-5H6>/path> /svg> /a> /div> !-- Simple Stats (Optional) --> div classmt-16 pt-8 border-t border-gray-200 dark:border-gray-700> div classtext-center> p classtext-sm text-gray-500 dark:text-gray-400> Latest updates • span classfont-medium>3/span> recent posts /p> /div> /div> /div>/div> /main> !-- Footer --> footer classbg-gray-50 dark:bg-gray-800 border-t border-gray-200 dark:border-gray-700 mt-16> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12> div classgrid grid-cols-1 md:grid-cols-4 gap-8> div classcol-span-1 md:col-span-2> h3 classtext-lg font-semibold text-gray-900 dark:text-white mb-4>About/h3> p classtext-gray-600 dark:text-gray-400 text-sm leading-relaxed> Welcome to my developer blog where I share insights, tutorials, and experiences about web development, particularly focusing on PHP, Laravel, and Filament. Stay updated with the latest trends and best practices. /p> /div> div> h3 classtext-lg font-semibold text-gray-900 dark:text-white mb-4>Categories/h3> ul classspace-y-2 text-sm text-gray-600 dark:text-gray-400> li>a href# classhover:text-gray-900 dark:hover:text-white transition-colors>Laravel/a>/li> li>a href# classhover:text-gray-900 dark:hover:text-white transition-colors>PHP/a>/li> li>a href# classhover:text-gray-900 dark:hover:text-white transition-colors>Filament/a>/li> li>a href# classhover:text-gray-900 dark:hover:text-white transition-colors>JavaScript/a>/li> /ul> /div> div> h3 classtext-lg font-semibold text-gray-900 dark:text-white mb-4>Connect/h3> div classflex space-x-4> a href# classtext-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors> svg classw-5 h-5 fillcurrentColor viewBox0 0 24 24> path dM24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z/> /svg> /a> a href# classtext-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors> svg classw-5 h-5 fillcurrentColor viewBox0 0 24 24> path dM22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z/> /svg> /a> a href# classtext-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors> svg classw-5 h-5 fillcurrentColor viewBox0 0 24 24> path dM12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.174-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.39.099.12.112.225.085.347-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.402.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.357-.629-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24.009 12.017 24.009c6.624 0 11.99-5.367 11.99-11.988C24.007 5.367 18.641.001.029 12.017.001z/> /svg> /a> /div> /div> /div> div classmt-8 pt-8 border-t border-gray-200 dark:border-gray-700> p classtext-center text-sm text-gray-600 dark:text-gray-400> © 2025 bo3bdo. All rights reserved. /p> /div> /div> /footer> /div> script src/livewire/livewire.min.js?iddf3a17f2 data-csrfT6cdsNP3h8nZwYpMpoPBTrnl78CdsoIrEpwtu539 data-update-uri/livewire/update data-navigate-oncetrue>/script> !-- Enhanced Code Copy Script - Inspired by sinnbeck.dev --> script> console.log(Enhanced copy script loaded); // Initialize Highlight.js if (typeof hljs ! undefined) { hljs.highlightAll(); console.log(Highlight.js initialized); } function initializeCopyButtons() { console.log(🔄 Initializing persistent copy buttons); const copyButtonLabel `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z /> /svg>`; // Find all pre blocks with multiple selectors let blocks document.querySelectorAll(pre, .content-display pre, article pre, .prose pre); console.log(`📋 Found ${blocks.length} code blocks total`); // DO NOT remove existing buttons - just add if missing blocks.forEach((block, index) > { // Add button regardless of clipboard API support if (!block.querySelector(.persistent-copy-btn)) { // Ensure the pre block has position relative if (getComputedStyle(block).position static) { block.style.position relative; } let button document.createElement(button); button.innerHTML copyButtonLabel; button.className persistent-copy-btn; button.style.cssText ` position: absolute !important; top: 8px !important; right: 8px !important; background: rgba(55, 65, 81, 0.9) !important; color: #d1d5db !important; border: none !important; padding: 8px !important; border-radius: 6px !important; font-size: 12px !important; font-weight: 600 !important; cursor: pointer !important; z-index: 9999 !important; display: flex !important; align-items: center !important; justify-content: center !important; width: 32px !important; height: 32px !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2) !important; transition: all 0.2s ease !important; opacity: 0.8 !important; visibility: visible !important; pointer-events: auto !important; backdrop-filter: blur(4px) !important; `; button.setAttribute(aria-label, Copy code to clipboard); button.addEventListener(click, copyCodeFallback); // Add button and ensure it stays block.appendChild(button); console.log(`✅ Persistent copy button added to block ${index + 1}`); } }); console.log(`🎉 Total persistent copy buttons: ${document.querySelectorAll(.persistent-copy-btn).length}`); } // Fallback copy function that works without Clipboard API function copyCodeFallback(event) { console.log(🔄 Fallback copy button clicked); const button event.currentTarget; const pre button.parentElement; const code pre.querySelector(code); console.log(📝 Elements found:, { button, pre, code }); // Get text to copy let textToCopy ; if (code) { textToCopy code.innerText || code.textContent || ; } else { textToCopy pre.innerText || pre.textContent || ; } // Remove any button content from the copied text textToCopy textToCopy.replace(/📋.*?Copy/g, ).replace(/✅.*?Copied!/g, ).trim(); console.log(📋 Text to copy:, textToCopy.substring(0, 100) + ...); if (!textToCopy) { console.error(❌ No text to copy); return; } // Create temporary textarea for copying const textarea document.createElement(textarea); textarea.value textToCopy; textarea.style.position fixed; textarea.style.left -9999px; textarea.style.top -9999px; document.body.appendChild(textarea); try { // Select and copy textarea.select(); textarea.setSelectionRange(0, 99999); // For mobile devices const successful document.execCommand(copy); if (successful) { console.log(✅ Fallback copy successful); // Visual feedback - success icon const originalHtml button.innerHTML; button.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM5 13l4 4L19 7 /> /svg>`; button.style.background rgba(34, 197, 94, 0.9) !important; button.style.color white !important; button.style.opacity 1 !important; setTimeout(() > { button.innerHTML originalHtml; button.style.background rgba(55, 65, 81, 0.9) !important; button.style.color #d1d5db !important; button.style.opacity 0.8 !important; }, 2000); } else { throw new Error(Copy command failed); } } catch (err) { console.error(❌ Fallback copy failed:, err); // Error icon button.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM6 18L18 6M6 6l12 12 /> /svg>`; button.style.background rgba(239, 68, 68, 0.9) !important; button.style.color white !important; setTimeout(() > { button.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z /> /svg>`; button.style.background rgba(55, 65, 81, 0.9) !important; button.style.color #d1d5db !important; }, 2000); } finally { // Clean up document.body.removeChild(textarea); } } async function copyCode(event) { console.log(🔄 Copy button clicked); const button event.currentTarget; const pre button.parentElement; const code pre.querySelector(code); console.log(📝 Elements found:, { button, pre, code }); if (!code && !pre) { console.error(❌ No code or pre element found); return; } // Simple text extraction - prioritize code element, fallback to pre let textToCopy ; if (code) { textToCopy code.innerText || code.textContent || ; } else { textToCopy pre.innerText || pre.textContent || ; } // Clean up the text textToCopy textToCopy.trim(); console.log(📋 Text to copy:, textToCopy.substring(0, 100) + ...); if (!textToCopy) { console.error(❌ No text to copy); return; } try { // Check if clipboard API is available if (!navigator.clipboard) { console.error(❌ Clipboard API not available); // Fallback method const textarea document.createElement(textarea); textarea.value textToCopy; document.body.appendChild(textarea); textarea.select(); document.execCommand(copy); document.body.removeChild(textarea); console.log(✅ Fallback copy method used); } else { await navigator.clipboard.writeText(textToCopy); console.log(✅ Clipboard API copy successful); } // Visual feedback const originalHtml button.innerHTML; button.innerHTML ✅ Copied!; button.style.background #10b981 !important; setTimeout(() > { button.innerHTML originalHtml; button.style.background #3b82f6 !important; }, 2000); console.log(✅ Copy operation completed successfully); } catch (err) { console.error(❌ Copy failed:, err); button.innerHTML ❌ Failed; button.style.background #ef4444 !important; setTimeout(() > { button.innerHTML 📋 Copy; button.style.background #3b82f6 !important; }, 2000); } } // Initialize on different events with more aggressive detection document.addEventListener(DOMContentLoaded, function() { console.log(🚀 DOM Content Loaded - initializing); initializeCopyButtons(); setTimeout(function() { if (typeof hljs ! undefined) { hljs.highlightAll(); console.log(✨ HighlightJS applied); } initializeCopyButtons(); }, 500); }); document.addEventListener(livewire:navigated, function() { console.log(🔄 Livewire navigated - reinitializing); setTimeout(function() { if (typeof hljs ! undefined) { hljs.highlightAll(); } initializeCopyButtons(); }, 300); }); document.addEventListener(livewire:load, function() { console.log(⚡ Livewire loaded - initializing); setTimeout(function() { if (typeof hljs ! undefined) { hljs.highlightAll(); } initializeCopyButtons(); }, 200); }); // Force initialization with multiple attempts setTimeout(() > initializeCopyButtons(), 1000); setTimeout(() > initializeCopyButtons(), 2000); setTimeout(() > initializeCopyButtons(), 3000); /script> !-- Emergency Copy Button Script --> script> // Emergency copy button injection - works without Clipboard API window.addEventListener(load, function() { console.log(🚨 Emergency copy button initialization); setTimeout(function() { const allPreBlocks document.querySelectorAll(pre); console.log(`🔍 Found ${allPreBlocks.length} pre blocks for emergency buttons`); allPreBlocks.forEach((pre, idx) > { // Only add if no button exists if (!pre.querySelector(.emergency-copy-btn) && !pre.querySelector(.persistent-copy-btn)) { const btn document.createElement(button); btn.className emergency-copy-btn; btn.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z /> /svg>`; btn.style.cssText ` position: absolute !important; top: 8px !important; right: 8px !important; background: rgba(55, 65, 81, 0.9) !important; color: #d1d5db !important; border: none !important; padding: 8px !important; border-radius: 6px !important; font-size: 12px !important; font-weight: 600 !important; cursor: pointer !important; z-index: 9999 !important; box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important; transition: all 0.2s ease !important; opacity: 0.8 !important; visibility: visible !important; display: flex !important; align-items: center !important; justify-content: center !important; width: 32px !important; height: 32px !important; pointer-events: auto !important; backdrop-filter: blur(4px) !important; `; btn.onclick function() { console.log(🚨 Emergency copy clicked); const code pre.querySelector(code) || pre; let text code.innerText || code.textContent; // Remove any button content from copied text text text.replace(/📋.*?Copy/g, ).replace(/✅.*?Copied!/g, ).trim(); // Fallback copy method const textarea document.createElement(textarea); textarea.value text; textarea.style.position fixed; textarea.style.left -9999px; document.body.appendChild(textarea); textarea.select(); try { const successful document.execCommand(copy); if (successful) { console.log(✅ Emergency copy successful); const originalHtml btn.innerHTML; btn.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM5 13l4 4L19 7 /> /svg>`; btn.style.background rgba(34, 197, 94, 0.9) !important; btn.style.color white !important; btn.style.opacity 1 !important; setTimeout(() > { btn.innerHTML originalHtml; btn.style.background rgba(55, 65, 81, 0.9) !important; btn.style.color #d1d5db !important; btn.style.opacity 0.8 !important; }, 2000); } else { throw new Error(Copy failed); } } catch (err) { console.error(❌ Emergency copy failed:, err); btn.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM6 18L18 6M6 6l12 12 /> /svg>`; btn.style.background rgba(239, 68, 68, 0.9) !important; btn.style.color white !important; setTimeout(() > { btn.innerHTML `svg xmlnshttp://www.w3.org/2000/svg classw-4 h-4 fillnone viewBox0 0 24 24 strokecurrentColor stroke-width2> path stroke-linecapround stroke-linejoinround dM8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z /> /svg>`; btn.style.background rgba(55, 65, 81, 0.9) !important; btn.style.color #d1d5db !important; }, 2000); } finally { document.body.removeChild(textarea); } }; pre.style.position relative; pre.appendChild(btn); console.log(`🎯 Emergency button added to pre block ${idx + 1}`); } }); }, 100); }); /script> !-- Theme Toggle Script --> script> // Theme toggle functionality const themeToggleBtn document.getElementById(theme-toggle); const mobileThemeToggleBtn document.getElementById(mobile-theme-toggle); const htmlElement document.documentElement; // Check for saved theme preference or default to light mode const currentTheme localStorage.getItem(theme) || light; if (currentTheme dark) { htmlElement.classList.add(dark); } const toggleTheme () > { htmlElement.classList.toggle(dark); // Save theme preference if (htmlElement.classList.contains(dark)) { localStorage.setItem(theme, dark); } else { localStorage.setItem(theme, light); } }; // Add event listeners for theme toggle buttons if (themeToggleBtn) { themeToggleBtn.addEventListener(click, toggleTheme); } if (mobileThemeToggleBtn) { mobileThemeToggleBtn.addEventListener(click, toggleTheme); } // Mobile menu toggle const mobileMenuToggle document.getElementById(mobile-menu-toggle); const mobileMenu document.getElementById(mobile-menu); // Only add event listener if both elements exist if (mobileMenuToggle && mobileMenu) { mobileMenuToggle.addEventListener(click, () > { mobileMenu.classList.toggle(hidden); }); } /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
]