tsdecrypt reads and decrypts CSA encrypted incoming mpeg transport stream over UDP/RTP using code words obtained from OSCAM or similar CAM server. tsdecrypt communicates with CAM server using cs378x (camd35 over tcp) protocol or newcamd protocol. https://georgi.unixsol.org/programs/tsdecrypt/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

tsdecrypt.1 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. .TH TSDECRYPT "1" "September 2013" "tsdecrypt 10.0" "User Commands"
  2. .SH NAME
  3. tsdecrypt \- Decrypt mpeg transport stream.
  4. .SH SYNOPSIS
  5. .B tsdecrypt
  6. [\fIoptions\fR]
  7. .SH DESCRIPTION
  8. tsdecrypt reads incoming mpeg transport stream over UDP/RTP or file and
  9. then decrypts it by after retriving code words from OSCAM or similar
  10. CAMD server. tsdecrypt communicates with CAM server using cs378x (camd35
  11. over tcp) protocol or newcamd protocol.
  12. .SH OPTIONS
  13. .TP
  14. .SH MAIN OPTIONS
  15. .PP
  16. .TP
  17. \fB\-i\fR, \fB\-\-ident\fR <ident>
  18. Set ident that will be used when logging to syslog. The preferred format
  19. for the ident is PROVIDER/CHANNEL.
  20. .TP
  21. \fB\-d\fR, \fB\-\-daemon\fR <pidfile>
  22. When started become a daemon and write pid file to <pidfile>.
  23. .TP
  24. \fB\-N\fR, \fB\-\-notify\-program\fR <program>
  25. Execute \fB<program>\fR when predefined events happen. In order for
  26. this option to work \fB\-\-ident\fR should also be used.
  27. You can use \fBnotify\-script.example\fR file as notification program
  28. and an example on how to create your own notification script.
  29. See \fBEVENTS\fR section for detailed description of the events.
  30. .TP
  31. \fB\-9\fR, \fB\-\-notify-wait\fR
  32. Wait for notification script to exit before starting another notification.
  33. By default notifications script is executed as soon as notification is
  34. received. But since several notifications might come at one time, there
  35. is no guarantee that notification script would be run sequentially. The
  36. notification script for newer notification might be run before an older
  37. notification.
  38. Setting this option makes sure that you'll have only one notify script
  39. running. \fB*NOTE*\fR if you set this option make sure that notification
  40. script does not take a lot of time to run or you'll run into problems.
  41. .TP
  42. \fB\-S\fR, \fB\-\-syslog\fR
  43. Write log messages to local syslog.
  44. .TP
  45. \fB\-l\fR, \fB\-\-syslog\-host\fR <addr>
  46. Set syslog host. tsdecrypt sends messages to this host over tcp in
  47. syslog compatible format. syslog\-ng was tested as receiving syslog server.
  48. .TP
  49. \fB\-L\fR, \fB\-\-syslog\-port\fR <port>
  50. Syslog server port. The default value is \fB514\fR.
  51. .TP
  52. \fB\-F\fR, \fB\-\-log\-file\fR <filename>
  53. Write logging data to <filename>. This option can be used along with syslog.
  54. .TP
  55. \fB\-D\fR, \fB\-\-debug\fR <level>
  56. Set message debug level. Currently there are five message levels.
  57. 0 = default messages, 1 = show PSI tables, 2 = show EMMs 3 = show
  58. duplicate ECMs, 4 = packet debug. 5 = packet debug + mpeg ts packet
  59. dump.
  60. Setting higher level enables the levels bellow.
  61. .TP
  62. \fB\-j\fR, \fB\-\-pid\-report\fR
  63. When this option is used, tsdecrypt on exit reports how much packets
  64. were received on each PID.
  65. .TP
  66. \fB\-b\fR, \fB\-\-bench\fR
  67. Bechmark the CSA decryption. The benchmark is single threaded.
  68. If you want to fully test your CPU, run couple of tsdecrypts in parallel.
  69. .TP
  70. \fB\-V\fR, \fB\-\-version\fR
  71. Show program version.
  72. .TP
  73. \fB\-h\fR, \fB\-\-help\fR
  74. Show program help.
  75. .TP
  76. .SH INPUT OPTIONS
  77. .PP
  78. .TP
  79. \fB\-I\fR, \fB\-\-input\fR <source>
  80. Where to read from. tsdecrypt supports input from file (\-I file://file.ts),
  81. IPv4 multicast/unicast addresses (\-I 224.0.0.1:5000) or IPv6 multicast/unicast
  82. addresses (\-I [ff01::1111]:5000). By default tsdecrypt reads from \fBstdin\fR.
  83. .TP
  84. \fB\-1\fR, \fB\-\-input\-source\fR <ipaddr>
  85. Set multicast input source address using IP_ADD_SOURCE_MEMBERSHIP. This works
  86. only for IPv4 multicast. The default value is 0.0.0.0 (do not apply source
  87. filtering).
  88. .TP
  89. \fB\-R\fR, \fB\-\-input\-rtp\fR
  90. When reading from multicast assume the input is RTP stream. NOTE: No RTP
  91. processing/reordering of packets is done. The 12 byte RTP header is just
  92. stripped out and the stream is then processed as normal mpeg transport
  93. stream over UDP multicast.
  94. .TP
  95. \fB\-z\fR, \fB\-\-input\-ignore\-disc\fR
  96. Do not report input discontinuity or RTP discontinuity errors.
  97. .TP
  98. \fB\-M\fR, \fB\-\-input\-service\fR <service_id>
  99. Choose the service id. This option must be used when the input is MPTS
  100. in order to select the correct service (program). If the input is MPTS
  101. and \fB\-\-input\-service\fR is not used, tsdecrypt chooses the last service
  102. listed in PAT.
  103. .TP
  104. \fB\-T\fR, \fB\-\-input\-buffer\fR <miliseconds>
  105. Use this option to delay the decoding for certain amount of milliseconds. This
  106. allows tsdecrypt to decode services even if OSCAM returns code word too late.
  107. For example SkyUK sends code words ~700 ms before it starts using them. This
  108. means that if OSCAM is unable to return code word in less than 700 ms the
  109. decryption will fail for a small amount of time. Setting \-\-input\-buffer 1000
  110. will solve the problem in this case.
  111. .TP
  112. \fB\-W\fR, \fB\-\-input\-dump\fR <filename>
  113. Save input stream in <filename>. If the input is RTP, the file will contain
  114. the data without RTP headers (pure mpeg transport stream). Easiest way to
  115. save the input is using command line like the following:
  116. tsdecrypt \-I 239.78.78.78:5000 \-O /dev/null \-s 0.0.0.0 \-W file.ts
  117. .TP
  118. .SH OUTPUT OPTIONS
  119. .PP
  120. .TP
  121. \fB\-O\fR, \fB\-\-output\fR <dest>
  122. Output decrypted stream to <dest>. The destination can be IPv4 multicast
  123. address (\-O 239.0.0.1:5000), IPv6 mulicast address (\-O [ff01::2222]:5000),
  124. hostname that resolves to IPv4/IPv6 address (\-O example.com:5000) or file.
  125. When the output is file, the file name should be prefixed with file://
  126. (\-O file://out.ts)if it doesn't contain / symbol. The default output
  127. is \fBstdout\fR.
  128. .TP
  129. \fB\-o\fR, \fB\-\-output\-intf\fR <value>
  130. Set multicast output interface. The value can be IPv4 address of the output
  131. interface (default: 0.0.0.0 /any/) or in the case of IPv6 the interface
  132. number (default: -1 /any/).
  133. .TP
  134. \fB\-t\fR, \fB\-\-output\-ttl\fR
  135. Set multicast ttl. The default value is \fB1\fR.
  136. .TP
  137. \fB\-g\fR, \fB\-\-output\-tos\fR
  138. Set TOS value of output packets. The default is not to set any specific TOS.
  139. .TP
  140. \fB\-r\fR, \fB\-\-output\-rtp\fR
  141. Enable RTP output. The default output is standard MPEG TS over UDP, this
  142. option enables tsdecrypt to output RTP packets.
  143. .TP
  144. \fB\-k\fR, \fB\-\-output\-rtp\-ssrc\fR <ssrc>
  145. .TP
  146. \fB\-u\fR, \fB\-\-no\-output\-on\-error\fR
  147. Filter all output when there is no valid code word.
  148. .TP
  149. \fB\-p\fR, \fB\-\-no\-output\-filter\fR
  150. Disable output filtering. By default the output filter is enabled and only
  151. PAT/PMT/SDT and data packets are left in the output. Everything else not
  152. mentioned in PMT like NIT, EIT, TDT tables and unknown pids is removed.
  153. .TP
  154. \fB\-y\fR, \fB\-\-output\-nit\-pass\fR
  155. Pass through NIT packets when output filtering is enabled.
  156. .TP
  157. \fB\-w\fR, \fB\-\-output\-eit\-pass\fR
  158. Pass through EIT (EPG) packets when output filtering is enabled.
  159. .TP
  160. \fB\-x\fR, \fB\-\-output\-tdt\-pass\fR
  161. Pass through TDT/TOT packets when output filtering is enabled.
  162. .TP
  163. .SH CA OPTIONS
  164. .PP
  165. .TP
  166. \fB\-c\fR, \fB\-\-ca\-system\fR <ca_sys>
  167. Process input EMM/ECM from <ca_sys>. Currently tested and working CA systems
  168. are \fBCONAX\fR, \fBCRYPTOWORKS\fR, \fBIRDETO\fR, \fBVIACCESS\fR, \fBMEDIAGUARD\fR
  169. (\fBSECA\fR) and \fBVIDEOGUARD\fR (\fBNDS\fR), \fBNAGRA\fR, \fBBULCRYPT\fR,
  170. \fBGRIFFIN\fR and \fBDGCRYPT\fR.
  171. Other supported CA system that you can choose but is not tested is \fBDRECRYPT\fR.
  172. The default \fB<ca_sys>\fR is \fBCONAX\fR. You can override the default CAS CAIDs
  173. by using \fB\-\-caid\fR parameter.
  174. .TP
  175. \fB\-C\fR, \fB\-\-caid\fR <caid>
  176. Directly set CAID. This is useful if you have couple of CA streams from
  177. one CA but with different CAIDs or CAS that is unsupported by \fB\-\-ca\-system\fR
  178. parameter.
  179. .TP
  180. \fB\-Y\fR, \fB\-\-const\-cw\fR <code_word>
  181. Set constant code word to be used for decryption. The \fB<code_word>\fR should
  182. contain 32 hex chars. For example using \fBa1a2a3a4a5a6a7a8b1b2b3b4b5b6b7b8\fR
  183. as parameter will set even code word to \fBa1a2a3a4a5a6a7a8\fR and odd code
  184. word to \fBb1b2b3b4b5b6b7b8\fR.
  185. .TP
  186. \fB\-Q\fR, \fB\-\-biss\-key\fR <biss_key>
  187. Set BISS key to be used for decryption. The \fB<biss_key>\fR should
  188. contain 12 chars (hex). For example \fB112233445566\fR is valid BISS key.
  189. If the BISS key contains 16 chars this means that the key CRC is embeded
  190. in the key. These keys are also supported (they are the same as using
  191. constant code word with same code words for even and odd keys).
  192. .TP
  193. .SH CAMD OPTIONS
  194. .PP
  195. .TP
  196. \fB\-A\fR, \fB\-\-camd\-proto\fR <protocol>
  197. Set CAMD server protocol. Valid protocols are \fBCS378X\fR and \fBNEWCAMD\fR.
  198. If this option is not used the default protocol is \fBCS378X\fR (camd35 over
  199. tcp).
  200. .TP
  201. \fB\-s\fR, \fB\-\-camd\-server\fR <hostname[:port]>
  202. Set CAMD server address. You can use IPv4/IPv6 address or hostname. If the port
  203. is not set then \fB2233\fR is used as default port. 2233 is the default port
  204. for CS378X protocol but for NEWCAMD protocol you probably should choose other
  205. port number. To set static IPv6 address you have to put in in brackets (\fB[]\fR)
  206. for example: \fB[1234::5678]:2233\fR
  207. .TP
  208. \fB\-U\fR, \fB\-\-camd\-user\fR <username>
  209. Set CAMD user name. The default is \fBuser\fR.
  210. .TP
  211. \fB\-P\fR, \fB\-\-camd\-pass\fR <password>
  212. Set CAMD user password. The default is \fBpass\fR.
  213. .TP
  214. \fB\-B\fR, \fB\-\-camd\-des\-key\fR <des_key>
  215. Set DES key used by NEWCAMD protocol. The default
  216. is \fB0102030405060708091011121314\fR.
  217. .TP
  218. \fB\-4\fR, \fB\-\-ipv4\fR
  219. Connect to CAMD server using only IPv4 addresses of the server. IPv6
  220. addresses would be are ignorred.
  221. .TP
  222. \fB\-6\fR, \fB\-\-ipv6\fR
  223. Connect to CAMD server using only IPv6 addresses of the server. IPv4
  224. addresses would be are ignorred.
  225. .TP
  226. .SH EMM OPTIONS
  227. .PP
  228. .TP
  229. \fB\-e\fR, \fB\-\-emm\fR
  230. Enable sending EMM's to CAMD for processing. By default EMM processing
  231. is \fBdisabled\fR and only ECM are processed.
  232. .TP
  233. \fB\-Z\fR, \fB\-\-emm\-pid\fR <pid>
  234. Set EMM pid manually. This option is useful for services that have
  235. couple of EMM streams from one CA system. Without this option tsdecrypt
  236. always chooses the first stream from the chosen CA system.
  237. .TP
  238. \fB\-E\fR, \fB\-\-emm\-only\fR
  239. Disable ECM processing and stream output. This option is useful if the EMM
  240. stream has very high rate and is interfering with ECM processing. Using
  241. \-\-emm\-only you can run special tsdecrypt dedicated only to keeping
  242. card entitlements up to date.
  243. .TP
  244. \fB\-f\fR, \fB\-\-emm\-report\-time\fR <seconds>
  245. Set interval for EMM reports. The default is \fB60\fR seconds. Set to \fB0\fR
  246. to disable EMM reports.
  247. .TP
  248. \fB\-a\fR, \fB\-\-emm\-filter\fR <filter_definition>
  249. Add EMM filter described by <filter_definition>. EMM filters are useful if
  250. you want to limit the number of EMMs that should reach your CAMD server.
  251. The basic \fB<filter_defintion>\fR is \fBCommand/Settings\fR where
  252. the commands are: \fBaccept_all\fR, \fBreject_all\fR, \fBaccept\fR
  253. and \fBreject\fR.
  254. For more information about filtering and for example filters, please
  255. read \fBFILTERING\fR file that comes with tsdecrypt. This option can be
  256. used multiple times to define up to \fB16\fR different filters.
  257. .TP
  258. .SH ECM OPTIONS
  259. .PP
  260. .TP
  261. \fB\-X\fR, \fB\-\-ecm\-pid\fR <pid>
  262. Set ECM pid manually. This option is useful for services that have
  263. couple of ECM streams from one CA system. Without this option tsdecrypt
  264. always chooses the first stream from the chosen CA system. Run tsdecrypt
  265. with \-\-debug 2 and look at CA descriptors in PMT to see what CA streams
  266. are available.
  267. .TP
  268. \fB\-v\fR, \fB\-\-ecm\-only\fR
  269. Process ECMs but do not decode the input stream. This option is useful if
  270. you just want to populate you OSCAM DCW cache but do not want to waste CPU
  271. time on stream decoding.
  272. .TP
  273. \fB\-H\fR, \fB\-\-ecm\-report\-time\fR <seconds>
  274. Set interval for ECM reports. The default is \fB60\fR seconds. Set to \fB0\fR
  275. to disable ECM reports.
  276. .TP
  277. \fB\-G\fR, \fB\-\-ecm\-irdeto\-type\fR <int>
  278. Set the index of the IRDETO ECM stream. \fBNOTE: This option is deprecated,
  279. better use \-\-ecm\-irdeto\-chid\fR.
  280. .TP
  281. \fB\-2\fR, \fB\-\-ecm\-irdeto\-chid\fR <int>
  282. IRDETO CA sends ECMs mixed in single stream on single PID. In order to select
  283. the correct ECM stream the so called CHID number is used. Oscam reports what
  284. CHIDs are activated in your card and tsdecrypt allows you to set the correct
  285. CHID number using this option. tsderypt reports what CHIDs are available
  286. in the incoming ECM stream. The CHID is 16-bit number (0x0000 - 0xffff).
  287. .TP
  288. \fB\-K\fR, \fB\-\-ecm\-no\-log\fR
  289. Disable logging of ECMs and code words. Code word errors and stats
  290. reports are not affected by this option.
  291. .TP
  292. \fB\-J\fR, \fB\-\-cw\-warn\-time\fR <seconds>
  293. After how much seconds to warn if valid code word was not received.
  294. The default is \fB60\fR seconds. Set to \fB0\fR to disable the warning.
  295. .TP
  296. \fB\-q\fR, \fB\-\-ecm\-and-emm-only\fR
  297. Process ECMs and EMMs but do not decode the input stream. This option combines
  298. \-\-ecm\-only and \-\-emm\-only options. Use it if you want to populate your
  299. OSCAM DCW cache and keep your card entitlements updated but do not want to
  300. waste CPU time on stream decoding.
  301. .TP
  302. .SH DEBUG OPTIONS
  303. .PP
  304. .TP
  305. \fB\-n\fR, \fB\-\-ecm\-file\fR <file.txt>
  306. Read ECM from text file and send it to CAMD server for processing. This
  307. option must be used along with \fB\-\-caid\fR and \fB\-\-input-service\fR
  308. options.
  309. The file should be normal text file, the format of the file is described
  310. bellow.
  311. .TP
  312. \fB\-m\fR, \fB\-\-emm\-file\fR <file.txt>
  313. Read EMM from text file and send it to CAMD server for processing. This
  314. option must be used along with \fB\-\-caid\fR and \fB\-\-input-service\fR
  315. options.
  316. Bellow is an example text file, lines starting with # are ignored and
  317. also 0x prefixes are ignored. Any other symbol in the file is processed
  318. as hex number. An example file might look like this:
  319. .nf
  320. # comment
  321. aa bb cc dd ee
  322. ff 01 02 03 04
  323. # Other comment
  324. 0x05 0x06 0x07
  325. .fi
  326. .SH EVENTS
  327. Notification events are sent when \fB\-\-notify\-program\fR and \fB\-\-ident\fR
  328. options are used. The event parameters are set as environmental variables
  329. before executing the external notification program. The variables are:
  330. \fB_TS\fR Unix timestamp of the event.
  331. \fB_IDENT\fR tsdecrypt ident parameter with "/" replaced by "\-".
  332. \fB_INPUT_ADDR\fR Input address and port (for example 239.1.2.3:5000)
  333. \fB_OUTPUT_ADDR\fR Output address and port (for example 239.9.8.7:5000)
  334. \fB_MESSAGE_ID\fR Event message id (for example START, STOP, etc...).
  335. \fB_MESSAGE_MSG\fR Event message id with "_" replaced by " ".
  336. \fB_MESSAGE_TEXT\fR Event message text. Human readable event message.
  337. currently defined events are:
  338. \fBSTART\fR tsdecrypt was started.
  339. \fBNO_PROGRAM\fR There is an input but there is no valid program
  340. in the input (PMT table is missing). This error is
  341. reported when there 15 seconds have passed since
  342. last valid PMT was received. When this error is
  343. active tsdecrypt stops outputing the stream.
  344. \fBCODE_WORD_OK\fR Valid code word was received and decryption is
  345. working ok.
  346. \fBNO_CODE_WORD\fR No valid code word was received for X seconds. The
  347. decryption process have been suspended until valid
  348. code word is received. This event is sent only if
  349. the stream is encrypted and there are no new code words
  350. from the CAMD server.
  351. \fBSTREAM_CLEAR\fR No encrypted packets arrived in the input stream.
  352. The stream is not encrypted and clear to view.
  353. \fBNO_EMM_RECEIVED\fR No EMM packet have been received for X seconds.
  354. \fBINPUT_TIMEOUT\fR There was no data on the input.
  355. \fBINPUT_OK\fR The data have appeared on the input.
  356. \fBSTOP\fR tsdecrypt was stopped.
  357. See \fBnotify\-script.example\fR for an example on how to create external
  358. notification program.
  359. .SH EXAMPLES
  360. To get a quick start here are some example command lines. The default
  361. CA system is set to CONAX, you can change it using \fB\-\-ca-system\fR parameter.
  362. .nf
  363. # Decrypt multicast stream from 239.0.50.11:5000 using 10.0.1.1:2233
  364. # as camd server and output decrypted result to 239.78.78.78:5000
  365. tsdecrypt --camd-server 10.0.1.1 \\
  366. --input 239.0.50.11:5000 --output 239.78.78.78:5000
  367. # Same as above but enable EMM processing
  368. tsdecrypt --emm --camd-server 10.0.1.1:2233 \\
  369. --input 239.0.50.11:5000 --output 239.78.78.78:5000
  370. # Same as above but do not filter output stream thus allowing
  371. # EIT/TOT/NIT, etc tables to passthrough
  372. tsdecrypt --no-output-filter --emm --camd-server 10.0.1.1 \\
  373. --input 239.0.50.11:5000 --output 239.78.78.78:5000
  374. # Choose program/service_id to decrypt. Useful when the input is MPTS
  375. tsdecrypt --camd-server 10.0.1.1 --input-service 1234 \\
  376. --input 239.0.50.11:5000 --output 239.78.78.78:5000
  377. # Read stream over RTP and process VIACCESS encoded channel
  378. tsdecrypt --ca-system VIACCESS --emm --camd-server 10.0.1.1:2233 \\
  379. --input-rtp --input 239.0.50.11:5000 --output 239.78.78.78:5000
  380. # Decrypt stream encypted with CAID 0x0963 (NDS, sky)
  381. tsdecrypt --camd-server 10.0.1.1 --ca-system NDS --caid 0x0963 \\
  382. --input 239.0.50.11:5000 --output 239.78.78.78:5000
  383. # Send only EMMs to OSCAM for CAID 0x0963 (NDS, sky)
  384. tsdecrypt --camd-server 10.0.1.1 --emm-only --caid 0x0963 \\
  385. --input 239.0.50.11:5000 --output /dev/null
  386. # Decrypt stream encypted with CAID 0x5581 (Bulcrypt)
  387. tsdecrypt --camd-server 10.0.1.1 --caid 0x5581 \\
  388. --input 239.0.50.11:5000 --output 239.78.78.78:5000
  389. # Decrypt BISS encrypted stream
  390. tsdecrypt --biss-key 0x112233445566 --input 239.0.50.11:5000 \\
  391. --output 239.78.78.78:5000
  392. # Decrypt file encypted with constant code word
  393. tsdecrypt --const-cw 0x00000000000000001111111111111111 \\
  394. --input encrypted-file.ts --output file://decrypted-file.ts
  395. # Send ECM from file
  396. tsdecrypt --ecm-file ecm.txt --caid 0x5581 --input-service 12345 \\
  397. --camd-server example.com
  398. # Decrypt IRDETO stream from Raduga (CHID == 0x0015)
  399. tsdecrypt --input 239.0.50.11:5000 --output 239.78.78.78:5000 \\
  400. --camd-server example.com \\
  401. --ca-system IRDETO --caid 0x0652 --ecm-irdeto-chid 0x0015
  402. .fi
  403. .SH SEE ALSO
  404. See the README file for more information. If you have questions, remarks,
  405. problems or you just want to contact the developer, write to:
  406. \fIgeorgi@unixsol.org\fP
  407. .TP
  408. For more info, see the website at
  409. .I http://georgi.unixsol.org/programs/tsdecrypt/
  410. .SH AUTHORS
  411. Written by Georgi Chorbadzhiyski <\fBgeorgi@unixsol.org\fR>
  412. .SH LICENSE
  413. This program is free software; you can redistribute it and/or modify it under
  414. the terms of version 2 of the GNU General Public License as published by the
  415. Free Software Foundation.