Jacky L. Snoep

26 papers A 1B 1Journal 20Unranked 4
YearRankTypeTitle / Venue / Authors
2023 J jnl
Biosyst.
Theresa Kouril, Craig October, Stephanie Hollocks, Christoff Odendaal, David D. van Niekerk, Jacky L. Snoep
2023 J jnl
Biosyst.
David D. van Niekerk, Erik Rust, Frank J. Bruggeman, Hans V. Westerhoff, Jacky L. Snoep
2022 J jnl
CoRR
Bilal Shaikh, Lucian P. Smith, Dan Vasilescu, Gnaneswara Marupilla, Michael Wilson, Eran Agmon, Henry Agnew, Steven S. Andrews, Azraf Anwar, Moritz E. Beber, Frank T. Bergmann, David Brooks, Lutz Brusch, Laurence Calzone, Kiri Choi, Joshua Cooper, John Detloff, Brian Drawert, Michel Dumontier, G. Bard Ermentrout, James R. Faeder, Andrew P. Freiburger, Fabian Fröhlich, Akira Funahashi, Alan Garny, John H. Gennari, Padraig Gleeson, Anne Goelzer, Zachary B. Haiman, Joseph L. Hellerstein, Stefan Hoops, Jon C. Ison, Diego Jahn, Henry V. Jakubowski, Ryann Jordan, Matús Kalas, Matthias König, Wolfram Liebermeister, Synchon Mandal, Robert A. McDougal, J. Kyle Medley, Pedro Mendes, Robert Müller, Chris J. Myers, Aurélien Naldi, Tung V. N. Nguyen, David P. Nickerson, Brett G. Olivier, Drashti Patoliya, Loïc Paulevé, Linda R. Petzold, Ankita Priya, Anand K. Rampadarath, Johann M. Rohwer, Ali Sinan Saglam, Dilawar Singh, Ankur Sinha, Jacky L. Snoep, Hugh Sorby, Ryan K. Spangler, Jörn Starruß, Payton J. Thomas, David D. van Niekerk, Daniel Weindl, Fengkai Zhang, Anna Zhukova, Arthur P. Goldberg, Michael L. Blinov, Herbert M. Sauro, Ion I. Moraru, Jonathan R. Karr
2022 J jnl
Nucleic Acids Res.
Bilal Shaikh, Lucian P. Smith, Dan Vasilescu, Gnaneswara Marupilla, Michael Wilson, Eran Agmon, Henry Agnew, Steven S. Andrews, Azraf Anwar, Moritz E. Beber, Frank T. Bergmann, David Brooks, Lutz Brusch, Laurence Calzone, Kiri Choi, Joshua Cooper, John Detloff, Brian Drawert, Michel Dumontier, G. Bard Ermentrout, James R. Faeder, Andrew P. Freiburger, Fabian Fröhlich, Akira Funahashi, Alan Garny, John H. Gennari, Padraig Gleeson, Anne Goelzer, Zachary B. Haiman, Jan Hasenauer, Joseph L. Hellerstein, Henning Hermjakob, Stefan Hoops, Jon C. Ison, Diego Jahn, Henry V. Jakubowski, Ryann Jordan, Matús Kalas, Matthias König, Wolfram Liebermeister, Rahuman S. Malik-Sheriff, Synchon Mandal, Robert A. McDougal, J. Kyle Medley, Pedro Mendes, Robert Müller, Chris J. Myers, Aurélien Naldi, Tung V. N. Nguyen, David P. Nickerson, Brett G. Olivier, Drashti Patoliya, Loïc Paulevé, Linda R. Petzold, Ankita Priya, Anand K. Rampadarath, Johann M. Rohwer, Ali Sinan Saglam, Dilawar Singh, Ankur Sinha, Jacky L. Snoep, Hugh Sorby, Ryan K. Spangler, Jörn Starruß, Payton J. Thomas, David D. van Niekerk, Daniel Weindl, Fengkai Zhang, Anna Zhukova, Arthur P. Goldberg, James C. Schaff, Michael L. Blinov, Herbert M. Sauro, Ion I. Moraru, Jonathan R. Karr
2021 J jnl
BMC Bioinform.
Shade Horn, Jacky L. Snoep, David D. van Niekerk
2019 J jnl
Briefings Bioinform.
Maxwell Lewis Neal, Matthias König, David P. Nickerson, Goksel Misirli, Reza Kalbasi, Andreas Dräger, Koray Atalag, Vijayalakshmi Chelliah, Michael T. Cooling, Daniel L. Cook, Sharon M. Crook, Miguel de Alba, Samuel H. Friedman, Alan Garny, John H. Gennari, Padraig Gleeson, Martin Golebiewski, Michael Hucka, Nick S. Juty, Chris J. Myers, Brett G. Olivier, Herbert M. Sauro, Martin Scharm, Jacky L. Snoep, Vasundra Touré, Anil Wipat, Olaf Wolkenhauer, Dagmar Waltemath
2017 J jnl
Nucleic Acids Res.
Katherine Wolstencroft, Olga Krebs, Jacky L. Snoep, Natalie J. Stanford, Finn Bacall, Martin Golebiewski, Rostyk Kuzyakiv, Quyen Nguyen, Stuart Owen, Stian Soiland-Reyes, Jakub Straszewski, David D. van Niekerk, Alan R. Williams, Lars Malmström, Bernd Rinn, Wolfgang Müller, Carole A. Goble
2017 J jnl
Bioinform.
Martin Peters, Johann J. Eicher, David D. van Niekerk, Dagmar Waltemath, Jacky L. Snoep
2016 conf
ODLS
Olga Krebs, Katy Wolstencroft, Natalie J. Stanford, Norman Morrison, Martin Golebiewski, Rostyk Kuzyakiv, Stuart Owen, Quyen Nguyen, Jacky L. Snoep, Wolfgang Müller, Carole A. Goble
2016 J jnl
PLoS Comput. Biol.
Nicola J. Mulder, Alan Christoffels, Tulio de Oliveira, Junaid Gamieldien, Scott Hazelhurst, Fourie Joubert, Judit Kumuthini, Ché S. Pillay, Jacky L. Snoep, Özlem Tastan Bishop, Nicki Tiffin
2015 conf
ICBO
Olga Krebs, Katy Wolstencroft, Natalie J. Stanford, Norman Morrison, Martin Golebiewski, Stuart Owen, Quyen Nguyen, Jacky L. Snoep, Wolfgang Müller, Carole A. Goble
2015 J jnl
BMC Syst. Biol.
Katherine Wolstencroft, Stuart Owen, Olga Krebs, Quyen Nguyen, Natalie J. Stanford, Martin Golebiewski, Andreas Weidemann, Meik Bittkowski, Lihua An, David Shockley, Jacky L. Snoep, Wolfgang Müller, Carole A. Goble
2015 J jnl
Quant. Biol.
Ettore Murabito, Riccardo Colombo, Chengkun Wu, Malkhey Verma, Samrina Rehman, Jacky L. Snoep, Shaoliang Peng, Naiyang Guan, Xiangke Liao, Hans V. Westerhoff
2013 conf
ISWC (2)
Katherine Wolstencroft, Stuart Owen, Olga Krebs, Wolfgang Müller, Quyen Nguyen, Jacky L. Snoep, Carole A. Goble
2013 J jnl
Concurr. Comput. Pract. Exp.
Katherine Wolstencroft, Stuart Owen, Matthew Horridge, Simon Jupp, Olga Krebs, Jacky L. Snoep, Franco B. du Preez, Wolfgang Müller, Robert Stevens, Carole A. Goble
2012 B conf
EKAW
Katy Wolstencroft, Stuart Owen, Matthew Horridge, Wolfgang Müller, Finn Bacall, Jacky L. Snoep, Franco B. du Preez, Quyen Nguyen, Olga Krebs, Carole A. Goble
2011 J jnl
PLoS Comput. Biol.
Dagmar Waltemath, Richard R. Adams, Daniel A. Beard, Frank T. Bergmann, Upinder S. Bhalla, Randall Britten, Vijayalakshmi Chelliah, Mike T. Cooling, Jonathan Cooper, Edmund J. Crampin, Alan Garny, Stefan Hoops, Michael Hucka, Peter J. Hunter, Edda Klipp, Camille Laibe, Andrew K. Miller, Ion I. Moraru, David P. Nickerson, Poul M. F. Nielsen, Macha Nikolski, Sven Sahle, Herbert M. Sauro, Henning Schmidt, Jacky L. Snoep, Dominic P. Tolle, Olaf Wolkenhauer, Nicolas Le Novère
2011 J jnl
BMC Syst. Biol.
Dagmar Waltemath, Richard R. Adams, Frank T. Bergmann, Michael Hucka, Fedor A. Kolpakov, Andrew K. Miller, Ion I. Moraru, David P. Nickerson, Sven Sahle, Jacky L. Snoep, Nicolas Le Novère
2011 J jnl
Bioinform.
Katy Wolstencroft, Stuart Owen, Matthew Horridge, Olga Krebs, Wolfgang Müller, Jacky L. Snoep, Franco B. du Preez, Carole A. Goble
2010 J jnl
BMC Syst. Biol.
Chen Li, Marco Donizelli, Nicolas Rodriguez, Harish Dharuri, Lukas Endler, Vijayalakshmi Chelliah, Lu Li, Enuo He, Arnaud Henry, Melanie I. Stefan, Jacky L. Snoep, Michael Hucka, Nicolas Le Novère, Camille Laibe
2010 conf
ISWC (Posters & Demos)
Katy Wolstencroft, Matthew Horridge, Stuart Owen, Wolfgang Müller, Finn Bacall, Jacky L. Snoep, Olga Krebs, Carole A. Goble
2010 J jnl
Trans. Comput. Collect. Intell.
Catholijn M. Jonker, Jacky L. Snoep, Jan Treur, Hans V. Westerhoff, Wouter C. A. Wijngaards
2007 J jnl
Silico Biol.
Carel van Gend, Riaan Conradie, Franco B. du Preez, Jacky L. Snoep
2006 J jnl
Nucleic Acids Res.
Nicolas Le Novère, Benjamin J. Bornstein, Alexander Broicher, Mélanie Courtot, Marco Donizelli, Harish Dharuri, Lu Li, Herbert M. Sauro, Maria J. Schilstra, Bruce E. Shapiro, Jacky L. Snoep, Michael Hucka
2004 J jnl
Bioinform.
Brett G. Olivier, Jacky L. Snoep
2002 A conf
AAMAS
Catholijn M. Jonker, Jacky L. Snoep, Jan Treur, Hans V. Westerhoff, Wouter C. A. Wijngaards
redb/extractors/js_extractors/scripts/js-xray-runner.js
← Index redb/extractors/js_extractors/scripts/js-xray-runner.js javascript
#!/usr/bin/env node
// Bridge between the Python JS pipeline and @nodesecure/js-x-ray.
//
// Usage: node js-xray-runner.js <path-to-js-file>
//   stdout  one JSON object: {"obfuscator": <name|null>, "warnings": [...]}
//   stderr  human-readable error on failure
//   exit 0  analysis ran (the file may still be benign — see "obfuscator")
//   exit 1  the file could not be read or analysed
//
// Each warning is emitted as {kind, value} so the Python side can tag
// supporting signals (encoded-literal, short-identifiers, suspicious-literal,
// unsafe-stmt) without having to mirror js-x-ray's whole schema.
//
// js-x-ray ≥7 ships as an ES module, which CommonJS `require()` cannot load
// from a `.js` script — the dynamic `import()` below is what makes the
// bridge work without renaming the file to `.mjs` or adding `"type":
// "module"` to package.json (which would break tools that still
// `require()` from this directory).

const fs = require("fs");
const path = require("path");

function fail(msg) {
  process.stderr.write(msg + "\n");
  process.exit(1);
}

async function main() {
  const target = process.argv[2];
  if (!target) fail("usage: js-xray-runner.js <file>");

  let source;
  try {
    source = fs.readFileSync(target, "utf8");
  } catch (e) {
    fail(`read failed: ${e.message}`);
  }

  // The legacy `runASTAnalysis` function is deprecated (removed in v8); the
  // current API is the `AstAnalyser` class. Both produce a result with the
  // same `warnings` shape, so the rest of the bridge is unchanged.
  let AstAnalyser;
  try {
    ({ AstAnalyser } = await import("@nodesecure/js-x-ray"));
  } catch (e) {
    fail(`@nodesecure/js-x-ray not installed (run \`npm install\` in ${path.dirname(__filename)}): ${e.message}`);
  }

  // js-x-ray defaults to module-mode parsing, which rejects scripts that
  // (legally) use reserved words as identifiers, top-level `return`, etc.
  // A lot of real-world JS malware is script-style (WScript/HTA bodies,
  // pasted snippets) — retrying in script mode catches those without
  // pulling in a more lenient parser. Both attempts share the same
  // analyser; only the parse mode flips. If both fail, the original error
  // (module-mode) is reported because that's the more informative one for
  // genuinely broken sources.
  let result;
  const analyser = new AstAnalyser();
  let firstErr;
  try {
    result = await analyser.analyse(source, { module: true });
  } catch (e) {
    firstErr = e;
    try {
      result = await analyser.analyse(source, { module: false });
    } catch (e2) {
      fail(`js-x-ray analysis failed: ${firstErr.message}`);
    }
  }

  const warnings = (result.warnings || []).map((w) => ({
    kind: w.kind,
    value: w.value !== undefined ? w.value : null,
  }));

  // js-x-ray flags the obfuscator family in a warning whose kind is
  // "obfuscated-code" and whose value names the family (jsfuck, obfuscator.io,
  // freejsobfuscator, morse, jjencode, ...). Absent => not detected.
  const obfWarning = warnings.find((w) => w.kind === "obfuscated-code");
  const obfuscator = obfWarning ? obfWarning.value : null;

  // js-x-ray runs its own AST internally with a modern parser, so its
  // identifier-length average is the only path the Python pipeline has to
  // that signal on ES2015+ sources — pyjsparser is ES5.1-only and silently
  // drops to 0 the moment it hits destructuring, classes, optional chaining,
  // etc. Surfacing this lets the heuristic's `avg_identifier_length<2`
  // strong signal fire on real obfuscator.io output. `null` when the value
  // is missing or non-numeric (defensive — older js-x-ray builds may differ).
  const idsLengthAvg =
    typeof result.idsLengthAvg === "number" && !Number.isNaN(result.idsLengthAvg)
      ? result.idsLengthAvg
      : null;

  process.stdout.write(JSON.stringify({ obfuscator, warnings, idsLengthAvg }));
}

main().catch((e) => fail(e.message || String(e)));