PageSourceSearch

https://www.mcgllccpa.com/cch_js/obfuscapery.js?v=3.0.3

js mcgllccpa.com collected 2026-09-30 19:38:26 UTC 4,481 bytes, 107 lines download raw bytes

1/*******************************
2********   OBFUSCAPERY   *******
3********************************
4* Version 1.10                 *
5* (c)2011 Lilaea Media LLC     *
6********************************
7************************************************************************************
8THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
9EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
10OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
11SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
12INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
13TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
14BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
15CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
16ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
17DAMAGE.
18***********************************************************************************/
19
20
21/***** PUT ME IN YOUR JS INCLUDE FOLDER AND POINT THE HTML SCRIPT SRC TAG AT ME ****/
22$(document).ready(function(e) {    
23    $(document).mousemove(isHuman); // requires a mouse move to load email address
24    $(document).on("touchstart", isHuman());  // Will fire the function on mobile devices, may require jQuery update
25});
26
27function isHuman(e) { // handles mouse move event, assumes must be human
28
29    $(document).unbind('mousemove'); // unbind mouse event
30    var descriptor = '#obfu_x'; // change this 
31    var hex = $(descriptor).text();
32    
33    if (hex != '' && hex != null) {
34    
35        var res;
36        $.ajax({ // post back to php to get decrypt key and count
37        /*EDIT ME* CHANGE URL TO THE ACTUAL LOCATION OF THIS INCLUDE ON YOUR SERVER vvv**/
38            url: 'cch_js/obfuscapery-v2.inc.php',
39        /*EDIT ME* CHANGE URL TO THE ACTUAL LOCATION OF THIS INCLUDE ON YOUR SERVER ^^^**/
40            data: { 
41                token: hex
42            }, // pass token
43            type: 'POST', // only works on post data
44            error: function() { 
45                return; 
46            }, // bail on error
47            success: function(response) { // get params 
48                res = response;
49            },
50            complete: function() { // gracefully replace each link with mailto link
51                replaceEmailLinks(res);
52            }
53        });
54    }
55}
56
57function replaceEmailLinks(res) {
58    $.ajax({
59        url: 'cch_js/resolve_domain.php',
60        data: { 
61            host: document.location.host
62        },
63        type: 'POST',
64        success: function(response) { // get params 
65            var dec = xor_dec(res, response).split("\t"); // host must match to decode
66            var secret = dec.shift();
67            var count = dec.shift();
68            var prefix = dec.shift();
69            for (e = 0; e < count; e++) {
70                var email = $('#' + prefix + e).text(); // get encrypted email address from div
71                
72                if (email != '' && email != null) {
73                    var selector = 'mailto_' + e;
74                    email = xor_dec(email, secret).split("\t");
75                    swapMailTo(selector, email[1]);
76                }
77            }
78        },
79        error: function() { 
80            return; 
81        }
82    });
83}
84
85function swapMailTo(selector, email) 
86{
87    /*EDIT ME* MODIFY THIS OUTPUT TO SUIT YOUR NEEDS vvv**/
88    var mailto = '<a href="mailto:' + email + '">' + email + '</a>'; // customize this
89    /*EDIT ME* MODIFY THIS OUTPUT TO SUIT YOUR NEEDS ^^^**/
90    $("[id=" + selector + "]").fadeOut('slow', function(e) { $(this).html(mailto).fadeIn('slow'); } );
91}
92
93function xor_dec(hex, key)
94{
95    if (hex.length == 0 || key.length == 0) return; // verify input exists
96    while (key.length < hex.length) key += key; // pad key to >= hex
97    var string = ''; // initialize result string
98    for(p = 0; p < hex.length; p += 2) 
99    { // iterate through input string two chars at a time
100        var h = hex.charAt(p) + hex.charAt(p + 1); // get next two hex chars
101        var b = parseInt(h, 16); // convert to decimal
102        var k = key.charCodeAt(p / 2); // get ascii value of corresponding key
103        var c = String.fromCharCode(b ^ k); // get ascii char from xor bitwise conversion
104        string += c; // add to result string
105    }
106    return string;
107}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.