Wataru Ohyama

71 papers A 15B 14C 1Misc 5Journal 6Unranked 29
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Shizhe Sun, Wataru Ohyama
2025 J jnl
SN Comput. Sci.
Shizhe Sun, Wataru Ohyama
2024 conf
IW-FCV
Wataru Ohyama, Yoshinori Hatano, Hajime Baba
2023 conf
DH
Satoru Nakamura, Guanwei Liu, Hajime Miyazaki, Satoshi Inoue, Wataru Ohyama, Taizo Yamada
2021 J jnl
Pattern Recognit.
Yuchen Zheng, Brian Kenji Iwana, Muhammad Imran Malik, Sheraz Ahmed, Wataru Ohyama, Seiichi Uchida
2020 conf
IW-FCV
Wataru Ohyama, Yuta Somada, Nobu C. Shirai, Tetsushi Wakabayashi
2020 ed.
IW-FCV
Wataru Ohyama, Soon Ki Jung
2020 C conf
IECON
Zhi Wang, Hideyasu Sai, Kazuo Ogiwara, Wataru Ohyama, Daishi Watabe, Yukimichi Saitou, Masayoshi Wada
2019 A conf
ICDAR
Yuchen Zheng, Wataru Ohyama, Brian Kenji Iwana, Seiichi Uchida
2019 conf
ACPR (2)
Takeo Ishihara, Kento Morita, Nobu C. Shirai, Tetsushi Wakabayashi, Wataru Ohyama
2019 J jnl
IEEE Access
Wataru Ohyama, Masakazu Suzuki, Seiichi Uchida
2019 A conf
ICDAR
Joonho Lee, Hideaki Hayashi, Wataru Ohyama, Seiichi Uchida
2019 A conf
ICDAR
Yan Zheng, Yuchen Zheng, Wataru Ohyama, Daiki Suehiro, Seiichi Uchida
2019 conf
EMBC
Daisuke Harada, Ryoma Bise, Hiroki Tokunaga, Wataru Ohyama, Sanae Oka, Toshihiko Fujimori, Seiichi Uchida
2019 A conf
ICDAR
Yosuke Onitsuka, Wataru Ohyama, Seiichi Uchida
2018 J jnl
IEICE Trans. Inf. Syst.
Kazunori Aoki, Wataru Ohyama, Tetsushi Wakabayashi
2017 conf
ACPR
Yuta Somada, Wataru Ohyama, Tetsushi Wakabayashi
2017 Misc conf
MVA
Kazunori Aoki, Wataru Ohyama, Tetsushi Wakabayashi
2017 conf
MOCR@ICDAR
Wataru Ohyama, Seiya Iwata, Tetsushi Wakabayashi, Fumitaka Kimura
2017 conf
ACPR
Keg Matsuda, Wataru Ohyama, Tetsushi Wakabayashi
2017 conf
ASAR
Seiya Iwata, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2017 conf
QCAV
Wataru Ohyama, Koushi Suzuki, Tetsushi Wakabayashi
2016 B conf
ICFHR
Keigo Matsuda, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2016 B conf
ICPR
Seiya Iwata, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2015 A conf
ICDAR
Kanta Kuramoto, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2015 Misc conf
MVA
Kanta Kuramoto, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2015 conf
FCV
Hayato Iwasa, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2015 A conf
ICDAR
Wataru Ohyama, Yuuki Ogi, Tetsushi Wakabayashi, Fumitaka Kimura
2015 conf
FCV
Mizuki Ito, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2015 conf
ACPR
Wataru Ohyama, Soichiro Hotta, Tetsushi Wakabayashi
2014 B conf
ICPR
Wataru Ohyama, Akihito Yamamoto, Tetsushi Wakabayashi, Fumitaka Kimura
2014 conf
ACCV Workshops (2)
Koji Endo, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2013 conf
CBDAR
Kanta Kuramoto, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2013 A conf
ICDAR
Xi Luo, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2013 A conf
ICDAR
Muhammad Imran Malik, Marcus Liwicki, Linda Alewijnse, Wataru Ohyama, Michael Blumenstein, Bryan Found
2013 conf
ACPR
Yuta Kamihira, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2013 A conf
ICDAR
Yuta Kamihira, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2012 B conf
ICPR
Ryo Narita, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2012 B conf
ICFHR
Takashi Ito, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2012 B conf
ICPR
Yasutaka Ito, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2012 B conf
Document Analysis Systems
Xi Luo, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2012 conf
ICETET
Chen Chao, Naoka Masesako, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura, Kiyotsugu Sekioka
2012 B conf
Document Analysis Systems
Lazaro S. P. Busagala, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2011 A conf
ICDAR
Xi Luo, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2011 A conf
ICDAR
Akihiro Kokawa, Lazaro S. P. Busagala, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2011 Misc conf
MVA
Takuma Shimizu, Mariko Isami, Kenji Terada, Wataru Ohyama, Fumitaka Kimura
2011 A conf
ICDAR
Ryo Narita, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2010 B conf
Document Analysis Systems
Gudila Paul Moshi, Lazaro S. P. Busagala, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2010 B conf
ICFHR
Yumiko Kawazoe, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2008 J jnl
IEICE Trans. Inf. Syst.
Lazaro S. P. Busagala, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2007 conf
PRIS
Nozomi Nakao, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2007 Misc conf
MVA
Fei Liu, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2007 conf
MLDM Posters
Lazaro S. P. Busagala, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2006 B conf
Document Analysis Systems
Fei Liu, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2006 B conf
Document Analysis Systems
Mayo Murata, Lazaro S. P. Busagala, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2004 conf
IWFHR
Meng Shi, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2004 conf
AWCC
Xuexian Han, Guowei Zu, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2004 conf
SSPR/SPR
Takamasa Yokoi, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2004 conf
IWFHR
Yimei Ding, Wataru Ohyama, Fumitaka Kimura, Malayappan Shridhar
2004 conf
AWCC
Guowei Zu, Mayo Murata, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2003 B conf
ACM Symposium on Document Engineering
Guowei Zu, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2003 A conf
ICDAR
Shusaku Shimizu, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2002 conf
IWFHR
Tetsushi Wakabayashi, Meng Shi, Wataru Ohyama, Fumitaka Kimura
2002 conf
ICPR (3)
Meng Shi, Tetsushi Wakabayashi, Wataru Ohyama, Fumitaka Kimura
2002 conf
ICPR (1)
Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura, Shinji Tsuruoka, Kiyotsugu Sekioka
2002 conf
ICPR (2)
Meng Shi, Tetsushi Wakabayashi, Wataru Ohyama, Fumitaka Kimura
2001 A conf
ICDAR
Tetsushi Wakabayashi, Meng Shi, Wataru Ohyama, Fumitaka Kimura
2001 A conf
ICDAR
Meng Shi, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
2001 conf
MLDM
Meng Shi, Tetsushi Wakabayashi, Wataru Ohyama, Fumitaka Kimura
2000 B conf
ICPR
Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura, Shinji Tsuruoka, Kiyotsugu Sekioka
2000 Misc conf
MVA
Meng Shi, Wataru Ohyama, Tetsushi Wakabayashi, Fumitaka Kimura
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)));