Hacking www.wiiubru.com : Homebrew launcher website and 5.5+ exploit hosting

Mattshark

Well-Known Member
Member
Joined
Aug 31, 2015
Messages
254
Trophies
0
Age
24
XP
239
Country
United States
Actually, I just learned from my other thread that this actually can't be used yet until a 5.5.1 Kernel Exploit gets released...

...So never mind about the upload, but please keep this project in mind when one does come out, if you could.
 

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,853
Trophies
1
Age
44
XP
6,673
Country
Germany
@pwsincd
I'm sorry to go on your nerves again but would you mind putting me together a simple index.html without any firmware checks or stuff which just looks like wiiubru.com and has 5 icons on it (which I can link by myself then to my 5 exploit folders inside my www folder)?
Or just 1 - 2 active icon. I can add the rest by myself then.
 

pwsincd

Garage Flower
OP
Developer
Joined
Dec 4, 2011
Messages
3,686
Trophies
2
Location
Manchester UK
XP
4,485
Self hosting on my ZSUN Wifi stick :)

www.wiiubru.com/lordelan.zip

this is set for a 5.5.1 f/w you can change it easy enough in the <select> option above the array where you set the title/url and icon.. just change it 5.5.0 if thats what your on..

also includes the css and javascripts and images needed..
 
Last edited by pwsincd,

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,853
Trophies
1
Age
44
XP
6,673
Country
Germany
It's the same f*cking issue I had when I tried to use the beautiful design the last time. Although I didn't do anything but to replace my index.html by yours it always freezes on accessing the kernel exploit. Every damn time.

I replaced my index.html:
Code:
<html>
<head>
<title>Wii U Exploit Index</title>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div id="main">
<table id="t">
<tr>
<td>Last Updated: 5:12AM 1/25/16</td>
</tr>
</table>
<table id="t">
<tr>
<td>Wii U</td>
</tr>
</table>
<table>
<tr>
<td width="20%"><a href="lkernel/payload532.html">Kernel</a></td>
<td width="20%"><a href="wwwgx/index.html">Loadiine GX2</a></td>
<td width="20%"><a href="updatedeleter/payload532.html">Update Remover</a></td>
<td width="20%"><a href="wi/payload532.html">WUP Installer</a></td>
<td width="20%"><a href="nnu/payload532.html">NNU-Patch</a></td>
</tr>
</table>
</div>
</body>
</html>
with yours:
Code:
<html>
  <head>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1">

    <title></title>
    <!-- Set the viewport width to 854px and disable zoom --original .body resolution 854 x 448 for reference -->
    <meta name="viewport" content="width=854, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <link rel="stylesheet" href="cssjs/normalize.min.css" type="text/css"/>
    <link rel="stylesheet" href="cssjs/sweetalert.css" type="text/css"/>
    <script src="cssjs/vue.min.js" type="text/javascript"></script>
    <script src="cssjs/sweetalert.min.js" type="text/javascript"></script>

  
    <style type="text/css">
    
    
      html {
        background: #000;
        box-sizing: border-box;
        position: relative;
        zoom: 1;
        overflow: hidden;
      }
    
      * { box-sizing: inherit; }
    
      body {
        position: absolute;
        top: 0; left: 0; right: 0;
        margin: 0 auto;
        width: 854px;
        height: 448px;
        background-image: url(image/back.png);
        background-repeat: repeat;
        background-color: #F7F7F7;
      }
    
      .test {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
         height: 45px;
        background-color: #fff;
      }
    
      .top-bar {
        line-height: 45px;
        padding: 0 12px;
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 45px;       
        color: #000;
     }
    

       .black {
         color: #000;
       }
       .white {
         color: #fff;
       }
    
      .main {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
      }
    
      .top-bar ~ .main { top: 45px; }
    
      .center { margin: 0 auto; width: 800px; }
      .center.width-650 { width: 650px; }
    
      .pull-left {
        float: left;
         }
      .pull-right {
      float: right;
       }
   .mainlogo {
        width: 250px;
        height: 50px;
        border-style: none;
        outline: none;
        background-image: url(image/tinylogo.png);
        background-size: cover;
        -webkit-transition: -webkit-transform .2s ease-in-out;
        -webkit-transform: scale(0.77, 0.77);

       }
            

    
      .grid { list-style-type: none; margin: 0; padding: 0; margin-left: -10px;}
      /* Clearfix hack */
      .grid:after { content: ""; display: table; clear: both; }
    
      .grid .grid--item { position: relative; display: block; float: left; padding-left: 10px; width: 20%; }
    
      .icon-grid { margin-left: -17.5px; margin-top: 4px; }
    
      .icon-grid .grid--item { padding-left: 17.5px;  }
    
      .app--icon {
        display: block;
        position: relative;
        width: 113px;
        height: 113px;
        background-image: url(image/box1.png);
        background-size: cover;
        -webkit-transition: -webkit-transform .2s ease-in-out;
        -webkit-transform: scale(0.77, 0.77);
        border-radius: 16px;
        box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.5);
      }
    
      .app--icon:focus {     
        z-index: 2;
        -webkit-transform: scale(1, 1);
        border-radius: 0;
        box-shadow: 0 0 15px 3px #4DC7E6 inset, 0px 16px 10px rgba(0, 0, 0, 0.5);
      }
    
      .app--icon:focus:after {
        display: inline-block;
        text-align: center;
        content: attr(data-title);
        line-height: 15px;
        font-size: 14px;
        position: absolute;
        bottom: -12px;
        color: #fff;
        background: #4DC7E6;
        padding: 2px 5px;
        left: 0;
        right: 0;
      }
    
      .app--icon img {
        border-radius: 6px;
        position: absolute;
        top: 11px;
        left: 11px;
        display: block;
        width: 92px;
        height: 92px;
      }
    
    
.dialog {
  z-index: 99999;
  -webkit-animation-duration: 0.2s;
  -webkit-animation-name: fade-0-to-100;
  -webkit-animation-timing-function: ease;
  background-color: rgba(65, 65, 92, 0.75);
  text-align: center;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  pointer-events: none;
  overflow: auto;
  white-space: nowrap;
  display: table;
  height: 100%;
  width: 100%; }

@-webkit-keyframes fade-0-to-100 {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }
  .dialog.hide {
    display: none;
    visibility: hidden;
    pointer-events: none; }
  .dialog .dialog-center {
    display: table-cell;
    vertical-align: middle;
    white-space: normal; }
  .dialog .dialog--body {
    -webkit-animation-name: custom-1;
    -webkit-animation-duration: 0.5s;
    -webkit-animation-timing-function: ease;
    pointer-events: all;
    margin: 0 auto;
    min-width: 200px;
    max-width: 320px; }

@-webkit-keyframes custom-1 {
  0% {
    opacity: 0;
    -webkit-transform: translateY(100%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0); } }
  .dialog .message {
    font-size: 1.25em;
    text-align: center;
    line-height: 1.5em;
    color: #fff;
    text-shadow: 0 0 10px 0 black;
    max-width: 320px; }
  .dialog .buttons {
    margin: 15px 0 0 0; }
    .dialog .buttons::before,
    .dialog .buttons::after {
      content: ' ';
      display: table; }
    .dialog .buttons::after {
      clear: both; }
  .dialog .buttons .button {
    float: left;
    width: 48%;
    margin: 0 1%; }
  .dialog .buttons .button {
    float: left;
    width: 48%;
    margin: 0 1%; }
  .dialog .buttons .button:only-child {
    width: 98%; }
  
    .dropdown {
    -webkit-appearance: none;
    -moz-appearance: none;
    border: 0 !important; 
    color: #36deef;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    font-family: wiifont;
    font-size: 18px;
    padding: 1px;
    width: 160px;
    height: 40px;
    cursor: pointer;

    background: #004f92 url(image/drop-down-arrow.png) no-repeat right center;
    background-size: 40px 37px;
}
.scroll-up {
height: 448px;  
overflow: hidden;
position: relative;
}
.scroll-up .inner {
position: absolute;
width: 100%;
height: 100%;
margin: 0;
line-height: 50px;
text-align: center;
/* Starting position */
-moz-transform:translateY(100%);
-webkit-transform:translateY(100%);  
transform:translateY(100%);
/* Apply animation to this element */  
-moz-animation: scroll-up 55s linear infinite;
-webkit-animation: scroll-up 55s linear infinite;
animation: scroll-up 55s linear infinite;
}
/* Move it (define the animation) */
@-moz-keyframes scroll-up {
0%   { -moz-transform: translateY(-100%); }
100% { -moz-transform: translateY(-100%); }
}
@-webkit-keyframes scroll-up {
0%   { -webkit-transform: translateY(100%); }
100% { -webkit-transform: translateY(-100%); }
}
@keyframes scroll-up {
0%   {
-moz-transform: translateY(100%); /* Browser bug fix */
-webkit-transform: translateY(100%); /* Browser bug fix */
transform: translateY(100%);       
}
100% {
-moz-transform: translateY(-100%); /* Browser bug fix */
-webkit-transform: translateY(-100%); /* Browser bug fix */
transform: translateY(-100%);
}
}
.scroll-up1 {
height: 448px;  
overflow: hidden;
position: relative;
}
.scroll-up1 .inner {
position: absolute;
width: 100%;
height: 100%;
margin: 0;
line-height: 50px;
text-align: center;
/* Starting position */
-moz-transform:translateY(100%);
-webkit-transform:translateY(100%);  
transform:translateY(100%);
/* Apply animation to this element */  
-moz-animation: scroll-up1 35s linear infinite;
-webkit-animation: scroll-up1 35s linear infinite;
animation: scroll-up1 35s linear infinite;
}
/* Move it (define the animation) */
@-moz-keyframes scroll-up1 {
0%   { -moz-transform: translateY(-100%); }
100% { -moz-transform: translateY(-100%); }
}
@-webkit-keyframes scroll-up1 {
0%   { -webkit-transform: translateY(100%); }
100% { -webkit-transform: translateY(-100%); }
}
@keyframes scroll-up1 {
0%   {
-moz-transform: translateY(100%); /* Browser bug fix */
-webkit-transform: translateY(100%); /* Browser bug fix */
transform: translateY(100%);       
}
100% {
-moz-transform: translateY(-100%); /* Browser bug fix */
-webkit-transform: translateY(-100%); /* Browser bug fix */
transform: translateY(-100%);
}
}
  @font-face { font-family: wiifont; src: url('wiifont.ttf'); }
.wiifont {
    font-family: wiifont;
    color: #36deef;
    font-size: 18px; 
    </style>

  </head>
  <body id="app">
<div class="scroll-up">
<div class="inner">
<img src="image/scroll1.png">
</div>
</div>
        
      <div class="top-bar">
      <span class="pull-left">
      <img class="mainlogo">
      </span>
     </span>

      <span class="pull-right">
        <span class= "wiifont">F/W :</span>
        <select class="dropdown" v-model="system.firmware">
          <option>5.3.2</option>
        </select>
      </span>
    </div>

  


<div class="main">
      <div class="center width-650">
    
          <ul class="grid icon-grid">
          <!-- START app grid item template -->
          <li  class="grid--item" v-for="item in appGridItems |  filterBy system.firmware in 'firmwares'">
        
            <a class="app--icon" v-bind:data-title="item.title? item.title : '?'" :href="item.url? item.url : ''">
             <img v-if="item.icon? item.icon : ''" :src="item.icon? item.icon : ''">
            </a>
          
          </li>
          <!-- END app grid item template -->
        </ul>
    
      </div>
    </div> 
    <script type="text/javascript">
    
      var apps = [

        { 'title': 'Kernel Exploit',   'url': 'lkernel/payload532.html',                 'icon': 'image/kernel.png',    'firmwares': ['5.3.2'] },
        { 'title': 'Loadiine GX2',   'url': 'wwwgx/index.html',                 'icon': 'image/loadiinegx2.png',    'firmwares': ['5.3.2'] },
        { 'title': 'Update Remover',   'url': 'updatedeleter/payload532.html',                 'icon': 'image/removeupdate.png',    'firmwares': ['5.3.2'] },
        { 'title': 'WUP Installer',   'url': 'wi/payload532.html',                 'icon': 'image/wupinstaller.png',    'firmwares': ['5.3.2'] },
        { 'title': 'NNU Patcher',   'url': 'nnu/payload532.html',                 'icon': 'image/nnupatcher.png',    'firmwares': ['5.3.2'] }

      

      ];

    
    </script>

  
    <script type="text/javascript">
  
      var app = new Vue({
        el: '#app',
        data: {
          system: {
            'firmware': 'NOT A WIIU',
            'browser_version': 'NOT A WIIU'
          },
          appGridItems: apps ? apps : []
        }
      })
    
      // 'framework' is a standin name for now
      var framework = framework || {
        Init: function(){
          for (var key in this) {
            this[key]['_init']? this[key]['_init']() : false;
          }
        }
      };
    
      framework.console = {
        getDetails: function(UAString){
          UAString = UAString || navigator.userAgent;
          var parsedUA = UAString.match(/Nintendo WiiU.*?NintendoBrowser\/(\S+).(\S{2})/i);
          return {
            isWiiU: parsedUA ? true : false,
            browser_version: parsedUA? parsedUA[1] : 'NOT A WIIU',
            firmware: parsedUA ? this.getFirmware(parsedUA[1]) : 'NOT A WIIU',
            region: parsedUA ? parsedUA[2] : '??'
          }
        },
        getFirmware: function(browserVersion, errorHandler){
          switch(browserVersion) {
            case '4.3.1.11264': return '5.5.1';
            case '4.3.0.11224': return '5.5.0';
            case '4.2.0.11146': return '5.4.0';
            case '4.1.1.9601':  return '5.3.2';
            case '4.1.0.9584':  return '5.3.0';
            case '3.1.1.9577':  return '5.2.0';
            case '3.0.0.9561':  return '5.0.0';
            case '2.0.0.9362':  return '4.0.0';
            case '1.1.0.7579':  return '2.1.0';
            case '1.1.0.7494':  return '2.0.0';
            default:
              // call the error handler function if one is given
              errorHandler ? errorHandler() : false;
              return 'NOT A WIIU';
          }
        }
      };
    
      framework.UI = framework.UI || {
        _init: function(){
          (function(){
            var dialog = document.createElement('div');
            dialog.id = 'dialog'
            document.body.appendChild(dialog);
            // Mount the vue instance to the created div
            framework.UI.Dialog.$mount('#dialog')
          })();
        }
      };
    
      framework.UI.Dialog = window.Vue ? new Vue({
        data: function(){
          return {
            isHidden: true,
            dialog: { message: false, type: '', cancelText: false, confirmText: false },
            callback: false
          }
        },
        template: [
          '<div v-cloak :class="[\'dialog\', isHidden ? \'hide\' : \'show\' ]" id="dialog">',
          '<div class="dialog-center"><div class="dialog--body">',
          '<span v-if="dialog.message" class="message">{{dialog.message}}</span>',
          '<div class="buttons">',
          '<button @click="_close(\'cancel\')" v-if="dialog.cancelText" class="wide large grey button">{{dialog.cancelText}}</button>',
          '<button @click="_close(\'confirm\')" v-if="dialog.confirmText" class="wide large button">{{dialog.confirmText}}</button>',
          '</div></div></div></div>'
        ].join(''),
        methods: {
          alert: function(message, callback){
            this.$set('callback', callback);
            this.$set('dialog', {
              type: 'alert',
              message: message,
              cancelText: false,
              confirmText: 'Okay'
            });
            this.$set('isHidden', false);
          },
          confirm: function(message, callback){
            this.$set('callback', callback);
            this.$set('dialog', {
              type: 'confirm',
              message: message,
              cancelText: 'Cancel',
              confirmText: 'Confirm'
            });
            this.$set('isHidden', false);
          },
          _close: function(input){
            // hide the dialog
            this.$set('isHidden', true);
            // call the callback function if one is given
            this.callback ? this.callback.call(this, input) : false;
          }
        },
      }) : false;
    
      framework.Init();
    
      var system = framework.console.getDetails();
      if (system.isWiiU) {
        app.$set('system.firmware', system.firmware);
        app.$set('system.browser_version', system.browser_version);
      }
      else {
             swal({   title: "No WiiU Detected!",   text: "No Homebrew but plenty of links and downloads.",   imageUrl: "image/gamepad.png" });
      }
      app.$set('appGridItems', apps);
    
    </script>

  </body>
  <head>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1">
  </head>
</html>
It shows up with all the nice icons and stuff but when I hit the kernel exploit button which is just linking to the same f*cking payload as my old index.html it shows the url in the url bar on top and freezes. Clearing cookies and cache won't change anything.

I just don't get it. It doesn't make any sense at all! I guess I have to give it up.
 

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,853
Trophies
1
Age
44
XP
6,673
Country
Germany
tbh what i dont understand is why you arent using HBL
Why would I need it? Only thing I'm using is Loadiine 99% of the time.
And neither the Loadiine GX built in kernel exploit works nor does the HBL one on me so I'm stuck using an old 5.3.2 kernel exploit which successes by a rate of 95% (when using it through my old index.html) and lunch Loadiine GX in the second step.
Still I don't see why this won't work if the index.html is swapped. :/
 

pwsincd

Garage Flower
OP
Developer
Joined
Dec 4, 2011
Messages
3,686
Trophies
2
Location
Manchester UK
XP
4,485
well your not loosing anything ... HBL loads of one click , is a GUI like what your trying to acheive with my index. and has very good success rates... your struggling with my index i guess due to load
 

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,853
Trophies
1
Age
44
XP
6,673
Country
Germany
well your not loosing anything ... HBL loads of one click , is a GUI like what your trying to acheive with my index. and has very good success rates... your struggling with my index i guess due to load
Accessing the url instantly uses a kernel exploit and starts HBL? Mmmh ... I'll try it again then. Last time I watched into it it wasn't just one step.
 

pwsincd

Garage Flower
OP
Developer
Joined
Dec 4, 2011
Messages
3,686
Trophies
2
Location
Manchester UK
XP
4,485
temporary links for new kernel exploit these may change as they are integrated , but for those who wanna give it a go :

www.wiiubru.com/k55/k.mp4 < kernel exploit
www.wiiubru.com/k55/kgx2.mp4 < loadiine kernel exploit
www.wiiubru.com/k55/Loadiine.mp4 < loadiine

both exploits work here my end but i didnt try loadiine .. not really interested ...

hopefully i can set it up to be HBL friendly and you can "play backups" by yourself.
 

TotalInsanity4

GBAtemp Supreme Overlord
Member
Joined
Dec 1, 2014
Messages
10,800
Trophies
0
Location
Under a rock
XP
9,814
Country
United States
temporary links for new kernel exploit these may change as they are integrated , but for those who wanna give it a go :

www.wiiubru.com/k55/k.mp4 < kernel exploit
www.wiiubru.com/k55/kgx2.mp4 < loadiine kernel exploit
www.wiiubru.com/k55/Loadiine.mp4 < loadiine

both exploits work here my end but i didnt try loadiine .. not really interested ...

hopefully i can set it up to be HBL friendly and you can "play backups" by yourself.
Are these only for 5.5.x or can these also be used on past firmwares for better stability?

For that matter, how stable is the new exploit?
 

ShadowOne333

QVID PRO QVO
Editorial Team
Joined
Jan 17, 2013
Messages
12,272
Trophies
2
XP
35,328
Country
Mexico
Last edited by ShadowOne333,
  • Like
Reactions: TotalInsanity4

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: One of my friends wants to do a pc wall build I'm like but you constantly complain about roaches lol