Python FTP Brute-Force – Python Programming For Hackers

[Music] what’s up YouTube it’s me mr. H and I’m back with another Python video and today we are going to create a FTP brute-force and dictionary attack tool in Python now before we get into that there’s a few things I want to let you guys know about so if it’s not already obvious I have been working on some new branding and this is it so yeah that’s what’s going on if you’ve seen this imagery like what the hell is this I don’t know what this is it’s me mr. H aka a copy just making some changes to freshen things up because I get bored very easily and I like things to look fresh and new change is good alright so we got that going on I also have a new website let’s check that out real quick cuz there’s a few things I want to point out and most specifically is the cyber surveillance workshop that I have coming up in the next seven days that’s right guys it’s going to happen in the next seven days would you like to be a part of it well if you would then head on over to bushy security comm and at the top of the website click the link and you will be transformed to a signup form go ahead and fill out your information you will be added to the list and whenever it’s time I will send you an email with information for you to access the live web course on cyber surveillance with Python and I’ve decided to open it up to more people because I had a lot of response so get signed up and there’s a very strong possibility you’ll make it in alright let’s see what else do I have going on so we talked about the new branding we talked about the Python cyber surveillance workshop coming up oh yeah I’ve decided that I’m going to start a vulnerability newsletter oh that’s right I don’t have a link for this so let’s do this if you go to the website for the first time after about five seconds or so you’ll get a pop up you’ll get a pop up you’ll get a pop-up okay let’s try this again and you’ll get a pop-up that looks like this just go ahead and sign up for that and then every Monday I will send out a report that will update you on all the current vulnerabilities for all the new bugs that have been released so this will keep you on top of what’s going on in the security world so go ahead and get signed up for that okay so yeah I think that’s going to cover it so let’s go ahead and jump in to our code all right so this is what we’re going to be working with it’s not a very large script but it is a very functional tool so we’re just going to dissect this a line by line and step through it let’s open up terminal let’s just run this and you can see we have several options for our tool so this tool is just as it says it’s to brute force FTP accounts and you have two options in doing this you can perform a dictionary attack or you can do a brute force attack the brute force attack is built-in and you have several options here to control the character set and the length of the password as well you can do some other functions like prefixing and post fixing strings or text to degenerated passwords we also have the option to control the number of threads that are launched and also throttle these threads for example maybe you’ll only want to attempt one guess every 30 seconds you can do that using the opposed parameter or rather flag command-line argument whatever you want to call it and we also have a verbose option so we can see which passwords it’s actually trying but yeah at the core this is just a brute forcing tool against FTP servers so I thought it was time that we actually jumped into a tool that’s a little bit more functional has some features and starts exploring some new areas that we have not dealt with up until this point so enough JibJab let’s start working through the code nice go ahead maximize this here and we start off with our imports and we are going to be importing the argh pars module and this module is what we use to process all the command-line arguments for our tool and this specifically is where we’ll define all those all the command-line options that are total years I see next we use cysts we just use that for basic maintenance of our tool checking some command line arguments exiting the script when needed next we import the threading module and that’s obviously going to be used to initiate threads we’ll use the time module for pausing our thread the date/time is used for collecting the date and time and the next tool enter tools this is specifically used in our brute-force method and this is what we use to generate all the possible combinations for password set rather for a character set and finally we use the FTP Lib module which will allow us to make connections to FTP servers within Python so those are all the modules and that’s why we’re using them alright next we create a basic class and inside this class we’re gonna do course declare some variables I’m the reason why we’re creating these or rather these variables will be global variables that will be accessible from anywhere in our application and these pretty much are going to store the command line arguments as well as any other configuration variables that we need for our script so we declare these here and then we go ahead and assign any default of values we would like these variables to contain so far so good nothing fancy now let’s get fancy so this method is the heart the core of our brute force algorithm this method takes three parameters the characters at the max length value and the men length value now a character set is just that it’s a set of characters if your password was only a numeric character rather a numeric password then your care set your character set would only consist of numbers so let’s take a look at a character set real quick let’s say we had a password that only comprised of numbers well then and that’s in that instance we would create a character set of all 10 digits 0 through 9 we would pass that into our method and therefore it will only use these characters to generate a password so that is our character set and that could be another character set and so on and so forth but the idea is you create the character set that you want and you pass it into the method on the next two values max length that will determine the maximum length of the password so if we set a max length of five will only attempt passwords or rather generate passwords up to a character length of five and same thing for min length if we pass in a value of three then the minimum length of any passwords will generate will be three characters okay so let’s take a little bit closer look at this method because if you’re new to Python this is not going to make sense if you’re new to Python but you have previous programming experience this probably isn’t going to immediately make sense either and it just has to do with kind of how this code is currently spaced out so let’s just take a look at the same method but just illustrate it a little bit differently so this method is doing the same thing as our previous method so let’s take a little bit closer look here let’s do a little side-by-side all right so we can see we have I just got rid of the return statement and this line is actually this line so just keep that in mind whatever is happening here we’re actually doing right here but what we want to focus on is the for statement that’s where all the magic is happening and this looks like there’s two four statements which is true but this one is actually being passed as a parameter to this from iterable method function okay so we’re working with a basic for loop though it looks a little complicated and the reason why it looks complicated is because we are passing in we’re passing in this for loop for this I variable so if you look at this for loop before we dissect this further we can see that actually we can’t see but this is the max length value and this is the min wave value okay so that’s that’s what those two values of for so I’m just gonna go ahead and set our minimum length to one and our maximum length to 5 so our password booty will be between 1 and 5 characters we need the plus 1 because range will only actually generate a range between 0 & 4 and since we actually need 5 we will add 1 to the 5 which will give us our range of up to 5 characters but anyways so this for loop right here is doing one thing only and that is changing this eye value from 1 through 5 on each iteration now why do we want to do that well remember we need a password up to 5 characters so we need to use all combinations possible for all 5 sets meaning passwords that only have one character passwords that have two characters three characters four characters and then the last set passwords that have five characters so this allows us to do that once at a time for each five instances so let’s kind of back up here and walk through this so we have our for loop and we are going to loop through the results of this method which is this entire method is this right here all right so we have this chain dot from iterable and it has a another method that’s getting passed into it and that is this product method and that product methods being passed our character set with another parameter called repeat if this repeat was set to one it would just do one character if we set this to two it would then do two characters so on and so forth and we need that to happen because we need to try all possibilities between one and five characters so hopefully that makes sense as to why we have this for loop it’s looping through this for each value of I which will ultimately be one through five so that’s what we have going on there so in theory you just wipe that out to make this a little bit more readable since we know this is just gonna loop through five times for each iteration of this for loop so now looking at this this isn’t quite so complicated it’s a little bit easier to read or rather to make sense than what we have over here just really this is that just a little bit bigger so this is really what the line of code should look like because it’s basically this is basically just ones long line and it’s a little confusing because we use this return and this join by using this join this is basically combining all the previous or all the combinations in that iteration and then returning it and this allows us to use a method that is iterable meaning we can pass it through a for loop and loop over each instance instead of generating all possibilities and either storing them in a file or a memory which both are inefficient so this just allows us to call it through a for loop that way we can just handle each element one by one right alright so I’m gonna go ahead and fix this code and let’s actually test this out right here and try this out Oh so I did it but little too fast all right so let’s run that again then you can see goes through zero through nine then it repeats but on the second pass it does all combinations of two characters once that’s exhausted it moves to three characters and so on and so forth until we finally reach all possible combinations between one and five character sets so that should help you understand what’s going on with that method all right let’s move on from that so that is our brute-force method now the next method that we need to create is our crack method and this method is what’s going to take or rather it’s the methods going to attempt a FTP connection to the remote server energy drink all right so this method takes three parameters the hostname that we’re attacking the user account that we’re attacking and then the password that we were going to attempt to try so the first thing we need to do is we’ll set up a try except block because it’s going to generate an exception every time we have a failed login and we’re obviously going to have a lot of those so we want to ignore ‘m so we just send the pass keyword which we’ll just ignore those errors the first thing we do is we check our global variable verb for verbose and if this is true we’ll go ahead and print the password that we’re trying next we’ll create our FTP object from the FTP and live library passing in the hostname and then we call the login function passing in the username and the password now if this is true meaning it’s successful then we know we found the password and so we want to go ahead and print that to the screen then we’ll that’s yeah then we’ll set the global value of PWD to true and this lets our program know further down here that hey we found the password and you can stop trying possibilities and exit the program next we’ll do a directory listing because after all we connected to the FTP server so hey let’s see what’s in there so we’ll do that we’ll list the directory and display that to the screen and then finally we’ll close the connection know this is an area where you might want to do some fun stuff perhaps you might want to search for any PHP files and install a backdoor or look for sensitive data or whatever the case may be but the idea is once you’ve connected you have access and you opportunities but that is pretty much it for our crock function it just simply simply tries to connect and if it does lets us know and lists the directory if not it just closes the connection our next method is the weight method and since this is going to be a threaded application we need a method for checking if these threads are complete so what we’ll do is for example the user says hey I want to launch 25 threats so we’ll create those 25 threads and before we actually create 25 more we’ll wait for those to complete first and we do this by calling this thread join method on our thread objects so basically our weight method gets passed in a list object called threats and this will be a list of every process that we created or rather every thread that we created so then we just we just for loop each of those threads and call this join method on it and what this join method does is it basically blocks our entire Python script our script will stop it won’t do anything else until this thread has completed and closed so what’s gonna happen it’s gonna hit the first thread and let’s say that first thread is not finished so our programs have stopped right here until thread number 1 is done all right thread number 1 is done ok you can move on so it starts over thread number 2 3 our number two’s not done so we’re gonna stay here and wait it’s done ok now we’ll continue where 3 is already done all right thread 4 and get all the way done throughout 25 it’s not done ok we wait and now we’re done ok we did we checked them all and this method is now finished and no return execution back to horse so what this does is prevents us from launching new threads before all the old ones are complete and also allows us to display our footer message after all the threads are complete because if you didn’t do that this message would get displayed before all the attempts were complete which means you could have output after your footer message and that’s just gonna make everything look stupid all right so that’s what this wait threats for it just checks each thread are you finished no okay go ahead and finish let me know when you’re done and that’s it it doesn’t matter you can have the code on two lines or you can do it on one line just like that all right moving on into our main attack method attack method but just our main method this is the method that’s going to take in all the command line arguments specified by the user go ahead and configure our application for the type of attack that was specified and then launch that attack so there’s just a lot of logic going on here so let’s go ahead and step through this so we start off with the try accept block but this one is only really checking for the user to press control C or which is called the keyboard interrupt I’m not checking for any errors here though I probably should for good measure but if you did everything right you shouldn’t have any errors that are going to stop you but you might want to add an error exception in there but anyways that’s what this try/except is for it’s checking for the user pressing ctrl C through our loops and if they do we will print to the screen that hey we’re canceling give us a moment while we stop all the remaining threads which we call our weight method and then finally we just exit the app and we’re done so the first thing our method is going to do it’s going to get the current time and we’ll use that for determining the duration of our attack next we’ll do a header message which just simply says the username that we’re attacking and the host name we’ll create some variables just some local variables that we’ll use down here in our logic the first one is for keeping track of the number of threads and the next one is our threads list object that gets passed to our weight method so we’ll go through all of the arguments and set them to their global equivalent once that is complete we’ll check the character set and see if one was provided by the user if the user didn’t specify a character set we’ll go ahead and set that value and we do that by looping through the numeric value 37 and 127 and this is the printable range actually should be plus 1 this is the printable range of ASCII characters so we just go through each one and then add it to our character set with this line of code right here alright once all of our global variables are taken care of we now need to figure out are we doing a brute-force attack or are we doing a dictionary attack so we do this by checking the word list command line argument if the user did not provide a word list well then our only option is to do a brute force attack so we’ll go ahead and get that process started the first thing we need to do on our brute force attack is call our brute force method this is what will generate all of the passwords that will be used in the attack and remember we pass in the character set the minimum length of the password rather the maximum length of the password and the minimum length of the password all right now that we’re in our for loop the next thing we need to do is check have we found the password yet because remember as soon as we find the password we set this to true and if this is true meaning we found the password that we’re going to stop this for loop we’re going to stop cracking passwords we’re gonna exit out and let our program complete by coming down here and finishing out if we have it found the password yet well then we need to we need to start initiating threads and we’ll do this here now the first thing we need to do is check for the number of threads that were initiating because the user can specify the number of threads they want to use we have that in here somewhere is right here when you see the default is set to 10 with the user specified 25 well then we need to launch 25 threads and we do that by keeping track of this thread count variable which will increment by 1 every time we create a thread so if we have not reached the maximum number of threads which was specified in the arguments value well then we’ll go ahead and launch a a thread but before we do that since we’re doing a brute force attack we also have the options of prefixing or post fixing a string to our passwords so for example if we wanted to use a prefix then we would specify that text and that text would be added to the beginning of the generated password and vice versa for postfix whatever string was provided would be added to the end of the password that was generated so for example if the password that was generated was ABC and we supplied a postfix value of two exclamation marks well then the final password would be ABC exclamation exclamation so if the user provides a prefix this will be true and we add that to the beginning of the password if the user provided a postfix then we will add that to the end of the password and this plus equal is the same thing as doing this let’s basically take our variable and add this to the end but a short way of doing this is just doing plus equal all right now that our password is complete we can now go ahead and launch our thread and we do this using the threads method and we specify the target method which is our crack method and that method needs three parameters and we do that with the args parameter and we pass those in host username and password now notice that we have these wrapped in parentheses and separated with commas including this one on the end we do this because the arguments rather the args parameter is expecting a double value or a variable and by storing our parameters in this format we’ll pass it off as a tuple and allowing our thread to be launched but our thread isn’t launched yet not until we pass or rather execute this start method on our thread so we created our thread object and now we call the start method and it is now running and once we have it running we want to go ahead and add it to our threads list because remember we created this threads list for storing all of our spawned threads that we can pass on to the weight method so we do that by appending it to the end of the list and the next we need to increment our thread count by one because we just launched a thread and then we also have a global variable called a CNT which just keeps it track of every attempt that we made so at the end of our attack we know how many times we tried a password the very last line is this sleep method and this is for throttling our threads that the user specified a pause of 30 seconds then this will cause the application to pause for 30 seconds before launching a new thread now let’s go back up let’s say we have launched 25 threads and now this thread count value is equal to the maximum number of threads so it means we’re going to hit this else clause and that means we’ve launched all the threads we’re going to launch for this initiation or this iteration so what we need to do before we launch the next batch is go through and make sure they’re all done so we do that by calling the weight method on our threads list object once that is complete we know all the threads are done so we’ll go ahead and reset our thread count value to zero and we will delete all of the threads that we have previously generated in our list and once that’s done our for loop will continue in the process we’ll start all over and we’ll launch another batch of 25 and complete this process until we’ve exhausted all of the passwords or found a password alright so that covers the brute force method of our code the next method of our code is the dictionary attack method and this is very similar to the brute force the only difference is instead of using our brute force method of getting passwords we simply open the word list file that was provided by the user alright so we do that with a with open statement and we pass in the argument word list that the user specified we open that file and loop through each line and grab the password from it now that we’re inside our loop the first thing we have to do is check to see if we found the password and if we have we’ll call a break which will stop our loop and allow our program to finish and here we’re doing the exact same thing we’re keeping track of the number of threads created we create our threads we increment our values we pause if necessary once our batch is done we’ll wait for them to complete and then we’ll zero it out and start all over there’s there’s nothing different here other than we’re getting our passwords from a file instead of generating them through our brute force method so that’s the dictionary side there’s nothing new or different there and that brings us to the end of our program which will finally call the weight method one last time it’ll get the stop time which is the time that they scan or the attack finished and then we’ll just display a simple footer message that displays the attack duration and the number of attempts tried and that concludes the main method the very last chunk of code we have is what handles the command-line arguments specified by the user and this is actually pretty easy we just have a lot of command-line options here which is probably making this seem a little complicated but there’s not the first thing you do is you just specify a argument parser object as seen here and from there you can start creating your arguments and you do that by using the add argument method so the first option is the name of the argument now you can see this one here doesn’t have a dash and this means it’s a positional argument meaning it has to be specified first and this one is the host name that will we are going to attack we use the action store and we’re going to use that in all instances and all that is saying is like hey whatever the user supplied I just want you to store that value and to a variable named host the next parameter is the help parameter and this is what you see whenever the user uses views the output for your tool so as you can see right here FTP host username to crack so that’s where that’s coming from no these can be optional and I got like major sore throat going on so these can be optional parameters and flags whatever you want to call them they don’t have to be required necessarily however you may want them to be required or you at least may want to set default values and in some instances I want to do that I set default values by specifying specifically this in args with a question mark and by doing this it gives me flexibility and what I mean is for example the idea with this argument of length which is the password length for a brute-force attack the user will specify the attack l argument and then specify a value for example 8 but what happens if the user doesn’t provide that value let’s just say they just do tack L well by doing this line here this will handle that condition so if the user just Besh’s specific and I’m having a hard time talking ok so if the user just specifies a tack L with no value then we’ll go ahead and assign it a default value now if the user does tack l space 12 well then the value 12 will be assigned so we do all of that with this right here this in args allows this to be basically optional and if the user doesn’t provide the value we set it ourselves now this last parameter is the data type and for this we want this to be an integer now if you don’t assign this it’s just gonna be defaulted to a string variable so keep that in mind if you want to work with an integer or some other specific value type you need to specify that here now we just continue this process of adding all of our command-line arguments and I’m not gonna go through all of them because they’re all the exact same process there’s nothing new or different with any of them than the previous ones so once you understand one you’ve got it covered so once we have all those specified now what we’re going to do should be to is this line of code we’ll check to see if the user provided these first two arguments and if they did not we’re gonna go ahead and print the help message and close the program now we actually don’t have to do this if we didn’t do this and the user didn’t specify the command line they require command-line arguments then the our tool will automatically display a help message but the problem is does it displays a short version of the help message it doesn’t show the complete help message as we see here and I wanted to show the complete help message so that’s why I’ve added this code so if these two options are not provided I want it to show the full and complete help message and I do that with these two lines of code and this part as exit it just exit your code we could have easily done a sis exit and that would have worked at just the web just the same but at that moment I was already in the parser mindset so I just went ahead and used that but ultimately it doesn’t matter all right now once that is all done we have our parser argument created meaning we’ve specified all the various command-line arguments we now need to store them all into this args variable this will give us a nice object to work with to where we can easily access these command-line arguments as we do up here ok so now the next thing we do is a little bit of logic checking on the arguments apply to our program for example we have two values or two command-line options that can clash with each other and that is the minimum and maximum length value the password length and the minimum password length so for example the password length let’s say that is set to 5 but the users approps applies a minimum password length of 7 well that’s obviously a problem that just logically doesn’t make sense so we need to check for that scenario and we do that with this if statement but we actually need to do two because if the user is doing a dictionary attack the min length and length arguments are gonna be empty because again they’re doing a dictionary tag so there’s no reason for them to specify these values so we need to check to see hey did the user actually specify a minimum length or a maximum length and if they didn’t I’ll just ignore this whole thing because it doesn’t matter but if they did well let’s go ahead and check this out so then we move on to see hey is the minimum length actually larger than the length of the password and if it is we need to let the user know that and we do that with this error message right here and we tell a your minimum password with the option M and then we give them the value is greater than password link option L and then give them the value so they can see what the actual problem is and better understand where they made a mistake and get it corrected and then finally we’ll print out the full help and close the program now if they got through all of that we’ll finally call the main method and watch all of our logic alright so that is definitely a lot longer than most of our tutorials but I think it’s time that we start taking our coding to the next level I feel like we’ve really kind of covered a lot of the core stuff and we can really start doing some more meaningful code now if you’re still new and you’re struggling with certain aspects let me know throw a question out onto this video come over to the website post up a question on the blog post let me know what’s going on and what the problem is and I will help you out now that our code is done let’s go ahead and try this out okay so I have a situation where there’s a server out there and I know this server has a bunch of accounts and I have one of these user accounts that was just created and this server very poorly creates default passwords the password consists of eight characters the first four characters are static meaning they never change they’re always the same and those first four characters are the first four characters of the server’s host name which in this instance those four characters happen to be you a hyphen H now the remaining four characters comprised of four numbers between the values of zero zero zero zero and nine nine nine so now with this information let’s try to brute-force attack this account and see if we can get access to the server you know this is actually a situation I have ran into before so I recreated a server with an account that was set up in the same way that this system was set up and I have given it a default password randomly generated let’s go ahead and try to crack it so let’s go ahead and use Brutus and the first thing we need to do is specify the host name that we’re attacking and that would be this poor server right here right then next what we need to do is we need to specify our character set because we’re not going to do a word list so we specify our character set now we need to specify a character set all the digits because remember the first floor of the password are static they never changed the only ones million characters a change are the last four characters and they only comprise of 0:39 so that will be our character set zero through nine now the next thing we need to do is specify the length value and that’s going to be how long is our password now you might think eight but actually we only need this to be four because remember we’re only generating the last four characters of this eight character password so we specify the value for now next we’re gonna specify a minimum length value of four because we know the password that we’re trying to generate has to be at least four characters so we don’t want anything less than four characters we want exactly four characters so we specify four next what we need to do is specify the prefix option and remember we already know the first four character EULA password so there’s no point and including those in our brute-force attack we just need to add that to the beginning of our password and we do that with the attack our option and then specify what text we want to prepend to our password and all the passwords start with the first four characters of the host name and that is UA – H so we do that there next let’s go ahead and specify how many threads we wish to launch we’ll go ahead and launch so let’s just say 50 and a real situation you probably wouldn’t launch that many but we’re just testing here actually this is hammer this server let’s do 250 see if we can make it crash actually that’s a bit excessive let’s just do a hundred and it finally will specify the verbose option so we can see each password it’s actually trying so this is gonna be our command line to try to hack this server so let’s go ahead and run it and see what happens it might help if I actually specify the correct file name and away it goes so you can see it just launched a hundred threads it waited for them all to complete then launched 100 more and it continues this process until it’s either done or it finds the password so hey guys this is a good time to go ahead and click that subscribe button if you have not subscribed it’s kind of crazy most of you guys are not subscribers to my channel it’s kind of surprising also this is a good time to go ahead and click that like button if you like learning all this hackery stuff you guys don’t like well then what’s the point of me even making the videos also don’t forget to join the newsletter that’s a good way to just stay informed on what’s going on in the security world it’s like I said I will send out a email once every I think I’m doing on Monday I’ll send it out on Monday and it’ll clewd all the bugs that have been found in the last week and any sort of other information security news or relevant information that is going on in our world so we’ve gone through 2,000 possibilities and have not found a valid password yet so let’s let it go or about 1/5 done okay so what do you guys think about the wanna cry guy getting arrested leave some comments out that I’m kind of curious what you guys think is he getting jacked or do you think he did something bad nope alright BAM there we go we were able to make a connection using the password you a – h2 one seven seven three and once connected to that account we can see that there is a folder in there named secret awesome and the duration it took 1 minute in 42 seconds and we tried a total of 2759 possibilities before we were able to connect to the server and guys that’s going to conclude this video on coding your very own Python FTP brute force and dictionary attack tool now this is the foundation to a very useful tool so if you happen to make any improvements or any additional changes let me know I would love to see them in fact that should be your homework make this tool better for all of us let me know and I’ll update it and I’ll include you with the credits now since I know most of you don’t want to sit there and type out this code by hand if you head on over to the website you will see this link code at the top and if you click that it will take it to my github repository and you’ll see any tools that I’ve created now this is actually github gist which is kind of like paste bin so I’m going to start keeping all of the code for my tools over here so you can check this and download any of the tools that I may have available for example this tool Brutus here I will include the link no I will not include the links in the description because you’re supposed to go to the website and find it there so yeah just go to bushy security comm and click code at the top and you’ll be good to go alright guys that’s going to do it for this video but don’t fret I will see you guys very soon at the cyber surveillance with Python web course I don’t forget to sign up to that right here if you haven’t already and stay tuned that email will be coming very soon giving you details about wind and how that will be happening but that’s gonna do it for today guys and remember I will see you on the other side [Music]

44 thoughts on “Python FTP Brute-Force – Python Programming For Hackers

  1. great video sir.done subscribe..sir can you please tell us about scada vulnerability and its some practical,we can see this attack in mr robot too

  2. How can learn to use all those methods of the args class? It's hard to follow you with all the parameters. Can you make some tutorials for using this?

  3. Nice Video,though I didn't understand a lot of it, still new to python and programming in general ….. Looking forward to your next video.

  4. You should do a video in writing exploits for metasploit in C. I never really understood how programming could tie into pen testing, meaning, I m not sure how I would create my own tools in programming and apply them to networks. Then again I am 13

  5. Hello man
    I appreciate your job, I love your videos. I have a question I'm in a LAN network and I'm on guest PC. I want to enter to administrator one or just to get wifi password. To get wifi password I need administrator password I want this password. Thank you

  6. I suggest making a video on how to access specific website databases. Like for say if I want to access the database of How do I do a specific attack on one website without knowing the phpid?

  7. Hey Mr. H
    Can You Please Help Me Out?
    Can you show how to hack instagram accounts using kali linux?😁
    Would be a great help to your new subscriber😇

  8. i have a problem when i run it ./ line 35: class: command not found
    ./ line 37: chrset: command not found
    ./ line 38: prefix: command not found
    ./ line 39: postfix: command not found
    ./ line 40: length: command not found
    ./ line 41: minlength: command not found
    ./ line 42: thrds: command not found
    ./ line 43: verb: command not found
    ./ line 44: pause: command not found
    ./ line 45: cnt: command not found
    ./ line 48: syntax error near unexpected token `('
    ./ line 48: `def bruteforce(charset, maxlength, minlength):'

    any solution???

  9. If we haven’t downloaded it or whatever shit we r supposed to do how do u expect it to work for us? I swear there r no tutorials that just tell u how to do these things…smh

Leave a Reply

Your email address will not be published. Required fields are marked *