03_pcap_read_dump.patch 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  1. diff -Nur dsniff-2.4-old/dsniff.8 dsniff-2.4/dsniff.8
  2. --- dsniff-2.4-old/dsniff.8 2009-09-15 00:11:17.159202783 +0300
  3. +++ dsniff-2.4/dsniff.8 2009-09-15 00:11:20.297202352 +0300
  4. @@ -10,7 +10,7 @@
  5. .nf
  6. .fi
  7. \fBdsniff\fR [\fB-c\fR] [\fB-d\fR] [\fB-m\fR] [\fB-n\fR] [\fB-i
  8. -\fIinterface\fR] [\fB-s \fIsnaplen\fR] [\fB-f \fIservices\fR]
  9. +\fIinterface\fR | \fB-p \fIpcapfile\fR] [\fB-s \fIsnaplen\fR] [\fB-f \fIservices\fR]
  10. [\fB-t \fItrigger[,...]\fR]]
  11. [\fB-r\fR|\fB-w\fR \fIsavefile\fR] [\fIexpression\fR]
  12. .SH DESCRIPTION
  13. @@ -45,6 +45,9 @@
  14. Do not resolve IP addresses to hostnames.
  15. .IP "\fB-i \fIinterface\fR"
  16. Specify the interface to listen on.
  17. +.IP "\fB-p \fIpcapfile\fR"
  18. +Rather than processing the contents of packets observed upon the network
  19. +process the given PCAP capture file.
  20. .IP "\fB-s \fIsnaplen\fR"
  21. Analyze at most the first \fIsnaplen\fR bytes of each TCP connection,
  22. rather than the default of 1024.
  23. diff -Nur dsniff-2.4-old/dsniff.c dsniff-2.4/dsniff.c
  24. --- dsniff-2.4-old/dsniff.c 2009-09-15 00:11:17.158475246 +0300
  25. +++ dsniff-2.4/dsniff.c 2009-09-15 00:11:20.298202201 +0300
  26. @@ -46,8 +46,9 @@
  27. usage(void)
  28. {
  29. fprintf(stderr, "Version: " VERSION "\n"
  30. - "Usage: dsniff [-cdmn] [-i interface] [-s snaplen] [-f services]\n"
  31. - " [-t trigger[,...]] [-r|-w savefile] [expression]\n");
  32. + "Usage: dsniff [-cdmn] [-i interface | -p pcapfile] [-s snaplen]\n"
  33. + " [-f services] [-t trigger[,...]] [-r|-w savefile]\n"
  34. + " [expression]\n");
  35. exit(1);
  36. }
  37. @@ -79,7 +80,7 @@
  38. services = savefile = triggers = NULL;
  39. - while ((c = getopt(argc, argv, "cdf:i:mnr:s:t:w:h?V")) != -1) {
  40. + while ((c = getopt(argc, argv, "cdf:i:mnp:r:s:t:w:h?V")) != -1) {
  41. switch (c) {
  42. case 'c':
  43. Opt_client = 1;
  44. @@ -99,6 +100,9 @@
  45. case 'n':
  46. Opt_dns = 0;
  47. break;
  48. + case 'p':
  49. + nids_params.filename = optarg;
  50. + break;
  51. case 'r':
  52. Opt_read = 1;
  53. savefile = optarg;
  54. @@ -168,10 +172,23 @@
  55. else nids_register_tcp(trigger_tcp);
  56. if (nids_params.pcap_filter != NULL) {
  57. - warnx("listening on %s [%s]", nids_params.device,
  58. - nids_params.pcap_filter);
  59. + if (nids_params.filename == NULL) {
  60. + warnx("listening on %s [%s]", nids_params.device,
  61. + nids_params.pcap_filter);
  62. + }
  63. + else {
  64. + warnx("using %s [%s]", nids_params.filename,
  65. + nids_params.pcap_filter);
  66. + }
  67. + }
  68. + else {
  69. + if (nids_params.filename == NULL) {
  70. + warnx("listening on %s", nids_params.device);
  71. + }
  72. + else {
  73. + warnx("using %s", nids_params.filename);
  74. + }
  75. }
  76. - else warnx("listening on %s", nids_params.device);
  77. nids_run();
  78. diff -Nur dsniff-2.4-old/filesnarf.8 dsniff-2.4/filesnarf.8
  79. --- dsniff-2.4-old/filesnarf.8 2009-09-15 00:11:17.164203350 +0300
  80. +++ dsniff-2.4/filesnarf.8 2009-09-15 00:11:20.298202201 +0300
  81. @@ -9,7 +9,7 @@
  82. .na
  83. .nf
  84. .fi
  85. -\fBfilesnarf\fR [\fB-i \fIinterface\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  86. +\fBfilesnarf\fR [\fB-i \fIinterface\fR | \fB-p \fIpcapfile\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  87. .SH DESCRIPTION
  88. .ad
  89. .fi
  90. @@ -18,6 +18,8 @@
  91. .SH OPTIONS
  92. .IP "\fB-i \fIinterface\fR"
  93. Specify the interface to listen on.
  94. +.IP "\fB-p \fIpcapfile\fR"
  95. +Process packets from the specified PCAP capture file instead of the network.
  96. .IP \fB-v\fR
  97. "Versus" mode. Invert the sense of matching, to select non-matching
  98. files.
  99. diff -Nur dsniff-2.4-old/filesnarf.c dsniff-2.4/filesnarf.c
  100. --- dsniff-2.4-old/filesnarf.c 2009-09-15 00:11:17.157475747 +0300
  101. +++ dsniff-2.4/filesnarf.c 2009-09-15 00:11:20.299201839 +0300
  102. @@ -51,7 +51,7 @@
  103. usage(void)
  104. {
  105. fprintf(stderr, "Version: " VERSION "\n"
  106. - "Usage: filesnarf [-i interface] [[-v] pattern [expression]]\n");
  107. + "Usage: filesnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]\n");
  108. exit(1);
  109. }
  110. @@ -464,11 +464,14 @@
  111. extern int optind;
  112. int c;
  113. - while ((c = getopt(argc, argv, "i:vh?V")) != -1) {
  114. + while ((c = getopt(argc, argv, "i:p:vh?V")) != -1) {
  115. switch (c) {
  116. case 'i':
  117. nids_params.device = optarg;
  118. break;
  119. + case 'p':
  120. + nids_params.filename = optarg;
  121. + break;
  122. case 'v':
  123. Opt_invert = 1;
  124. break;
  125. @@ -498,11 +501,24 @@
  126. nids_register_ip(decode_udp_nfs);
  127. nids_register_tcp(decode_tcp_nfs);
  128. - if (nids_params.pcap_filter != NULL) {
  129. - warnx("listening on %s [%s]", nids_params.device,
  130. - nids_params.pcap_filter);
  131. - }
  132. - else warnx("listening on %s", nids_params.device);
  133. + if (nids_params.pcap_filter != NULL) {
  134. + if (nids_params.filename == NULL) {
  135. + warnx("listening on %s [%s]", nids_params.device,
  136. + nids_params.pcap_filter);
  137. + }
  138. + else {
  139. + warnx("using %s [%s]", nids_params.filename,
  140. + nids_params.pcap_filter);
  141. + }
  142. + }
  143. + else {
  144. + if (nids_params.filename == NULL) {
  145. + warnx("listening on %s", nids_params.device);
  146. + }
  147. + else {
  148. + warnx("using %s", nids_params.filename);
  149. + }
  150. + }
  151. nids_run();
  152. diff -Nur dsniff-2.4-old/mailsnarf.8 dsniff-2.4/mailsnarf.8
  153. --- dsniff-2.4-old/mailsnarf.8 2009-09-15 00:11:17.157475747 +0300
  154. +++ dsniff-2.4/mailsnarf.8 2009-09-15 00:11:20.299201839 +0300
  155. @@ -9,7 +9,7 @@
  156. .na
  157. .nf
  158. .fi
  159. -\fBmailsnarf\fR [\fB-i \fIinterface\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  160. +\fBmailsnarf\fR [\fB-i \fIinterface\fR | \fB-p \fIpcapfile\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  161. .SH DESCRIPTION
  162. .ad
  163. .fi
  164. @@ -19,6 +19,8 @@
  165. .SH OPTIONS
  166. .IP "\fB-i \fIinterface\fR"
  167. Specify the interface to listen on.
  168. +.IP "\fB-p \fIpcapfile\fR"
  169. +Process packets from the specified PCAP capture file instead of the network.
  170. .IP \fB-v\fR
  171. "Versus" mode. Invert the sense of matching, to select non-matching
  172. messages.
  173. diff -Nur dsniff-2.4-old/mailsnarf.c dsniff-2.4/mailsnarf.c
  174. --- dsniff-2.4-old/mailsnarf.c 2009-09-15 00:11:20.295203843 +0300
  175. +++ dsniff-2.4/mailsnarf.c 2009-09-15 00:11:20.300202037 +0300
  176. @@ -59,7 +59,7 @@
  177. usage(void)
  178. {
  179. fprintf(stderr, "Version: " VERSION "\n"
  180. - "Usage: mailsnarf [-i interface] [[-v] pattern [expression]]\n");
  181. + "Usage: mailsnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]\n");
  182. exit(1);
  183. }
  184. @@ -344,11 +344,14 @@
  185. extern int optind;
  186. int c;
  187. - while ((c = getopt(argc, argv, "i:vh?V")) != -1) {
  188. + while ((c = getopt(argc, argv, "i:p:vh?V")) != -1) {
  189. switch (c) {
  190. case 'i':
  191. nids_params.device = optarg;
  192. break;
  193. + case 'p':
  194. + nids_params.filename = optarg;
  195. + break;
  196. case 'v':
  197. Opt_invert = 1;
  198. break;
  199. @@ -378,10 +381,23 @@
  200. nids_register_tcp(sniff_pop_session);
  201. if (nids_params.pcap_filter != NULL) {
  202. - warnx("listening on %s [%s]", nids_params.device,
  203. - nids_params.pcap_filter);
  204. - }
  205. - else warnx("listening on %s", nids_params.device);
  206. + if (nids_params.filename == NULL) {
  207. + warnx("listening on %s [%s]", nids_params.device,
  208. + nids_params.pcap_filter);
  209. + }
  210. + else {
  211. + warnx("using %s [%s]", nids_params.filename,
  212. + nids_params.pcap_filter);
  213. + }
  214. + }
  215. + else {
  216. + if (nids_params.filename == NULL) {
  217. + warnx("listening on %s", nids_params.device);
  218. + }
  219. + else {
  220. + warnx("using %s", nids_params.filename);
  221. + }
  222. + }
  223. nids_run();
  224. diff -Nur dsniff-2.4-old/msgsnarf.8 dsniff-2.4/msgsnarf.8
  225. --- dsniff-2.4-old/msgsnarf.8 2009-09-15 00:11:17.161202828 +0300
  226. +++ dsniff-2.4/msgsnarf.8 2009-09-15 00:11:20.300202037 +0300
  227. @@ -9,7 +9,7 @@
  228. .na
  229. .nf
  230. .fi
  231. -\fBmsgsnarf\fR [\fB-i \fIinterface\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  232. +\fBmsgsnarf\fR [\fB-i \fIinterface\fR | \fB-p \fIpcapfile\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  233. .SH DESCRIPTION
  234. .ad
  235. .fi
  236. @@ -19,6 +19,8 @@
  237. .SH OPTIONS
  238. .IP "\fB-i \fIinterface\fR"
  239. Specify the interface to listen on.
  240. +.IP "\fB-p \fIpcapfile\fR"
  241. +Process packets from the specified PCAP capture file instead of the network.
  242. .IP \fB-v\fR
  243. "Versus" mode. Invert the sense of matching, to select non-matching
  244. messages.
  245. diff -Nur dsniff-2.4-old/msgsnarf.c dsniff-2.4/msgsnarf.c
  246. --- dsniff-2.4-old/msgsnarf.c 2009-09-15 00:11:20.231202323 +0300
  247. +++ dsniff-2.4/msgsnarf.c 2009-09-15 00:11:20.301201954 +0300
  248. @@ -45,7 +45,7 @@
  249. usage(void)
  250. {
  251. fprintf(stderr, "Version: " VERSION "\n"
  252. - "Usage: msgsnarf [-i interface] [[-v] pattern [expression]]\n");
  253. + "Usage: msgsnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]\n");
  254. exit(1);
  255. }
  256. @@ -633,11 +633,14 @@
  257. extern int optind;
  258. int c;
  259. - while ((c = getopt(argc, argv, "i:hv?V")) != -1) {
  260. + while ((c = getopt(argc, argv, "i:p:hv?V")) != -1) {
  261. switch (c) {
  262. case 'i':
  263. nids_params.device = optarg;
  264. break;
  265. + case 'p':
  266. + nids_params.filename = optarg;
  267. + break;
  268. case 'v':
  269. Opt_invert = 1;
  270. break;
  271. @@ -666,11 +669,24 @@
  272. nids_register_tcp(sniff_msgs);
  273. - if (nids_params.pcap_filter != NULL) {
  274. - warnx("listening on %s [%s]", nids_params.device,
  275. - nids_params.pcap_filter);
  276. - }
  277. - else warnx("listening on %s", nids_params.device);
  278. + if (nids_params.pcap_filter != NULL) {
  279. + if (nids_params.filename == NULL) {
  280. + warnx("listening on %s [%s]", nids_params.device,
  281. + nids_params.pcap_filter);
  282. + }
  283. + else {
  284. + warnx("using %s [%s]", nids_params.filename,
  285. + nids_params.pcap_filter);
  286. + }
  287. + }
  288. + else {
  289. + if (nids_params.filename == NULL) {
  290. + warnx("listening on %s", nids_params.device);
  291. + }
  292. + else {
  293. + warnx("using %s", nids_params.filename);
  294. + }
  295. + }
  296. nids_run();
  297. diff -Nur dsniff-2.4-old/sshow.8 dsniff-2.4/sshow.8
  298. --- dsniff-2.4-old/sshow.8 2009-09-15 00:11:17.168204279 +0300
  299. +++ dsniff-2.4/sshow.8 2009-09-15 00:11:20.301201954 +0300
  300. @@ -9,7 +9,7 @@
  301. .na
  302. .nf
  303. .fi
  304. -\fBsshow\fR [\fB-d\fR] [\fB-i \fIinterface\fR] [\fIexpression\fR]
  305. +\fBsshow\fR [\fB-d\fR] [\fB-i \fIinterface\fR | \fB-p \fIpcapfile\fR] [\fIexpression\fR]
  306. .SH DESCRIPTION
  307. .ad
  308. .fi
  309. @@ -28,6 +28,8 @@
  310. Enable verbose debugging output.
  311. .IP "\fB-i \fIinterface\fR"
  312. Specify the interface to listen on.
  313. +.IP "\fB-p \fIpcapfile\fR"
  314. +Process packets from the specified PCAP capture file instead of the network.
  315. .IP "\fIexpression\fR"
  316. Specify a tcpdump(8) filter expression to select traffic to sniff.
  317. .SH "SEE ALSO"
  318. diff -Nur dsniff-2.4-old/sshow.c dsniff-2.4/sshow.c
  319. --- dsniff-2.4-old/sshow.c 2009-09-15 00:11:20.265201767 +0300
  320. +++ dsniff-2.4/sshow.c 2009-09-15 00:11:20.302201942 +0300
  321. @@ -82,7 +82,7 @@
  322. static void
  323. usage(void)
  324. {
  325. - fprintf(stderr, "Usage: sshow [-d] [-i interface]\n");
  326. + fprintf(stderr, "Usage: sshow [-d] [-i interface | -p pcapfile]\n");
  327. exit(1);
  328. }
  329. @@ -616,7 +616,7 @@
  330. extern int optind;
  331. int c;
  332. - while ((c = getopt(argc, argv, "di:h?")) != -1) {
  333. + while ((c = getopt(argc, argv, "di:p:h?")) != -1) {
  334. switch (c) {
  335. case 'd':
  336. debug++;
  337. @@ -624,6 +624,9 @@
  338. case 'i':
  339. nids_params.device = optarg;
  340. break;
  341. + case 'p':
  342. + nids_params.filename = optarg;
  343. + break;
  344. default:
  345. usage();
  346. break;
  347. @@ -652,11 +655,24 @@
  348. nids_register_tcp(process_event);
  349. - if (nids_params.pcap_filter != NULL) {
  350. - warnx("listening on %s [%s]", nids_params.device,
  351. - nids_params.pcap_filter);
  352. - }
  353. - else warnx("listening on %s", nids_params.device);
  354. + if (nids_params.pcap_filter != NULL) {
  355. + if (nids_params.filename == NULL) {
  356. + warnx("listening on %s [%s]", nids_params.device,
  357. + nids_params.pcap_filter);
  358. + }
  359. + else {
  360. + warnx("using %s [%s]", nids_params.filename,
  361. + nids_params.pcap_filter);
  362. + }
  363. + }
  364. + else {
  365. + if (nids_params.filename == NULL) {
  366. + warnx("listening on %s", nids_params.device);
  367. + }
  368. + else {
  369. + warnx("using %s", nids_params.filename);
  370. + }
  371. + }
  372. nids_run();
  373. diff -Nur dsniff-2.4-old/urlsnarf.8 dsniff-2.4/urlsnarf.8
  374. --- dsniff-2.4-old/urlsnarf.8 2009-09-15 00:11:17.162203445 +0300
  375. +++ dsniff-2.4/urlsnarf.8 2009-09-15 00:11:20.302201942 +0300
  376. @@ -9,7 +9,7 @@
  377. .na
  378. .nf
  379. .fi
  380. -\fBurlsnarf\fR [\fB-n\fR] [\fB-i \fIinterface\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  381. +\fBurlsnarf\fR [\fB-n\fR] [\fB-i \fIinterface\fR | \fB-p \fIpcapfile\fR] [[\fB-v\fR] \fIpattern [\fIexpression\fR]]
  382. .SH DESCRIPTION
  383. .ad
  384. .fi
  385. @@ -21,6 +21,9 @@
  386. .IP \fB-n\fR
  387. Do not resolve IP addresses to hostnames.
  388. .IP "\fB-i \fIinterface\fR"
  389. +Specify the interface to listen on.
  390. +.IP "\fB-p \fIpcapfile\fR"
  391. +Process packets from the specified PCAP capture file instead of the network.
  392. .IP \fB-v\fR
  393. "Versus" mode. Invert the sense of matching, to select non-matching
  394. URLs.
  395. diff -Nur dsniff-2.4-old/urlsnarf.c dsniff-2.4/urlsnarf.c
  396. --- dsniff-2.4-old/urlsnarf.c 2009-09-15 00:11:17.168204279 +0300
  397. +++ dsniff-2.4/urlsnarf.c 2009-09-15 00:11:20.302201942 +0300
  398. @@ -41,7 +41,7 @@
  399. usage(void)
  400. {
  401. fprintf(stderr, "Version: " VERSION "\n"
  402. - "Usage: urlsnarf [-n] [-i interface] [[-v] pattern [expression]]\n");
  403. + "Usage: urlsnarf [-n] [-i interface | -p pcapfile] [[-v] pattern [expression]]\n");
  404. exit(1);
  405. }
  406. @@ -201,11 +201,14 @@
  407. extern int optind;
  408. int c;
  409. - while ((c = getopt(argc, argv, "i:nvh?V")) != -1) {
  410. + while ((c = getopt(argc, argv, "i:p:nvh?V")) != -1) {
  411. switch (c) {
  412. case 'i':
  413. nids_params.device = optarg;
  414. break;
  415. + case 'p':
  416. + nids_params.filename = optarg;
  417. + break;
  418. case 'n':
  419. Opt_dns = 0;
  420. break;
  421. @@ -238,8 +241,24 @@
  422. nids_register_tcp(sniff_http_client);
  423. - warnx("listening on %s [%s]", nids_params.device,
  424. - nids_params.pcap_filter);
  425. + if (nids_params.pcap_filter != NULL) {
  426. + if (nids_params.filename == NULL) {
  427. + warnx("listening on %s [%s]", nids_params.device,
  428. + nids_params.pcap_filter);
  429. + }
  430. + else {
  431. + warnx("using %s [%s]", nids_params.filename,
  432. + nids_params.pcap_filter);
  433. + }
  434. + }
  435. + else {
  436. + if (nids_params.filename == NULL) {
  437. + warnx("listening on %s", nids_params.device);
  438. + }
  439. + else {
  440. + warnx("using %s", nids_params.filename);
  441. + }
  442. + }
  443. nids_run();
  444. diff -Nur dsniff-2.4-old/webspy.8 dsniff-2.4/webspy.8
  445. --- dsniff-2.4-old/webspy.8 2009-09-15 00:11:17.162203445 +0300
  446. +++ dsniff-2.4/webspy.8 2009-09-15 00:11:20.303201929 +0300
  447. @@ -9,7 +9,7 @@
  448. .na
  449. .nf
  450. .fi
  451. -\fBwebspy\fR [\fB-i \fIinterface\fR] \fIhost\fR
  452. +\fBwebspy\fR [\fB-i \fIinterface\fR | \fB-p \fIpcapfile\fR] \fIhost\fR
  453. .SH DESCRIPTION
  454. .ad
  455. .fi
  456. @@ -20,6 +20,8 @@
  457. .SH OPTIONS
  458. .IP "\fB-i \fIinterface\fR"
  459. Specify the interface to listen on.
  460. +.IP "\fB-p \fIpcapfile\fR"
  461. +Process packets from the specified PCAP capture file instead of the network.
  462. .IP \fIhost\fR
  463. Specify the web client to spy on.
  464. .SH "SEE ALSO"
  465. diff -Nur dsniff-2.4-old/webspy.c dsniff-2.4/webspy.c
  466. --- dsniff-2.4-old/webspy.c 2009-09-15 00:11:17.167204361 +0300
  467. +++ dsniff-2.4/webspy.c 2009-09-15 00:11:20.303201929 +0300
  468. @@ -42,7 +42,7 @@
  469. usage(void)
  470. {
  471. fprintf(stderr, "Version: " VERSION "\n"
  472. - "Usage: %s [-i interface] host\n", progname);
  473. + "Usage: %s [-i interface | -p pcapfile] host\n", progname);
  474. exit(1);
  475. }
  476. @@ -184,11 +184,14 @@
  477. extern int optind;
  478. int c;
  479. - while ((c = getopt(argc, argv, "i:h?V")) != -1) {
  480. + while ((c = getopt(argc, argv, "i:p:h?V")) != -1) {
  481. switch (c) {
  482. case 'i':
  483. nids_params.device = optarg;
  484. break;
  485. + case 'p':
  486. + nids_params.filename = optarg;
  487. + break;
  488. default:
  489. usage();
  490. }
  491. @@ -216,7 +219,13 @@
  492. nids_register_tcp(sniff_http_client);
  493. - warnx("listening on %s", nids_params.device);
  494. + if (nids_params.filename == NULL) {
  495. + warnx("listening on %s", nids_params.device);
  496. + }
  497. + else {
  498. + warnx("using %s", nids_params.filename);
  499. + }
  500. +
  501. nids_run();