Sniffing & Spoofing

BetterCap – A complete, modular, portable and easily extensible MITM framework

BetterCap is an attempt to create a complete, modular, portable and easily extensible MITM framework with every kind of features could be needed while performing a man in the middle attack.
It’s currently able to sniff and print from the network the following informations:

  • URLs being visited.
  • HTTPS host being visited.
  • HTTP POSTed data.
  • FTP credentials.
  • IRC credentials.
  • POP, IMAP and SMTP credentials.
  • NTLMv1/v2 ( HTTP, SMB, LDAP, etc ) credentials.

Examples:
Default sniffer mode, all parsers enabled:

sudo ruby bettercap.rb --proxy

Enable proxy and use a custom port:

sudo ruby bettercap.rb --proxy --proxy-port=8081

Enable proxy and load the module example_proxy_module.rb:

sudo ruby bettercap.rb --proxy --proxy-module=example_proxy_module.rb

Disable spoofer and enable proxy ( stand alone proxy mode ):

sudo ruby bettercap.rb -S NONE --proxy

Modules – You can easily implement a module to inject data into pages or just inspect the requests/responses creating a ruby file and passing it to bettercap with the –proxy-module argument, the following is a sample module that injects some contents into the title tag of each html page.

class HackTitle < Proxy::Module
    def initialize
        # do your initialization stuff here
    end
    # self explainatory
    def is_enabled?
        return true
    end
    def on_request request, response
        # is an html page?
        if response.content_type == "text/html"
            Logger.info "Hacking #{http://#{request.host}#{request.url}} title tag"
            # make sure to use sub! or gsub! to update the instance
            response.body.sub!( "", "<title> !!! HACKED !!! " )
        end
    end
end
</pre>
<p>Depends:</p>
<ul>
<li>colorize (gem install colorize)</li>
<li>packetfu (gem install packetfu)</li>
<li>pcaprub (gem install pcaprub) [sudo apt-get install ruby-dev libpcap-dev]</li>
</ul>
<p>Download BetterCap at Github Repo: <a href="https://github.com/evilsocket/bettercap" target="_blank" rel="noopener noreferrer">EvilSocket</a></p>
	</div>

	<footer class="post-footer">
		<div class="post-tags"><a href="https://www.jameseduard.com/tag/irc/" rel="tag">IRC</a><a href="https://www.jameseduard.com/tag/mitm/" rel="tag">MITM</a><a href="https://www.jameseduard.com/tag/mitm-framework/" rel="tag">MITM framework.</a><a href="https://www.jameseduard.com/tag/ntlmv1/" rel="tag">NTLMv1</a><a href="https://www.jameseduard.com/tag/sniffer/" rel="tag">sniffer</a><a href="https://www.jameseduard.com/tag/sniffing/" rel="tag">sniffing</a></div><a href="https://www.jameseduard.com/bettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework/#respond" class="post-comments" >No Comments</a>	</footer>

	</article>
<!-- Previous -->
<div class="post-navigation-wrap">
<a href="https://www.jameseduard.com/passgen-random-character-generator-crunch-which-attempts-to-solve-cracking-wpawpa2/" title="Passgen - Random character generator Crunch which attempts to solve cracking WPA/WPA2" class="post-navigation previous-post">
<i class="fa fa-angle-left"></i>
</a>

<!-- Next -->
<a href="https://www.jameseduard.com/snitch-a-tool-which-automate-information-gathering/" title="Snitch - A tool which automate Information Gathering" class="post-navigation next-post">
		<i class="fa fa-angle-right"></i>
</a>
</div><!-- Post Navigation Wrap -->				<div class="related-posts">
					<h3>Related Posts</h3>
												<section>
								<a href="https://www.jameseduard.com/massbleed-ssl-vulnerability-scanner/"></a>
								<h4><a href="https://www.jameseduard.com/massbleed-ssl-vulnerability-scanner/">MassBleed SSL Vulnerability Scanner</a></h4>
								<span class="related-post-date">November 27, 2015</span>
							</section>
														<section>
								<a href="https://www.jameseduard.com/dnsteal-dns-exfiltration-tool-for-stealthily-sending-files-over-dns-requests/"></a>
								<h4><a href="https://www.jameseduard.com/dnsteal-dns-exfiltration-tool-for-stealthily-sending-files-over-dns-requests/">DNSteal – DNS Exfiltration tool for stealthily sending files over DNS requests.</a></h4>
								<span class="related-post-date">September 28, 2015</span>
							</section>
														<section>
								<a href="https://www.jameseduard.com/zarp-network-attack-tool/"></a>
								<h4><a href="https://www.jameseduard.com/zarp-network-attack-tool/">Zarp -Network Attack Tool</a></h4>
								<span class="related-post-date">May 28, 2015</span>
							</section>
												<div class="clear-fix"></div>
				</div>
					<div class="comments-area" id="comments">
        
<div id="comments" class="comments-area">

		<div id="respond" class="comment-respond">
		<h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/bettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://www.jameseduard.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> <span class="required-field-message">Required fields are marked <span class="required">*</span></span></p><p class="comment-form-author"><label for="author">Name <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p>
<p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p>
<p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p>
<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p>
<p class="comment-form-comment"><label for="comment">Comment <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='2505' id='comment_post_ID' />
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
</p></form>	</div><!-- #respond -->
	
</div><!-- #comments -->    </div>
    	</div><!-- .content-wrap -->

	
<div class="sidebar-right-wrap">
	<aside class="sidebar-right">
	    	        <section id="block-2" class="graceful-widget widget_block widget_search"><form role="search" method="get" action="https://www.jameseduard.com/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search"    ><label class="wp-block-search__label" for="wp-block-search__input-1" >Search</label><div class="wp-block-search__inside-wrapper" ><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required /><button aria-label="Search" class="wp-block-search__button wp-element-button" type="submit" >Search</button></div></form></section><section id="block-3" class="graceful-widget widget_block"><div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">Recent Posts</h2><ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://www.jameseduard.com/hello-world/">Hello world!</a></li>
<li><a class="wp-block-latest-posts__post-title" href="https://www.jameseduard.com/vxcon-2025-where-red-teamers-reverse-engineers-and-car-hackers-meet-in-hong-kong/">VXCON 2025: Where Red Teamers, Reverse Engineers, and Car Hackers Meet in Hong Kong</a></li>
<li><a class="wp-block-latest-posts__post-title" href="https://www.jameseduard.com/how-to-guide-secure-dns-setup-for-windows-macos-and-linux/">How-To Guide: Secure DNS Setup for Windows, macOS, and Linux</a></li>
<li><a class="wp-block-latest-posts__post-title" href="https://www.jameseduard.com/introducing-quick-machine-recovery-microsofts-solution-to-driver-induced-blue-screens/">Introducing Quick Machine Recovery: Microsoft’s Solution to Driver-Induced Blue Screens</a></li>
<li><a class="wp-block-latest-posts__post-title" href="https://www.jameseduard.com/devtoys-the-ultimate-swiss-army-knife-for-developers-and-security-analysts/">DevToys: The Ultimate Swiss Army Knife for Developers and Security Analysts</a></li>
</ul></div></div></section><section id="block-4" class="graceful-widget widget_block"><div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">Recent Comments</h2><ol class="wp-block-latest-comments"><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://wordpress.org/">A WordPress Commenter</a> on <a class="wp-block-latest-comments__comment-link" href="https://www.jameseduard.com/hello-world/#comment-1">Hello world!</a></footer></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="http://www.ubuntupirates.com">pr3p</a> on <a class="wp-block-latest-comments__comment-link" href="https://www.jameseduard.com/scanssh-fast-ssh-server-and-open-proxy-scanner/#comment-3">ScanSSH – Fast SSH server and open proxy scanner</a></footer></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="http://www.facebook.com/profile.php?id=100002614173436">James Edward Andaya</a> on <a class="wp-block-latest-comments__comment-link" href="https://www.jameseduard.com/embed-linux-terminal-to-nautilus-file-browser/#comment-4">Embed Linux Terminal To Nautilus File Browser</a></footer></article></li><li class="wp-block-latest-comments__comment"><article><footer class="wp-block-latest-comments__comment-meta"><a class="wp-block-latest-comments__comment-author" href="https://www.jameseduard.com/author/pir8g33k/">pr3p</a> on <a class="wp-block-latest-comments__comment-link" href="https://www.jameseduard.com/how-to-change-ubuntu-11-010-oneiric-ocelot-icon-theme-using-dconf-editor/#comment-2">How to change Ubuntu 11.010 Oneiric Ocelot Icon theme using dconf-editor</a></footer></article></li></ol></div></div></section><section id="block-5" class="graceful-widget widget_block"><div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">Archives</h2><ul class="wp-block-archives-list wp-block-archives">	<li><a href='https://www.jameseduard.com/2026/06/'>June 2026</a></li>
	<li><a href='https://www.jameseduard.com/2025/11/'>November 2025</a></li>
	<li><a href='https://www.jameseduard.com/2025/07/'>July 2025</a></li>
	<li><a href='https://www.jameseduard.com/2025/04/'>April 2025</a></li>
	<li><a href='https://www.jameseduard.com/2025/03/'>March 2025</a></li>
	<li><a href='https://www.jameseduard.com/2025/02/'>February 2025</a></li>
	<li><a href='https://www.jameseduard.com/2025/01/'>January 2025</a></li>
	<li><a href='https://www.jameseduard.com/2024/12/'>December 2024</a></li>
	<li><a href='https://www.jameseduard.com/2024/09/'>September 2024</a></li>
	<li><a href='https://www.jameseduard.com/2024/07/'>July 2024</a></li>
	<li><a href='https://www.jameseduard.com/2024/05/'>May 2024</a></li>
	<li><a href='https://www.jameseduard.com/2023/07/'>July 2023</a></li>
	<li><a href='https://www.jameseduard.com/2023/03/'>March 2023</a></li>
	<li><a href='https://www.jameseduard.com/2023/02/'>February 2023</a></li>
	<li><a href='https://www.jameseduard.com/2023/01/'>January 2023</a></li>
	<li><a href='https://www.jameseduard.com/2022/06/'>June 2022</a></li>
	<li><a href='https://www.jameseduard.com/2022/05/'>May 2022</a></li>
	<li><a href='https://www.jameseduard.com/2022/04/'>April 2022</a></li>
	<li><a href='https://www.jameseduard.com/2022/02/'>February 2022</a></li>
	<li><a href='https://www.jameseduard.com/2022/01/'>January 2022</a></li>
	<li><a href='https://www.jameseduard.com/2021/11/'>November 2021</a></li>
	<li><a href='https://www.jameseduard.com/2021/10/'>October 2021</a></li>
	<li><a href='https://www.jameseduard.com/2021/09/'>September 2021</a></li>
	<li><a href='https://www.jameseduard.com/2021/04/'>April 2021</a></li>
	<li><a href='https://www.jameseduard.com/2020/09/'>September 2020</a></li>
	<li><a href='https://www.jameseduard.com/2020/06/'>June 2020</a></li>
	<li><a href='https://www.jameseduard.com/2020/05/'>May 2020</a></li>
	<li><a href='https://www.jameseduard.com/2020/04/'>April 2020</a></li>
	<li><a href='https://www.jameseduard.com/2019/08/'>August 2019</a></li>
	<li><a href='https://www.jameseduard.com/2019/03/'>March 2019</a></li>
	<li><a href='https://www.jameseduard.com/2019/02/'>February 2019</a></li>
	<li><a href='https://www.jameseduard.com/2019/01/'>January 2019</a></li>
	<li><a href='https://www.jameseduard.com/2018/04/'>April 2018</a></li>
	<li><a href='https://www.jameseduard.com/2018/03/'>March 2018</a></li>
	<li><a href='https://www.jameseduard.com/2018/01/'>January 2018</a></li>
	<li><a href='https://www.jameseduard.com/2017/12/'>December 2017</a></li>
	<li><a href='https://www.jameseduard.com/2017/07/'>July 2017</a></li>
	<li><a href='https://www.jameseduard.com/2017/04/'>April 2017</a></li>
	<li><a href='https://www.jameseduard.com/2017/02/'>February 2017</a></li>
	<li><a href='https://www.jameseduard.com/2017/01/'>January 2017</a></li>
	<li><a href='https://www.jameseduard.com/2016/12/'>December 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/11/'>November 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/10/'>October 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/09/'>September 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/08/'>August 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/07/'>July 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/06/'>June 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/05/'>May 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/03/'>March 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/02/'>February 2016</a></li>
	<li><a href='https://www.jameseduard.com/2016/01/'>January 2016</a></li>
	<li><a href='https://www.jameseduard.com/2015/12/'>December 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/11/'>November 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/10/'>October 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/09/'>September 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/08/'>August 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/07/'>July 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/06/'>June 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/05/'>May 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/04/'>April 2015</a></li>
	<li><a href='https://www.jameseduard.com/2015/03/'>March 2015</a></li>
	<li><a href='https://www.jameseduard.com/2014/12/'>December 2014</a></li>
	<li><a href='https://www.jameseduard.com/2014/10/'>October 2014</a></li>
	<li><a href='https://www.jameseduard.com/2014/08/'>August 2014</a></li>
	<li><a href='https://www.jameseduard.com/2014/07/'>July 2014</a></li>
	<li><a href='https://www.jameseduard.com/2014/06/'>June 2014</a></li>
	<li><a href='https://www.jameseduard.com/2012/01/'>January 2012</a></li>
	<li><a href='https://www.jameseduard.com/2011/12/'>December 2011</a></li>
	<li><a href='https://www.jameseduard.com/2011/11/'>November 2011</a></li>
	<li><a href='https://www.jameseduard.com/2011/10/'>October 2011</a></li>
	<li><a href='https://www.jameseduard.com/2011/09/'>September 2011</a></li>
</ul></div></div></section><section id="block-6" class="graceful-widget widget_block"><div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><h2 class="wp-block-heading">Categories</h2><ul class="wp-block-categories-list wp-block-categories-taxonomy-category wp-block-categories">	<li class="cat-item cat-item-1"><a href="https://www.jameseduard.com/category/uncategorized/">Uncategorized</a>
</li>
</ul></div></div></section>	    	</aside>
</div>


		</div><!-- .main-content End -->
		</main><!-- #primary End -->

		<!-- Site Footer -->
		<footer id="site-footer" class=" clear-fix">
			<div class="site-footer-wrap wrapped-content">
				

    <div class="footer-bottom-wrap">
        <!-- Scroll To Top -->
        <span class="scrolltop">
            <i class="fa fa fa-angle-up"></i>
        </span>
        
        <div class="footer-copyright">
                    </div>
        
        <div class="footer-credits">
            Graceful Theme by             <a href="http://optimathemes.com/">
                Optima Themes            </a>
        </div>
    </div>			</div><!-- .wrapped-content -->
		</footer><!-- #site-footer -->

				
	</div><!-- #site-container -->

<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/graceful-sense-blog/*","/wp-content/themes/graceful/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
			<script>
				const lazyloadRunObserver = () => {
					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
						entries.forEach( ( entry ) => {
							if ( entry.isIntersecting ) {
								let lazyloadBackground = entry.target;
								if( lazyloadBackground ) {
									lazyloadBackground.classList.add( 'e-lazyloaded' );
								}
								lazyloadBackgroundObserver.unobserve( entry.target );
							}
						});
					}, { rootMargin: '200px 0px 200px 0px' } );
					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
						lazyloadBackgroundObserver.observe( lazyloadBackground );
					} );
				};
				const events = [
					'DOMContentLoaded',
					'elementor/lazyload/observe',
				];
				events.forEach( ( event ) => {
					document.addEventListener( event, lazyloadRunObserver );
				} );
			</script>
				<script type='text/javascript'>
		(function () {
			var c = document.body.className;
			c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
			document.body.className = c;
		})();
	</script>
	<link rel='stylesheet' id='wc-blocks-style-css' href='https://www.jameseduard.com/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks.css?ver=wc-10.8.1' media='all' />
<script id="nekit-swiper-js" src="https://www.jameseduard.com/wp-content/plugins/news-kit-elementor-addons/includes/assets/external/swiper/swiper-bundle.min.js?ver=11.2.5"></script>
<script id="slick-js" src="https://www.jameseduard.com/wp-content/plugins/news-kit-elementor-addons/includes/assets/external/slick/slick.min.js?ver=1.8.0"></script>
<script id="js-marquee-js" src="https://www.jameseduard.com/wp-content/plugins/news-kit-elementor-addons/includes/assets/external/js-marquee/jquery.marquee.min.js?ver=1.0.0"></script>
<script id="typed-js-js" src="https://www.jameseduard.com/wp-content/plugins/news-kit-elementor-addons/includes/assets/external/typed-main/typed.umd.js?ver=3"></script>
<script id="jquery-cookie-js" src="https://www.jameseduard.com/wp-content/plugins/news-kit-elementor-addons/includes/assets/external/jquery-cookie/jquery-cookie.js?ver=1.4.1"></script>
<script id="nekit-main-js-extra">
var frontendData = {"_wpnonce":"22fb18b18e","ajaxUrl":"https://www.jameseduard.com/wp-admin/admin-ajax.php"};
//# sourceURL=nekit-main-js-extra
</script>
<script id="nekit-main-js" src="https://www.jameseduard.com/wp-content/plugins/news-kit-elementor-addons/includes/assets/js/frontend-script.js?ver=1.0.0"></script>
<script id="wp-hooks-js" src="https://www.jameseduard.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
<script id="wp-i18n-js" src="https://www.jameseduard.com/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
<script id="wp-i18n-js-after">
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
</script>
<script id="swv-js" src="https://www.jameseduard.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.6"></script>
<script id="contact-form-7-js-before">
var wpcf7 = {
    "api": {
        "root": "https:\/\/www.jameseduard.com\/wp-json\/",
        "namespace": "contact-form-7\/v1"
    }
};
//# sourceURL=contact-form-7-js-before
</script>
<script id="contact-form-7-js" src="https://www.jameseduard.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.6"></script>
<script id="graceful-main-js" src="https://www.jameseduard.com/wp-content/themes/graceful/assets/js/main.js?ver=1.0.4"></script>
<script id="sense-slider-script-js" src="https://www.jameseduard.com/wp-content/themes/graceful-sense-blog/template-parts/sections/sense-slider/sense-slider.js?ver=1.0.0"></script>
<script id="graceful-sense-ticker-script-js" src="https://www.jameseduard.com/wp-content/themes/graceful-sense-blog/assets/js/sense-ticker.js?ver=1.0.0"></script>
<script id="sourcebuster-js-js" src="https://www.jameseduard.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=10.8.1"></script>
<script id="wc-order-attribution-js-extra">
var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://www.jameseduard.com/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
//# sourceURL=wc-order-attribution-js-extra
</script>
<script id="wc-order-attribution-js" src="https://www.jameseduard.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=10.8.1"></script>
<script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://www.jameseduard.com/wp-includes/js/comment-reply.min.js?ver=7.0"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.jameseduard.com/wp-includes/js/wp-emoji-release.min.js?ver=7.0"}}
</script>
<script type="module">
/*! This file is auto-generated */
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
//# sourceURL=https://www.jameseduard.com/wp-includes/js/wp-emoji-loader.min.js
</script>

</body>
</html>