Carole Adam

68 papers B 5C 1Misc 2Journal 34Unranked 24
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Carole Adam, Cédric Lauradoux
2025 J jnl
CoRR
Carole Adam, Benoît Gaudou
2024 J jnl
CoRR
Carole Adam
2024 J jnl
Simul.
Carole Adam, Hélène Arduin
2024 J jnl
CoRR
Carole Adam, Benoît Gaudou
2024 J jnl
CoRR
Chloe Conrad, Carole Adam
2024 conf
JFSMA
Carole Adam, Benoît Gaudou
2023 J jnl
CoRR
Carole Adam
2023 J jnl
CoRR
Carole Adam, Cédric Lauradoux
2022 conf
ISCRAM
Carole Adam, Cédric Lauradoux
2022 J jnl
CoRR
Carole Adam, Hélène Arduin
2022 conf
ISCRAM
Carole Adam, Hélène Arduin
2021 J jnl
CoRR
Guilhem Lacombe, Kseniia Masalygina, Anass Tahiri, Carole Adam, Cédric Lauradoux
2021 J jnl
CoRR
Natasa Vodopivec, Carole Adam, Jean-Pierre Chanteau
2021 J jnl
CoRR
Yassine Bouachrine, Carole Adam
2021 J jnl
CoRR
Albin Soutif, Carole Adam, Sylvain Bouveret
2021 J jnl
CoRR
Benoit Doussin, Carole Adam, Didier Georges
2020 J jnl
CoRR
Elise Beck, Julie Dugdale, Carole Adam, Christelle Gaïdatzis, Julius Bañgate
2020 J jnl
CoRR
Robin Couret, Carole Adam, Martial Mermillod
2020 J jnl
CoRR
Carole Adam
2019 J jnl
CoRR
Julius Bañgate, Julie Dugdale, Elise Beck, Carole Adam
2019 conf
HICSS
Carole Adam, Catherine Garbay, Julie Dugdale
2019 conf
ISCRAM
Lyuba Mancheva, Carole Adam, Julie Dugdale
2019 J jnl
Int. J. Inf. Syst. Crisis Response Manag.
Julius Bañgate, Julie Dugdale, Elise Beck, Carole Adam
2019 conf
ISCRAM
Carole Adam, Eric Andonoff
2018 conf
HICSS
Carole Adam, Julie Dugdale
2018 J jnl
Int. J. Inf. Syst. Crisis Response Manag.
Carole Adam, Charles Bailly, Julie Dugdale
2018 J jnl
J. Artif. Soc. Soc. Simul.
Mathieu Bourgais, Patrick Taillandier, Laurent Vercouter, Carole Adam
2018 J jnl
CoRR
Damien Pellier, Carole Adam, Wafa Johal, Humbert Fiorino, Sylvie Pesty
2017 conf
ISCRAM
Julius Bañgate, Julie Dugdale, Carole Adam, Elise Beck
2017 conf
ISCRAM
Charles Bailly, Carole Adam
2017 J jnl
Int. J. Inf. Syst. Crisis Response Manag.
Carole Adam, Patrick Taillandier, Julie Dugdale, Benoît Gaudou
2017 conf
HICSS
Carole Adam, Patrick Taillandier, Julie Dugdale
2017 J jnl
Rev. d'Intelligence Artif.
Carole Adam, Cédric Buche, Tristan Cazenave, Florian Richoux
2017 conf
RJCIA
Maël Arnaud, Carole Adam, Julie Dugdale
2017 J jnl
J. Artif. Soc. Soc. Simul.
Carole Adam, Benoît Gaudou
2017 conf
ICT-DM
Julius Bañgate, Julie Dugdale, Elise Beck, Carole Adam
2017 conf
ISCRAM
Maël Arnaud, Carole Adam, Julie Dugdale
2016 C conf
MABS
Patrick Taillandier, Mathieu Bourgais, Philippe Caillou, Carole Adam, Benoît Gaudou
2016 Misc conf
PAAMS
Christian Villavicencio, Silvia N. Schiaffino, Jorge Andrés Díaz Pace, Ariel Monteserin, Yves Demazeau, Carole Adam
2016 conf
ISCRAM-med
Carole Adam, Geoffrey Danet, John Thangarajah, Julie Dugdale
2016 J jnl
Knowl. Eng. Rev.
Carole Adam, Benoît Gaudou
2016 conf
ISCRAM-med
Carole Adam, Franck Taillandier, Etienne Delay, Odile Plattard, Mira Toumi
2016 B conf
ICSR
Carole Adam, Wafa Johal, Damien Pellier, Humbert Fiorino, Sylvie Pesty
2015 conf
HRI (Extended Abstracts)
Wafa Johal, Damien Pellier, Carole Adam, Humbert Fiorino, Sylvie Pesty
2015 ed.
ISCRAM-med
Narjès Bellamine Ben Saoud, Carole Adam, Chihab Hanachi
2015 conf
ISCRAM-med
Carole Adam, Elise Beck, Julie Dugdale
2014 conf
PAAMS (Workshops)
Carole Adam, Emiliano Lorini
2014 conf
CogInfoCom
Wafa Johal, Carole Adam, Humbert Fiorino, Sylvie Pesty, Céline Jost, Dominique Duhaut
2014 conf
ISCRAM-med
Elise Beck, Julie Dugdale, Hong Van Truong, Carole Adam, Ludvina Colbeau-Justin
2014 J jnl
Rev. d'Intelligence Artif.
Carole Adam, Dominique Longin
2014 J jnl
Rev. d'Intelligence Artif.
Jérémy Rivière, Carole Adam, Sylvie Pesty
2013 J jnl
CoRR
Hong Van Truong, Elise Beck, Julie Dugdale, Carole Adam
2012 B conf
IVA
Jérémy Rivière, Carole Adam, Sylvie Pesty
2012 J jnl
Tech. Sci. Informatiques
Jérémy Rivière, Carole Adam, Sylvie Pesty
2011 J jnl
Rev. d'Intelligence Artif.
Carole Adam, Benoît Gaudou, Sarah L. Hickmott, David Scerri
2011 B conf
IVA
Jérémy Rivière, Carole Adam, Sylvie Pesty, Catherine Pelachaud, Nadine Guiraud, Dominique Longin, Emiliano Lorini
2010 conf
ATOP@AAMAS
Carole Adam, Vincent Louis, Fabrice Bourge, Sébastien Picant
2010 B conf
PRIMA
Le Van Minh, Carole Adam, Richard Canal, Benoît Gaudou, Tuong Vinh Ho, Patrick Taillandier
2010 J jnl
Rev. d'Intelligence Artif.
Carole Adam, Benoît Gaudou
2009 J jnl
Synth.
Carole Adam, Andreas Herzig, Dominique Longin
2009 conf
DALT
Carole Adam, Andreas Herzig, Dominique Longin, Vincent Louis
2008 conf
JFSMA
Carole Adam, Fabrice Bourge, Vincent Louis, Sébastien Picant
2007
Carole Adam
2007 B conf
IVA
Carole Adam, Dominique Longin
2007 J jnl
Rev. d'Intelligence Artif.
Carole Adam, Andreas Herzig, Dominique Longin
2006 conf
JFSMA
Carole Adam, Fabrice Evrard, Benoît Gaudou, Andreas Herzig, Dominique Longin
2006 Misc conf
AIMSA
Carole Adam, Benoît Gaudou, Andreas Herzig, Dominique Longin
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)));