A tool for getting Black Ops II emblems onto your own account on PS5.
Three ways to get one: pick from the emblems that ship with the app, import an emblem file from elsewhere, or copy one off another player. Whichever you use, it loads into your own in-game emblem editor and you save it there. From that point it's yours, the same as anything else you made in the editor.
Built for personal use, on your own PS5 and your own home network.
Black Ops II fetches emblem data over plain HTTP from Treyarch's old Demonware servers. This tool runs a small proxy on your PC, and you point your PS5's network settings at it. Only that one emblem-storage endpoint is touched:
- In capture mode, the proxy saves a copy of whatever emblem data your console downloads.
- In show mode, it replaces the emblem data your console downloads with the emblem you've selected.
Everything else, including PSN sign-in and matchmaking, passes through the proxy untouched. HTTPS traffic is tunneled through as-is and is never decrypted.
- In the control panel, click an emblem in the Presets or Community tab.
- Turn on show mode.
- Open your own emblem editor on the PS5. It loads in place of whatever you'd normally see there.
- Save it, same as you would with anything you made yourself.
- Turn on capture mode.
- On your PS5, open the profile or channel of the player whose emblem you want. Their emblem gets saved automatically.
- Click the captured emblem to select it.
- Turn on show mode, open your own emblem editor, save.
Two things worth knowing before you try this:
- The game only checks for a new emblem once per session. After you open the editor the first time, it caches what it loaded and won't ask again, even if you pick a different emblem afterward. To load a different one, restart the game, or switch to Zombies and back to Multiplayer, before opening the editor again.
- A captured emblem won't work if it uses a shape you haven't unlocked on your own account. Black Ops II checks that itself, and there's nothing the proxy can do about it. The bundled emblems are not affected — see below.
See docs/USAGE.md for the full walkthrough and docs/INSTALL.md for setup.
The control panel's library card has three tabs.
Presets — 14 emblems, in four categories:
| Category | Emblems |
|---|---|
| Skulls | Skull, Jolly Roger, Reaper |
| Military | Crosshair, Combat Shield, Hazard, Chevrons |
| Symbols | Biohazard, Peace, Yin Yang, Smiley |
| Abstract | Sunburst, Prism, Orbit |
Community — 12 more, in the style Black Ops II emblems were actually known for:
| Category | Emblems |
|---|---|
| Beasts | Dragon Eye, Wolf Crest, Phoenix |
| Crests | Tribal Mask, Vanguard, Seal |
| Icons | Eight Ball, Spade, Cherry Bomb |
| Signals | Radiation, North Star, Bolt |
These are originals rather than recreations of specific famous emblems. The designs that get named as the most-copied BO2 emblems — Rinnegan, Pikachu, Pickle Rick, team logos — all belong to somebody, and there's a difference between drawing one on your own console and shipping it in a repo. So the community set goes after the look of the era instead of copying particular marks.
They always work. Every bundled emblem is built only from the emblem
editor's basic shapes (the tools and type categories — circles, squares,
triangles, capsules, stars, letters and digits), which are available on every
account from the start. A preset can't fail the unlock check the way a capture
can. The build script enforces this and refuses to emit an emblem that
references a rank, weapon or challenge shape.
Imported — emblem files you added yourself, which is where anything from outside goes.
Worth being straight about why this exists: there is no downloadable library of BO2 emblems anywhere. The format is documented (CallOfDutyEmblemSpecs), and sites like bo2emblem.online host template galleries, but those are images and build guides — that site says outright its project files can't be imported into the game. The community shared emblems as layer-by-layer video tutorials, never as data. So the import tab is how real community emblems get in: you supply the file, from wherever you find it.
Drop files on the Imported tab, or click "choose files". It accepts:
- a raw 1408-byte
.bin - a captured
.bin(a whole HTTP response, headers and all) - Plutonium's
.emblemfiles, from%localappdata%\Plutonium\storage\t6\players
You don't say which. The importer searches the file for the emblem rather
than assuming an offset — it scores candidate positions on whether the bytes
there actually behave like emblem layers (shape ids in range, colours within
0–1, sane scales, unused layers only at the end). That's deliberate: the
.emblem header layout isn't documented anywhere, so guessing would be
fragile. Extra headers and trailing padding are both fine, and a file that
isn't an emblem is rejected with a message rather than half-imported.
Only the 1408 bytes it finds are stored, never the original file — so an import
becomes the same kind of object as a preset, and no unrecognised container ever
reaches the console. Imports live in an imported/ folder next to the app;
rename one by clicking its name, remove it with the × in its corner.
If you touch the sniffer's thresholds, re-run its checks:
python tools/check_sniff.pyThe presets and community sets are generated, not hand-edited binaries. tools/build_presets.py holds them as readable layer lists:
{
"id": "biohazard", "name": "Biohazard", "category": "symbols",
"layers": [
L(FULL_CIRCLE, "#111519", 0, 0, 0.98),
L(RING, "#C8FF3D", 0, 0, 0.96),
L(FULL_CIRCLE, "#C8FF3D", 0, 0, 0.78),
L(BIOHAZARD, "#0B0E12", 0, 0, 0.66),
],
},L(shape, colour, x, y, w, h, rot) — position is an offset from the centre as a
fraction of the emblem (+y is down), and w/h are the shape's visible size,
also as a fraction. Later layers draw in front.
Add an entry to PRESETS or COMMUNITY, then:
python tools/build_presets.py --renderThat writes the .bin files and manifests, and drops PNG previews in
build/<collection>_previews/ so you can look at what you made before trusting
it. Restart the app to pick them up.
Two things the script handles that are easy to get wrong by hand: the game
stores scale as a power of two rather than a plain multiplier, and the reference
shape images are padded by very different amounts inside their source files (the
capsule's bar is 26% of its image; the shield is 70%; the half-circle's flat edge
sits at its image's centre, not its edge). w/h describe the ink you actually
see, and the padding is measured off the source art and divided out.
pip install -r requirements.txt
python run.py
Your browser opens to the control panel on its own. On Windows you can also just
double-click start.bat.
To build a standalone Windows exe, double-click build_exe.bat — it produces
dist\RCTToolkit.exe with everything bundled in. There's no prebuilt download;
this is a personal build.
- Windows, macOS, or Linux with Python 3.9 or newer, plus Pillow (installed automatically from
requirements.txt) - A PS5 and a PC on the same network, or the PC's own mobile hotspot with the PS5 connected to it
rct/
config.py ports and file paths
state.py current mode: off, capture, or show
storage.py captured emblems on disk, and their labels
library.py the three emblem collections: preset, community, imported
broadcast.py which emblem is currently selected
proxy.py the proxy server
shapes/
render.py the emblem renderer and format notes
shape_id_map.py the calibrated shape data
sniff.py finds the emblem inside an imported file
web/ the control panel: API plus static frontend
presets/ the bundled preset emblems (.bin + manifest)
community/ the bundled community emblems
tools/
build_presets.py authors both bundled collections
check_sniff.py regression checks for the importer
run.py starts everything
Details on the emblem file format and how it was worked out are in the module
docstrings, mainly rct/shapes/render.py.
The interface is themed after Black Ops II's HUD — clipped corners, thin amber rules, condensed uppercase labels — without the 2012 skeuomorphic chrome. Colour is used as a signal rather than decoration: amber means active or needs attention, green means confirmed selection, everything else is neutral.
It's plain CSS and plain JavaScript against a stdlib HTTP server. No build step,
no framework, no npm — you can edit rct/web/static/style.css and just reload.
Selection is shared across every source: picking a preset, a community emblem, an import or a capture clears whichever was selected before, because only one emblem can be armed at a time. Cards are keyboard-operable (Tab to reach, Enter or Space to select) and every interactive element has a visible focus ring.
MIT, see LICENSE. RCT Toolkit is a modified build of BO2 Emblem Toolkit by alexkotr1, who holds the original copyright and wrote the proxy, the emblem renderer and the shape calibration this is built on. The licence notice stays as-is; if you redistribute this, that credit has to come with it.
This only intercepts Black Ops II's own emblem-storage requests. Everything else passes through unmodified, including PSN authentication, which stays encrypted the whole time. Emblem data isn't private information, it's the same thing you already see displayed on other players in-game. This project isn't affiliated with Activision, Treyarch, or Sony.
The images in reference_shapes/ are Black Ops II's own emblem-editor shapes, and remain the property of Activision and Treyarch. They're included because the toolkit needs them to draw a preview of an emblem before you send it to the console — the game itself renders from its own copies, not these. They're here for that, and nothing else.