├── img ├── copy.png ├── icon.png └── link.png ├── manifest.json ├── LICENCE ├── FastDork.html ├── README.md ├── Script ├── getData.js ├── FastDork.js └── jquery-3.5.1.min.js └── style.css /img/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SKVNDR/FastDork/HEAD/img/copy.png -------------------------------------------------------------------------------- /img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SKVNDR/FastDork/HEAD/img/icon.png -------------------------------------------------------------------------------- /img/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SKVNDR/FastDork/HEAD/img/link.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | 4 | "name": "FastDork", 5 | "description": "Google and Github Dork tool", 6 | "version": "0.1", 7 | "author": "skvndr", 8 | "icons": { 9 | "16": "img/icon.png", 10 | "48": "img/icon.png", 11 | "128": "img/icon.png" 12 | }, 13 | 14 | "background": { 15 | "scripts": [ 16 | "Script/jquery-3.5.1.min.js", 17 | "Script/FastDork.js" 18 | ], 19 | "persistent": false 20 | }, 21 | 22 | "browser_action": { 23 | "default_icon": "img/icon.png", 24 | "default_popup": "FastDork.html", 25 | "default_title": "FastDork" 26 | }, 27 | 28 | "permissions": [ 29 | "activeTab", 30 | "clipboardRead" 31 | ] 32 | } -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Iskander Rehouma 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /FastDork.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |
FastDork
Template
Setting
7 |
8 |
9 | 10 |
11 |
12 | 17 | 20 | 21 |
22 |
23 |
24 | 25 | 26 | 27 | 28 | 29 |
30 | 33 |
34 |
35 |
36 |

Save

37 | 38 | 39 |
40 |
41 | 42 |
43 | 44 | 47 | 48 | 49 | 50 |
0
Line(s)
51 | 52 | 53 | 54 | 55 | 56 |
57 | 58 |
59 | 60 | 61 |

Add list :

62 | 63 | 64 |

Delete list :

65 | 68 | 69 | v0.1 70 | Dork from Exploit DB 71 | 72 |
73 |
74 | 75 | 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Logo 3 |

4 | 5 |

FastDork v0.1

6 |

7 | This chrome extension allows you to create lists of Google and Github dork to open multiple tabs with one click,
8 | import "scope/out of scope" from HackerOne/Bugcrowd/Intigriti and extract links from raw data. 9 |

10 | 11 | ## Table of contents 12 | - [Installation](#installation) 13 | - [Tab FastDork](#tab-fastdork) 14 | - [Tab Template](#tab-template) 15 | - [Import links from HackerOne, Bugcrowd and Intigriti](#import-links-from-hackerone-bugcrowd-and-intigriti) 16 | - [Import links from Google and Github](#import-links-from-google-and-github) 17 | - [Import Dorks from Google Hacking Database](#import-dorks-from-google-hacking-database) 18 | - [Copy to clipboard](#copy-to-clipboard) 19 | - [Extract Links from Raw data](#extract-links-from-raw-data) 20 | - [Tab Setting](#tab-setting) 21 | - [Error](#error) 22 | - [Copyright and license](#copyright-and-license) 23 | 24 | ## Installation 25 | - `git clone https://github.com/SKVNDR/FastDork.git` 26 | - Go to **chrome://extensions/** and check the box for **Developer mode** in the top right corner. 27 | - Go back to the **chrome://extensions/** page and click on **Load unpacked extension** button and select the FastDork folder. 28 | 29 | fastdork gif 30 | 31 | ## Tab FastDork 32 | 1) Select **One Domain/One Dork** 33 | 2) Choose **Google Dork / Github Dork** (choose which platform to open tabs.) 34 | 3) **Select list** of dork 35 | * When you choose **One Domain**, select list with **multiple dorks** 36 | * When you choose **One dork**, select list with **multiple domains** (don't forget to add **\*replace\*** in this input) 37 | 4) Save (you can save the parameter of this tab) 38 | 5) Open dork's button 39 | 40 | ## Tab Template 41 | ### Import links from HackerOne, Bugcrowd and Intigriti 42 | 43 | To use this functionality, go to the program page then click on the button **Import links from HackerOne/Bugcrowd/Intigriti**. 44 | 45 | ### Import links from Google and Github 46 | 47 | Same logic, the import buttons will appear when google/github search will be visited. 48 | 49 | The links are saved automatically after each click on import buttons (in case if captcha appears) 50 | 51 | ### Import Dorks from Google Hacking Database 52 | 53 | You can import dorks from Exploit DB, the import button will appear after visiting the google hacking database page. 54 | 55 | ### Copy to clipboard 56 | To copy list textarea to your clipboard, click on this icon icon clipboard 57 | 58 | ### Extract Links from Raw data 59 | To extract links, paste raw data in list textarea then click on this icon. icon clipboard 60 | 61 | ## Tab Setting 62 | 63 | In this tab you can Add or Delete list, you can also Reset the extension data. 64 | 65 | ## Error 66 | 67 | :warning: **Error messages :** 68 | - Error: Remove **\*replace\*** and select list with strings 69 | 70 | If you choose **One Domain**, remove the string **\*replace\*** and replace it by one domain name. (Example : test.com) 71 | 72 | - Error: You forgot to add **\*replace\*** 73 | 74 | If you choose **One Dork** you need to add the string **\*replace\*** in the field and then select the list with domains. 75 | 76 | ## Copyright and license 77 | 78 | Code released under the [MIT License](https://github.com/SKVNDR/FastDork/blob/master/LICENCE). 79 | 80 | (Import functionality is inspired by tomnomnom with webpaste extension) 81 | -------------------------------------------------------------------------------- /Script/getData.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | const url = window.location.href; 3 | 4 | const selectors = { 5 | google: { 6 | standard: "div.yuRUbf > a:first-child", 7 | alternative: "div.kb0PBd.cvP2Ce.jGGQ5e > div > div > span > a", 8 | nextPage: ['a#pnnext', '.GNJvt.ipz2Oe'] 9 | }, 10 | github: { 11 | selector: () => { 12 | let gitParam = new URLSearchParams(window.location.search).get('type') === 'code' ? '.search-title a:nth-of-type(2)' : '.search-title a'; 13 | return gitParam; 14 | }, 15 | nextPage: 'a[rel="next"]' 16 | }, 17 | hackerOne: { 18 | selector: ".spec-asset-identifier strong" 19 | }, 20 | exploitDB: { 21 | selector: "#exploits-table tbody td:nth-child(2) a", 22 | nextPage: "#exploits-table_next > a" 23 | }, 24 | intigriti: { 25 | selector: ".domain" 26 | }, 27 | bugcrowd: { 28 | selector: ".cc-rewards-link-table__endpoint", 29 | condition: () => document.getElementsByClassName('bc-program-card__header').length > 0 30 | } 31 | }; 32 | 33 | function scrollToBottom() { 34 | window.scrollTo(0, document.body.scrollHeight); 35 | } 36 | 37 | function sendData(platform, type, selector, nextPage) { 38 | if (url.includes(platform)) { 39 | const elements = [...document.querySelectorAll(selector)]; 40 | const dataVal = type ? elements.map(n => n.href).join() : elements.map(n => n.innerText).join(); 41 | 42 | chrome.runtime.sendMessage({ dataResult: dataVal }); 43 | 44 | if (nextPage) nextPage(); 45 | } 46 | } 47 | 48 | function clickElement(selector) { 49 | const element = document.querySelector(selector); 50 | if (element) element.click(); 51 | } 52 | 53 | function navigateToNextPage(platform) { 54 | const { nextPage } = selectors[platform]; 55 | if (Array.isArray(nextPage)) { 56 | nextPage.some(selector => clickElement(selector)); 57 | } else { 58 | clickElement(nextPage); 59 | } 60 | } 61 | 62 | function githubNextPage() { 63 | const nextLink = document.querySelector(selectors.github.nextPage); 64 | if (nextLink) { 65 | const hrefVal = nextLink.getAttribute('href'); 66 | if (hrefVal) { 67 | let queryParams = new URLSearchParams(hrefVal.split('?')[1]); 68 | let pageParam = queryParams.get('p'); 69 | if (pageParam) { 70 | let newURL = new URL(window.location.href); 71 | newURL.searchParams.set('p', pageParam); 72 | document.location = newURL.toString(); 73 | } 74 | } 75 | } 76 | } 77 | 78 | 79 | // Google 80 | if (document.querySelector(selectors.google.alternative)) { 81 | sendData("https://www.google.com/search", true, selectors.google.alternative, () => { 82 | scrollToBottom(); 83 | navigateToNextPage('google'); 84 | 85 | setTimeout(() => { 86 | scrollToBottom(); 87 | }, 2000); 88 | }); 89 | } else { 90 | sendData("https://www.google.com/search", true, selectors.google.standard, () => navigateToNextPage('google')); 91 | } 92 | 93 | // GitHub 94 | sendData("https://github.com/search", true, selectors.github.selector(), githubNextPage); 95 | 96 | // HackerOne 97 | sendData("https://hackerone.com/", false, selectors.hackerOne.selector); 98 | 99 | // Exploit DB 100 | sendData("https://www.exploit-db.com/google-hacking-database", false, selectors.exploitDB.selector, () => navigateToNextPage('exploitDB')); 101 | 102 | // Intigriti 103 | sendData("https://app.intigriti.com/", false, selectors.intigriti.selector); 104 | 105 | // Bugcrowd 106 | if (selectors.bugcrowd.condition()) { 107 | sendData("https://bugcrowd.com/", false, selectors.bugcrowd.selector); 108 | } 109 | })(); 110 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | div { 2 | box-sizing: border-box; 3 | transition: all ease-in-out .5s; 4 | -moz-transition: all ease-in-out .5s; 5 | -webkit-transition: all ease-in-out .5s; 6 | } 7 | 8 | .icetab { 9 | display: inline-block; 10 | border-bottom: 0; 11 | margin: 0; 12 | color: #fff; 13 | cursor: pointer; 14 | border-right: 0; 15 | } 16 | 17 | #icetab-content { 18 | overflow: hidden; 19 | position: relative; 20 | border-top: 2px solid #ff9900; 21 | } 22 | 23 | .tabcontent { 24 | position: absolute; 25 | left: 0; 26 | top: 0; 27 | background: #fff; 28 | width: 100%; 29 | border-top: 0; 30 | border-top: 0; 31 | transform: translateY(-100%); 32 | -moz-transform: translateY(-100%); 33 | -webkit-transform: translateY(-100%); 34 | } 35 | 36 | .tabcontent:first-child { 37 | position: relative; 38 | } 39 | 40 | .tabcontent.tab-active { 41 | border-top: 0; 42 | display: block; 43 | transform: translateY(0%); 44 | -moz-transform: translateY(0%); 45 | -webkit-transform: translateY(0%); 46 | } 47 | 48 | body { 49 | font-family: Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif; 50 | background: #666; 51 | color: #454545; 52 | margin: 0 53 | } 54 | 55 | .container { 56 | max-width: 700px; 57 | margin-left: auto; 58 | margin-right: auto; 59 | } 60 | 61 | .title { 62 | color: #ff9900; 63 | text-align: center; 64 | letter-spacing: 14px; 65 | text-transform: uppercase; 66 | font-size: 17px; 67 | margin: 3px 0; 68 | } 69 | 70 | .tabcontent { 71 | padding: 1px 11px; 72 | height: 166px; 73 | width: 356px; 74 | } 75 | 76 | .icetab { 77 | padding: 10px 23.7px; 78 | text-transform: uppercase; 79 | letter-spacing: 2.4px; 80 | } 81 | 82 | .current-tab { 83 | background: #ff9900; 84 | } 85 | 86 | input.btw { 87 | background-color: transparent; 88 | border: none; 89 | border-bottom: 1px solid #f90; 90 | width: 34%; 91 | color: #666; 92 | font-size: 17px; 93 | } 94 | 95 | ::placeholder { 96 | font-size: 16px; 97 | color: #f90; 98 | opacity: 1; 99 | } 100 | 101 | textarea:focus, input:focus { 102 | outline: none; 103 | } 104 | 105 | p { 106 | display: inline-block; 107 | font-size: 17px; 108 | } 109 | 110 | .list,.listmod { 111 | background: transparent; 112 | margin-bottom: 9px; 113 | color: #666; 114 | font-size: 17px; 115 | border: 1px solid #666; 116 | border-radius: 3px; 117 | padding: 2px 0; 118 | } 119 | 120 | button { 121 | background-color: transparent; 122 | color: #f90; 123 | border: 1px solid #f90; 124 | border-radius: 3px; 125 | padding: 5px 22px; 126 | cursor: pointer; 127 | font-weight: 600; 128 | margin-left: 13px; 129 | } 130 | 131 | #createlist { 132 | padding: 5px 12px; 133 | } 134 | 135 | .alert { 136 | color: #ffffff; 137 | text-align: center; 138 | font-size: 17px; 139 | top: 30%; 140 | z-index: 3; 141 | border-radius: 5px; 142 | padding: 7px; 143 | background: #b71c1cc9; 144 | position: fixed; 145 | left: 50%; 146 | transform: translate(-50%, 0); 147 | display:none; 148 | } 149 | 150 | .info { 151 | color: red; 152 | position: fixed; 153 | text-align: center; 154 | text-decoration: underline; 155 | font-size: 17px; 156 | margin-top: 9px; 157 | left: 50%; 158 | width: 100%; 159 | transform: translate(-50%, 0); 160 | } 161 | 162 | .adapt { 163 | padding: 5px 8px; 164 | margin: 0; 165 | } 166 | 167 | button#return { 168 | margin-top: 43px; 169 | } 170 | 171 | #payload-input { 172 | height: 74px; 173 | width: 328px; 174 | white-space: nowrap; 175 | } 176 | 177 | #list-tab2 { 178 | margin-top: 7px; 179 | } 180 | 181 | #save { 182 | margin-top: 3px; 183 | margin-left: 33px; 184 | } 185 | 186 | #prefix { 187 | margin-top: 3px; 188 | } 189 | 190 | #add { 191 | margin-top: 0; 192 | margin-left: 4px; 193 | margin-right: 7px; 194 | border: 1px solid #666; 195 | color: #666; 196 | } 197 | 198 | #clear { 199 | margin: 4px 1% 0 29%; 200 | } 201 | 202 | #clipboard { 203 | margin-left: 3px; 204 | } 205 | 206 | #nbrpayload { 207 | color: #666; 208 | font-size: 16px; 209 | font-weight: 600; 210 | margin: 5px; 211 | position: fixed; 212 | } 213 | 214 | .btn-import { 215 | display: none; 216 | border: 1px solid #4CAF50; 217 | color: #4CAF50; 218 | padding: 6px 12px; 219 | } 220 | #getgooglelnk, #getgithublnk { 221 | padding: 6px 30px; 222 | } 223 | 224 | #msgsuccess { 225 | text-align: center; 226 | width: 100%; 227 | } 228 | 229 | .msg-error { 230 | position: fixed; 231 | z-index: 99999; 232 | margin: 8% 26%; 233 | color: #ff003b; 234 | width: 56%; 235 | font-weight: 700; 236 | font-size: 13px; 237 | border-radius: 3px; 238 | text-decoration: underline; 239 | } 240 | 241 | .switch { 242 | background-color: #66666624; 243 | width: 56%; 244 | display: inline-table; 245 | border-radius: 8px; 246 | height: 24px; 247 | padding: 3px; 248 | position: relative; 249 | margin:11px 21px 23px 0; 250 | zoom: 1; 251 | } 252 | 253 | .switch:before, .switch:after { 254 | content: " "; 255 | } 256 | 257 | .switch:after { 258 | clear: both; 259 | } 260 | 261 | .switch label { 262 | font-weight: 700; 263 | float: left; 264 | width: 50%; 265 | position: relative; 266 | z-index: 2; 267 | line-height: 27px; 268 | cursor: pointer; 269 | text-align: center; 270 | color: #666666; 271 | } 272 | 273 | .switch input[type="radio"], #limit { 274 | display: none; 275 | } 276 | 277 | .switch input[type="radio"]:checked+label { 278 | color: #ff9900; 279 | font-weight: bold; 280 | background: #fff; 281 | border-radius: 5px; 282 | } 283 | 284 | .switch span { 285 | position: relative; 286 | z-index: 1; 287 | top: 0; 288 | left: 0; 289 | width: 50%; 290 | height: 100%; 291 | display: block; 292 | border-radius: 5px 0 0 5px; 293 | background-color: #ffffff; 294 | transition: all 200ms ease; 295 | } 296 | 297 | .switch span.right { 298 | left: 50%; 299 | border-radius: 0 5px 5px 0; 300 | transition: all 200ms ease; 301 | } 302 | 303 | .success-checkmark { 304 | width: 80px; 305 | margin: 0 auto; 306 | margin-top: 15px !important; 307 | height: 331px; 308 | } 309 | 310 | .success-checkmark .check-icon { 311 | width: 80px; 312 | height: 80px; 313 | position: relative; 314 | border-radius: 50%; 315 | box-sizing: content-box; 316 | border: 4px solid #4caf50; 317 | } 318 | 319 | .success-checkmark .check-icon::before { 320 | top: 3px; 321 | left: -2px; 322 | width: 30px; 323 | transform-origin: 100% 50%; 324 | border-radius: 100px 0 0 100px; 325 | } 326 | 327 | .success-checkmark .check-icon::after { 328 | top: 0; 329 | left: 30px; 330 | width: 60px; 331 | transform-origin: 0 50%; 332 | border-radius: 0 100px 100px 0; 333 | animation: rotate-circle 4.25s ease-in; 334 | } 335 | 336 | .success-checkmark .check-icon::before, .success-checkmark .check-icon::after { 337 | content: ""; 338 | height: 100px; 339 | position: absolute; 340 | background: #ffffff; 341 | transform: rotate(-45deg); 342 | } 343 | 344 | .success-checkmark .check-icon .icon-line { 345 | height: 5px; 346 | background-color: #4caf50; 347 | display: block; 348 | border-radius: 2px; 349 | position: absolute; 350 | z-index: 10; 351 | } 352 | 353 | .success-checkmark .check-icon .icon-line.line-tip { 354 | top: 46px; 355 | left: 14px; 356 | width: 25px; 357 | transform: rotate(45deg); 358 | animation: icon-line-tip 0.75s; 359 | } 360 | 361 | .success-checkmark .check-icon .icon-line.line-long { 362 | top: 38px; 363 | right: 8px; 364 | width: 47px; 365 | transform: rotate(-45deg); 366 | animation: icon-line-long 0.75s; 367 | } 368 | 369 | .success-checkmark .check-icon .icon-circle { 370 | top: -4px; 371 | left: -4px; 372 | z-index: 10; 373 | width: 80px; 374 | height: 80px; 375 | border-radius: 50%; 376 | position: absolute; 377 | box-sizing: content-box; 378 | border: 4px solid rgba(76, 175, 80, 0.5); 379 | } 380 | 381 | .success-checkmark .check-icon .icon-fix { 382 | top: 8px; 383 | width: 5px; 384 | left: 26px; 385 | z-index: 1; 386 | height: 85px; 387 | position: absolute; 388 | transform: rotate(-45deg); 389 | background-color: #ffffff; 390 | } 391 | 392 | @keyframes rotate-circle { 393 | 0% { 394 | transform: rotate(-45deg); 395 | } 396 | 5% { 397 | transform: rotate(-45deg); 398 | } 399 | 12% { 400 | transform: rotate(-405deg); 401 | } 402 | 100% { 403 | transform: rotate(-405deg); 404 | } 405 | } 406 | 407 | @keyframes icon-line-tip { 408 | 0% { 409 | width: 0; 410 | left: 1px; 411 | top: 19px; 412 | } 413 | 54% { 414 | width: 0; 415 | left: 1px; 416 | top: 19px; 417 | } 418 | 70% { 419 | width: 50px; 420 | left: -8px; 421 | top: 37px; 422 | } 423 | 84% { 424 | width: 17px; 425 | left: 21px; 426 | top: 48px; 427 | } 428 | 100% { 429 | width: 25px; 430 | left: 14px; 431 | top: 45px; 432 | } 433 | } 434 | 435 | @keyframes icon-line-long { 436 | 0% { 437 | width: 0; 438 | right: 46px; 439 | top: 54px; 440 | } 441 | 65% { 442 | width: 0; 443 | right: 46px; 444 | top: 54px; 445 | } 446 | 84% { 447 | width: 55px; 448 | right: 0px; 449 | top: 35px; 450 | } 451 | 100% { 452 | width: 47px; 453 | right: 8px; 454 | top: 38px; 455 | } 456 | } 457 | 458 | .line { 459 | margin: 0 0 -3px 10px; 460 | } 461 | 462 | #listname { 463 | margin-top: 14%; 464 | } 465 | 466 | 467 | .line.list { 468 | margin-bottom: 9px; 469 | } 470 | 471 | .line:nth-child(1) { 472 | margin-top: 13px; 473 | } 474 | 475 | #limit{ 476 | color :#b71c1c; 477 | border: 1px solid #b71c1c; 478 | } 479 | 480 | #target { 481 | width: 50%; 482 | margin-left: 18px; 483 | } 484 | 485 | .logo { 486 | width: 6%; 487 | margin-right: 12%; 488 | } 489 | 490 | #selectmod { 491 | margin-right: 6%; 492 | } 493 | 494 | #go, #limit { 495 | padding: 10px 20px; 496 | } 497 | 498 | #nbr, #nbr2 { 499 | display: contents; 500 | } 501 | 502 | .xs { 503 | padding: 5px 12px; 504 | } 505 | 506 | .icon { 507 | width: 25Px; 508 | position: absolute; 509 | margin-top: 4px; 510 | cursor: pointer; 511 | } 512 | 513 | #reset { 514 | float: right; 515 | padding: 4px 36px; 516 | } 517 | 518 | .separator { 519 | border-bottom: 1px solid #eaeaea; 520 | } 521 | 522 | p { 523 | margin: 10px 10px 0 0; 524 | } 525 | 526 | #deletelist { 527 | padding: 5px 12px; 528 | margin-left: 19px; 529 | } 530 | 531 | #listmixdomain { 532 | margin-left: 43px; 533 | } 534 | 535 | .delp1 { 536 | margin-right: 10px; 537 | } 538 | 539 | .auto-save{ 540 | background: #f90; 541 | color: #FFF; 542 | } 543 | 544 | #paste { 545 | margin-left: 9%; 546 | } 547 | 548 | #links { 549 | width: 6%; 550 | margin: 6px 0 0 2px; 551 | } 552 | 553 | #import{ 554 | position: absolute; 555 | width: 62%; 556 | margin-top: 6px; 557 | } 558 | 559 | .tab-link{ 560 | display: inline-block; 561 | margin: 6px 0 0 6px; 562 | color: #f90; 563 | font-size: 16px; 564 | text-decoration: underline; 565 | cursor: pointer; 566 | } 567 | -------------------------------------------------------------------------------- /Script/FastDork.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function() { 2 | 3 | tabStructure(); 4 | 5 | const errorId = $('#error'); 6 | const msgError = $('.msg-error'); 7 | const payloadInput = $('#payload-input'); 8 | const listTab1 = $('#list-tab1'); 9 | const listTab2 = $('#list-tab2'); 10 | const nbrTab2 = $('#nbr2'); 11 | const targetTab1 = $('#target'); 12 | const listNameId = $('#listname'); 13 | const selectModTab1 = $('#select-mod'); 14 | const importBtn = $('#import'); 15 | const allList = $('.list'); 16 | const listDel = $('#listdel'); 17 | const urlGoogle = 'https://www.google.com/search?q='; 18 | const urlGithub = 'https://github.com/search?q='; 19 | 20 | const sucessCheck = ''; 22 | 23 | const defaultPayloads = [ 24 | 'site:*replace* inurl:installer-log.txt intext:DUPLICATOR INSTALL-LOG', 25 | 'site:*replace* confidential | top secret | classified | undisclosed', 26 | 'site:*replace* intitle:"Index of"', 27 | 'site:*replace* filetype:xls', 28 | 'site:*replace* " -1) { 170 | 171 | if (key){changeSelectTab2(key);} 172 | 173 | importBtn.text(textBtn); 174 | importBtn.css("display", "inline-block"); 175 | importBtn.prop('title', 'Auto save : ' + autoSave); 176 | showDorkList(); 177 | 178 | importBtn.click(function() { 179 | if (key){saveSelectTab2(key);} 180 | const checkList = parseInt(listTab2.val()); 181 | if (checkList === 0) { 182 | msgError.text("You forgot to select list !").show(); 183 | } else { 184 | msgError.hide(); 185 | chrome.tabs.executeScript(tab.ib,{ 186 | file: 'Script/getData.js' 187 | },function() { 188 | getDataFromLocalStorage(autoSave); 189 | } 190 | ); 191 | } 192 | }); 193 | } 194 | } 195 | 196 | function getDataFromLocalStorage(autoSave){ 197 | const dataLocalStorage = localStorage.getItem("DATA_RESULT"); 198 | if (dataLocalStorage === null){ //quick fix 199 | setTimeout(function () { 200 | const lastItem = localStorage.getItem("DATA_RESULT"); 201 | fillListInput(lastItem,autoSave); 202 | }, 1000); 203 | } else { 204 | fillListInput(dataLocalStorage,autoSave); 205 | } 206 | } 207 | 208 | function fillListInput(data,autoSave){ 209 | payloadInput.val(payloadInput.val() + data.replaceAll(',', '\n')); 210 | payloadInput.val(payloadInput.val() + "\n"); 211 | 212 | removeDuplicate(); 213 | 214 | if (autoSave){ 215 | saveToArray(); 216 | validateAnimation("Saved..."); 217 | } 218 | 219 | getNumberPayload(); 220 | const resultMinus = parseInt(nbrTab2.text()) - 1; 221 | nbrTab2.text(resultMinus); 222 | localStorage.removeItem("DATA_RESULT"); 223 | } 224 | 225 | function limitNbrTab(nbr){ 226 | if (parseInt(nbr) > 20){ 227 | $('#go').hide(); 228 | $('#limit').show(); 229 | } else { 230 | $('#limit').hide(); 231 | $('#go').show(); 232 | } 233 | } 234 | 235 | function changeSelectTab2(key){ 236 | const listTab2Mem = localStorage.getItem("tab2Save-" + key); 237 | if (listTab2Mem != null) { 238 | // listTab2.val(listTab2Mem).trigger('change'); 239 | $("#list-tab2 option:contains("+listTab2Mem+")").attr('selected', 'selected').trigger('change'); 240 | } 241 | } 242 | 243 | function saveSelectTab2(key){ 244 | //localStorage.setItem("tab2Save-" + key, listTab2.val()); 245 | localStorage.setItem("tab2Save-" + key, $( "#list-tab2 option:selected" ).text()); 246 | } 247 | 248 | function resetListVal(){ 249 | allList.val(0).trigger('change'); 250 | } 251 | 252 | function removeDuplicate(){ 253 | const data = payloadInput.val(); 254 | const result = data.split(/\n/g).filter((word, i, arr) => arr.indexOf(word) === i); 255 | payloadInput.val(result.join('\n')); 256 | } 257 | 258 | chrome.tabs.getSelected(null, function(tab) { 259 | 260 | tabUrl = tab.url; 261 | 262 | getDataFromImportURL(urlGoogle,"Import links from Google",tab,true,"goo"); 263 | getDataFromImportURL("https://bugcrowd.com/","Import links from Bugcrowd",tab,false); 264 | getDataFromImportURL("https://github.com/search","Import links from Github",tab,true,"git"); 265 | getDataFromImportURL("https://www.exploit-db.com/google-hacking-database","Import dorks from Exploit DB",tab,true); 266 | 267 | if (tabUrl.indexOf("programs") > -1) { 268 | getDataFromImportURL("https://app.intigriti.com/", "Import links from Intigriti", tab, false); 269 | } 270 | 271 | if (tabUrl.indexOf("?type=team") > -1) { 272 | showDorkList(); 273 | getDataFromImportURL("https://hackerone.com/", "Import links from HackerOne", tab,false); 274 | } 275 | 276 | }); 277 | 278 | payloadInput.focusout(function () { 279 | removeEmptyLines(); 280 | }); 281 | 282 | function removeEmptyLines(){ 283 | payloadInput.val(payloadInput.val().replace(/^\s*[\r\n]/gm, '').replace(/\n+$/, '')); 284 | getNumberPayload(); 285 | } 286 | 287 | function getNumberPayload(){ 288 | const lineCount = payloadInput.val().split("\n").length; 289 | nbrTab2.text(lineCount); 290 | } 291 | 292 | function showDorkList() { 293 | $(".icetab").removeClass("current-tab"); 294 | $(".tabcontent").removeClass("tab-active"); 295 | $(".icetab:nth-child(2)").addClass("current-tab"); 296 | $(".tabcontent:nth-child(2)").addClass("tab-active"); 297 | } 298 | 299 | $("#return").click(function() { 300 | listTab2.hide("fast"); 301 | $("#pastepayload").show(); 302 | $("#addpayload").show(); 303 | $("#return").hide(); 304 | validateBtn("#pastepayload", false); 305 | validateBtn("#addpayload", false); 306 | }); 307 | 308 | function checkListName(){ 309 | const checkRegex = /^[a-zA-Z0-9\-]*$/; 310 | if(listNameId.val().match(checkRegex)) { 311 | return true; 312 | } else { 313 | return false; 314 | } 315 | } 316 | 317 | function addList(listName, payload) { 318 | checkListName(); 319 | if (checkListName() === true){ 320 | localStorage.setItem(listName, JSON.stringify(payload)); 321 | validateAnimation(); 322 | } else { 323 | $("#info").text('Error, remove special characters.').show(); 324 | hideErrorTab3(); 325 | } 326 | } 327 | 328 | function exampleBDD() { 329 | localStorage.setItem("example", JSON.stringify(0)); 330 | addList("List-Default", defaultPayloads); 331 | addList("List-Recon", reconPayloads); 332 | addList("List-Github", githubDork); 333 | addList("List-Domain", domainExample); 334 | addList("List-Exts", extension); 335 | } 336 | 337 | //example payload 338 | const example = JSON.parse(localStorage.getItem("example")); 339 | 340 | if (0 !== example) { 341 | exampleBDD(); 342 | } 343 | 344 | function optionSave() { 345 | 346 | const gooChecked = $('#goodork').is(':checked'); 347 | const saveTar = targetTab1.val(); 348 | //const listVal1 = listTab1.val(); 349 | const listVal1 = $( "#list-tab1 option:selected" ).text(); 350 | const selectMod = selectModTab1.val(); 351 | 352 | let saveOption = {}; 353 | saveOption.GooGit = gooChecked; 354 | saveOption.Target = saveTar; 355 | saveOption.List = listVal1; 356 | saveOption.ModeV = selectMod; 357 | 358 | localStorage.setItem("saveOption", JSON.stringify(saveOption)); 359 | replaceOption(); 360 | } 361 | 362 | function replaceOption() { 363 | const saveOption = JSON.parse(localStorage.getItem("saveOption")); 364 | 365 | if (!saveOption.GooGit) { 366 | $("#gitdork").prop("checked", true); 367 | $($('.switch').find('span')).addClass('right'); 368 | } 369 | 370 | targetTab1.val(saveOption.Target); 371 | //listTab1.val(saveOption.List); 372 | $("#list-tab1 option:contains("+saveOption.List+")").attr('selected', 'selected'); 373 | selectModTab1.val(saveOption.ModeV); 374 | nbrList($("#list-tab1 option:selected").text()); 375 | limitNbrTab( $("#nbr").text()); 376 | } 377 | 378 | function checkSaveBtn() { 379 | const saveTarget = JSON.parse(localStorage.getItem("target-1")); 380 | 381 | if (saveTarget === 1) { 382 | $("#tarsav").prop("checked", true); 383 | } 384 | 385 | if ($('input[name=savetarget]').is(':checked')) { 386 | replaceOption(); 387 | } 388 | 389 | $("#tarsav").click(function() { 390 | if ($('input[name=savetarget]').is(':checked')) { 391 | localStorage.setItem("target-1", 1); 392 | optionSave(); 393 | } else { 394 | localStorage.setItem("target-1", 0); 395 | } 396 | }); 397 | } 398 | 399 | function sliceChrAndNbr() { 400 | listNameId.keyup(function() { 401 | let n = $(this).val(); 402 | if ( n.match("^[a-zA-Z0-9\-]*$") == null ) { 403 | $(this).val(n.slice(0,-1)); 404 | } 405 | }); 406 | } 407 | 408 | sliceChrAndNbr(); 409 | 410 | function createList() { 411 | if(!listNameId.val()){ 412 | $("#info").text('Empty List Name').show(); 413 | hideErrorTab3(); 414 | } else { 415 | addList("List-" + listNameId.val().toLowerCase(), ''); 416 | appendListName(); 417 | 418 | } 419 | } 420 | 421 | $("#createlist").click(function() { 422 | createList(); 423 | resetListVal(); 424 | }); 425 | 426 | function hideErrorTab1(){ 427 | $("#target").focusin(function() { 428 | $(this).siblings("#target").hide(); 429 | errorId.hide(); 430 | targetTab1.css({border: "none", borderBottom: "1px solid #f90"}); 431 | $("#error").css("display","none"); 432 | }); 433 | } 434 | 435 | function hideErrorTab3(){ 436 | $("#listname").focusin(function() { 437 | $(this).siblings("#listname").hide(); 438 | $("#info").hide(); 439 | }); 440 | } 441 | 442 | function getContentFromClipboard() { 443 | let result; 444 | payloadInput.value = ''; 445 | payloadInput.select(); 446 | if (document.execCommand('paste')) { 447 | result = payloadInput.value; 448 | payloadInput.text(result); 449 | } 450 | payloadInput.value = ''; 451 | return result; 452 | } 453 | 454 | $("#paste").click(function() { 455 | getContentFromClipboard(); 456 | }); 457 | 458 | function resetList() { 459 | $("#info").replaceWith('
Reset all data ?
').css("margin-top", "9px"); 460 | 461 | $("#resetyes").click(function() { 462 | localStorage.clear(); 463 | exampleBDD(); 464 | validateAnimation(); 465 | $("#info").hide(); 466 | appendListName(); 467 | }); 468 | 469 | $("#resetno").click(function() { 470 | $("#info").hide(); 471 | }); 472 | } 473 | 474 | $("#reset").click(function() { 475 | resetList(); 476 | }); 477 | 478 | function deleteList(listName) { 479 | window.localStorage.removeItem(listName); 480 | appendListName(); 481 | resetListVal(); 482 | } 483 | 484 | $("#deletelist").click(function() { 485 | const valListDel = parseInt(listDel.val()); 486 | if (valListDel === 0) { 487 | $('#info').show().text('Choose list'); 488 | listDel.change(function() { 489 | $('#info').hide(); 490 | }); 491 | } else { 492 | deleteList("List-" + $("#listdel option:selected").text()); 493 | validateAnimation(); 494 | } 495 | }); 496 | 497 | function appendListName() { 498 | $(".addopt").replaceWith(''); 499 | let x = 0; 500 | for (let key in localStorage) { 501 | if (key.indexOf("List-") >= 0) { 502 | x++; 503 | key = key.replace('List-', ''); 504 | allList.append(''); 505 | } 506 | } 507 | saveList(); 508 | } 509 | 510 | function saveList() { 511 | const listSave = localStorage.getItem("list-save"); 512 | if (!listSave === 0) { 513 | listTab1.val( localStorage.getItem("list-save")); 514 | } 515 | } 516 | 517 | appendListName(); 518 | checkSaveBtn(); 519 | 520 | function getListName() { 521 | let listNameVal; 522 | listNameVal = 'List-' + $( "#list-tab2 option:selected" ).text(); 523 | return listNameVal; 524 | } 525 | 526 | function saveToArray() { 527 | removeDuplicate(); 528 | let lines = []; 529 | $.each(payloadInput.val().split(/\n/), function(i, line) { 530 | if (line) { 531 | lines.push(line); 532 | } 533 | }); 534 | addList(getListName(), lines); 535 | } 536 | 537 | $("#prefix").change(function() { 538 | msgError.hide(); 539 | }); 540 | 541 | function openLink(id,url){ 542 | $(id).click(function() { 543 | chrome.tabs.create({url:url}) 544 | }); 545 | } 546 | 547 | openLink('#version','https://github.com/SKVNDR/FastDork'); 548 | openLink('#exploit-db','https://www.exploit-db.com/google-hacking-database'); 549 | 550 | $("#save").click(function() { 551 | if (parseInt(listTab2.val()) === 0){ 552 | listTab2.css('border','1px solid red'); 553 | } else { 554 | removeEmptyLines(); 555 | saveToArray(); 556 | getNumberPayload(); 557 | validateAnimation(); 558 | } 559 | }); 560 | 561 | function getData(listName) { 562 | let storedNames = JSON.parse(localStorage.getItem(listName)); 563 | let dataList = storedNames.toString().replace(/\,/g, "\n"); 564 | payloadInput.val(dataList); 565 | } 566 | 567 | function errorMsgTab1(msg){ 568 | errorId.text(msg).css("display","block"); 569 | targetTab1.css("border", "1px solid red"); 570 | $("#error").css("background", "#b71c1cc9"); 571 | hideErrorTab1(); 572 | } 573 | 574 | function tabDork(domain, target, choice, oneDork) { 575 | let dmnTarget = targetTab1.val(); 576 | let replaceTarget = target.replace('*replace*', domain); 577 | 578 | if (choice) { 579 | //google dork 580 | if (oneDork) { 581 | dmnTarget = targetTab1.val(); 582 | replaceTarget = dmnTarget.replace('*replace*', target); 583 | 584 | if (dmnTarget.indexOf("*replace*") >= 0) { 585 | // google one dork 586 | chrome.tabs.create({ 587 | url: urlGoogle + encodeURIComponent(replaceTarget) + '&filter=0' 588 | }); 589 | } else { 590 | errorMsgTab1('You forgot to add *replace*'); 591 | } 592 | } else { 593 | // Google one domain 594 | if (dmnTarget.indexOf("*replace*") >= 0) { 595 | errorMsgTab1('Remove *replace* and select list with strings'); 596 | } else { 597 | chrome.tabs.create({ 598 | url: urlGoogle + encodeURIComponent(replaceTarget) + '&filter=0' 599 | }); 600 | } 601 | } 602 | } else { 603 | // github dork 604 | if (oneDork) { 605 | dmnTarget = targetTab1.val(); 606 | if (dmnTarget.indexOf("*replace*") >= 0) { 607 | // github one dork 608 | replaceTarget = dmnTarget.replace('*replace*', target); 609 | chrome.tabs.create({ 610 | url: urlGithub + encodeURIComponent(replaceTarget) + '&type=Code' 611 | }); 612 | } else { 613 | errorMsgTab1('You forgot to add *replace*'); 614 | } 615 | } else { 616 | // github one domain 617 | if (dmnTarget.indexOf("*replace*") >= 0) { 618 | errorMsgTab1('Remove *replace* and select list with strings'); 619 | } else { 620 | chrome.tabs.create({ 621 | url: urlGithub + encodeURIComponent(replaceTarget) + '&type=Code' 622 | }); 623 | } 624 | } 625 | } 626 | } 627 | 628 | function payloadDork(domain, listName, choice, oneDork) { 629 | const listNameValTab1 = 'List-' + $( "#list-tab1 option:selected" ).text(); 630 | const storedNames = JSON.parse(localStorage.getItem(listNameValTab1)); 631 | 632 | $.each(storedNames, function(index, value) { 633 | tabDork(domain, value, choice, oneDork); 634 | }); 635 | } 636 | 637 | function nbrList(listName) { 638 | listName = "List-" + listName; 639 | const storedNames = JSON.parse(localStorage.getItem(listName)); 640 | if (parseInt(listTab1.val()) === 0){ 641 | $("#nbr").text('0'); 642 | } else { 643 | $("#nbr").text(storedNames.length); 644 | } 645 | } 646 | 647 | listTab2.change(function() { 648 | msgError.hide(); 649 | listTab2.css('border','1px solid #666'); 650 | $("#addpayload").css("margin-top", "5px"); 651 | const listDorkAdd = parseInt(listTab2.val()); 652 | if (listDorkAdd === 0){ 653 | clearPayloadInput(); 654 | } else { 655 | getListName(listDorkAdd); 656 | getData(getListName()); 657 | getNumberPayload(); 658 | } 659 | }); 660 | 661 | function copyToClipBoard() { 662 | try { 663 | const txt = payloadInput.val(); 664 | const $temp = $("",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0