O11 Pro Cracked - Unpacked Version
O11 Pro is a streaming media server capable of proxying, remuxing, and redistributing IPTV/OTT live and VOD streams. It features a built-in web UI, EPG support, HLS/DASH handling, and DRM decryption via CDM integration.
Tech Stack
| Layer |
Technology |
Details |
| Backend |
Golang (Go) |
ELF64 binary, CGo-linked (libc, libpthread, libresolv), statically compiled runtime with dynamic libc linking |
| Frontend |
Vue.js 3 |
Composition API, <script setup> SFCs, Pinia state management, Vue Router |
| HTTP Client |
Axios |
API requests, JWT token auth |
| Video Player |
HLS.js |
In-browser HLS stream playback |
| CSS |
Tailwind CSS |
Utility-first classes throughout (flex, gap-4, capitalize, etc.) |
| Obfuscation |
obfuscator.io |
String array rotation + base64 + RC4 cipher, o11_0x3b01 decoder function with 6,922 encoded strings |
Quick Start
When started without -user and -password, a temporary admin account is auto-generated and printed to the log:
Open http://<your-ip>:<port> in a browser to access the web interface.
Command-Line Options
Server & Network
| Flag |
Description |
Default |
-p |
HTTP port to listen on (required) |
0 (none must be set) |
-b |
HTTP bind address |
0.0.0.0 (all interfaces) |
-https |
Enable HTTPS (requires server.crt and server.key in the O11 directory) |
false |
-baseurl |
HTTP base URL (for reverse proxy setups) |
(empty) |
-streamport |
Dedicated streaming port. If not set, the HTTP port is used |
0 (shares HTTP port) |
-streambind |
Streaming bind address |
0.0.0.0 |
-epgport |
EPG (Electronic Program Guide) port |
0 (disabled) |
-epgbind |
EPG bind address |
0.0.0.0 |
-allow |
Comma-separated list of no-auth admin source IP addresses (e.g. 192.168.1.0/24,10.0.0.1) |
(empty) |
Authentication & Security
| Flag |
Description |
Default |
-user |
Static admin username for web UI login |
(empty temp account generated) |
-password |
Static admin password for web UI login |
(empty temp account generated) |
-jwtsecret |
JWT secret for login sessions. Default is randomly generated on each start |
(random) |
Configuration & Files
| Flag |
Description |
Default |
-c |
Main config file path |
o11.cfg |
-job |
Jobs config file path |
o11-job.cfg |
-rec |
Recordings config file path |
o11-rec.cfg |
-path |
Working directory. All sub-directories (HLS, logs, etc.) are created here |
current directory |
-providers |
Providers directory path |
providers/ |
-keys |
File with KID:KEY pairs for decryption fallback |
keys.txt |
-f |
FFmpeg binary path |
ffmpeg |
-tsplay |
Tsplay binary path (for UDP output mode) |
tsplay |
Logging
| Flag |
Description |
Default |
-v |
Log level: 0=error, 1=warning, 2=info, 3=debug, 4=verbose, 5=trace |
2 (info) |
-stdout |
Log to stdout instead of log files |
false |
-logsize |
Max log file size in MB (per file) |
100 |
-logscount |
Number of log file rotations to keep |
7 |
-logtomain |
Also send stream-specific logs to the main log |
false |
-logtomainonly |
Only send stream logs to main log (no separate stream logs) |
false |
-V |
Module to enable special debug logs from (e.g. subtitles) |
(empty) |
Runtime Behavior
| Flag |
Description |
Default |
-headless |
Run without the web UI |
false |
-noautostart |
Do not auto-start providers/channels on launch |
false |
-flushperiod |
Seconds between config/key flushes to disk. 0 to disable |
300 |
-keep |
Keep temp media files after processing (debugging) |
true |
-noramfs |
Allow FFmpeg mode even if ./hls/live is not a RAMFS |
false |
-remuxondisk |
Write internal remuxer temporary files to disk instead of RAM |
false |
-debugspeed |
Print current fragment download queue per channel/media type |
false |
-defaultprovid |
Default provider ID to display when none specified |
(empty) |
Playlist & Stream Naming
| Flag |
Description |
Default |
-plstreamname |
Format for stream names in playlists. %p = provider name, %s = stream name |
[%p] %s |
-alteventdateformat |
Use alternate date format 02 Jan. 2006 15:04 for EPG events |
false |
-novodmetadata |
Disable metadata for VOD tracks |
false |
-pipeoutputcmd |
Pipe output command format (overridable per provider). %s = format placeholder |
tsplay -stdin %s |
Replay Mode
| Flag |
Description |
Default |
-replay |
Local stream path to replay (from hls/live/) |
(empty) |
-replaymode |
Replay mode: ffmpeg, internalremuxer, etc. |
internalremuxer |
| Flag |
Description |
Default |
-a |
Default User-Agent for HTTP connections |
Chrome 122 on macOS |
VOD Downloader
These options are used when downloading and converting VOD (Video On Demand) streams:
| Flag |
Description |
Default |
-manifest |
Download and convert this manifest URL to MP4, then exit |
(empty) |
-video |
Video track index to grab |
(empty all) |
-audio |
Audio track indexes to grab (comma-separated) |
(empty all) |
-subs |
Subtitle indexes to grab (comma-separated or all) |
(empty none) |
-extrasubs |
Extra subtitle file URL. Can be used multiple times |
(empty) |
-maxsegments |
Max segments to download (0 = unlimited) |
0 |
-dashperiod |
Force DASH period index. -1 = all non-ad periods |
-2 |
DRM / CDM Decryption
| Flag |
Description |
Default |
-usecdm |
Enable CDM script for DRM decryption |
false |
-cdmtype |
CDM type: widevine, playready, or verimatrix |
widevine |
-cdmmode |
CDM mode: internal or external |
internal |
-script |
CDM script name |
auto |
-cdmparams |
CDM script parameters |
(empty) |
-key |
KID:KEY pair for decryption. Can be used multiple times |
(empty) |
-doh |
DNS-over-HTTPS URL for CDM requests |
(empty) |
-H |
Custom HTTP header for VOD requests (format: key:value). Can be used multiple times |
(empty) |
Web UI Pages
The Vue.js frontend provides the following pages accessible via the navigation sidebar:
| Page |
Route |
Description |
| Providers |
/providers |
List of configured IPTV/OTT providers. Add, edit, delete, import, export providers |
| Linear |
/linear |
Live channel management. Start/stop streams, view on-air status |
| Events |
/events/:provider? |
Scheduled event streams with filtering and replay support |
| VOD |
/vod |
Video-on-demand library per provider. Download and convert to MP4 |
| Recordings |
/recordings/:provider? |
Manage stream recordings. Schedule and review recorded events |
| Monitoring |
/monitoring |
Real-time stream status overview, running streams dashboard |
| Logs |
/logs/:provider?/:stream? |
Per-channel and main log viewer. Export and clean logs |
| Users |
/users |
User management. Create/edit users, set admin, assign provider access |
| Config |
/config |
Provider configuration (script, CDM, network, channels, stream options) |
| Help |
/help |
Built-in documentation with table of contents |
| Login |
/login |
Authentication page. JWT-based token auth |
Examples
Basic IPTV Proxy
Access the web UI at http://localhost:8080, log in with admin / mysecretpass, and add your providers through the interface.
Separate Streaming + EPG Ports
- Web UI:
http://localhost:8080
- Streaming:
http://localhost:9090
- EPG:
http://localhost:9091
HTTPS Mode
Access via https://localhost:8443.
VOD Download with DRM
Headless with Custom Config
Bind to Localhost Only
Full Debug Mode
Replay a Local Stream
Directory Structure
When using -path, O11 creates the following sub-directories:
EPG Access
O11 serves EPG data in multiple formats:
| Format |
URL |
| XML (gzip) |
http://ip:epgport/providerid.xml.gz |
| XML (plain) |
http://ip:epgport/providerid.xml |
| Web UI |
http://ip:port/epg |
| API |
GET /epg/:provider?/:stream? |
Use the -epgport flag to enable the EPG endpoint.
Playlist Access
Streams are accessible via playlist format. The -plstreamname flag controls the display name format:
- Default:
[%p] %s shows [ProviderName] StreamName
- Custom:
-plstreamname "%s (%p)" shows StreamName (ProviderName)
Log Levels Reference
| Level |
Name |
Description |
0 |
Error |
Critical errors only |
1 |
Warning |
Warnings and errors |
2 |
Info |
General operational info (default) |
3 |
Debug |
Detailed debug information |
4 |
Verbose |
Very detailed output |
5 |
Trace |
Maximum verbosity, including internal state |
Notes
- The
-p flag is required. The binary will not start without an HTTP port.
- Without
-user / -password, a temporary admin account is generated on each start and printed to the log.
- For HTTPS, both
server.crt and server.key must exist in the O11 working directory.
- The
-key flag accepts KID:KEY pairs in hex format and can be specified multiple times for multiple keys.
- The
-H flag for custom headers can be repeated: -H "Authorization:Bearer token" -H "X-Custom:value".
- VOD downloader mode (
-manifest) downloads, converts, and exits it does not start the server.
- Script accounts use the format:
user=join@mail.com password=mypassword device=123456 pin=1234
- Proxy support:
http://user:pass@ip:port and socks5://user:pass@ip:port