All Projects → tomer8007 → Chromium Ipc Sniffer

tomer8007 / Chromium Ipc Sniffer

Licence: gpl-3.0
A tool to capture communication between Chromium processes on Windows

Programming Languages

lua
6591 projects

Projects that are alternatives of or similar to Chromium Ipc Sniffer

Uget Chrome Wrapper
Moved to https://github.com/ugetdm/uget-integrator and https://github.com/ugetdm/uget-extension
Stars: ✭ 74 (-62.44%)
Mutual labels:  chrome, chromium, google-chrome
Chrome Charset
An extension used to modify the page default encoding for Chromium 55+ based browsers.
Stars: ✭ 346 (+75.63%)
Mutual labels:  chrome, chromium, google-chrome
Html Pdf Chrome
HTML to PDF converter via Chrome/Chromium
Stars: ✭ 629 (+219.29%)
Mutual labels:  chrome, chromium, google-chrome
Chrome
Docker Automated Build Repository for siomiz/chrome -- Google Chrome via VNC (or via Chrome Remote Desktop)
Stars: ✭ 97 (-50.76%)
Mutual labels:  chrome, google-chrome
Chrome Export Passwords
Show all your chromium passwords in format ready to import in other browser like FireFox
Stars: ✭ 80 (-59.39%)
Mutual labels:  chrome, chromium
Chrome Protocol Proxy
Chrome DevTools Protocol Proxy - intelligent proxy for debugging purposes
Stars: ✭ 94 (-52.28%)
Mutual labels:  chrome, chromium
Html2image
A package acting as a wrapper around the headless mode of existing web browsers to generate images from URLs and from HTML+CSS strings or files.
Stars: ✭ 69 (-64.97%)
Mutual labels:  chrome, chromium
Kdeconnect Chrome Extension
A browser extension to send pages and content from your browser to connected KDE Connect devices.
Stars: ✭ 124 (-37.06%)
Mutual labels:  chrome, chromium
Tabfern
Google Chrome extension for saving and restoring sets of tabs, and for switching between windows and tabs from a vertical, grouped list.
Stars: ✭ 102 (-48.22%)
Mutual labels:  chrome, google-chrome
Phpchrometopdf
A slim PHP wrapper around google-chrome to convert url to pdf or to take screenshots , easy to use and clean OOP interface
Stars: ✭ 127 (-35.53%)
Mutual labels:  chrome, chromium
Puppeteer Sharp
Headless Chrome .NET API
Stars: ✭ 2,122 (+977.16%)
Mutual labels:  chrome, chromium
Chrome Pak Customizer
a simple command-line tool to pack and unpack pak files in chrome or chromium-based browser
Stars: ✭ 79 (-59.9%)
Mutual labels:  chrome, chromium
Chromecontroller
Comprehensive wrapper and execution manager for the Chrome browser using the Chrome Debugging Protocol.
Stars: ✭ 143 (-27.41%)
Mutual labels:  chrome, chromium
Chrome Extensions Reloader
A chrome extension for reloading unpacked extensions
Stars: ✭ 154 (-21.83%)
Mutual labels:  chrome, chromium
Booklight
Your Chrome Alfred - An Extension to provide spotlight-like interface for your bookmarks
Stars: ✭ 98 (-50.25%)
Mutual labels:  chrome, google-chrome
Chrome Docker
Chrome, in a Docker container.
Stars: ✭ 69 (-64.97%)
Mutual labels:  chrome, google-chrome
Marinara
Pomodoro® time management assistant for Chrome
Stars: ✭ 1,806 (+816.75%)
Mutual labels:  chrome, google-chrome
Phpdesktop
Develop desktop GUI applications using PHP, HTML5, JavaScript and SQLite
Stars: ✭ 2,101 (+966.5%)
Mutual labels:  chrome, chromium
Mue
Fast, open and free-to-use new tab page for modern browsers
Stars: ✭ 56 (-71.57%)
Mutual labels:  chrome, chromium
Puppeteer Docs Zh Cn
Google Puppeteer 文档的中文版本 , 目标版本 1.9.0, 翻译中...
Stars: ✭ 61 (-69.04%)
Mutual labels:  chrome, chromium

Chromium IPC Sniffer

This utility helps you explore what Chrome processes are saying to each other under the hood in real-time, using Wireshark.

It captures data sent over the Named Pipe Inter-Process-Communication (IPC) primitive and sends it over to dissection.

What can I see using this?

You are welcomed to look at some traffic examples as well.

However, this project won't see anything that doesn't go over pipes, which is mostly shared memory IPC:

  • Mojo data pipe contents (raw networking buffers, audio, etc.)
  • Sandbox IPC
  • Possibly more things

Usage

You can download pre-compiled binaries from the Releases page, and run:

C:\>chromeipc.exe

Chrome IPC Sniffer v0.5.0.0

Type -h to get usage help and extended options

[+] Starting up
[+] Determining your chromium version
[+] You are using chromium 83.0.4103.116
[+] Checking mojom interfaces information
[+] Checking legacy IPC interfaces information
[+] Extracting scrambled message IDs from chrome.dll...
[+] Copying LUA dissectors to Wirehsark plugins directory
[+] Enumerating existing chrome pipes
[+] Starting sniffing of chrome named pipe to \\.\pipe\chromeipc.
[+] Opening Wirehark
[+] Capturing 40 packets/second......

Wireshark should open automatically.

[P.S. The pipe \\.\pipe\chromeipc has nothing to do with Chrome itself, it's just where this tool will output its traffic to]

Compiling it yourself

If you don't like pre-built binaries, you can clone and compile this repository at least using Visual Studio 2015. Note that it depends on the Newtonsoft.Json package.

Advanced Usage

Chrome IPC Sniffer v0.5.0.0

Syntax: chromeipc [options]
Available options:

    Capturing:
        --only-mojo
            Records only packets sent over a "\\mojo.*" pipe (without "\\chrome.sync.*", etc.).

        --only-new-mojo-pipes
            Records only packets sent over mojo AND newly-created pipes since the start of the capture
            This helps reducing noise and it might improve performance
            (example: opening a new tab will create a new mojo pipe).

    Interface resolving:
        --update-interfaces-info
            Forcefully re-scan the chromium sources (from the internet) and populate the *_interfaces.json files.
            This might take a few good minutes. Use this if you see wrong interfaces info and wish to update

        --extract-method-names
            Forcefully re-scan chrome.dll file to find the message IDs and update the mojo_interfaces_map.lua file
            This should happen automaticlly whenever chrome.dll changes.

Cheat Sheet

Filtering

It's worth noting that you can filter the results in Wireshark to show only packets of interest. Examples:

  • To show only packets going to/from a particular process, use npfs.pid == 1234
  • To show only packets not going to/from the GPU Process, use !(npfs.process_type contains "GPU Process")
  • To show only packets with a particular method name, use mojouser.name contains "SomeMethod"

Enabling deep mojo arguments dissection

By default, the LUA dissectors will only show Nested Struct/Array trees and won't try to go through all the fields. You can enable deep inspection, but it's slow for a large number of packets and not complete.

Go to Edit -> Prefrences -> Protocols -> MOJOUSER -> Enable structs deep dissection

Limitations

  • Supports Chrome 80+ on 64-bit Windows only
  • Interfaces info are chromium version dependent, so running --update-interfaces-info is needed from time to time
  • Names of methods as shown in Wireshark is based on the chromium sources, and some mojom interfaces use unscrambled ordinals, which won't be resolved
  • Tested only on official, branded Chrome builds. Could theoretically work on other builds too, as well as other chromium-based browsers (Edge)
  • Parsing is not 100% complete, e.g unions/enums/maps are not fully supported

FAQ

What is tdevmonc.sys?

tdevmonc.sys (or Tibbo Device Monitor) is a third-party kernel-mode driver that is used to capture the Named Pipe traffic. The reason to include it is to avoid the need to enable test signing or to tampter with chrome processes.

The driver works by IoAttachDeviceToDeviceStacking on top of the \Device\NamedPipe device and acting as a filter driver. Then the data that is written to pipes is exposed to user mode using various IOCTLs.

You can find sources for this driver here, as well as binaries and PDB here.

Note that this driver is used by IO ninja, which is not entirely freeware. Also note this driver does not practically support unloading once it attaches to at least one device (you need to reboot).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].