Guest User

Untitled

a guest
Jun 18th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. package com.erezbiox1
  2.  
  3. import java.security.MessageDigest
  4. import java.util.*
  5. import java.util.concurrent.ThreadLocalRandom
  6.  
  7. /**
  8. * Created by Erezbiox1 on 22/05/2018.
  9. * (C) 2018 Erez Rotem All Rights Reserved.
  10. */ // 33 - 126 // 16
  11.  
  12. fun main(args: Array<String>){
  13.  
  14. println("Stupid matrix decoder 9000!")
  15. println("Please choose if you want to decode or encode your message: ( E or D )")
  16. val line = readLine()!!
  17. when(line.trim().toLowerCase()){
  18. "e" -> {
  19. println("Please enter your message:")
  20. val message = readLine()!!
  21. println(weakHash(message))
  22. }
  23. "d" -> {
  24. println("Please enter your message:")
  25. val message = readLine()!!
  26. singleBruteforce(message)
  27. }
  28. else -> println("Sorry that's not an option.")
  29. }
  30.  
  31. }
  32.  
  33. fun singleBruteforce(weakHash: String) : String {
  34.  
  35. val hashedLetters = Base64.getDecoder().decode(weakHash.toByteArray()).toList().chunked(3)
  36. val solvedLetters = StringBuilder()
  37.  
  38. for (hashedLetter in hashedLetters) {
  39. var char = getRandomChar()
  40. while(!char.hash().contentEquals(hashedLetter.toByteArray())){
  41. print(solvedLetters.toString())
  42. print(char)
  43. println()
  44. char = getRandomChar()
  45. Thread.sleep(3)
  46. }
  47. solvedLetters.append(char)
  48. }
  49.  
  50. val result = solvedLetters.toString()
  51. println(result)
  52. return result
  53.  
  54. }
  55.  
  56. fun weakHash(word: String) : String {
  57. val byteList = mutableListOf<Byte>()
  58. for (letter in word.toCharArray()) {
  59. byteList.addAll(letter.toString().hash().toList())
  60. }
  61. return Base64.getEncoder().encodeToString(byteList.toByteArray())
  62. }
  63.  
  64. fun String.hash(algorithm: String = "MD5") : ByteArray {
  65. return MessageDigest.getInstance(algorithm).digest(this.toByteArray()).sliceArray(1..3)
  66. }
  67.  
  68. fun getRandomChar() : String {
  69. return getRandom(32..126).toChar().toString()
  70. }
  71.  
  72. fun getRandom(range: IntRange) : Int {
  73. return ThreadLocalRandom.current().nextInt(range.start, range.last + 1)
  74. }
Add Comment
Please, Sign In to add comment