# IOC Extract
[![Linux x86_64](https://github.com/marirs/ioc_extract-rs/actions/workflows/linux_x86_64.yml/badge.svg)](https://github.com/marirs/ioc_extract-rs/actions/workflows/linux_x86_64.yml)
[![Linux Arm7](https://github.com/marirs/ioc_extract-rs/actions/workflows/linux_arm.yml/badge.svg)](https://github.com/marirs/ioc_extract-rs/actions/workflows/linux_arm.yml)
[![macOS](https://github.com/marirs/ioc_extract-rs/actions/workflows/macos.yml/badge.svg)](https://github.com/marirs/ioc_extract-rs/actions/workflows/macos.yml)
[![Windows](https://github.com/marirs/ioc_extract-rs/actions/workflows/windows.yml/badge.svg)](https://github.com/marirs/ioc_extract-rs/actions/workflows/windows.yml)
[![GitHub license](https://img.shields.io/github/license/marirs/ioc_extract-rs)](https://github.com/marirs/ioc_extract-rs/blob/master/LICENSE)

Extract indicators like urls,domains,ip,emails,etc... from a given string or a Text file.

### Requirements

- Rust 1.56+ (edition 2021)

### Example
```rust
use ioc_extract::Artifacts;

fn main() {
    let x = "there are ips in this test\nexample.ini\n192.168.21.21 and ::ffff:127.0.0.1\nthe cidrs are:\n2001:0DB8:1234::/48 and \n10.0.0.0/8\n\n";
    let x = x.to_owned() + "check out https://www.google.com or www.google.com";
    let ioc = Artifacts::from_str(&x);
    println!("IOC's:\n{:#?}", ioc);
}
```

### Running the Example
```bash
$ cargo r --example xtract
     Running `target/debug/examples/xtract`
IOC's:
Some(
    Indicators {
        urls: Some(
            [
                "https://www.google.com",
            ],
        ),
        domains: Some(
            [
                "www.google.com",
            ],
        ),
        emails: None,
        ip_address: Some(
            [
                "10.0.0.0/8",
                "192.168.21.21",
                "2001:0DB8:1234::/48",
                "::ffff:127.0.0.1",
            ],
        ),
        crypto: None,
        registry: None,
    },
)
```

---
LICENSE: MIT