snipplrCallback({"id":69765,"title":"decrypting-passwords-in-c","source":"
  1. #include <iostream><\/span><\/div><\/li>
  2. #include <string.h><\/span><\/div><\/li>
  3. #include <stdlib.h><\/span><\/div><\/li>
  4. #include <sstream><\/span><\/div><\/li>
  5.  <\/div><\/li>
  6. using<\/span> namespace<\/span> std;<\/span><\/div><\/li>
  7.  <\/div><\/li>
  8. void<\/span> main(<\/span>)<\/span>{<\/span><\/div><\/li>
  9. \t\/\/Variable declarations<\/span><\/div><\/li>
  10. \tint<\/span> cont=<\/span>0<\/span>;<\/span><\/div><\/li>
  11. \tchar<\/span> password[<\/span>100<\/span>]<\/span>=<\/span>{<\/span>0<\/span>}<\/span>;<\/span><\/div><\/li>
  12. \tint<\/span> *<\/span>int_password;<\/span><\/div><\/li>
  13. \tchar<\/span> real_password[<\/span>50<\/span>]<\/span>=<\/span>{<\/span>0<\/span>}<\/span>;<\/span><\/div><\/li>
  14. \tchar<\/span> *<\/span>decrypted_password;<\/span><\/div><\/li>
  15. \tchar<\/span> encrypted_password[<\/span>100<\/span>]<\/span>=<\/span>{<\/span>0<\/span>}<\/span>;<\/span><\/div><\/li>
  16. \tint<\/span> aux2[<\/span>2<\/span>]<\/span>=<\/span>{<\/span>0<\/span>}<\/span>;<\/span><\/div><\/li>
  17. \tint<\/span> aux3[<\/span>3<\/span>]<\/span>=<\/span>{<\/span>0<\/span>}<\/span>;<\/span><\/div><\/li>
  18. \tint<\/span> pos=<\/span>0<\/span>;<\/span><\/div><\/li>
  19. \tint<\/span> len;<\/span><\/div><\/li>
  20.  <\/div><\/li>
  21.  <\/div><\/li>
  22. \tcout<\/span><<<\/span>"Please enter encrypted password: "<\/span>;<\/span><\/div><\/li>
  23. \tgets_s(<\/span>password)<\/span>;<\/span>\/\/got 'password' char array<\/span><\/div><\/li>
  24. \tlen=<\/span>strlen<\/span>(<\/span>password)<\/span>;<\/span><\/div><\/li>
  25. \tint_password=<\/span>new<\/span> int<\/span>[<\/span>len]<\/span>;<\/span>\/\/initializing pointer to int_password<\/span><\/div><\/li>
  26. \tfor<\/span>(<\/span>int<\/span> i=<\/span>0<\/span>;<\/span>i<<\/span>len;<\/span>i++<\/span>)<\/span>{<\/span><\/div><\/li>
  27. \t\tint_password[<\/span>i]<\/span>=<\/span>password[<\/span>i]<\/span>-<\/span>48<\/span>;<\/span>\/\/calculating char to int according to ascii table<\/span><\/div><\/li>
  28. \t}<\/span><\/div><\/li>
  29. \tcout<\/span><<<\/span>endl;<\/span><\/div><\/li>
  30. \tfor<\/span>(<\/span>int<\/span> i=<\/span>0<\/span>;<\/span>i<<\/span>len;<\/span>i++<\/span>)<\/span>{<\/span><\/div><\/li>
  31. \t\tif<\/span>(<\/span>password[<\/span>i]<\/span>>=<\/span>48<\/span> &&<\/span> password[<\/span>i]<\/span><=<\/span>57<\/span>)<\/span>{<\/span><\/div><\/li>
  32. \t\t\tcont++<\/span>;<\/span><\/div><\/li>
  33. \t\t}<\/span><\/div><\/li>
  34. \t\t\/*if all of the characters are numbers, that means encryption <\/span><\/div><\/li>
  35. \t\tlevel was simple mode. if any of them is not, then the advanced mode.*\/<\/span><\/div><\/li>
  36. \t}<\/span><\/div><\/li>
  37.  <\/div><\/li>
  38. \tcout<\/span><<<\/span>endl;<\/span><\/div><\/li>
  39. \tif<\/span>(<\/span>cont==<\/span>len)<\/span>{<\/span> \/\/is simple mode<\/span><\/div><\/li>
  40. \t\tcout<\/span><<<\/span>">>Simple-mode encryption type detected."<\/span><<<\/span>endl;<\/span><\/div><\/li>
  41. \t\tstring stringpassword(<\/span>password)<\/span>;<\/span>\/\/converting password into a string-type array<\/span><\/div><\/li>
  42. \t\tcout<\/span><<<\/span>"Detected string: "<\/span><<<\/span>stringpassword<<<\/span>endl;<\/span><\/div><\/li>
  43. \t\tcout<\/span><<<\/span>"Length of the string: "<\/span><<<\/span>len<<<\/span>endl;<\/span><\/div><\/li>
  44. \t\tint<\/span> i=<\/span>0<\/span>;<\/span><\/div><\/li>
  45. \t\tcout<\/span><<<\/span>endl;<\/span><\/div><\/li>
  46. \t\twhile<\/span>(<\/span>pos<<\/span>len)<\/span>{<\/span><\/div><\/li>
  47. \t\t\tif<\/span>(<\/span>int_password[<\/span>pos]<\/span>==<\/span>1<\/span>)<\/span>{<\/span> \/\/encrypted ascii number has 3 digits <\/span><\/div><\/li>
  48. \t\t\t\tint<\/span> k=<\/span>0<\/span>;<\/span><\/div><\/li>
  49. \t\t\t\taux3[<\/span>0<\/span>]<\/span>=<\/span>int_password[<\/span>pos]<\/span>;<\/span><\/div><\/li>
  50. \t\t\t\tcout<\/span><<<\/span>"Digit "<\/span><<<\/span>k+<\/span>1<\/span><<<\/span>" of aux3: "<\/span><<<\/span>aux3[<\/span>0<\/span>]<\/span><<<\/span>endl;<\/span><\/div><\/li>
  51. \t\t\t\taux3[<\/span>1<\/span>]<\/span>=<\/span>int_password[<\/span>pos+<\/span>1<\/span>]<\/span>;<\/span><\/div><\/li>
  52. \t\t\t\tcout<\/span><<<\/span>"Digit "<\/span><<<\/span>k+<\/span>2<\/span><<<\/span>" of aux3: "<\/span><<<\/span>aux3[<\/span>1<\/span>]<\/span><<<\/span>endl;<\/span><\/div><\/li>
  53. \t\t\t\taux3[<\/span>2<\/span>]<\/span>=<\/span>int_password[<\/span>pos+<\/span>2<\/span>]<\/span>;<\/span><\/div><\/li>
  54. \t\t\t\tcout<\/span><<<\/span>"Digit "<\/span><<<\/span>k+<\/span>3<\/span><<<\/span>" of aux3: "<\/span><<<\/span>aux3[<\/span>2<\/span>]<\/span><<<\/span>endl;<\/span><\/div><\/li>
  55. \t\t\t\tstd::<\/span>stringstream<\/span> ss;<\/span><\/div><\/li>
  56. \t\t\t\tfor<\/span>(<\/span>int<\/span> i=<\/span>0<\/span>;<\/span>i<<\/span>3<\/span>;<\/span>i++<\/span>)<\/span> ss<<<\/span>aux3[<\/span>i]<\/span>;<\/span><\/div><\/li>
  57. \t\t\t\tint<\/span> value;<\/span><\/div><\/li>
  58. \t\t\t\tss>><\/span>value;<\/span><\/div><\/li>
  59. \t\t\t\tcout<\/span><<<\/span>"Found digit number "<\/span><<<\/span>i+<\/span>1<\/span><<<\/span>": "<\/span><<<\/span>value<<<\/span>endl;<\/span><\/div><\/li>
  60. \t\t\t\tvalue=<\/span>value-<\/span>12<\/span>;<\/span>\/\/i now calculate the real ascii number that will correspond to a character<\/span><\/div><\/li>
  61. \t\t\t\tchar<\/span> value2=<\/span>value;<\/span>\/\/conversion from INT to CHAR<\/span><\/div><\/li>
  62. \t\t\t\treal_password[<\/span>i]<\/span>=<\/span>value2;<\/span>\/\/assign the int value 'value' to the i position of the password char array<\/span><\/div><\/li>
  63. \t\t\t\ti++<\/span>;<\/span><\/div><\/li>
  64. \t\t\t\tpos=<\/span>pos+<\/span>3<\/span>;<\/span><\/div><\/li>
  65. \t\t\t}<\/span><\/div><\/li>
  66. \t\t\telse<\/span>{<\/span> \/\/encrypted ascii number has 2 digits<\/span><\/div><\/li>
  67. \t\t\t\t\/\/same process if the encrypted ascii number has 2 digits<\/span><\/div><\/li>
  68. \t\t\t\tint<\/span> k=<\/span>0<\/span>;<\/span><\/div><\/li>
  69. \t\t\t\taux2[<\/span>0<\/span>]<\/span>=<\/span>int_password[<\/span>pos]<\/span>;<\/span><\/div><\/li>
  70. \t\t\t\taux2[<\/span>1<\/span>]<\/span>=<\/span>int_password[<\/span>pos+<\/span>1<\/span>]<\/span>;<\/span><\/div><\/li>
  71. \t\t\t\tcout<\/span><<<\/span>"Digit "<\/span><<<\/span>k+<\/span>1<\/span><<<\/span>" of aux2: "<\/span><<<\/span>aux2[<\/span>0<\/span>]<\/span><<<\/span>endl;<\/span><\/div><\/li>
  72. \t\t\t\tcout<\/span><<<\/span>"Digit "<\/span><<<\/span>k+<\/span>2<\/span><<<\/span>" of aux2: "<\/span><<<\/span>aux2[<\/span>1<\/span>]<\/span><<<\/span>endl;<\/span><\/div><\/li>
  73. \t\t\t\tstd::<\/span>stringstream<\/span> ss;<\/span><\/div><\/li>
  74. \t\t\t\tfor<\/span>(<\/span>int<\/span> i=<\/span>0<\/span>;<\/span>i<<\/span>2<\/span>;<\/span>i++<\/span>)<\/span> ss<<<\/span>aux2[<\/span>i]<\/span>;<\/span><\/div><\/li>
  75. \t\t\t\tint<\/span> value;<\/span><\/div><\/li>
  76. \t\t\t\tss>><\/span>value;<\/span><\/div><\/li>
  77. \t\t\t\tcout<\/span><<<\/span>"Found digit number "<\/span><<<\/span>i+<\/span>1<\/span><<<\/span>": "<\/span><<<\/span>value<<<\/span>endl;<\/span><\/div><\/li>
  78. \t\t\t\tvalue=<\/span>value-<\/span>12<\/span>;<\/span><\/div><\/li>
  79. \t\t\t\tchar<\/span> value2 =<\/span> value;<\/span><\/div><\/li>
  80. \t\t\t\treal_password[<\/span>i]<\/span>=<\/span>value2;<\/span><\/div><\/li>
  81. \t\t\t\ti++<\/span>;<\/span><\/div><\/li>
  82. \t\t\t\tpos=<\/span>pos+<\/span>2<\/span>;<\/span><\/div><\/li>
  83. \t\t\t\tk++<\/span>;<\/span><\/div><\/li>
  84. \t\t\t}<\/span><\/div><\/li>
  85. \t\t}<\/span><\/div><\/li>
  86. \t\tcout<\/span><<<\/span>endl;<\/span><\/div><\/li>
  87. \t\tcout<\/span><<<\/span>"Now translating..."<\/span><<<\/span>endl;<\/span><\/div><\/li>
  88. \t\tcout<\/span><<<\/span>"\\t<\/span>>>Decrypted password: "<\/span>;<\/span><\/div><\/li>
  89.  <\/div><\/li>
  90. \t\tfor<\/span>(<\/span>int<\/span> c=<\/span>0<\/span>;<\/span>c<<\/span>i;<\/span>c++<\/span>)<\/span>{<\/span><\/div><\/li>
  91. \t\t\tcout<\/span><<<\/span>real_password[<\/span>c]<\/span>;<\/span>}<\/span><\/div><\/li>
  92.  <\/div><\/li>
  93. \t\tcout<\/span><<<\/span>endl;<\/span>\/\/end of the for loop<\/span><\/div><\/li>
  94. \t}<\/span>\/\/end of first condition<\/span><\/div><\/li>
  95. \telse<\/span> {<\/span><\/div><\/li>
  96. \t\t\/\/is advanced mode<\/span><\/div><\/li>
  97. \t\tcout<\/span><<<\/span>">>Advanced-mode encryption type detected."<\/span><<<\/span>endl;<\/span><\/div><\/li>
  98. \t\tstring stringpassword(<\/span>password)<\/span>;<\/span><\/div><\/li>
  99. \t\tcout<\/span><<<\/span>"Detected string: "<\/span><<<\/span>stringpassword<<<\/span>endl;<\/span><\/div><\/li>
  100. \t\tcout<\/span><<<\/span>"Length of the string: "<\/span><<<\/span>len<<<\/span>endl;<\/span><\/div><\/li>
  101.  <\/div><\/li>
  102. \t\tdecrypted_password=<\/span>new<\/span> char<\/span>[<\/span>len\/<\/span>2<\/span>]<\/span>;<\/span>\/*on the encryption algorithm, odd positions were filled with trash characters*\/<\/span><\/div><\/li>
  103. \t\tfor<\/span>(<\/span>int<\/span> i=<\/span>0<\/span>;<\/span>i<<\/span>len\/<\/span>2<\/span>;<\/span>i++<\/span>)<\/span>{<\/span><\/div><\/li>
  104. \t\t\tdecrypted_password[<\/span>i]<\/span>=<\/span>stringpassword[<\/span>2<\/span>*<\/span>i+<\/span>1<\/span>]<\/span>-<\/span>7<\/span>;<\/span>\/\/De-encryption algorithm<\/span><\/div><\/li>
  105. \t\t}<\/span><\/div><\/li>
  106. \t\tcout<\/span><<<\/span>"Now translating..."<\/span><<<\/span>endl;<\/span><\/div><\/li>
  107. \t\tcout<\/span><<<\/span>"\\t<\/span>>>Decrypted password: "<\/span>;<\/span> \/\/Print the obtained decrypted password<\/span><\/div><\/li>
  108. \t\tfor<\/span>(<\/span>int<\/span> c=<\/span>0<\/span>;<\/span>c<<\/span>len\/<\/span>2<\/span>;<\/span>c++<\/span>)<\/span>{<\/span><\/div><\/li>
  109. \t\t\tcout<\/span><<<\/span>decrypted_password[<\/span>c]<\/span>;<\/span><\/div><\/li>
  110. \t\t}<\/span>cout<\/span><<<\/span>endl;<\/span>\t<\/div><\/li>
  111. \t}<\/span><\/div><\/li>
  112. \tcout<\/span><<<\/span>"Developed by Santi Pagola."<\/span><<<\/span>endl;<\/span><\/div><\/li>
  113. \tsystem<\/span>(<\/span>"pause"<\/span>)<\/span>;<\/span><\/div><\/li>
  114. }<\/span><\/div><\/li><\/ol><\/pre>","link":"https:\/\/snipplr.com\/view\/69765\/decrypting-passwords-in-c"});