63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
extends layout
 | 
						|
 | 
						|
block content
 | 
						|
  p.
 | 
						|
    Bla bla bla qui devi scegliere una buona password
 | 
						|
    cosa puoi provare:
 | 
						|
 | 
						|
  li cia0Antaniqwer10102018
 | 
						|
  li Tr0ub4dour&3
 | 
						|
  br
 | 
						|
  #app(v-cloak)
 | 
						|
    input(
 | 
						|
      type='password',
 | 
						|
      v-model='password', 
 | 
						|
      @input='checkStrength'
 | 
						|
      :class="['score' + estimationScore]"
 | 
						|
    )
 | 
						|
    button(:disabled="estimationScore!==4") ➜
 | 
						|
    p(v-if='password.length>2').
 | 
						|
      Questa password è {{score[estimationScore]}}, dopo un sequestro uno bravo
 | 
						|
      ci mette più o meno <b>{{slowCrackTime}}</b> a scoprirla,
 | 
						|
      la CIA circa <b>{{fastCrackTime}}</b>:
 | 
						|
    
 | 
						|
    li(v-for="s in sequence")
 | 
						|
      span(v-if="s.pattern=='bruteforce'") {{s.token}} forza bruta
 | 
						|
      span(v-else-if="s.pattern=='dictionary'").
 | 
						|
        {{s.token}} dizionario: {{s.dictionary_name}} 
 | 
						|
        {{s.reversed?'(invertita ' + s.matched_word + ')':''}}
 | 
						|
        {{s.l33t?'(con sostituzione ' + s.sub_display +')':''}}
 | 
						|
        {{s.uppercase_variations>1?'(con maiuscola)':''}}
 | 
						|
      span(v-else-if="s.pattern=='sequence'") {{s.token}} sequenze: ({{s.sequence_name}})
 | 
						|
      span(v-else-if="s.pattern=='spatial'") {{s.token}} sequenze spaziali: ({{s.graph}})
 | 
						|
      span(v-else-if="s.pattern=='repeat'") {{s.token}} ripetizione: ({{s.base_token}})
 | 
						|
      span(v-else-if="s.pattern=='date'") {{s.token}} data {{s.day}}/{{s.month}}/{{s.year}}
 | 
						|
      span(v-else-if="s.pattern=='regex'") {{s.token}} pattern {{s.regex_name}}
 | 
						|
      span(v-else) {{s}}
 | 
						|
 | 
						|
  script(src='/js/vue.min.js')
 | 
						|
  script(src='/js/zxcvbn.js')
 | 
						|
  script(src='/js/moment.js')
 | 
						|
  script.
 | 
						|
    moment.locale('it');
 | 
						|
    var app = new Vue({
 | 
						|
      el: '#app',
 | 
						|
      data: {
 | 
						|
        password: '',
 | 
						|
        estimationScore: 0,
 | 
						|
        score: ['inutile', 'pessima', 'brutta', 'così così', 'buona'],
 | 
						|
        scoreColor: 'red',
 | 
						|
        slowCrackTime: '',
 | 
						|
        fastCrackTime: '',
 | 
						|
        sequence: [],
 | 
						|
      },
 | 
						|
      methods: {
 | 
						|
        checkStrength (e) {
 | 
						|
          var estimation = zxcvbn(this.password)
 | 
						|
          this.estimationScore = estimation.score;
 | 
						|
          this.slowCrackTime = moment.duration(estimation.crack_times_seconds.offline_slow_hashing_1e4_per_second, 'seconds').humanize();
 | 
						|
          this.fastCrackTime = moment.duration(estimation.crack_times_seconds.offline_fast_hashing_1e10_per_second, 'seconds').humanize();
 | 
						|
          this.sequence = estimation.sequence;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }) |