FreshRSS

πŸ”’
❌ Secure Planet Training Courses Updated For 2019 - Click Here
There are new available articles, click to refresh the page.
Before yesterdayYour RSS feeds

PANO - Advanced OSINT Investigation Platform Combining Graph Visualization, Timeline Analysis, And AI Assistance To Uncover Hidden Connections In Data

By: Unknown


PANO is a powerful OSINT investigation platform that combines graph visualization, timeline analysis, and AI-powered tools to help you uncover hidden connections and patterns in your data.

Getting Started

  1. Clone the repository: bash git clone https://github.com/ALW1EZ/PANO.git cd PANO

  2. Run the application:

  3. Linux: ./start_pano.sh
  4. Windows: start_pano.bat

The startup script will automatically: - Check for updates - Set up the Python environment - Install dependencies - Launch PANO

In order to use Email Lookup transform You need to login with GHunt first. After starting the pano via starter scripts;

  1. Select venv manually
  2. Linux: source venv/bin/activate
  3. Windows: call venv\Scripts\activate
  4. See how to login here

πŸ’‘ Quick Start Guide

  1. Create Investigation: Start a new investigation or load an existing one
  2. Add Entities: Drag entities from the sidebar onto the graph
  3. Discover Connections: Use transforms to automatically find relationships
  4. Analyze: Use timeline and map views to understand patterns
  5. Save: Export your investigation for later use

πŸ” Features

πŸ•ΈοΈ Core Functionality

  • Interactive Graph Visualization
  • Drag-and-drop entity creation
  • Multiple layout algorithms (Circular, Hierarchical, Radial, Force-Directed)
  • Dynamic relationship mapping
  • Visual node and edge styling

  • Timeline Analysis

  • Chronological event visualization
  • Interactive timeline navigation
  • Event filtering and grouping
  • Temporal relationship analysis

  • Map Integration

  • Geographic data visualization
  • Location-based analysis
  • Interactive mapping features
  • Coordinate plotting and tracking

🎯 Entity Management

  • Supported Entity Types
  • πŸ“§ Email addresses
  • πŸ‘€ Usernames
  • 🌐 Websites
  • πŸ–ΌοΈ Images
  • πŸ“ Locations
  • ⏰ Events
  • πŸ“ Text content
  • πŸ”§ Custom entity types

πŸ”„ Transform System

  • Email Analysis
  • Google account investigation
  • Calendar event extraction
  • Location history analysis
  • Connected services discovery

  • Username Analysis

  • Cross-platform username search
  • Social media profile discovery
  • Platform correlation
  • Web presence analysis

  • Image Analysis

  • Reverse image search
  • Visual content analysis
  • Metadata extraction
  • Related image discovery

πŸ€– AI Integration

  • PANAI
  • Natural language investigation assistant
  • Automated entity extraction and relationship mapping
  • Pattern recognition and anomaly detection
  • Multi-language support
  • Context-aware suggestions
  • Timeline and graph analysis

🧩 Core Components

πŸ“¦ Entities

Entities are the fundamental building blocks of PANO. They represent distinct pieces of information that can be connected and analyzed:

  • Built-in Types
  • πŸ“§ Email: Email addresses with service detection
  • πŸ‘€ Username: Social media and platform usernames
  • 🌐 Website: Web pages with metadata
  • πŸ–ΌοΈ Image: Images with EXIF and analysis
  • πŸ“ Location: Geographic coordinates and addresses
  • ⏰ Event: Time-based occurrences
  • πŸ“ Text: Generic text content

  • Properties System

  • Type-safe property validation
  • Automatic property getters
  • Dynamic property updates
  • Custom property types
  • Metadata support

⚑ Transforms

Transforms are automated operations that process entities to discover new information and relationships:

  • Operation Types
  • πŸ” Discovery: Find new entities from existing ones
  • πŸ”— Correlation: Connect related entities
  • πŸ“Š Analysis: Extract insights from entity data
  • 🌐 OSINT: Gather open-source intelligence
  • πŸ”„ Enrichment: Add data to existing entities

  • Features

  • Async operation support
  • Progress tracking
  • Error handling
  • Rate limiting
  • Result validation

πŸ› οΈ Helpers

Helpers are specialized tools with dedicated UIs for specific investigation tasks:

  • Available Helpers
  • πŸ” Cross-Examination: Analyze statements and testimonies
  • πŸ‘€ Portrait Creator: Generate facial composites
  • πŸ“Έ Media Analyzer: Advanced image processing and analysis
  • πŸ” Base Searcher: Search near places of interest
  • πŸ”„ Translator: Translate text between languages

  • Helper Features

  • Custom Qt interfaces
  • Real-time updates
  • Graph integration
  • Data visualization
  • Export capabilities

πŸ‘₯ Contributing

We welcome contributions! To contribute to PANO:

  1. Fork the repository at https://github.com/ALW1EZ/PANO/
  2. Make your changes in your fork
  3. Test your changes thoroughly
  4. Create a Pull Request to our main branch
  5. In your PR description, include:
  6. What the changes do
  7. Why you made these changes
  8. Any testing you've done
  9. Screenshots if applicable

Note: We use a single main branch for development. All pull requests should be made directly to main.

πŸ“– Development Guide

Click to expand development documentation ### System Requirements - Operating System: Windows or Linux - Python 3.11+ - PySide6 for GUI - Internet connection for online features ### Custom Entities Entities are the core data structures in PANO. Each entity represents a piece of information with specific properties and behaviors. To create a custom entity: 1. Create a new file in the `entities` folder (e.g., `entities/phone_number.py`) 2. Implement your entity class:
from dataclasses import dataclass
from typing import ClassVar, Dict, Any
from .base import Entity

@dataclass
class PhoneNumber(Entity):
name: ClassVar[str] = "Phone Number"
description: ClassVar[str] = "A phone number entity with country code and validation"

def init_properties(self):
"""Initialize phone number properties"""
self.setup_properties({
"number": str,
"country_code": str,
"carrier": str,
"type": str, # mobile, landline, etc.
"verified": bool
})

def update_label(self):
"""Update the display label"""
self.label = self.format_label(["country_code", "number"])
### Custom Transforms Transforms are operations that process entities and generate new insights or relationships. To create a custom transform: 1. Create a new file in the `transforms` folder (e.g., `transforms/phone_lookup.py`) 2. Implement your transform class:
from dataclasses import dataclass
from typing import ClassVar, List
from .base import Transform
from entities.base import Entity
from entities.phone_number import PhoneNumber
from entities.location import Location
from ui.managers.status_manager import StatusManager

@dataclass
class PhoneLookup(Transform):
name: ClassVar[str] = "Phone Number Lookup"
description: ClassVar[str] = "Lookup phone number details and location"
input_types: ClassVar[List[str]] = ["PhoneNumber"]
output_types: ClassVar[List[str]] = ["Location"]

async def run(self, entity: PhoneNumber, graph) -> List[Entity]:
if not isinstance(entity, PhoneNumber):
return []

status = StatusManager.get()
operation_id = status.start_loading("Phone Lookup")

try:
# Your phone number lookup logic here
# Example: query an API for phone number details
location = Location(properties={
"country": "Example Country",
"region": "Example Region",
"carrier": "Example Carrier",
"source": "PhoneLookup transform"
})

return [location]

except Exception as e:
status.set_text(f"Error during phone lookup: {str(e)}")
return []

finally:
status.stop_loading(operation_id)
### Custom Helpers Helpers are specialized tools that provide additional investigation capabilities through a dedicated UI interface. To create a custom helper: 1. Create a new file in the `helpers` folder (e.g., `helpers/data_analyzer.py`) 2. Implement your helper class:
from PySide6.QtWidgets import (
QWidget, QVBoxLayout, QHBoxLayout, QPushButton,
QTextEdit, QLabel, QComboBox
)
from .base import BaseHelper
from qasync import asyncSlot

class DummyHelper(BaseHelper):
"""A dummy helper for testing"""

name = "Dummy Helper"
description = "A dummy helper for testing"

def setup_ui(self):
"""Initialize the helper's user interface"""
# Create input text area
self.input_label = QLabel("Input:")
self.input_text = QTextEdit()
self.input_text.setPlaceholderText("Enter text to process...")
self.input_text.setMinimumHeight(100)

# Create operation selector
operation_layout = QHBoxLayout()
self.operation_label = QLabel("Operation:")
self.operation_combo = QComboBox()
self.operation_combo.addItems(["Uppercase", "Lowercase", "Title Case"])
operation_layout.addWidget(self.operation_label)
operation_layout.addWidget(self.operation_combo)

# Create process button
self.process_btn = QPushButton("Process")
self.process_btn.clicked.connect(self.process_text)

# Create output text area
self.output_label = QLabel("Output:")
self.output_text = QTextEdit()
self.output_text.setReadOnly(True)
self.output_text.setMinimumHeight(100)

# Add widgets to main layout
self.main_layout.addWidget(self.input_label)
self.main_layout.addWidget(self.input_text)
self.main_layout.addLayout(operation_layout)
self.main_layout.addWidget(self.process_btn)
self.main_layout.addWidget(self.output_label)
self.main_layout.addWidget(self.output_text)

# Set dialog size
self.resize(400, 500)

@asyncSlot()
async def process_text(self):
"""Process the input text based on selected operation"""
text = self.input_text.toPlainText()
operation = self.operation_combo.currentText()

if operation == "Uppercase":
result = text.upper()
elif operation == "Lowercase":
result = text.lower()
else: # Title Case
result = text.title()

self.output_text.setPlainText(result)

πŸ“„ License

This project is licensed under the Creative Commons Attribution-NonCommercial (CC BY-NC) License.

You are free to: - βœ… Share: Copy and redistribute the material - βœ… Adapt: Remix, transform, and build upon the material

Under these terms: - ℹ️ Attribution: You must give appropriate credit - 🚫 NonCommercial: No commercial use - πŸ”“ No additional restrictions

πŸ™ Acknowledgments

Special thanks to all library authors and contributors who made this project possible.

πŸ‘¨β€πŸ’» Author

Created by ALW1EZ with AI ❀️



Telegram-Checker - A Python Tool For Checking Telegram Accounts Via Phone Numbers Or Usernames

By: Unknown


Enhanced version of bellingcat's Telegram Phone Checker!

A Python script to check Telegram accounts using phone numbers or username.


✨ Features

  • πŸ” Check single or multiple phone numbers and usernames
  • πŸ“ Import numbers from text file
  • πŸ“Έ Auto-download profile pictures
  • πŸ’Ύ Save results as JSON
  • πŸ” Secure credential storage
  • πŸ“Š Detailed user information

πŸš€ Installation

  1. Clone the repository:
git clone https://github.com/unnohwn/telegram-checker.git
cd telegram-checker
  1. Install required packages:
pip install -r requirements.txt

πŸ“¦ Requirements

Contents of requirements.txt:

telethon
rich
click
python-dotenv

Or install packages individually:

pip install telethon rich click python-dotenv

βš™οΈ Configuration

First time running the script, you'll need: - Telegram API credentials (get from https://my.telegram.org/apps) - Your Telegram phone number including countrycode + - Verification code (sent to your Telegram)

πŸ’» Usage

Run the script:

python telegram_checker.py

Choose from options: 1. Check phone numbers from input 2. Check phone numbers from file 3. Check usernames from input 4. Check usernames from file 5. Clear saved credentials 6. Exit

πŸ“‚ Output

Results are saved in: - results/ - JSON files with detailed information - profile_photos/ - Downloaded profile pictures

⚠️ Note

This tool is for educational purposes only. Please respect Telegram's terms of service and user privacy.

πŸ“„ License

MIT License



KnockKnock - Enumerate Valid Users Within Microsoft Teams And OneDrive With Clean Output

By: Zion3R


Designed to validate potential usernames by querying OneDrive and/or Microsoft Teams, which are passive methods.
Additionally, it can output/create a list of legacy Skype users identified through Microsoft Teams enumeration.
Finally, it also creates a nice clean list for future usage, all conducted from a single tool.


Usage

$ python3 .\KnockKnock.py -h

_ __ _ _ __ _
| |/ /_ __ ___ ___| | _| |/ /_ __ ___ ___| | __
| ' /| '_ \ / _ \ / __| |/ / ' /| '_ \ / _ \ / __| |/ /
| . \| | | | (_) | (__| <| . \| | | | (_) | (__| <
|_|\_\_| |_|\___/ \___|_|\_\_|\_\_| |_|\___/ \___|_|\_\
v0.9 Author: @waffl3ss


usage: KnockKnock.py [-h] [-teams] [-onedrive] [-l] -i INPUTLIST [-o OUTPUTFILE] -d TARGETDOMAIN [-t TEAMSTOKEN] [-threads MAXTHREADS] [-v]

options:
-h, --help show this help message and exit
-teams Run the Teams User Enumeration Module
-onedrive Run the One Drive Enumeration Module
-l Write legacy skype users to a seperate file
-i INPUTLIST Input file with newline-seperated users to check
-o OUTPUTFILE Write output to file
-d TARGETDOMAIN Domain to target
-t TEAMSTOKEN Teams Token (file containing token or a string)
-threads MAXTHREADS Number of threads to use in the Teams User Enumeration (default = 10)
-v Show verbose errors

Examples

./KnockKnock.py -teams -i UsersList.txt -d Example.com -o OutFile.txt -t BearerToken.txt
./KnockKnock.py -onedrive -i UsersList.txt -d Example.com -o OutFile.txt
./KnockKnock.py -onedrive -teams -i UsersList.txt -d Example.com -t BearerToken.txt -l

Options

  • You can select one or both modes, as long as the appropriate options are provided for the modules selected.
  • Both modules will require the domain flag (-d) and the user input list (-i).
  • The tool does not require an output file as an option, and if not supplied, it will print to screen only.
  • The verbose mode will show A LOT of extra information, including users that are not valid.
  • The Teams option requires a bearer token. The script automatically removes the beginning and end portions to use only whats required.

How to get your Bearer token

To get your bearer token, you will need a Cookie Manager plugin on your browser and login to your own Microsoft Teams through the browser.
Next, view the cookies related to the current webpage (teams.microsoft.com).
The cookie you are looking for is for the domain .teams.microsoft.com and is titled "authtoken".
You can copy the whole token as the script will split out the required part for you.


References

@nyxgeek - onedrive_user_enum
@immunIT - TeamsUserEnum



❌