| 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. |
// Simple brute Force code (C) by rattle
// .aware security research
// http://www.awarenetwork.org/
#include <windows.h>
typedef BOOL (CALLBACK *BRUTE_CALLBACK) (LPSTR pCurrent);
BOOL CALLBACK BruteCallback(LPSTR pCurrent) {
printf("%s\n",pCurrent);
return FALSE;
}
BOOL BruteForce2(UINT iPassLen, LPCSTR szChars, BRUTE_CALLBACK pCall)
{
static BYTE bf[0xFF] = {0};
static BYTE out[0xFF]= {0};
static UINT i,j;
UINT iMax = strlen(szChars)-1;
if (!szChars || !pCall)
return;
for (i=0;i<=iPassLen;++i)
bf[i]=0;
(*bf)--;
while (!bf[iPassLen])
{
++bf[0];
for (j=0;j<=iPassLen;++j) {
if (bf[j]>iMax) {
bf[j]=0;
++bf[j+1];
}}
for (j=0;j<iPassLen;++j)
out[j]=szChars[bf[iPassLen-j-1]];
out[iPassLen]='\0';
if ((*pCall)(out)) return TRUE;
}
return FALSE;
}
VOID BruteForce(UINT iFrom, UINT iTo, LPCSTR szChars, BRUTE_CALLBACK pCall) {
UINT i = 0;
for (i=iFrom;i<=iTo;i++) {
if (BruteForce2(i,szChars,pCall))
return TRUE;
}
return FALSE;
}
int main(int argc, char *argv[])
{
BruteForce(6,8,"0123456789",(BRUTE_CALLBACK) &BruteCallback);
}
|