- In this video, I'm going to show you a simple Python script that
runs a denial service attack or DoS attack against a WiFi network. So once you run this Python
script that I've written and linked below, which you
can find on my GitHub page it will basically destroy a WiFi network. Now, before we get started,
only use the script on networks that you personally own, or
have permission to attack. Please don't use this Python script that I'm gonna demonstrate in
this video in a coffee shop, please don't use it on your parents or on a network that you
don't have authorization to run the Python script against. So again, don't use this on your neighbor if they playing loud music, as an example, such as other people have done on YouTube. In this example, I'm
attacking this a WiFi router. So the network that I'm gonna attack is this little TP Link WiFi router. In this example, I've
got a Windows computer that's gonna be the client that we're gonna knock off the network. And then I'm running Kali
or Kali Linux if you prefer within a virtual machine on my Mac. Now for this attack to work, you need a WiFi adapter such as this. This is an Alfa network adapter. It supports both monitor
and injection mode. So you don't have to use an
external WiFi adapter like this but you need one that supports
injection and monitor mode if you really wanna
attack a WiFi networks, this Alpha network
adapter works really well. The disadvantage of this one is it only supports 2.4 gigahertz
WiFi not five gigahertz. So you could buy a more expensive adapter that supports both 2.4 and five but this is a great WiFi
adapted to start with because Kali Linux
automatically picks it up. (upbeat music) Okay, so let me demonstrate the script and then I'll go through
the script in more detail so that you can see how the script works. It's really well worth
your time learning Python because it gives you a lot of options, fantastic programming language. So on my Windows computer,
I'll open up a Command Prompt, and what I'll do here
is ping Google with -T so that the pink doesn't time out. So you can see the ping
is continuing to run. And what I can do as an
example is go to a website such as Facebook so I'm able
to connect to the internet. Okay, so my ping is continuing but what I'll do on Kali
is open up a terminal. I'll make this slightly bigger. Okay, so iwconfig shows me
that I have a WiFi network connected. I'll disconnect this
WiFi adapter from my Mac and then I'll plug it back in again. I'm asked, do I wanna connect
this to my Mac or to Linux? I'm going to connect it to Linux. And once again you can
see that my WiFi adapter is connected, it's
currently in managed mode. Now, if you're not sure how to do that, have a look at this video where I'll show you how to install Kali on a Windows computer as an example. I also showed you in this video, how to manually do what
I'm demonstrating here but just to make it more interesting, I've created a Python
script that speeds things up and makes it a lot simpler. So on Kali, I'm gonna create
a file called wifidos.py. Nano is a basic text editor, you could use Vi if you prefer. But I'm basically creating
a file called wifidos.py. This is my Python script
which is pre-written. So I've created this Python script, and I've also put a lot of
comments in the Python script so that you can see
exactly what's happening. So unlike some other examples
that are found online which are really complicated and don't have a lot of comments, I've put a lot of comments in this code. I'm really hoping that it makes it easier for you to learn Python and explains what this code is doing. So what I'll do at this point
is simply copy that code, and I'll paste it into nano on Kali. Press Control X to exit press
Y to save, script is saved. So LS shows me that I've
got my wifidos.py script. So if I run Python, and in this case I'll run
Python3 and run that script. Now, in this example, Kali is remembering previous commands that I've typed. So I've simply use the right arrow key to complete the command. You'll probably have to
manually type the command out. But Python3, wifidosdot.py, you can see here that an error display is telling me that I need
to run this as pseudo. So pseudo basically allows
me to run the script with root privileges. So pseudo Python3 wifidos.py, have to put my password in, so I'll put in my password of Kali, and it's now picked up
the WiFi adaptor to use. Now, if I didn't have that
WiFi adapter connected, the script would tell me
that I need to connect it. So in the script, I've added options such as if you're not
running the script as pseudo, the script will break. If no wifi, adapters connected, we're told to connect to the WiFi adapter. So I've tried to add various
problems that you may encounter to the script to make sure
that it runs successfully. In this example, I've
only got one WiFi adapter. So I'm gonna use zero to
select that WiFi adapter. The script destroys any
processes that could conflict with putting this adapter
into monitor mode. You need an adapter once again,
that supports monitor mode like this Alpha adapter. So it kills any conflicting processes and then it puts the
adapter into monitor mode and then it discovers
the WiFi networks around. This is the WiFi network
that I want to attack. On my Windows computer, you can see that that's the network that the Windows computer is connected to. So I wanna attack that WiFi network, so I'm gonna press Control C and then use zero to
select this WiFi network and press Enter. What's happening now is
deauthentication messages are being sent to the WiFi adapter which will stop this device
from connecting to the internet. So you can see that pings
are starting to time out. And if I open up another
tab on my web browser and try and go to facebook.com, you'll notice that there's
a problem with a network. If I go to another website,
let's say google.com, the device is not able to
connect to the internet because I'm basically
deauthenticating all clients on this network. So, as an example, if I try
and play some music here from a website, nothing happens. The music can't play because
I'm breaking this network. If I press Control C on my script to stop a deauthentications, ping start working, and back on my PC, I should hopefully be able to
connect to various websites, so I can connect to Facebook, I can connect to Google, I can connect to LinkedIn. And let's try different music file, the music starts playing. So if I run that script
again, select my WiFi adapter, select my WiFi network
that I wanna attack, start attacking the network. What you'll notice here on the pings is that they'll start to time out. So the pings timeout while
de-authentication messages are being sent to the WiFi network. Now it is recommended that
you attack a single client rather than just sending Dos messages to everyone on the WiFi network. And I'll cover that in a separate video. So I'll show you how to adapt the script so that you can select
an individual client and just attack that. So, as an example, well you
may just wanna attack an iPhone or you may wanna just
attack a music system, so you can attack a specific
device on a WiFi network. Now what's amazing about this is you don't have to know the
password of the WiFi network that you're attacking, you can attack any WiFi network as long as you're within the vicinity, in other words, you are
seeing the WiFi network, you can attack it. Now again, you don't have to be connected to the WiFi network to run
the denial of service attack against that WiFi network, you simply have to be in the vicinity. You have to basically be
able to see the WiFi network in the air. So your WiFi adapter has
to be able to pick up that that WiFi network is there. So again, if I run that script, these are the WiFi networks
that I'm currently seeing around me. So my WiFi adapter can pick
up these WiFi networks. So if you're too far away
from the WiFi network, you wouldn't be able to run the attack, but as long as you're within the vicinity and can see it in the air, then
you'll be able to attack it, you don't need to know the
password of the WiFi network. Now I'm hoping you enjoying
these types of videos. I'm hoping you enjoying
these kinds of scripts. Python is a really powerful language. If you learn Python, you can do a lot of things,
including stuff like this. Now, with that being said if you enjoyed this video, please like it, please consider subscribing
to my YouTube channel and clicking on the bell
to get notifications. I'm hoping to reach a
million subs in this year, so please help me do that. Now, please note, when I break the script by using control C as an example, we get trace back messages. I've created two versions of the script. In the script, you can
actually see the output of the commands that you're running. So we can see the DoS messages
going to the access point. In a separate script, I'm using a sub-process. So I'm pushing that to a sub-process so you don't see that output, but what it does allow me to
do is to use a Control break or control C on the Python script and do some clear up
after the script is run. This first script doesn't do that, but I've put both
scripts below this video, so you have two different
versions of the Python script. The first script I think
is the simplest to use, but if you wanna take
it a little bit further, you can have a look at
the second script as well. I'm gonna show you what
the Python script does, but again, I've put a lot of
comments in the Python script so that I don't have to make
this video extremely long to explain every single line of code. Have a look at the Python
script, which you can once again download using my GitHub link below. But as always, only use this kind of code for ethical hacking purposes, only attack a network that you own or have permission to attack. We're importing a whole
bunch of modules here including sub-process
or regular expressions, CSV, and others, what are we gonna do
is create an empty list of WiFi networks, and then we going to do a test to see if a SSID is already in the list. So we are checking if
an SSID already exists. If it doesn't exist in our
list, we're going to add it. I've got a basic user interface, you could delete all of
this if you don't want it. We are checking to see that
the user's using pseudo privileges, if not, we tell
the user to run the program with pseudo. We remove any CSV files
before we run our script. We are breaking the script at the end so we can clear up the CSV files. You could do that using the second script that I've created and put below. But in this first script, it's kind of like a
heartbreak of the script, so the CSV file remains there. So before we run the script, again, we do a clear up of any CSV files. So we basically make a backup directory. If it already exists, we simply move the
files to that directory, but if it doesn't exist, we create it and then move the
files to that subdirectory. Then we check for the WiFi interfaces. In our example, we assuming
that the WiFi interfaces will be wlan zero or wlan
one or wlan two, et cetera. And then we're going to use a sub-process. So we running an additional process to check the WiFi
interfaces using iwiconfig. If a network adapter is not fond we tell the user to plug
a network adapter in, but if it is found, then
we ask them to select the relevant WiFi network interface. You could have multiple WiFi
interfaces connected to Kali, so we ask the user to select one. We making sure that they select
one that actually exists, then we store that in a
variable for easy reference. We tell the user that we're
gonna kill any conflicting processes. You need to do this when
running the commands. In this video I showed you how to manually run all these commands. So if you wanna see it step by step, then have a look at this video. But here we basically
taking that knowledge and putting it into a script which makes it much easier rather than manually doing
things over and over again. It's much better just to automate it to using a script like this. So we kill the processes, we put the WiFi network
adept into monitor mode, we use popen to check for WiFi networks. So we basically using airodump-ng, and we're gonna check the WiFi
networks running around us, that basically gives us this output here so we can see the various WiFi networks. So this is actually showing us the output. We clear the screen before
printing the interfaces and then we display all that information. So we can see our SSID information. We create a nice, pretty menu
showing all that information. So basically with airodump-ng, it puts the output to a CSV file, and then reading that CSV file, and then displaying it to the user. So this information is
actually being displayed from a CSV file. Airmon-ng writes the
information to CSV file and then we display it here. So every second that's updated, when the user presses Control C, we tell them to make a choice. So if I press Control C here,
I need to make a choice, and the network that I
wanna attack is this one. So I'm going to select 14. If I did select some
random number like 45, we would be told to do that again. So I select 14, and now the deauths are
sent to the WiFi network. So we ensure that it's a valid choice, if it's not, we ask them to try again. We make it easier to read the code by specifying the hack B
SSID and the hack channel. We run this command to specify the channel that we're gonna hack on. So that was picked up previously when we saw the output
of the WiFi networks, we could determine the WiFi channel. So we run airmon-ng to
specify the channel, and then we run aireplay-ng
with the deauth command. And this is unlimited deauth to just de-authenticte any
clients on the network, and that's what you can see
here on the Windows computer, it's being deified indicated
from the WiFi network. And then the user needs to press Control C to break the script. So once again, if I press Control C there, keyboard interrupt, script ends. Now, LS shows us that
we've got the CSV file. So when we run the script again, that's gonna be moved
to the backup directory so that the script can run
without additional CSV files interfering with what
we're trying to read. Okay so that's the one script, the other script is very, very similar. The differences at the end. At the end of the script, we're gonna use popen to a
D authentic Kate clients. And now, because we doing that, we can still control the script. So we can print out that clients have being deauthenticated. Press Control C to stop. And then when you press Control C, we tell the user that we
stopping monitoring mode. So we stop monitoring
mode on the WiFi adapter, and we exit the script. Now you should actually
which I'll add here is start the network services again. But the script allows you
to do a proper cleanup, you could if you like
reboot your virtual machine or your Kali Linux installation. if you don't wanna do that, we'll just type the commands manually to start these services. So, as an example, using the first script, the one that I've demonstrated, iwiconfig shows me that the
adapter is in monitor mode, so I wanna use this command
airmon-ng stop wlan zero mon, and I need to do that as route to now put the WiFi
adapter into managed mode. I couldn't do that with
the first script once again because I press
control C to break it and then the script ended. But in the second script, I did that. And what you can do as well
is start network manager. Okay, so there you go. Hopefully you've enjoyed this video. If you did, please consider subscribing to my YouTube channel, please like this video
and click on the bell to get notifications. I'm hoping to reach a
million subs this year, so please help me do that. I'm David Bombal, wanna
wish you all the very best. (upbeat music)