Iain McCowan

43 papers A 7B 1Misc 6Journal 13Unranked 16
YearRankTypeTitle / Venue / Authors
2011 J jnl
IEEE Trans. Speech Audio Process.
Ivan Himawan, Iain McCowan, Sridha Sridharan
2011 J jnl
IEEE Trans. Speech Audio Process.
Iain McCowan, David Dean, Mitchell McLaren, Robert Vogt, Sridha Sridharan
2010 Misc conf
ICASSP
Ivan Himawan, Iain McCowan, Sridha Sridharan
2010 Misc conf
ICASSP
Houman Ghaemmaghami, David Dean, Sridha Sridharan, Iain McCowan
2008 Misc conf
ICASSP
Ivan Himawan, Sridha Sridharan, Iain McCowan
2008 J jnl
IEEE Trans. Speech Audio Process.
Iain McCowan, Mike Lincoln, Ivan Himawan
2007 J jnl
J. Am. Medical Informatics Assoc.
Iain McCowan, Darren Moore, Anthony N. Nguyen, Rayleen V. Bowman, Belinda E. Clarke, Edwina E. Duhig, Mary-Jane Fry
2007 J jnl
IEEE Trans. Speech Audio Process.
Daniel Gatica-Perez, Guillaume Lathoud, Jean-Marc Odobez, Iain McCowan
2007 conf
MLMI
Ivan Himawan, Iain McCowan, Mike Lincoln
2007 J jnl
IEEE Trans. Speech Audio Process.
Hari Krishna Maganti, Daniel Gatica-Perez, Iain McCowan
2006 conf
EMBC
Iain McCowan, Darren Moore, Mary-Jane Fry
2006 J jnl
IEEE Trans. Multim.
Dong Zhang, Daniel Gatica-Perez, Samy Bengio, Iain McCowan
2005 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Iain McCowan, Daniel Gatica-Perez, Samy Bengio, Guillaume Lathoud, Mark Barnard, Dong Zhang
2005 conf
ICASSP (1)
Daniel Gatica-Perez, Iain McCowan, Dong Zhang, Samy Bengio
2005 B conf
ICMI
Daniel Gatica-Perez, Guillaume Lathoud, Jean-Marc Odobez, Iain McCowan
2005 conf
CVPR (1)
Dong Zhang, Daniel Gatica-Perez, Samy Bengio, Iain McCowan
2005 A conf
ICME
Iain McCowan, Maganto Hari Krishna, Daniel Gatica-Perez, Darren Moore, Sileye O. Ba
2005 conf
MLMI
Thomas Hain, Lukás Burget, John Dines, Giulia Garau, Martin Karafiát, Mike Lincoln, Iain McCowan, Darren Moore, Vincent Wan, Roeland Ordelman, Steve Renals
2005 conf
MLMI
Jean Carletta, Simone Ashby, Sebastien Bourban, Mike Flynn, Maël Guillemot, Thomas Hain, Jaroslav Kadlec, Vasilis Karaiskos, Wessel Kraaij, Melissa Kronenthal, Guillaume Lathoud, Mike Lincoln, Agnes Lisowska, Iain McCowan, Wilfried M. Post, Dennis Reidsma, Pierre Wellner
2005 conf
MLMI
Thomas Hain, Lukás Burget, John Dines, Iain McCowan, Giulia Garau, Martin Karafiát, Mike Lincoln, Darren Moore, Vincent Wan, Roeland Ordelman, Steve Renals
2004 conf
SAPA@INTERSPEECH
Guillaume Lathoud, Iain McCowan
2004 A conf
INTERSPEECH
Jitendra Ajmera, Iain McCowan, Hervé Bourlard
2004 conf
ICASSP (1)
Jitendra Ajmera, Guillaume Lathoud, Iain McCowan
2004 conf
CVPR Workshops
Dong Zhang, Daniel Gatica-Perez, Samy Bengio, Iain McCowan, Guillaume Lathoud
2004 conf
VSSN@MM
Dong Zhang, Daniel Gatica-Perez, Samy Bengio, Iain McCowan, Guillaume Lathoud
2004 J jnl
IEEE Signal Process. Lett.
Jitendra Ajmera, Iain McCowan, Hervé Bourlard
2004 conf
MLMI
Iain McCowan, Daniel Gatica-Perez, Samy Bengio, Darren Moore, Hervé Bourlard
2003 conf
ICIP (3)
Daniel Gatica-Perez, Guillaume Lathoud, Iain McCowan, Jean-Marc Odobez, Darren Moore
2003 A conf
ICME
Guillaume Lathoud, Iain McCowan
2003 J jnl
IEEE Trans. Speech Audio Process.
Iain McCowan, Hervé Bourlard
2003 conf
ICASSP (4)
Iain McCowan, Samy Bengio, Daniel Gatica-Perez, Guillaume Lathoud, Florent Monay, Darren Moore, Pierre Wellner, Hervé Bourlard
2003 conf
ICIP (3)
Mark Barnard, Samy Bengio, Hervé Bourlard, Daniel Gatica-Perez, Iain McCowan
2003 A conf
INTERSPEECH
Vivek Tyagi, Iain McCowan, Hervé Bourlard, Hemant Misra
2003 A conf
INTERSPEECH
Guillaume Lathoud, Iain McCowan, Darren Moore
2003 J jnl
Speech Commun.
Jitendra Ajmera, Iain McCowan, Hervé Bourlard
2003 conf
EUSAI
Iain McCowan, Daniel Gatica-Perez, Samy Bengio, Darren Moore, Hervé Bourlard
2002 A conf
INTERSPEECH
Iain McCowan, Andrew C. Morris, Hervé Bourlard
2002 Misc conf
ICASSP
Iain McCowan, Hervé Bourlard
2002 J jnl
Digit. Signal Process.
Iain McCowan, Darren Moore, Sridha Sridharan
2002 Misc conf
ICASSP
Jitendra Ajmera, Iain McCowan, Hervé Bourlard
2002 A conf
INTERSPEECH
Jitendra Ajmera, Hervé Bourlard, I. Lapidot, Iain McCowan
2001 Misc conf
ICASSP
Iain McCowan, Sridha Sridharan
2001 J jnl
EURASIP J. Adv. Signal Process.
Iain McCowan, Sridha Sridharan
Dockerfile
← Index Dockerfile dockerfile
FROM python:3.12-slim

# Prevent interactive prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive

# Install system dependencies (build tools will be removed after pip install).
# curl + ca-certificates + gnupg are needed to add the NodeSource repository
# for the JS analysis toolchain (webcrack + @nodesecure/js-x-ray).
RUN apt-get update && apt-get install -y \
    git \
    gcc \
    g++ \
    build-essential \
    libmagic1 \
    file \
    libqt5core5a \
    libqt5gui5 \
    libqt5widgets5 \
    default-jre-headless \
    curl \
    ca-certificates \
    gnupg \
    && rm -rf /var/lib/apt/lists/*

# Install Node.js 22 LTS (needed by webcrack and @nodesecure/js-x-ray). Pinning
# to 22.x because that's the active LTS — bumping to a future major is a
# deliberate Dockerfile change, not a silent upgrade on rebuild.
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
    apt-get install -y nodejs && \
    rm -rf /var/lib/apt/lists/*

# webcrack is the deobfuscator (CLI on PATH). Pinned to 2.16.0 — released
# 2026-04-25, last verified working with our subprocess invocation. Bumping
# this is a deliberate change so a future regression in webcrack does not
# show up as a silent JSDeobfuscation behaviour shift on image rebuild.
RUN npm install -g webcrack@2.16.0

# Create application directory
WORKDIR /app

# Copy requirements and install Python dependencies
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt

# Remove build dependencies to reduce image size. curl + gnupg are kept —
# curl is widely useful and gnupg is small. Node.js stays.
RUN apt-get remove -y gcc g++ build-essential git && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Copy application code (explicit files to help debug .dockerignore issues)
COPY redb/ ./redb/
COPY start.py .
COPY scripts/ ./scripts/

# Install @nodesecure/js-x-ray locally next to its bundled Node bridge so the
# Python wrapper's `node_modules/@nodesecure/js-x-ray` existence check passes
# without any runtime configuration. Version is pinned in the package.json.
# The npm install also triggers the `postinstall: patch-package` hook which
# re-applies the local patch in scripts/patches/ — currently a one-line fix
# for a `from "repl"` → `from "module"` import in [email protected] that breaks
# on Node 22 patches above ~22.10. Drop the patch when js-x-ray ships a fix.
RUN cd /app/redb/extractors/js_extractors/scripts && npm install --omit=dev

# Set up logging path and create logs directory
ENV LOG_FILE_PATH="/app/logs/"
RUN mkdir -p /app/logs

# Environment variables for tools (snapshot-style paths)
ENV CAPA_PATH="/usr/bin/capa"
ENV DIE_PATH="/usr/bin/nfdc"
ENV GORESYM_PATH="/usr/bin/GoReSym"
ENV JADX_PATH="/opt/deploy/jadx/bin/jadx"
ENV APKTOOL_PATH="/usr/local/bin/apktool"
ENV MALCONTENT_PATH="/usr/local/bin/mal"
ENV PATH="/usr/bin:/opt/binaryninja:${PATH}"
ENV PYTHONPATH="/opt/binaryninja/python"

# Tool timeouts
ENV CAPA_TIMEOUT="300"
ENV DIE_TIMEOUT="180"
ENV MALCONTENT_TIMEOUT="300"
ENV JADX_TIMEOUT="600"
ENV BINJA_TIMEOUT="1200"
ENV DECOMPILE_EXTRACTOR_TIMEOUT="2580"

ENV MALCONTENT_FORMATS=pebin,elf,macho,apk,javascript

# JS analysis toolchain. webcrack is on PATH from the global npm install;
# js-x-ray's Python wrapper finds the bundled Node bridge at the default
# location (no env needed). Override these in .env / Nomad if you swap tools.
ENV JS_DEOBFUSCATOR_PATH="webcrack"
ENV JS_DEOBFUSCATE_TIMEOUT="60"
ENV JS_XRAY_TIMEOUT="60"

# Copy the Binary Ninja setup script
COPY scripts/setup-and-run.sh /usr/local/bin/setup-and-run.sh
RUN chmod +x /usr/local/bin/setup-and-run.sh

# Create non-root user for security
RUN useradd -m -u 1000 analyzer
RUN chown -R analyzer:analyzer /app /app/logs
USER analyzer

# Set entrypoint to setup script for Binary Ninja installation (runtime)
ENTRYPOINT ["/usr/local/bin/setup-and-run.sh"]

# Set working directory
WORKDIR /app

# Default command - supports both feature extraction and decompilation
CMD ["python3", "start.py", "--nomad-job"]