Skip to content

Commit

Permalink
Merge pull request #18 from Ragnt/dev
Browse files Browse the repository at this point in the history
v0.8.3 Merge
  • Loading branch information
Ragnt committed Feb 2, 2024
2 parents e427a6d + 7a4d5e0 commit 6407ddc
Show file tree
Hide file tree
Showing 16 changed files with 147 additions and 161 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
members = ["libs/libwifi", "libs/libwifi_macros", "libs/pcap-file"]

[workspace.package]
version = "0.8.2"
version = "0.8.3"
authors = ["Ryan Butler"]
description = "80211 Attack Tool"
license = "MIT"
Expand Down
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

[![Builds and Release](https://github.com/Ragnt/AngryOxide/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/Ragnt/AngryOxide/actions/workflows/ci.yml) ![GitHub commit activity](https://img.shields.io/github/commit-activity/w/Ragnt/AngryOxide) [![Discord](https://img.shields.io/discord/1194365883099922643)](https://discord.gg/QsEgaFndsQ)

**This tool is for research purposes only. I am not responsible for anything you do or damage you cause while using AngryOxide**
**This tool is for research purposes only. I am not responsible for anything you do or damage you cause while using AngryOxide. Only use against networks that you have permission.**

AngryOxide was developed as a way to learn Rust, netlink, kernel sockets, and WiFi exploitation all at once.

Expand All @@ -18,7 +18,7 @@ The overall goal of this tool is to provide a single-interface survey capability

This tool is heavily inspired by [hcxdumptool](https://github.com/ZerBea/hcxdumptool) and development wouldn't have been possible without help from ZerBea.

If you have questions or any issues, you can reach me in [<img src='https://wearline.co/wp-content/uploads/2022/11/discord-button.png' width='100'>](https://discord.gg/QsEgaFndsQ)
If you have questions or any issues, you can reach me on the [AngryOxide Discord](https://discord.gg/QsEgaFndsQ)

## I wanna use it!

Expand Down Expand Up @@ -71,8 +71,11 @@ Options:
-b, --band <BAND> Optional - Entire band to scan - will include all channels interface can support
-t, --target <TARGET> Optional - Target (MAC or SSID) to attack - will attack everything if none specified
-w, --whitelist <WHITELIST> Optional - Whitelist (MAC or SSID) to NOT attack
-r, --rate <RATE> Optional - Attack rate (1, 2, 3 || 3 is most aggressive) [default: 2]
-o, --output <OUTPUT> Optional - Output filename
-r, --rogue <ROGUE> Optional - Tx MAC for rogue-based attacks - will randomize if excluded
--combine Optional - Combine all hc22000 files into one large file for bulk processing
--noactive Optional - Disable Active Monitor mode
--rogue <ROGUE> Optional - Tx MAC for rogue-based attacks - will randomize if excluded
--gpsd <GPSD> Optional - Alter default HOST:Port for GPSD connection [default: 127.0.0.1:2947]
--autohunt Optional - AO will auto-hunt all channels then lock in on the ones targets are on
--headless Optional - Set the tool to headless mode without a UI. (useful with --autoexit)
Expand Down Expand Up @@ -128,6 +131,5 @@ I use [zsh-bash-completions-fallback plugin](https://github.com/3v1n0/zsh-bash-c
## Screenshots!
![AccessPoints Page](screenshots/angry_oxide_demo.png)
![Handshakes Page](screenshots/handshakes.png)
![Status Page](screenshots/status_page.png)
![Access Points Page](screenshots/ap_tab.png)
![Handshakes Page](screenshots/handshakes_tab.png)
Binary file added screenshots/AP3.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed screenshots/angry_oxide_demo.png
Binary file not shown.
Binary file added screenshots/ap_tab.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed screenshots/handshakes.png
Binary file not shown.
Binary file added screenshots/handshakes_tab.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/station_tab.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed screenshots/status_page.png
Binary file not shown.
33 changes: 22 additions & 11 deletions src/auth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ use chrono::{DateTime, Local};

use libwifi::frame::{components::MacAddress, EapolKey, MessageType, Pmkid};

use crate::util::{
eapol_to_json_str,
slice_to_hex_string, system_time_to_iso8601,
};
use crate::util::{eapol_to_json_str, slice_to_hex_string, system_time_to_iso8601};

#[derive(Clone, Debug, Default)]
pub struct FourWayHandshake {
Expand All @@ -32,6 +29,7 @@ pub struct FourWayHandshake {
pub mac_ap: Option<MacAddress>,
pub mac_client: Option<MacAddress>,
pub essid: Option<String>,
pub written: bool,
}

impl fmt::Display for FourWayHandshake {
Expand Down Expand Up @@ -85,6 +83,7 @@ impl FourWayHandshake {
mac_ap: None,
mac_client: None,
essid: None,
written: false,
}
}

Expand Down Expand Up @@ -179,6 +178,10 @@ impl FourWayHandshake {
|| self.has_pmkid()
}

pub fn written(&self) -> bool {
self.written
}

pub fn has_m1(&self) -> bool {
self.msg1.is_some()
}
Expand All @@ -187,6 +190,16 @@ impl FourWayHandshake {
self.pmkid.is_some()
}

pub fn has_4whs(&self) -> bool {
self.eapol_client.is_some()
&& self.mic.is_some()
&& self.anonce.is_some()
&& self.snonce.is_some()
&& self.mac_ap.is_some()
&& self.mac_client.is_some()
&& self.essid.is_some()
}

pub fn essid_to_string(&self) -> String {
if let Some(essid) = self.essid.clone() {
essid
Expand Down Expand Up @@ -250,12 +263,10 @@ impl FourWayHandshake {
} else {
"\u{2705}".to_string()
}
} else if self.apless {
"RG".to_string()
} else {
if self.apless {
"RG".to_string()
} else {
"--".to_string()
}
"--".to_string()
};
tuple
}
Expand Down Expand Up @@ -649,8 +660,8 @@ impl HandshakeStorage {
self.handshakes.values().map(|v| v.len()).sum()
}

pub fn get_handshakes(&self) -> HashMap<HandshakeSessionKey, Vec<FourWayHandshake>> {
self.handshakes.clone()
pub fn get_handshakes(&mut self) -> &mut HashMap<HandshakeSessionKey, Vec<FourWayHandshake>> {
&mut self.handshakes
}

pub fn has_complete_handshake_for_ap(&self, ap_mac: &MacAddress) -> bool {
Expand Down
1 change: 0 additions & 1 deletion src/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ impl DatabaseWriter {
.expect("Called stop on non-running thread")
.join()
.expect("Could not join spawned thread");
println!("Stopped Database Thread");
}
}

Expand Down
14 changes: 7 additions & 7 deletions src/devices.rs
Original file line number Diff line number Diff line change
Expand Up @@ -488,17 +488,17 @@ impl Station {
.as_ref()
.unwrap_or(&Vec::new())
.iter()
.map(|ssid| format!("\"{}\"", ssid.to_string()))
.map(|ssid| format!("\"{}\"", ssid))
.collect::<Vec<String>>()
.join(",")
}

pub fn to_json_str(&self) -> String {
format!(
"{{\"mac_address\": \"{}\",\"last_signal_strength\": \"{}\",\"last_recv\": \"{}\",\"interactions\": {},\"probes\": [{}],\"has_rogue_m2\": {}}}",
self.mac_address.to_string(),
self.last_signal_strength.value.to_string(),
epoch_to_iso_string(self.last_recv).to_string(),
self.mac_address,
self.last_signal_strength.value,
epoch_to_iso_string(self.last_recv),
self.interactions,
self.probes_to_string_list_json(),
self.has_rogue_m2
Expand All @@ -508,9 +508,9 @@ impl Station {
pub fn to_json_str_client(&self) -> String {
format!(
"{{\"mac_address\": \"{}\",\"last_signal_strength\": \"{}\",\"last_recv\": \"{}\",\"interactions\": {}}}",
self.mac_address.to_string(),
self.last_signal_strength.value.to_string(),
epoch_to_iso_string(self.last_recv).to_string(),
self.mac_address,
self.last_signal_strength.value,
epoch_to_iso_string(self.last_recv),
self.interactions
)
}
Expand Down
1 change: 0 additions & 1 deletion src/gps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,6 @@ impl GPSDSource {
.expect("Called stop on non-running thread")
.join()
.expect("Could not join spawned thread");
println!("Stopped GPS Thread");
}
}

Expand Down

0 comments on commit 6407ddc

Please sign in to comment.