├── README.md
├── makednslog.zip
├── README.txt
├── domains.txt
├── LICENSE
├── COPYING.txt
└── makednslog.c
/README.md:
--------------------------------------------------------------------------------
1 | # ThreatHuntingExcursions
2 | Code, commands, and chatter about Threat Hunting.
3 |
--------------------------------------------------------------------------------
/makednslog.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jantonakos/ThreatHuntingExcursions/HEAD/makednslog.zip
--------------------------------------------------------------------------------
/README.txt:
--------------------------------------------------------------------------------
1 | This repository was created as a way to provide the Information Security
2 | community with any tools or files related to threat hunting.
3 |
4 | Please note that no malicious files are being stored in the repository.
--------------------------------------------------------------------------------
/domains.txt:
--------------------------------------------------------------------------------
1 | server1.mcpmag.com
2 | somecomputer.domain.com
3 | quad.sub.domain.com
4 | www.yahoo.com
5 | pk.sub.domain.com
6 | tertiary.domain.com
7 | www.l.google.com
8 | www.facebook.com
9 | www.yahoo.com
10 | messaging.microsoft.com
11 | akamaiedge.net
12 | twitter.com
13 | grokdebug.herokuapp.com
14 | www.cnn.com
15 | www.target.com
16 | www.facebook.com
17 | www.champlain.edu
18 | www.comptia.org
19 | www.hightechcrimecops.org
20 | www.youtube.com
21 | www.excelsior.edu
22 | tickets.ticketmaster.com
23 | www.htcia.org
24 | www.yahoo.com
25 | www.nutsvolts.com
26 | www.servo.com
27 | www.circuitcellar.com
28 | www.yahoo.com
29 | www.offensive-security.com
30 | vknowledge.net
31 | www.hhs.gov
32 | www.facebook.com
33 | blog.techorganic.com
34 | tzworks.net
35 | www.tap.hesc.ny.gov
36 | www.l.google.com
37 | answers.microsoft.com
38 | images.search.yahoo.com
39 | sectools.org
40 | www.yahoo.com
41 | threatpost.org
42 | www.linux.org
43 | www.sans.edu
44 | www.l.google.com
45 | resources.infosecinstitute.com
46 | www.nationalcybersecurityinstitute.com
47 | www.ask.com
48 | www.youtube.com
49 | www.brighttalk.com
50 | security.radware.com
51 | www.decalage.info
52 | sysforensics.org
53 | reverseengineering.stackexchange.com
54 | login.blogspot.com
55 | twitter.com
56 | www.howstuffworks.com
57 | www.facebook.com
58 | www.trustwave.com
59 | openioc.org
60 | www.l.google.com
61 | blogs.rsa.com
62 | securityintelligence.com
63 | blog.malwarebytes.org
64 | www.yahoo.com
65 | www.techspot.com
66 | datadrivensecurity.info
67 | www.reddit.com
68 | www.facebook.com
69 | www.bro.org
70 | logrythem.org
71 | www.techexams.net
72 | www.l.google.com
73 | www.gartner.com
74 | malware-traffic-analysis.net
75 | isc.sans.edu
76 | twitter.com
77 | www.surveymonkey.com
78 | blog.opensecurityresearch.com
79 | www.youtube.com
80 | www.yahoo.com
81 | ad.doubleclick.net
82 | www.contentprovider.com
83 | www.acanac.ca
84 | www.acfun.tv
85 | www.adeventspermitgate.ae
86 | www.adstuff.co.nz
87 | www.afisha.ru
88 | www.agrant.cn
89 | www.aim.edu.au
90 | www.aitonline.tv
91 | www.alc.co.jp
92 | www.allianzgi.it
93 | www.alumni.mcgill.ca
94 | www.americantourister.ca
95 | www.ana.co.jp
96 | www.angelina-paris.fr
97 | www.anycard.ca
98 | www.arabischesbuch.de
99 | www.armstrongsbrandsource.ca
100 | www.asahicom.rakuten.co.jp
101 | www.athletebiz.us
102 | www.audiaccessories.ca
103 | www.auto.cz
104 | www.autonet.ca
105 | www.autotrader.ca
106 | www.avis.ca
107 | www.b-ms.de
108 | www.baidu.cm
109 | www.bankcardservices.co.uk
110 | www.barbadostraveldeals.co.uk
111 | www.bathescape.co.uk
112 | www.bcparksvolunteers.ca
113 | www.be-come.fr
114 | www.bedroomfurnituregalleries.ca
115 | www.bellmedia.ca
116 | www.bergodesigns.ca
117 | www.bgoperator.ru
118 | www.bilecikhaber.com.tr
119 | www.bitec.co.th
120 | www.blencathra.org.uk
121 | www.blogtoplist.se
122 | www.bnn.ca
123 | www.bokwang.co.id
124 | www.boyner.com.tr
125 | www.bravofly.es
126 | www.britishgolfmuseum.co.uk
127 | www.bsnl.in
128 | www.buienradar.nl
129 | www.buscouncil.ca
130 | www.bytowndays.ca
131 | www.calorizator.ru
132 | www.cancer.ca
133 | www.capitalistexploits.at
134 | www.careerjet.ae
135 | www.cartersoshkosh.ca
136 | www.catho.com.br
137 | www.cbc.radio-canada.ca
138 | www.cbr.ru
139 | www.celebrateevents.ca
140 | www.centralbank.org.bb
141 | www.cfdi.com.mx
142 | www.cheapoair.ca
143 | www.chevrolet.ca
144 | www.chinadaily.com.cn
145 | www.chiriottieditori.it
146 | www.cibc.ca
147 | www.cinepolis.com.co
148 | www.citc.gov.sa
149 | www.cityclub.com.mx
150 | www.classifieds.lk
151 | www.clipconverter.cc
152 | www.cmhc-schl.gc.ca
153 | www.cnt.gouv.qc.ca
154 | www.coca-cola.com.mx
155 | www.colgateprofessional.ca
156 | www.commercialrealestate.com.au
157 | www.conagua.gob.mx
158 | www.conrad.nl
159 | www.corby.ca
160 | www.cosmogirl.com.tr
161 | www.cpij.or.jp
162 | www.crd.bc.ca
163 | www.cruisecritic.com.au
164 | www.ctvalberta.ca
165 | www.cw.com.hk
166 | www.cypres.com.mx
167 | www.dailymail.co.uk
168 | www.das-geschichtsbuch.de
169 | www.debate.com.mx
170 | www.denhelderstores.nl
171 | www.destentor.nl
172 | www.dha.com.tr
173 | www.dib.ae
174 | www.dintaifung.tw
175 | www.dispatchlive.co.za
176 | www.dln.com.hk
177 | www.domainecanardblanc.qc.ca
178 | www.dreamtv.com.tr
179 | www.dubaiairports.ae
180 | www.dunk.com.cn
181 | www.e-taxes.gov.az
182 | www.ebay-kleinanzeigen.de
183 | www.edge.ca
184 | www.educationpost.com.hk
185 | www.eharmony.com.au
186 | www.elcatrin.ca
187 | www.elgrafico.mx
188 | www.eluniversaldf.mx
189 | www.enbici.eu
190 | www.enterprise.ca
191 | www.epost.ca
192 | www.espcializados.es
193 | www.etisalat.ae
194 | www.europarl.europa.eu
195 | www.eventim.co.uk
196 | www.expedia.mx
197 | www.ezbbq.com.sg
198 | www.fairfaxmedia.co.nz
199 | www.farandaway.us
200 | www.fcp-pbdd.ru
201 | www.ficelle.co.jp
202 | www.firmy.cz
203 | www.flyercity.ca
204 | www.foodnetwork.ca
205 | www.fordmustang.in
206 | www.fr.tyrebaydirect.eu
207 | www.frischekueche.at
208 | www.fsjw.gov.cn
209 | www.furnituregalaxy.ca
210 | www.gaj2.suzhou.gov.cn
211 | www.gamewallpapers.us
212 | www.gatag.it
213 | www.gdp.gov.sa
214 | www.getconnect.fr
215 | www.ghafla.co.ke
216 | www.gismeteo.ru
217 | www.gkvnet-ag.de
218 | www.globalbuzz.in
219 | www.gm.ca
220 | www.go2hr.ca
221 | www.goldbook.ca
222 | www.goodle.ca
223 | www.gosuslugi.ru
224 | www.gov.uk
225 | www.grazia.fr
226 | www.grupoverticale.es
227 | www.gtai.de
228 | www.h-santos.es
229 | www.halton.ca
230 | www.hbwedding.co.uk
231 | www.hearst.co.uk
232 | www.hetnieuwerijden.nl
233 | www.hirufm.lk
234 | www.hmv.ca
235 | www.homehardware.ca
236 | www.hongthai.sg
237 | www.hostcms.ru
238 | www.hotelkoenigalbert.de
239 | www.hovogliadidolce.it
240 | www.hrpatoday.ca
241 | www.huf-shop.de
242 | www.humsafar.co.cc
243 | www.ia.com.mx
244 | www.icanto.ru
245 | www.idea-awards.com.au
246 | www.ihbarweb.org.tr
247 | www.imgserver.ca
248 | www.imperialpainting.ca
249 | www.independent.co.uk
250 | www.infinisoft.co.th
251 | www.infonavit.org.mx
252 | www.inspired-communications.ca
253 | www.interep.com.br
254 | www.investegate.co.uk
255 | www.irishmirror.ie
256 | www.itc.nl
257 | www.jackfm.ca
258 | www.jasperpizza.ca
259 | www.jinjianghotels.com.cn
260 | www.jma.go.jp
261 | www.jobstreet.com.sg
262 | www.jsciq.gov.cn
263 | www.kamstrupspb.ru
264 | www.kau.edu.sa
265 | www.kia-villejuif.fr
266 | www.kiids.de
267 | www.kodap.ru
268 | www.kraemer.de
269 | www.ks.js.cn
270 | www.kshrss.gov.cn
271 | www.kuxun.cn
272 | www.laeuropea.com.mx
273 | www.lapresse.ca
274 | www.lazada.vn
275 | www.legifiscal.fr
276 | www.lemuh.ch
277 | www.lhotellerie-restauration.fr
278 | www.lighting.philips.ca
279 | www.lingvo-online.ru
280 | www.littlefin.ca
281 | www.llamadorevisiongm.mx
282 | www.loudtronix.co
283 | www.lula.ca
284 | www.macworld.co.uk
285 | www.mailadvertising.co.uk
286 | www.malgre-nous.eu
287 | www.manitowocfs.es
288 | www.marcoriccardi.it
289 | www.marriott.com.cn
290 | www.mayaworld.cc
291 | www.mcmaster.ca
292 | www.media.highlight-led.de
293 | www.mendocino.ca
294 | www.meydangazetesi.com.tr
295 | www.michaelhill.ca
296 | www.miitbeian.gov.cn
297 | www.milton.ca
298 | www.mirror.co.uk
299 | www.mixer.cz
300 | www.mobilizejobs.ca
301 | www.mofa.gov.ae
302 | www.moneyhouse.de
303 | www.motherhoodcanada.ca
304 | www.mpoisk.ru
305 | www.mummyliciousbeauty.co.uk
306 | www.my.mail.ru
307 | www.mymail.co.uk
308 | www.myweddingplanning.in
309 | www.nascarmexico.com.mx
310 | www.ncwcd.gov.sa
311 | www.net831.caisse-epargne.fr
312 | www.newswire.ca
313 | www.njam.tv
314 | www.novenet.com.mx
315 | www.nrigujarati.co.in
316 | www.nus.edu.sg
317 | www.nzhomeloans.co.nz
318 | www.oberweis.lu
319 | www.oeuvresduprince.ca
320 | www.ok.ru
321 | www.oneman.gr
322 | www.opel.fr
323 | www.orchardandthesea.ca
324 | www.osym.gov.tr
325 | www.owascovw.ca
326 | www.pagesjaunes.ca
327 | www.park2go.ca
328 | www.partsengine.ca
329 | www.payu.ru
330 | www.pdfmagaz.in
331 | www.pentalocal.ca
332 | www.perthnow.com.au
333 | www.philips.co.th
334 | www.picnix.ca
335 | www.plala.or.jp
336 | www.pne.ca
337 | www.polaris.fi
338 | www.politico.eu
339 | www.postbank.de
340 | www.premex.com.mx
341 | www.prevision-meteo.ch
342 | www.privateproperty.co.za
343 | www.propertyguru.com.sg
344 | www.pueblaonline.com.mx
345 | www.pvcar.pt
346 | www.qld.gov.au
347 | www.quicklane.ca
348 | www.radio1.ch
349 | www.rainbowzebra.co.uk
350 | www.rav4.mx
351 | www.rds.ca
352 | www.recyclethis.co.uk
353 | www.redpolitica.mx
354 | www.remax.ca
355 | www.reseaukia.fr
356 | www.retrosupply.co
357 | www.rian.ru
358 | www.rock-the-kitchen.de
359 | www.royalcollege.ca
360 | www.rubena.cz
361 | www.saaravita.lk
362 | www.saldaposuda.ru
363 | www.saosa.com.mx
364 | www.sat.gob.mx
365 | www.savigny.ch
366 | www.scenic.ca
367 | www.sd34.bc.ca
368 | www.seeds.ca
369 | www.sellact.de
370 | www.service-public.fr
371 | www.sevenoaksart.co.uk
372 | www.sharebutton.co
373 | www.shoeme.ca
374 | www.silverspot.ch
375 | www.sirlocal.pl
376 | www.slimfigures.co.uk
377 | www.smh.com.au
378 | www.som.cranfield.ac.uk
379 | www.soundandlightshow.ca
380 | www.space.ca
381 | www.spienn.comgel.de
382 | www.sprint42.ru
383 | www.standard.co.uk
384 | www.starhit.ru
385 | www.stern.de
386 | www.strawpoll.me
387 | www.stylepark.ru
388 | www.sunlife.ca
389 | www.swatch.ca
390 | www.szgjj.gov.cn
391 | www.taiwan.cn
392 | www.tauck.ca
393 | www.tcmb.gov.tr
394 | www.techandecommerceawards.co.za
395 | www.telegraph.co.uk
396 | www.thaipbs.or.th
397 | www.thecourier.co.uk
398 | www.thekeen.co
399 | www.therentalguide.ca
400 | www.theweathernetwork.ca
401 | www.thomascook.fr
402 | www.ticketstonight.ca
403 | www.timeslive.co.za
404 | www.tootoo.cn
405 | www.toppblogg.se
406 | www.tourdafrique.co.za
407 | www.toytraders.ca
408 | www.trainpackages.ca
409 | www.travelline.ru
410 | www.tribute.ca
411 | www.triplinx.ca
412 | www.trustcenter.de
413 | www.tunasgroup.co.id
414 | www.tuusik.ee
415 | www.tvtc.gov.sa
416 | www.ufredbookstore.ca
417 | www.unilad.co.uk
418 | www.universodeportivo.mx
419 | www.utc.fr
420 | www.vdnh.ru
421 | www.vice.cn
422 | www.viralbladet.dk
423 | www.vivanuncios.com.mx
424 | www.volaris.mx
425 | www.vsi-schmierstoffe.de
426 | www.vwemissionsinfo.ca
427 | www.w3school.com.cn
428 | www.watson.ae
429 | www.webienglish.cn
430 | www.weightwatchers.ca
431 | www.westin-osaka.co.jp
432 | www.whisky.com.uy
433 | www.wildberries.ru
434 | www.winsport.ca
435 | www.workabroad.ph
436 | www.wp7.nl
437 | www.xcaret.com.mx
438 | www.xoximilco.com.mx
439 | www.yallayalla.it
440 | www.yellostrom.de
441 | www.yomiuri.co.jp
442 | www.yqhhy.cc
443 | www.zattini.com.br
444 | www.zielonagora.sport.pl
445 | www.zonajobs.com.ar
446 | www.zumvo.me
447 | aal-shehata.com
448 | aartsennsomers.net
449 | ababaloka.com
450 | abogadospericia.com
451 | abou-digital.com
452 | abudin.pswebstore.com
453 | acosas.com
454 | acountsercureservice.com
455 | adheb.com
456 | adm.ilmugendam.com
457 | adminuseridservercra.from-id.com
458 | admisoft.com
459 | adrisport.com
460 | afrisance.com
461 | agosducatosweb.com
462 | agreement4.gdmachinery.net
463 | aguadolaw.com
464 | alemeitu.com
465 | aljeyad.net
466 | all-about-you-sxm.com
467 | allindiadesigners.com
468 | aloneround.net
469 | altosdecordoba.com
470 | amazinggracefashion.com
471 | ambassadorep.com
472 | ambientmediaassociation.org
473 | americahotgirls.com
474 | amsfr.org
475 | amslv.crabdance.com
476 | anhui-rili.com
477 | anwar-tiba.com
478 | anzemah.com
479 | aoneatm.com
480 | aonikesi.com
481 | apiparbion.com
482 | apotekroxy.com
483 | appie-restore.com
484 | apple-cgy.com
485 | apple-icilouds.com
486 | apple-icloudn.com
487 | apple-oxs-imessage.com
488 | apple.com.reliableservice-co.com
489 | appleid-verify.net
490 | appleid.apple.idesecuronlines.com
491 | appleid.apple.rieuremn.com
492 | applepayment.brianfeed.com
493 | ardillantas.com
494 | aricimpastanesi.com
495 | arrivabestsecurity.com
496 | arthurwinley.com
497 | aru1004.org
498 | assurafric.com
499 | astrosanjog.com
500 | atousauniversal.com
501 | atxinspection.com
502 | aumu.com
503 | austinbannerprint.com
504 | austinoptionsrealestate.com
505 | auth.forfait.forfait-orange-fr.com
506 | averyandgreig.com
507 | avokka.com
508 | babycotsonline.com
509 | bachecubano.com
510 | backderecouvr-deswaie.com
511 | badebilgisayar.com
512 | bag86.com
513 | bahisodam.com
514 | bajucrony.com
515 | balanaeguia.com
516 | bancomers-enlinea-mx-net.net
517 | banlk2.com
518 | barelyhuman.net
519 | barerootsgenealogy.com
520 | batikconcept.com
521 | bbspeaks249.com
522 | bc.kuaiche.com
523 | bcs-subjects.com
524 | becjiewedding.com
525 | bestfilesdownload.com
526 | bestplasticsurgeontoronto.com
527 | bestpoker4u.com
528 | bestqualitytreatments.com
529 | bhajankutir.vedicseasons.com
530 | bhoocare.com
531 | bienestarbien.org
532 | bjharyles.com
533 | bjpkaushikmachinery.com
534 | bleilesupply.com
535 | blockchaln.co.com
536 | blrkelandbruk.com
537 | bodiesbybridget.com
538 | bonballoon.com
539 | bookmark-ref-bookmarks-count.atwebpages.com
540 | boulosfeghali.org
541 | brokenheartart.net
542 | c242k.com
543 | cakpmm.org
544 | camerashopny.com
545 | caramecakes.com
546 | caresupport-intl.com
547 | casarurallacabezuela.com
548 | casasdelight.com
549 | cataldoproductions.com
550 | cbtechrepairs.com
551 | ccalpha.net
552 | ccrum.net
553 | cctvec.com
554 | cdmswj.com
555 | celesdigital.com
556 | celexy.com
557 | cgi7ebay.com
558 | challengerent.com
559 | chanen1.com
560 | cherokeeclassof96.com
561 | chlawhome.org
562 | christhousechurch.org
563 | christian-view.com
564 | chunxiady.com
565 | cienxcientoseguros.com
566 | cimaproject.com
567 | circuitair.com
568 | civiljobsindia.com
569 | clarejohnsontherapy.com
570 | cleaning-position.com
571 | cliente1.gugliandolo.com
572 | cluster.wh.vtr.net
573 | cndownmb.com
574 | coatingaluminum.com
575 | collectionkr.com
576 | collegenation.net
577 | collegeprepathletics.com
578 | colorstreamdigital.net
579 | comercializadoramarlo.com
580 | complet-facture.pswebshop.com
581 | conventofmercyros.com
582 | coopsicreuniao.com
583 | creationprintersbd.com
584 | creditmutuel.fr-87.draytongossip.com
585 | cuencarestaurants.com
586 | curtiravida.com
587 | customheavytimber.com
588 | daltontvrepair.com
589 | darkknightaurora.com
590 | darshanautomotive.com
591 | datatrinity.com
592 | davidmc.com
593 | ddirectdownload-about.com
594 | ddkoo.com
595 | dealsuzuki.com
596 | deboedovengo.com
597 | defygravity.com
598 | degreesuccess.net
599 | dekorasyontadilatiatasehir.com
600 | denmarkflorist.com
601 | dentalcamposoto.com
602 | derenhukuk.com
603 | desayunasano.com
604 | designqaqc.com
605 | designzer.com
606 | desjardinslongueuil.com
607 | dharold.com
608 | dhdholding.com
609 | diamariscreatejoy.com
610 | diamondbladedealer.com
611 | dicolourist.com
612 | didi-apple.com
613 | diegocerezo.com
614 | dimpapanikolaoufurs.com
615 | dimplexx.net
616 | divyachemical.com
617 | dog.halfbirthdayproducts.com
618 | download.cdn.0023.78302.com
619 | downloadri.com
620 | downtownturkeytravel.com
621 | dreamzteakforestry.com
622 | dsdglobalresources.com
623 | duhoey.com
624 | eb5thomassenlawgroup.com
625 | ebayreportitem272003404580.uhostfull.com
626 | ecowaterprojects.com
627 | edmartindentist.com
628 | edsimportaciones.com
629 | efdilokulu.com
630 | efenditesisi.com
631 | eggfred.com
632 | electroimages.com
633 | elfatehals.com
634 | emailaccountverificatiemp.com
635 | engineeringenterprise.net
636 | erikacostruzioni.com
637 | essentialoilkits.net
638 | eternalfriendstv.com
639 | etxlzx.net
640 | euromerltd.com
641 | evengritithan.com
642 | eventsmagicph.com
643 | eviestar.com
644 | eyang-agung.com
645 | fabianomotta.com
646 | facehear.net
647 | faithbasewealthgenerators.com
648 | fastbreaklacrosse.net
649 | fazeebook.com
650 | featuressaloonspa.com
651 | fecasing.com
652 | federadosconeldeporte.com
653 | feeds.nsdnsupdate.org
654 | fideln.com
655 | fightdemand.net
656 | filetpgoog.com
657 | fitnessnutritionreview.com
658 | flextintas.com
659 | flndmiphone.com
660 | fondopatrimonial.com
661 | footballbrasil.net
662 | foreigntradebankplc.com
663 | forkuniondriving.net
664 | fox.websitewelcome.com
665 | fsrelbd.com
666 | gainover.net
667 | gamanteles.com
668 | ganarsininversion.com
669 | gao1122.com
670 | gavih.org
671 | ge365.net
672 | geekograffi.com
673 | geoross.com
674 | giantoutput.com
675 | giltydream.com
676 | giordanopk.com
677 | giorgostsaousis.com
678 | gitloinvestbud.com
679 | giuko.com
680 | global.glamourvila.com
681 | globalcredithub.com
682 | goblinada.net
683 | goldenroadenterprises.com
684 | gooddaywestchester.com
685 | gootle.com
686 | gov.ukgovernment.zecowen.com
687 | gradiskapdp.org
688 | graficasseryal.com
689 | guelphrealestateagent.com
690 | h3ds4.maconslab.com
691 | haihuang-audio.com
692 | hairguide.net
693 | hairplace.net
694 | hammervpn.net
695 | hasurvey2015.com
696 | hayagrivajyotisham.com
697 | headwear.net
698 | healththoroughfare.com
699 | hellooyun.com
700 | hescolor.com
701 | hideocustom.com
702 | himalayanherbsgarden.com
703 | himalayanyogakendra.com
704 | hjgk.net
705 | honky.net
706 | horyong.net
707 | hoshiomi.yu-nagi.com
708 | hotelcoromandel.com
709 | hotelseapalacebd.com
710 | howtoearnmoneyfromwebsite.com
711 | hpwowbattle.net
712 | htxvcl.com
713 | hud.thesourcechagrin.net
714 | humansound.net
715 | hvmtindia.com
716 | iacwindow.com
717 | icctips.com
718 | icemed.net
719 | icitydavanagere.com
720 | icloud-fa.com
721 | icloud-find-itunes.com
722 | icloud-goin.com
723 | icloud-stoer.com
724 | icloudisr.com
725 | idcln.com
726 | ifiia.com
727 | ikontrend.com
728 | imageprohosting.com
729 | incapple.managesslservice.com
730 | increasebattle.net
731 | indiahostingsolutions.com
732 | industrialdataanalytics.com
733 | infoupdatecentertaxuser.servesarcasm.com
734 | inkrepublique.com
735 | inndl.com
736 | insurancecondition.com
737 | interiorwoods.com
738 | ipromedics.com
739 | irbistech.com
740 | irevservice.com
741 | islandhues.net
742 | isolplus-tunisie.com
743 | itechworldbd.com
744 | itfindia.org
745 | itunes-remind.com
746 | itworms.com
747 | iuiqjzqrlwx.yi.org
748 | jairoregalado.com
749 | jameser.com
750 | jamilahui.com
751 | jdcarr.com
752 | jezzjackson.com
753 | jherem.com
754 | jipin180.com
755 | jiridinsayphotography.com
756 | jjc55.com
757 | jmikespeck.com
758 | jobventure.net
759 | jocelyndonegan.com
760 | johnsons-excavating.com
761 | jokemrt.com
762 | jordangood.com
763 | joslinsalesltd.com
764 | jovenescoparmexstam.com
765 | jq9998.com
766 | jscimport.com
767 | jualsabunberas.com
768 | jyotided.org
769 | kat-gifts.com
770 | kenyonblunt.com
771 | kevingerman.com
772 | kgpowersports.com
773 | khoangiengthutiep.com
774 | khonkaenstudio.com
775 | kirkjellum.com
776 | kitchenerflorist.com
777 | klasste.tripod.com
778 | kuebandung.com
779 | lagovistatexoma.com
780 | laiqukeji.com
781 | laleven.com
782 | largenumber.net
783 | lashcollection.com
784 | lavazone.org
785 | learnworld.net
786 | lecafecafe.com
787 | letstile.com
788 | lewinhosting.net
789 | libertywise-profit.com
790 | lifestylezones.com
791 | lincos.net
792 | linfenit.com
793 | linnarbioenergy.com
794 | liontarigroup.com
795 | liqueur.juragan-followers.com
796 | ljfreecredits.com
797 | llo123.com
798 | logint.santandermodulonet.com
799 | lojasrana.com
800 | lordhave.net
801 | losmercantes.com
802 | lospequenines.com
803 | lost-aleart-findmyiphone.com
804 | lpmxp2022.com
805 | luksuzni-stanovi.com
806 | macumberoloretano.com
807 | magazinsumok.com
808 | magiclifeent.com
809 | magnumtubes.com
810 | mahersportstherapy.com
811 | maihama.2jikai-p.net
812 | manadsapp.com
813 | managangavaram.org
814 | marashthermal.com
815 | markstrailerparts.com
816 | matakanaestatewine.com
817 | matrixengtech.com
818 | mckinleyhigh.org
819 | mdsignsbog.com
820 | medicalexportservice.com
821 | medisonsteeltech.com
822 | megafonealert.net
823 | melsanazaria.com
824 | member900115ym.com
825 | membersconnects.com
826 | membership-rewards.apex-automation.com
827 | mesaia.ina-ka.com
828 | michiganincome.com
829 | microsearchstat.com
830 | midvalleyrehab.com
831 | milestoneabroad.com
832 | militiaman.sewapompabeton.com
833 | mirrorofstart.com
834 | mismerizer.com
835 | mizahturk.com
836 | mobile.free-h.net
837 | mobisoftbd.com
838 | moblao.com
839 | modplc.com
840 | mogyang.net
841 | moirapoh.com
842 | monequipemobfree.com
843 | mrktedge.com
844 | mrusby.com
845 | mtmoriahcogic.org
846 | multiplusnet.com
847 | musacelik.net
848 | muscleinjuries.com
849 | mvmart.com
850 | mvsbuilders.com
851 | myapologies.net
852 | mymorningstore.com
853 | mypcneedhelp.com
854 | n3fumigaciones.net
855 | nationalsecuritydirect.com
856 | naturalbeautybathandbody.com
857 | navyfederal.lyfapp.com
858 | neglite.com
859 | net4um.com
860 | netempresa.starparksfr.com
861 | netmarketinghq.com
862 | neuroinvent.com
863 | niagararealestateagent.com
864 | nightcontrol.net
865 | nikscomputers.com
866 | nlazovic.mybesthost.com
867 | nqpsra.yi.org
868 | ns8087.websitewelcome.com
869 | nskam.com
870 | oezelotel.com
871 | oficinavirtualccct.com
872 | ogbonidesk.com
873 | oismeark.com
874 | ojaofs.com
875 | okblack.com
876 | olivetoursntravels.com
877 | omglolrofl.com
878 | oneniceprint.com
879 | onfreesoftware.com
880 | onlinedaa.com
881 | onlineinfonabsecure.homeip.net
882 | onlinepsychictips.com
883 | organicasales.com
884 | orientepro.com
885 | orlandofamilyholiday.com
886 | orunodoiprakashan.com
887 | os9-apple-support.com
888 | os9-verify-apple.com
889 | oufala.com
890 | ozaydesign.com
891 | paceinfocomm.com
892 | paddingtonpublicschool.com
893 | paksoft.org
894 | pamphlet.qw361.com
895 | particuliers-impositions.com
896 | patioumbrellas-utc.com
897 | payseecure.com
898 | pbnetassociate.com
899 | pcupgrade.check4newupdates.net
900 | pecantree.net
901 | peterboroughmover.com
902 | petiquettesouthboston.com
903 | photofundays.com
904 | pianolessonstampa.com
905 | pimpwebpage.com
906 | pizzachezmichel.com
907 | platinumfitnessusvi.com
908 | podarki-vkont.besaba.com
909 | polskieprawo.net
910 | ponchatoulakiss.com
911 | poojaent.com
912 | potbnb.com
913 | poyday.com
914 | pratikverma.com
915 | premiumoutletshop.com
916 | property1.gdmachinery.net
917 | propertylaunchsales.com
918 | prosperity.charifree.org
919 | pypl-service.com
920 | qualitychannel.com
921 | queensrootcanal.com
922 | questoequello.net
923 | quinnpharma.com
924 | qwepa.com
925 | railrocket-italy.com
926 | rapmusicplace.com
927 | rb0577.com
928 | realgreatfire.com
929 | realtyproshop.com
930 | regie-scene.com
931 | returnfound.net
932 | rexboothtradingroup.com
933 | ribermad.com
934 | riccardolocco.com
935 | rocktree.net
936 | roknasala.com
937 | rt7890.com
938 | rubinbashir.net
939 | rvassistedliving.com
940 | ryanrange.com
941 | safariheroes.com
942 | saishrushti.com
943 | sales3.gdmachinery.net
944 | sanderawel.com
945 | sanfordcny.com
946 | santander-registros.com
947 | sararoceng81phpex.dotcloudapp.com
948 | saraspastriesanddeli.com
949 | saydadapps.com
950 | scleramania.com
951 | secondlifestore23.net16.net
952 | secretskenya.com
953 | secure-systemlogin.com
954 | secure.lemondekor.com
955 | security.center-activate.your.account.kimbre.com
956 | self-defining.com
957 | sentimentindia.com
958 | serienplaner.com
959 | server2.imaginamos.com
960 | serviceadmin122.com
961 | servicesuser-apps-ios.from-mo.com
962 | shaheendevelopment.com
963 | shammah.openbrazil.org
964 | sherehindtipu.com
965 | shhbndr.com
966 | shophalloweenboutique.com
967 | sidegra.net
968 | sightshare.com
969 | simpaticodentalstudio.com
970 | singsweebeegroup.com
971 | sisiwasiperu.com
972 | skylineimportsales.com
973 | snickersapp.com
974 | soctracao.com
975 | softlased.1536cashmere.com
976 | softwarekioscos.com
977 | sosflight.com
978 | southernvermontstorm.com
979 | spacechemgroup.com
980 | spencersmill.com
981 | ssl.login.skype.com.gohiding.com
982 | sterlingandstonesjewelry.com
983 | stylusyou.com
984 | subhajitbanerjee.com
985 | subjectsister.net
986 | sunmel.com
987 | suntbnk.meritnbweb.com
988 | superbhotdeals.com
989 | superelectronicsindia.com
990 | supporthdit.16mb.com
991 | supreme9events.com
992 | supremefunds.com
993 | surprisenotice.com
994 | swacatha.com
995 | swastikpolyvinyls.com
996 | swatfservices.com
997 | syyrzs.com
998 | szzlzn.com
999 | taibra26.com
1000 | take5withgod.org
1001 | tampaiphonerepair.com
1002 | tartadequesophiladelphia.com
1003 | taylortea.com
1004 | tazshascreations.com
1005 | techieprojects.com
1006 | tgrankin.com
1007 | theblocktvshow.com
1008 | theconroysflorist.com
1009 | thecourtyardcolfaxcom.sites.qwestoffice.net
1010 | thegoodnewsband.org
1011 | thegrilledburger.com
1012 | theposhteam.com
1013 | thequestforcrap.com
1014 | thesinglegirlinthecity.com
1015 | thespecialsearch.com
1016 | thomessag22-autotrade.com
1017 | tiantmall.com
1018 | toczymy.com
1019 | todopilas.com
1020 | travelandbookings.com
1021 | tripvidus.com
1022 | trpaulsen.com
1023 | trumbullcountycvb.org
1024 | tsws.org
1025 | tszedu.com
1026 | tumalodropshipping.com
1027 | tunesappsupport.com
1028 | u-products.com
1029 | udayinchetelangana.com
1030 | unsalvinc.com
1031 | urban-garden.net
1032 | usaaupdate-us.com
1033 | usinadaweb.com
1034 | vacationhomes365.com
1035 | vancouverrealestatebroker.com
1036 | verfi-id-appel.com
1037 | verifieer.com
1038 | verifysupportppl.com
1039 | verifythevote.com
1040 | vibrantyou.com
1041 | virt2241.unelink.net
1042 | vloyolablog.com
1043 | vulcanusventure.com
1044 | waitheight.net
1045 | walk-in-baths.com
1046 | watchbeen.net
1047 | weasuaair.net
1048 | web.kiaanevents.com
1049 | webappsverified.com
1050 | webthemedesigner.com
1051 | wellwash.net
1052 | wfwf1011.warabuki.net
1053 | whippanygyms.com
1054 | wishfood.net
1055 | wm5u.com
1056 | womenbeautyconcepts.com
1057 | wp.zontown.com
1058 | wpodosail.com
1059 | www.awalkerjones.com
1060 | www.etiennodent.com
1061 | www.lydaoyou.com
1062 | www.qhdast.com
1063 | www.us.kctctour.com
1064 | www.usaphotocopyservice.com
1065 | www.xntk.net
1066 | www.yntscp.com
1067 | xiaoyaojsq.net
1068 | xigushan.com
1069 | xioooo.com
1070 | xiugaiba.com
1071 | xr.flyboytees.com
1072 | xxxiooo.com
1073 | xyxsol.com
1074 | yamintl.com
1075 | yclydq.com
1076 | yeniyuzyillions.org
1077 | yeshigongzhu.com
1078 | yttestsite.com
1079 | zalevichfilms.com
1080 | zambianscorpion.com
1081 | zarayaadkar.com
1082 | zgfhl.com
1083 | zhongguociwang.com
1084 | zumutor.com
1085 | zzha.net
1086 | zzmyw.com
1087 | /END/
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 | {one line to give the program's name and a brief idea of what it does.}
635 | Copyright (C) {year} {name of author}
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | {project} Copyright (C) {year} {fullname}
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/COPYING.txt:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
--------------------------------------------------------------------------------
/makednslog.c:
--------------------------------------------------------------------------------
1 | //Copyright (c) 2017 James L. Antonakos
2 |
3 | //This program is free software: you can redistribute it and/or modify
4 | // it under the terms of the GNU General Public License as published by
5 | // the Free Software Foundation, either version 3 of the License, or
6 | // (at your option) any later version.
7 |
8 | // This program is distributed in the hope that it will be useful,
9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | // GNU General Public License for more details.
12 |
13 | // You should have received a copy of the GNU General Public License
14 | // along with this program. If not, see .
15 |
16 | #include
17 | #include
18 | #include
19 | #include
20 |
21 | #define FALSE 0
22 | #define TRUE 1
23 | #define SIMPLE 0
24 |
25 | // Search for a specific command line parameter
26 | int checkparm(int narg, char **args, char parm[])
27 | {
28 | int p,found;
29 |
30 | found = FALSE;
31 | p = 0;
32 | do
33 | {
34 | if(0 == strcmp(args[p],parm))
35 | found = TRUE;
36 | else
37 | p++;
38 | } while ((p < narg) && !found);
39 | if(found)
40 | return(p);
41 | else
42 | return(0);
43 | }
44 |
45 | // Convert into Microsoft-format domain
46 | // www.yahoo.com --> (3)www(5)yahoo(3)com(0)
47 | void makemsd(char instr[], char *outstr)
48 | {
49 | int j,jstart,k,p,n;
50 | char tempstr[6];
51 |
52 | k = 0;
53 | p = 0;
54 | jstart = 0;
55 | do
56 | {
57 | j = 0;
58 | do
59 | {
60 | j++;
61 | p++;
62 | } while(('.' != instr[p]) && ('\0' != instr[p]));
63 | sprintf(tempstr,"(%d)",j);
64 | for(n = 0; n < strlen(tempstr); n++)
65 | {
66 | outstr[k] = tempstr[n];
67 | k++;
68 | }
69 | for(n = jstart; n < p; n++)
70 | {
71 | outstr[k] = instr[n];
72 | k++;
73 | }
74 | p++;
75 | jstart = p;
76 | } while (p < strlen(instr));
77 | outstr[k] = '(';
78 | outstr[k+1] = '0';
79 | outstr[k+2] = ')';
80 | outstr[k+3] = '\0';
81 | }
82 |
83 | // Return a country code
84 | char *ccode(void)
85 | {
86 | int cca[] = {0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,0,1,2,3,4,5,0,1,2,3,4,0,1,2,3,0,1,2,0,1,0};
87 |
88 | switch(cca[rand() % 45])
89 | {
90 | case 0: return ".ru"; break; // most frequent
91 | case 1: return ".cn"; break;
92 | case 2: return ".ca"; break;
93 | case 3: return ".tw"; break;
94 | case 4: return ".bg"; break;
95 | case 5: return ".uk"; break;
96 | case 6: return ".in"; break;
97 | case 7: return ".mx"; break;
98 | case 8: return ".de"; break; // least frequent
99 | }
100 | }
101 |
102 | // Return a country code in Microsoft format
103 | char *ccode2(void)
104 | {
105 | int cca[] = {0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,0,1,2,3,4,5,0,1,2,3,4,0,1,2,3,0,1,2,0,1,0};
106 |
107 | switch(cca[rand() % 45])
108 | {
109 | case 0: return "(2)ru(0)"; break;
110 | case 1: return "(2)cn(0)"; break;
111 | case 2: return "(2)ca(0)"; break;
112 | case 3: return "(2)tw(0)"; break;
113 | case 4: return "(2)bg(0)"; break;
114 | case 5: return "(2)uk(0)"; break;
115 | case 6: return "(2)in(0)"; break;
116 | case 7: return "(2)mx(0)"; break;
117 | case 8: return "(2)de(0)"; break;
118 | }
119 | }
120 |
121 | int main(int argc, char *argv[])
122 | {
123 | // Ya know what? I like using lots of variables. I try to give them descriptive names
124 | // but that whole lpiCount is too much. So, you'll see k, and n1, and dk among others.
125 | int p,k,dr;
126 | int hr,min,sec,subsec;
127 | int hrlist[] = {12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11};
128 | int mon,day,yr;
129 | int monlist[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
130 | char months[][4] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
131 | int nopci[] = {12,1,2,3,4,5,6,7,8,9,10,11};
132 | int datemode;
133 | char tmpstr[4];
134 | int pcimon;
135 | int pcimode;
136 | int today_day;
137 | int today_mon;
138 | int today_yr;
139 |
140 | time_t t;
141 | char timedate[32];
142 |
143 | int sr;
144 | int ipr;
145 | int special;
146 | int n1,n2;
147 | char exfil[41],exalpha[] = "0123456789abcdef";
148 | char exalpha2[] = "abcdefghijklmnopqrstuvwxyz0123456789";
149 | char dga[] = "abcdefghijklmnopqrstuvwxyz";
150 | char wlist[60][20] = {"welcome","fixture","change","monitor","sleeper","trust","upwards","against","promote","dignity",
151 | "immediate","after","delay","allow","combine","filter","mixture","transfer","mobile","currency",
152 | "extra","another","people","help","working","given","schedule","project","next","optional",
153 | "tool","network","server","network","assist","simple","easy","manual","install","client",
154 | "question","answer","best","background","sideways","wonder","machine","quick","survey","monkey",
155 | "sky","green","software","power","planet","universe","download","matrix","shopper","portal"};
156 | int new1min;
157 | int new10min;
158 | int new1hour;
159 | int bursty;
160 | int burstknt;
161 |
162 | // This message is base64 encoded and saved in b64str:
163 | // If you are reading this I assume you have been correctly identifying and decoding the different types of IoCs
164 | // I have placed into the fake DNS log. My congratulations for a job well done. Of course I could be wrong, and
165 | // you may never read any of this, but I choose to remain positive that you will solve my little mystery. Good
166 | // luck and happy threat hunting!
167 | char b64str[] = "SWYgeW91IGFyZSByZWFkaW5nIHRoaXMgSSBhc3N1bWUgeW91IGhhdmUgYmVlbiBjb3JyZWN0bHkgaWRlbnRpZnlpbmcgYW"
168 | "5kIGRlY29kaW5nIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgSW9DcyBJIGhhdmUgcGxhY2VkIGludG8gdGhlIGZha2UgRE5TIGxvZy4gTXkg"
169 | "Y29uZ3JhdHVsYXRpb25zIGZvciBhIGpvYiB3ZWxsIGRvbmUuIE9mIGNvdXJzZSBJIGNvdWxkIGJlIHdyb25nLCBhbmQgeW91IG1heSBuZX"
170 | "ZlciByZWFkIGFueSBvZiB0aGlzLCBidXQgSSBjaG9vc2UgdG8gcmVtYWluIHBvc2l0aXZlIHRoYXQgeW91IHdpbGwgc29sdmUgbXkgbGl0"
171 | "dGxlIG15c3RlcnkuIEdvb2QgbHVjayBhbmQgaGFwcHkgdGhyZWF0IGh1bnRpbmch";
172 |
173 | char b64[16][40] = {"V2luZG93cyA3LDMyLWJpdCw4IEdC", // Windows 7,32-bit,8 GB
174 | "V2luZG93cyBYUC1TUC0xLDMyLWJpdCw0IEdC", // Windows XP-SP-1,32-bit,4 GB
175 | "V2luZG93cyAyMDA4UjIsNjQgR0IsSUlT", // Windows 2008R2,64 GB,IIS
176 | "V2luZG93cyAyMDEyLDMyIEdC", // Windows 2012,32 GB
177 | "QWNjdDoganNtaXRo", // Acct: jsmith
178 | "QWNjdDogc3lzYWRtaW43", // Acct: sysadmin7
179 | "QWNjdDogbW1vdXNl", // Acct: mmouse
180 | "QWNjdDogc3FsZGJtZ250", // Acct: sqldbmgnt
181 | "VklTQTEyMzQ1Njc4OTAxMjM0NTYxMDE5", // VISA12345678901234561019
182 | "VklTQTc3Nzc2NjY2NTU1NTQ0NDQwMTE4", // VISA77776666555544440118
183 | "TUMtOTg3NjU0MzIxMDk4NzY1NC0wNzIw", // MC-9876543210987654-0720
184 | "TUMtMTEyMjMzNDQ1NTY2Nzc4OC0xMTIx", // MC-1122334455667788-1121
185 | "Tm8gQVYgZXhpc3Rz", // No AV exists
186 | "U29waG9zIEFWIHJ1bm5pbmcu", // Sophos AV running.
187 | "QVZHZnJlZSBBViBydW5uaW5n", // AVGfree AV running
188 | "RVNFVCBBViBydW5uaW5n"}; // ESET AV running
189 | int b64pos;
190 | char bmsg[49];
191 | int lastburst;
192 | int noms,ampm;
193 | int found;
194 | int verb;
195 | int goback,back;
196 |
197 | char doms[2000][80]; // This string array is filled with domains read from domains.txt
198 | int NDOMS; // This is the number of domains read
199 | char msdoms[2000][80]; // This string array is populated by converting doms[] into Microsoft domain name format
200 |
201 | long int passes,lineslogged;
202 | int dots,megs;
203 | int dlen;
204 | char ld[12],lt[12],lh1[4],lh2[9],lsr[4],lip[16],lh3[5],lqr[4],lstat[18],ldom[81];
205 | char startime[32];
206 | char logline[180];
207 | FILE *ifile,*ofile;
208 | char fstr[80],fstr2[80];
209 | int pv,rv;
210 | char fname[128];
211 | char fname1[120];
212 | char fname2[8];
213 | int fknt;
214 | int filesplit;
215 | int filelimit;
216 | long int filesize,filemaxsize;
217 | long int maxlines;
218 | int linestop;
219 | int dk;
220 | int net10,net172,net192;
221 | int state;
222 | char malwareip10[8][16],malwareip172[8][16],malwareip192[8][16];
223 | int s10,s172,s192;
224 | int plist[6][3] = {{0,1,2},{0,2,1},{1,0,2},{1,2,0},{2,0,1},{2,1,0}};
225 | int ppick;
226 | char spoofip[8][16];
227 |
228 | if(argc == 1)
229 | {
230 | printf("Usage: makednslog [-v] [-ofile OUTPUT-FILE] [-noms] [-ampm] [-datemode 1|2] [-goback N] [-pci] "
231 | "[-split N] [-lines N] [-net 172[,192][,10]]\n");
232 | }
233 | fname[0] = '\0';
234 | strcpy(fname,"dns.log");
235 | fname1[0] = '\0';
236 | strcpy(fname1,"dns");
237 | fname2[0] = '\0';
238 | strcpy(fname2,"log");
239 |
240 | srand( (unsigned)time( NULL ) ); // Make sure the logs are different every time
241 |
242 | printf("This program creates fake DNS logs.\n\n");
243 |
244 | // Process all command line parameters
245 | for(pv = 1; pv < argc; pv++)
246 | printf("p%d: %s\n",pv,argv[pv]);
247 | printf("Checking parameters...\n");
248 |
249 | noms = FALSE;
250 | if(0 != checkparm(argc,argv,"-noms"))
251 | {
252 | noms = TRUE;
253 | printf(" No Microsoft format.\n");
254 | }
255 |
256 | ampm = FALSE;
257 | if(0 != checkparm(argc,argv,"-ampm"))
258 | {
259 | ampm = TRUE;
260 | printf(" 12-hour clock.\n");
261 | }
262 |
263 | datemode = 0;
264 | pv = checkparm(argc,argv,"-datemode");
265 | if(0 != pv)
266 | {
267 | datemode = atoi(argv[pv+1]);
268 | if((datemode >= 0) && (datemode <= 2))
269 | printf(" Date mode = %d\n",datemode);
270 | else
271 | {
272 | printf("Invalid datemode value.\n");
273 | exit(0);
274 | }
275 | }
276 |
277 | time(&t);
278 | sprintf(timedate,ctime(&t));
279 | yr = atoi(&timedate[strlen(timedate)-5]);
280 | today_yr = yr;
281 | goback = FALSE;
282 | pv = checkparm(argc,argv,"-goback");
283 | if(0 != pv)
284 | {
285 | goback = TRUE;
286 | back = atoi(argv[pv+1]);
287 | if (back > 1)
288 | {
289 | printf(" Going back %d months.\n",back);
290 | back--;
291 | }
292 | else
293 | {
294 | printf(" Must go back at least 2 months.\n");
295 | exit(0);
296 | }
297 | }
298 |
299 | linestop = FALSE;
300 | maxlines = 500000;
301 | pv = checkparm(argc,argv,"-lines");
302 | if(0 != pv)
303 | {
304 | linestop = TRUE;
305 | maxlines = atoi(argv[pv+1]);
306 | printf(" Maxlines = %ld\n",maxlines);
307 | }
308 |
309 | verb = FALSE;
310 | pv = checkparm(argc,argv,"-v");
311 | if(0 != pv)
312 | {
313 | printf(" Verbose-mode enabled.\n");
314 | verb = TRUE;
315 | }
316 |
317 | // How many times do you get a chance to create a state machine?
318 | // This code parses the -net parameter, looking for 10, 172, and/or 192
319 | // "1" "0" "7" "9" "2" ","
320 | // State
321 | // 0 1 5 5 5 5 5
322 | // 1 5 2 3 4 5 5 "10"
323 | // 2 5 5 5 5 5 0
324 | // 3 5 5 5 5 2 5 "172"
325 | // 4 5 5 5 5 2 5 "192"
326 | net10 = FALSE;
327 | net172 = FALSE;
328 | net192 = FALSE;
329 | pv = checkparm(argc,argv,"-net");
330 | if(0 != pv)
331 | {
332 | state = 0;
333 | n1 = 0;
334 | do
335 | {
336 | if(verb)
337 | printf("state: %d, n1: %d, argv[pv+1][n]: %c\n",state,n1,argv[pv+1][n1]);
338 | switch(state)
339 | {
340 | case 0: if('1' == argv[pv+1][n1])
341 | {
342 | state = 1;
343 | n1++;
344 | }
345 | else
346 | state = 5;
347 | break;
348 | case 1: if('0' == argv[pv+1][n1])
349 | {
350 | net10 = TRUE;
351 | state = 2;
352 | n1++;
353 | }
354 | else
355 | if('7' == argv[pv+1][n1])
356 | {
357 | state = 3;
358 | n1++;
359 | }
360 | else
361 | if('9' == argv[pv+1][n1])
362 | {
363 | state = 4;
364 | n1++;
365 | }
366 | else
367 | state = 5;
368 | break;
369 | case 2: if(',' == argv[pv+1][n1])
370 | {
371 | state = 0;
372 | n1++;
373 | }
374 | else
375 | state = 5;
376 | break;
377 | case 3: if('2' == argv[pv+1][n1])
378 | {
379 | net172 = TRUE;
380 | state = 2;
381 | n1++;
382 | }
383 | else
384 | state = 5;
385 | break;
386 | case 4: if('2' == argv[pv+1][n1])
387 | {
388 | net192 = TRUE;
389 | state = 2;
390 | n1++;
391 | }
392 | else
393 | state = 5;
394 | break;
395 | }
396 | } while (state != 5);
397 | if(0 == (net10 || net172 || net192))
398 | {
399 | printf("Error extracting network.\n");
400 | exit(0);
401 | }
402 | if(net10)
403 | printf(" Network 10.x.x.x selected.\n");
404 | if(net172)
405 | printf(" Network 172.x.x.x selected.\n");
406 | if(net192)
407 | printf(" Network 192.x.x.x selected.\n");
408 | }
409 | else
410 | net10 = TRUE; // default
411 |
412 | // Pick network octets and populate arrays with "compromised" systems in each network
413 | // even if only one network is being used (because the code is easier this way).
414 | s10 = 1 + (rand() % 200);
415 | s172 = 1 + (rand() % 200);
416 | s192 = 1 + (rand() % 200);
417 | if(verb)
418 | {
419 | printf("\nAssign IP addresses to \"compromised\" systems.\n");
420 | printf("\tmalwareip10\tmalwareip172\tmalwareip192\n");
421 | }
422 | for(n1 = 0; n1 < 8; n1++)
423 | {
424 | sprintf(malwareip10[n1],"10.%d.%d.%d",s10,(1 + (rand() % 200)),(1 + (rand() % 250)));
425 | sprintf(malwareip172[n1],"172.%d.%d.%d",s172,(1 + (rand() % 200)),(1 + (rand() % 250)));
426 | sprintf(malwareip192[n1],"192.168.%d.%d",s192,(1 + (rand() % 250)));
427 | if(verb)
428 | printf("[%d]\t%s\t%s\t%s\n",n1,malwareip10[n1],malwareip172[n1],malwareip192[n1]);
429 | }
430 |
431 | // Make up some spoofed IPs
432 | if(verb)
433 | printf("\nCreate spoofed IPs.\n");
434 | for(n1 = 0; n1 < 8; n1++)
435 | {
436 | do
437 | {
438 | n2 = 4 + (rand() % 220);
439 | } while ((n2 == 10) && (n2 == 172) && (n2 == 192));
440 | sprintf(spoofip[n1],"%d.%d.%d.%d",n2,(1+(rand() % 250)),(1+(rand() % 250)),(1+(rand() % 250)));
441 | if(verb)
442 | printf("[%d] %s\n",n1,spoofip[n1]);
443 | }
444 |
445 | pcimode = FALSE;
446 | pv = checkparm(argc,argv,"-pci");
447 | if(0 != pv)
448 | {
449 | printf(" PCI 90-day log enabled.\n");
450 | pcimode = TRUE;
451 | }
452 | strncpy(tmpstr,&timedate[4],3);
453 | tmpstr[3] = '\0';
454 | pcimon = 0;
455 | found = FALSE;
456 | do
457 | {
458 | if(0 == strcmp(tmpstr,months[pcimon]))
459 | found = TRUE;
460 | else
461 | pcimon++;
462 | } while ((pcimon < 12) && !found);
463 | if(!found)
464 | {
465 | printf("Error extracting month from timedate.\n");
466 | exit(0);
467 | }
468 | today_mon = 1 + pcimon;
469 | mon = nopci[pcimon]; // Default is one month back
470 |
471 | // Sorry this is complicated, but going back even one month could
472 | // take us to previous year. Argh!
473 | if(goback || pcimode)
474 | {
475 | if(pcimode)
476 | back = 2;
477 | do
478 | {
479 | if(back > 12)
480 | {
481 | back =- 12;
482 | yr--;
483 | }
484 | }while (back > 11);
485 | do
486 | {
487 | if(back > 0)
488 | {
489 | if (mon == 1)
490 | {
491 | mon = 12;
492 | yr--;
493 | }
494 | else
495 | mon--;
496 | back--;
497 | }
498 | } while(back > 0);
499 | if(verb)
500 | printf("Going back to %s %d.\n",months[mon-1],yr);
501 | }
502 |
503 | tmpstr[0] = timedate[8];
504 | if((timedate[9] >= '0') && (timedate[9] <= '9'))
505 | {
506 | tmpstr[1] = timedate[9];
507 | tmpstr[2] = '\0';
508 | }
509 | else
510 | tmpstr[1] = '\0';
511 | day = atoi(tmpstr);
512 | today_day = day;
513 |
514 | // Read all domains from domains.txt and convert into Microsoft format as we go
515 | printf("Reading domains...\n");
516 | ifile = fopen("domains.txt","r");
517 | if(ifile == NULL)
518 | {
519 | printf("Error! Can not open domains.txt\n");
520 | perror(NULL);
521 | exit(0);
522 | }
523 | dk = 0;
524 | dlen = 0;
525 | do
526 | {
527 | fgets(fstr,80,ifile);
528 | p = strlen(fstr)-1;
529 | do
530 | {
531 | if(32 > fstr[p])
532 | {
533 | fstr[p] = '\0';
534 | p--;
535 | }
536 | } while(32 > fstr[p]);
537 |
538 | if(0 != strcmp(fstr,"/END/"))
539 | {
540 | if(verb)
541 | printf("%s\n",fstr);
542 | strcpy(doms[dk],fstr);
543 | makemsd(fstr,&fstr2);
544 | strcpy(msdoms[dk],fstr2);
545 | if(dlen < strlen(fstr2))
546 | dlen = strlen(fstr2);
547 | if(verb)
548 | printf("--> %s\n",fstr2);
549 | }
550 | dk++;
551 | } while((0 != strcmp(fstr,"/END/")) && (dk < 2001));
552 | fclose(ifile);
553 | dk--;
554 | NDOMS = dk;
555 | printf("%d domains read from file.\n",dk);
556 | if(verb)
557 | printf("Max MS domain length = %d\n",dlen);
558 |
559 | pv = checkparm(argc,argv,"-ofile");
560 | if(0 != pv)
561 | {
562 | fname[0] = '\0';
563 | strcpy(fname,argv[pv+1]);
564 | printf(" Output file: %s\n",fname);
565 | }
566 |
567 | ofile = fopen(fname,"w");
568 | if(ofile == NULL)
569 | {
570 | printf("Error! Can not open %s\n",fname);
571 | perror(NULL);
572 | exit(0);
573 | }
574 |
575 | // Go through all this nonsense to split filename into name and extension.
576 | // This makes it easier to add numbers to multiple log files.
577 | p = strlen(fname);
578 | found = FALSE;
579 | do
580 | {
581 | p--;
582 | if('.' == fname[p])
583 | found = TRUE;
584 | } while((p > 0) && !found);
585 | if(found)
586 | {
587 | p++;
588 | k = 0;
589 | do
590 | {
591 | fname2[k] = fname[p];
592 | k++;
593 | p++;
594 | } while('\0' != fname[p]);
595 | fname2[k] = '\0';
596 | p -= k;
597 | p -= 2;
598 | for(k = 0; k <= p; k++)
599 | fname1[k] = fname[k];
600 | fname1[p+1] = '\0';
601 | }
602 | else
603 | {
604 | strcpy(fname1,fname);
605 | fname2[0] = '\0';
606 | }
607 | printf("LogFile: [%s].[%s]\n",fname1,fname2);
608 |
609 | filesplit = FALSE;
610 | pv = checkparm(argc,argv,"-split");
611 | if(0 != pv)
612 | {
613 | filesplit = TRUE;
614 | filelimit = atoi(argv[pv+1]);
615 | printf(" File splitting at %d MB\n",filelimit);
616 | filemaxsize = 1024*1024*filelimit;
617 | fknt = 1;
618 | filesize = 0;
619 | }
620 |
621 | printf("Generating log, every . equals 100,000 lines.\n");
622 |
623 | switch(datemode)
624 | {
625 | case 0: sprintf(ld,"%d%02d%02d",yr,mon,day); break;
626 | case 1: sprintf(ld,"%d-%02d-%02d",yr,mon,day); break;
627 | case 2: sprintf(ld,"%s %d %d",months[mon-1],day,yr); break;
628 | }
629 |
630 | lt[0] = '\0';
631 | strcpy(lt,"20:40:00"); // I was born at 8:40 pm, ok?
632 | hr = 20;
633 | min = 40;
634 | sec = 0;
635 | if(ampm)
636 | {
637 | if(hr < 12)
638 | sprintf(lt,"%02d:%02d:%02d am",hrlist[hr],min,sec);
639 | else
640 | sprintf(lt,"%02d:%02d:%02d pm",hrlist[hr],min,sec);
641 | }
642 | else
643 | sprintf(lt,"%02d:%02d:%02d",hr,min,sec);
644 |
645 | sprintf(startime,"%s, %s",ld,lt);
646 | lh3[0] = '\0';
647 | strcpy(lh3,"80FD");
648 |
649 | passes = 0;
650 | dots = 0;
651 | megs = 0;
652 | dr = 0;
653 | new1min = FALSE;
654 | new10min = FALSE;
655 | new1hour = FALSE;
656 | bursty = FALSE;
657 | lastburst = 0;
658 | lineslogged = 0;
659 |
660 | // This begins the main log-entry generating loop.
661 | // Each pass through the loop generates one or more log entries.
662 | subsec = 2 + (rand() % 11);
663 | do
664 | {
665 | lstat[0] = '\0';
666 | strcpy(lstat,"[0001 D NOERROR]");
667 |
668 | lh1[0] = '\0';
669 | switch(rand() % 4)
670 | {
671 | case 0: strcpy(lh1,"710"); break;
672 | case 1: strcpy(lh1,"8A8"); break;
673 | case 2: strcpy(lh1,"588"); break;
674 | case 3: strcpy(lh1,"544"); break;
675 | }
676 |
677 | lh2[0] = '\0';
678 | sprintf(lh2,"%04X%04X", rand() % 4096, rand() % 65536);
679 |
680 | lsr[0] = '\0';
681 |
682 | // Not implementing Snd at this time
683 | // switch(rand() % 2)
684 | switch(0)
685 | {
686 | case 0: strcpy(lsr,"Rcv"); sr = 0; break;
687 | case 1: strcpy(lsr,"Snd"); sr = 1; break;
688 | }
689 |
690 | lqr[0] = '\0';
691 | if(sr == 0)
692 | strcpy(lqr,"Q");
693 | else
694 | strcpy(lqr,"R,Q");
695 |
696 | lip[0] = '\0';
697 |
698 | // Ok, ok. So I don't remember what "ipr" stood for when I named the variable.
699 | // But when ipr == 5, malware happens !!! Wheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.
700 | if(new1min || new10min || new1hour) // Beacons ! (not Bacon !)
701 | ipr = 5;
702 | else
703 | ipr = rand() % 100; // Well, if it wasn't 5 before, maybe it will be now.
704 | if(ipr == 5)
705 | {
706 | if(new1min || new10min || new1hour)
707 | {
708 | if(new1min)
709 | {
710 | special = 0;
711 | new1min = FALSE;
712 | }
713 | if(new10min)
714 | {
715 | special = 1;
716 | new10min = FALSE;
717 | }
718 | if(new1hour)
719 | {
720 | special = 2;
721 | new1hour = FALSE;
722 | }
723 | }
724 | else
725 | special = 3 + (rand() % 5);
726 |
727 | // At this point, malware rules and "special" is in the range 0..7.
728 | // That's eight different malware behaviors we can log.
729 |
730 | // See, when I first wrote this code, the only network was 10.x.x.x
731 | // So, I just assigned random IPs to the eight behaviors.
732 | // case 0: strcpy(lip,"10.161.1.5"); break; // Domain: [a-z]{20,36}
733 | // case 1: strcpy(lip,"10.161.1.18"); break; // "word"-zone domain
734 | // case 2: strcpy(lip,"10.161.1.58"); break; // Domain: [a-f0-9]{32}
735 | // case 3: strcpy(lip,"10.161.1.102"); break; // Domain: (p|s|t)([a-f0-9]{4}\-){3}[a-f0-9]{4}
736 | // case 4: strcpy(lip,"10.161.1.117"); break; // Domain: [a-f0-9]{40}
737 | // case 5: strcpy(lip,"10.161.1.160"); break; // Domain: [a-z0-9]{8,40}
738 | // case 6: strcpy(lip,"10.161.1.204"); break; // base64 encoded subdomain
739 | // case 7: strcpy(lip,"10.161.1.241"); break; // base64 encoded message snippet subdomain
740 |
741 | // Now, with up to three networks to choose from, picking a malware IP
742 | // is more difficult. But I think I came up with a cool way to pick one.
743 |
744 | // First, look at this array: int plist[6][3] = {{0,1,2},{0,2,1},{1,0,2},{1,2,0},{2,0,1},{2,1,0}};
745 | // It represents all six permutations of 0, 1, and 2.
746 | // These numbers represent the three networks (0: net10, 1: net172, 2: net192)
747 | // Now, we pick a number between 0 and 5 to access a 012 group. Let's pretend it is 4.
748 | // In the {2,0,1} group (plist[4]), we check the first value (2). If net192 is TRUE, we grab its malware IP.
749 | // Otherwise, we check the second value (0). If net10 is TRUE, you get the idea.
750 | // Last, we check the third value (1) and then test net172.
751 | // Note: we exit the loop when the first TRUE net variable is found.
752 | // All active networks (in a truly random world) have the same probability of being chosen.
753 | ppick = FALSE;
754 | n1 = rand() % 6;
755 | n2 = 0;
756 | do
757 | {
758 | switch(plist[n1][n2])
759 | {
760 | case 0: if(net10)
761 | {
762 | strcpy(lip,malwareip10[special]);
763 | ppick = TRUE;
764 | }
765 | break;
766 | case 1: if(net172)
767 | {
768 | strcpy(lip,malwareip172[special]);
769 | ppick = TRUE;
770 | }
771 | break;
772 |
773 | case 2: if(net192)
774 | {
775 | strcpy(lip,malwareip192[special]);
776 | ppick = TRUE;
777 | }
778 | break;
779 | }
780 | n2++;
781 | } while (!ppick);
782 | }
783 | else
784 | if(ipr == 22) // These are spoofed IPs.
785 | strcpy(lip,spoofip[rand() % 8]);
786 | else
787 | {
788 | ppick = FALSE; // Now we just pick an ordinary, non-infected system from the available networks.
789 | n1 = rand() % 6;
790 | n2 = 0;
791 | do
792 | {
793 | switch(plist[n1][n2])
794 | {
795 | case 0: if(net10)
796 | {
797 | sprintf(lip,"10.%d.%d.%d",s10,(1 + (rand() % 200)),(1 + (rand() % 250)));
798 | ppick = TRUE;
799 | }
800 | break;
801 | case 1: if(net172)
802 | {
803 | sprintf(lip,"172.%d.%d.%d",s172,(1 + (rand() % 200)),(1 + (rand() % 250)));
804 | ppick = TRUE;
805 | }
806 | break;
807 | case 2: if(net192)
808 | {
809 | sprintf(lip,"192.168.%d.%d",s192,(1 + (rand() % 250)));
810 | ppick = TRUE;
811 | }
812 | break;
813 | }
814 | n2++;
815 | } while (!ppick);
816 | }
817 |
818 | lh3[0] = '\0';
819 | sprintf(lh3,"%04X", rand() % 65536);
820 |
821 | // Generate one of eight different malware domain types.
822 | ldom[0] = '\0';
823 | if(ipr == 5)
824 | {
825 | switch(special)
826 | {
827 | case 0: n2 = 20 + (rand() % 17); // Domain: [a-z]{20,36}
828 | for(n1 = 0; n1 < n2; n1++)
829 | exfil[n1] = dga[rand() % 26];
830 | exfil[n2] = '\0';
831 | if (noms)
832 | sprintf(ldom,"%s",exfil);
833 | else
834 | sprintf(ldom,"(%d)%s",n2,exfil);
835 | rv = rand() % 6;
836 | if (noms)
837 | switch(rv)
838 | {
839 | case 0: strcat(ldom,".com"); break;
840 | case 1: strcat(ldom,".org"); break;
841 | case 2: strcat(ldom,".net"); break;
842 | case 3: strcat(ldom,".biz"); break;
843 | case 4: strcat(ldom,".info"); break;
844 | case 5: strcat(ldom,ccode()); break;
845 | }
846 | else
847 | switch(rv)
848 | {
849 | case 0: strcat(ldom,"(3)com(0)"); break;
850 | case 1: strcat(ldom,"(3)org(0)"); break;
851 | case 2: strcat(ldom,"(3)net(0)"); break;
852 | case 3: strcat(ldom,"(3)biz(0)"); break;
853 | case 4: strcat(ldom,"(4)info(0)"); break;
854 | case 5: strcat(ldom,ccode2()); break;
855 | }
856 | lstat[0] = '\0';
857 | if(5 == (rand() % 20))
858 | strcpy(lstat,"[0001 D NOERROR]");
859 | else
860 | strcpy(lstat,"[8081 D NXDOMAIN]");
861 | break;
862 | case 1: n1 = rand() % 60; // "word"-zone domain
863 | if (noms)
864 | {
865 | switch(rand() % 6)
866 | {
867 | case 0: sprintf(ldom,"%s%04x-zone.net",wlist[n1],(rand() % 65536)); break;
868 | case 1: sprintf(ldom,"%s%04x-area.com",wlist[n1],(rand() % 65536)); break;
869 | case 2: sprintf(ldom,"%s%04x-machine.org",wlist[n1],(rand() % 65536)); break;
870 | case 3: sprintf(ldom,"%s%04x-service.biz",wlist[n1],(rand() % 65536)); break;
871 | case 4: sprintf(ldom,"%s%04x-list.de",wlist[n1],(rand() % 65536)); break;
872 | case 5: sprintf(ldom,"%s%04x-dump.bg",wlist[n1],(rand() % 65536)); break;
873 | }
874 | }
875 | else
876 | {
877 | switch(rand() % 6)
878 | {
879 | case 0: sprintf(ldom,"(%d)%s%04x-zone(3)net(0)",(9+strlen(wlist[n1])),wlist[n1],(rand() % 65536)); break;
880 | case 1: sprintf(ldom,"(%d)%s%04x-area(3)com(0)",(9+strlen(wlist[n1])),wlist[n1],(rand() % 65536)); break;
881 | case 2: sprintf(ldom,"(%d)%s%04x-machine(3)org(0)",(12+strlen(wlist[n1])),wlist[n1],(rand() % 65536)); break;
882 | case 3: sprintf(ldom,"(%d)%s%04x-service(3)biz(0)",(12+strlen(wlist[n1])),wlist[n1],(rand() % 65536)); break;
883 | case 4: sprintf(ldom,"(%d)%s%04x-list(2)de(0)",(9+strlen(wlist[n1])),wlist[n1],(rand() % 65536)); break;
884 | case 5: sprintf(ldom,"(%d)%s%04x-dump(2)bg(0)",(9+strlen(wlist[n1])),wlist[n1],(rand() % 65536)); break;
885 | }
886 | }
887 | lstat[0] = '\0';
888 | if(5 == (rand() % 20))
889 | strcpy(lstat,"[0001 D NOERROR]");
890 | else
891 | strcpy(lstat,"[8081 D NXDOMAIN]");
892 | break;
893 | case 2: for(n1 = 0; n1 < 32; n1++) exfil[n1] = exalpha[rand() % 16]; // Domain: [a-f0-9]{32}
894 | exfil[32] = '\0';
895 | if (noms)
896 | {
897 | switch(rand() % 6)
898 | {
899 | case 0: sprintf(ldom,"%s.daisyland.net",exfil); break;
900 | case 1: sprintf(ldom,"%s.shopctr.com",exfil); break;
901 | case 2: sprintf(ldom,"%s.biztrack.org",exfil); break;
902 | case 3: sprintf(ldom,"%s.baidv.cn",exfil); break;
903 | case 4: sprintf(ldom,"%s.kronosya.ru",exfil); break;
904 | case 5: sprintf(ldom,"%s.bialystok.pl",exfil); break;
905 | }
906 | }
907 | else
908 | {
909 | switch(rand() % 6)
910 | {
911 | case 0: sprintf(ldom,"(32)%s(9)daisyland(3)net(0)",exfil); break;
912 | case 1: sprintf(ldom,"(32)%s(7)shopctr(3)com(0)",exfil); break;
913 | case 2: sprintf(ldom,"(32)%s(8)biztrack(3)org(0)",exfil); break;
914 | case 3: sprintf(ldom,"(32)%s(5)baidv(2)cn(0)",exfil); break;
915 | case 4: sprintf(ldom,"(32)%s(8)kronosya(2)ru(0)",exfil); break;
916 | case 5: sprintf(ldom,"(32)%s(9)bialystok(2)pl(0)",exfil); break;
917 | }
918 | }
919 | break;
920 | case 3: for(n1 = 0; n1 < 20; n1++) exfil[n1] = exalpha[rand() % 16]; // Domain: (p|s|t)([a-f0-9]{4}\-){3}[a-f0-9]{4}
921 | exfil[20] = '\0';
922 | switch(rand() % 3)
923 | {
924 | case 0: exfil[0] = 'p'; break;
925 | case 1: exfil[0] = 's'; break;
926 | case 2: exfil[0] = 't'; break;
927 | }
928 | exfil[5]='-';
929 | exfil[10]='-';
930 | exfil[15]='-';
931 | if (noms)
932 | {
933 | switch(rand() % 6)
934 | {
935 | case 0: sprintf(ldom,"%s.badguy.com",exfil); break;
936 | case 1: sprintf(ldom,"%s.secret.org",exfil); break;
937 | case 2: sprintf(ldom,"%s.hidden.net",exfil); break;
938 | case 3: sprintf(ldom,"%s.sinkhole.biz",exfil); break;
939 | case 4: sprintf(ldom,"%s.zhishubao.cn",exfil); break;
940 | case 5: sprintf(ldom,"%s.click.in",exfil); break;
941 | }
942 | }
943 | else
944 | {
945 | switch(rand() % 6)
946 | {
947 | case 0: sprintf(ldom,"(20)%s(6)badguy(3)com(0)",exfil); break;
948 | case 1: sprintf(ldom,"(20)%s(6)secret(3)org(0)",exfil); break;
949 | case 2: sprintf(ldom,"(20)%s(6)hidden(3)net(0)",exfil); break;
950 | case 3: sprintf(ldom,"(20)%s(8)sinkhole(3)biz(0)",exfil); break;
951 | case 4: sprintf(ldom,"(20)%s(9)zhishubao(2)cn(0)",exfil); break;
952 | case 5: sprintf(ldom,"(20)%s(5)click(2)in(0)",exfil); break;
953 | }
954 | }
955 | break;
956 | case 4: for(n1 = 0; n1 < 40; n1++) exfil[n1] = exalpha[rand() % 16]; // Domain: [a-f0-9]{40}
957 | exfil[40] = '\0';
958 | if (noms)
959 | {
960 | switch(rand() % 6)
961 | {
962 | case 0: sprintf(ldom,"%s.jennyhaden.com",exfil); break;
963 | case 1: sprintf(ldom,"%s.starsearch.net",exfil); break;
964 | case 2: sprintf(ldom,"%s.allexpensespaid.biz",exfil); break;
965 | case 3: sprintf(ldom,"%s.dosvidanya.ru",exfil); break;
966 | case 4: sprintf(ldom,"%s.doubleclack.org",exfil); break;
967 | case 5: sprintf(ldom,"%s.spy.ro",exfil); break;
968 | }
969 | }
970 | else
971 | {
972 | switch(rand() % 6)
973 | {
974 | case 0: sprintf(ldom,"(40)%s(10)jennyhaden(3)com(0)",exfil); break;
975 | case 1: sprintf(ldom,"(40)%s(10)starsearch(3)net(0)",exfil); break;
976 | case 2: sprintf(ldom,"(40)%s(15)allexpensespaid(3)biz(0)",exfil); break;
977 | case 3: sprintf(ldom,"(40)%s(10)dosvidanya(2)ru(0)",exfil); break;
978 | case 4: sprintf(ldom,"(40)%s(11)doubleclack(3)org(0)",exfil); break;
979 | case 5: sprintf(ldom,"(40)%s(3)spy(2)ro(0)",exfil); break; }
980 | }
981 | break;
982 | case 5: n2 = 8 + (rand() % 33); // Domain: [a-z0-9]{8,40}
983 | for(n1 = 0; n1 < n2; n1++) exfil[n1] = exalpha2[rand() % 36];
984 | exfil[n2] = '\0';
985 | if (noms)
986 | {
987 | switch(rand() % 6)
988 | {
989 | case 0: sprintf(ldom,"%s.oldbooks.org",exfil); break;
990 | case 1: sprintf(ldom,"%s.targit.com",exfil); break;
991 | case 2: sprintf(ldom,"%s.stapels.net",exfil); break;
992 | case 3: sprintf(ldom,"%s.bestbye.biz",exfil); break;
993 | case 4: sprintf(ldom,"%s.izvestiia.ru",exfil); break;
994 | case 5: sprintf(ldom,"%s.huitek.cn",exfil); break;
995 | }
996 | }
997 | else
998 | {
999 | switch(rand() % 6)
1000 | {
1001 | case 0: sprintf(ldom,"(%d)%s(8)oldbooks(3)org(0)",n2,exfil); break;
1002 | case 1: sprintf(ldom,"(%d)%s(6)targit(3)com(0)",n2,exfil); break;
1003 | case 2: sprintf(ldom,"(%d)%s(7)stapels(3)net(0)",n2,exfil); break;
1004 | case 3: sprintf(ldom,"(%d)%s(7)bestbye(3)biz(0)",n2,exfil); break;
1005 | case 4: sprintf(ldom,"(%d)%s(9)izvestiia(2)ru(0)",n2,exfil); break;
1006 | case 5: sprintf(ldom,"(%d)%s(6)huitek(2)cn(0)",n2,exfil); break;
1007 | }
1008 | }
1009 | break;
1010 | case 6: b64pos = rand() % 16; // base64 encoded subdomain
1011 | if (noms)
1012 | {
1013 | switch(rand() % 6)
1014 | {
1015 | case 0: sprintf(ldom,"%s.petraplace.net",b64[b64pos]); break;
1016 | case 1: sprintf(ldom,"%s.shopctr.com",b64[b64pos]); break;
1017 | case 2: sprintf(ldom,"%s.biztrack.org",b64[b64pos]); break;
1018 | case 3: sprintf(ldom,"%s.googel.tw",b64[b64pos]); break;
1019 | case 4: sprintf(ldom,"%s.yaho.com",b64[b64pos]); break;
1020 | case 5: sprintf(ldom,"%s.merhaba.tr",b64[b64pos]); break;
1021 | }
1022 | }
1023 | else
1024 | {
1025 | switch(rand() % 6)
1026 | {
1027 | case 0: sprintf(ldom,"(%d)%s(10)petraplace(3)net(0)",strlen(b64[b64pos]),b64[b64pos]); break;
1028 | case 1: sprintf(ldom,"(%d)%s(7)shopctr(3)com(0)",strlen(b64[b64pos]),b64[b64pos]); break;
1029 | case 2: sprintf(ldom,"(%d)%s(8)biztrack(3)org(0)",strlen(b64[b64pos]),b64[b64pos]); break;
1030 | case 3: sprintf(ldom,"(%d)%s(6)googel(2)tw(0)",strlen(b64[b64pos]),b64[b64pos]); break;
1031 | case 4: sprintf(ldom,"(%d)%s(4)yaho(3)com(0)",strlen(b64[b64pos]),b64[b64pos]); break;
1032 | case 5: sprintf(ldom,"(%d)%s(7)merhaba(2)tr(0)",strlen(b64[b64pos]),b64[b64pos]); break;
1033 | }
1034 | }
1035 | break;
1036 | case 7: if(1200 <= (passes - lastburst)) // base64 encoded message snippet subdomain trigger code
1037 | {
1038 | bursty = TRUE;
1039 | burstknt = 5 + (rand() % 10);
1040 | lastburst = passes;
1041 | }
1042 | else // Or pick an ordinary domain
1043 | {
1044 | if(noms)
1045 | strcpy(ldom,doms[rand() % NDOMS]);
1046 | else
1047 | strcpy(ldom,msdoms[rand() % NDOMS]);
1048 | }
1049 | break;
1050 | }
1051 | }
1052 | else // Or pick an ordinary domain
1053 | {
1054 | if(noms)
1055 | strcpy(ldom,doms[rand() % NDOMS]);
1056 | else
1057 | strcpy(ldom,msdoms[rand() % NDOMS]);
1058 | }
1059 |
1060 | if(!bursty)
1061 | {
1062 | if(!SIMPLE)
1063 | {
1064 | fprintf(ofile,"%s %s %s PACKET %s UDP %s %s %s %s %s A %s\n",ld,lt,lh1,lh2,lsr,lip,lh3,lqr,lstat,ldom);
1065 | sprintf(logline,"%s %s %s PACKET %s UDP %s %s %s %s %s A %s\n",ld,lt,lh1,lh2,lsr,lip,lh3,lqr,lstat,ldom);
1066 | filesize += strlen(logline);
1067 | lineslogged++;
1068 | }
1069 | else
1070 | {
1071 | fprintf(ofile,"%s %s %s %s %s\n",ld,lt,lip,lstat,ldom);
1072 | lineslogged++;
1073 | }
1074 | }
1075 | else // base64 encoded message snippet subdomain burst generation
1076 | {
1077 | rv = rand() % 6;
1078 | for(n1 = 0; n1 < burstknt; n1++)
1079 | {
1080 | ldom[0] = '\0';
1081 | bmsg[0] = '\0';
1082 | b64pos = 4 * (rand() % ((strlen(b64str) - 48)/4));
1083 | for(n2 = 0; n2 < 48; n2++)
1084 | bmsg[n2] = b64str[b64pos+n2];
1085 | bmsg[48] = '\0';
1086 | if (noms)
1087 | {
1088 | switch(rv)
1089 | {
1090 | case 0: sprintf(ldom,"%s.axa.biz",bmsg); break;
1091 | case 1: sprintf(ldom,"%s.colorpix.org",bmsg); break;
1092 | case 2: sprintf(ldom,"%s.windosupdate.com",bmsg); break;
1093 | case 3: sprintf(ldom,"%s.travel.id",bmsg); break;
1094 | case 4: sprintf(ldom,"%s.kouponcash.net",bmsg); break;
1095 | case 5: sprintf(ldom,"%s.zelora.sg",bmsg); break;
1096 | }
1097 | }
1098 | else
1099 | {
1100 | switch(rv)
1101 | {
1102 | case 0: sprintf(ldom,"(48)%s(3)axa(3)biz(0)",bmsg); break;
1103 | case 1: sprintf(ldom,"(48)%s(8)colorpix(3)org(0)",bmsg); break;
1104 | case 2: sprintf(ldom,"(48)%s(12)windosupdate(3)com(0)",bmsg); break;
1105 | case 3: sprintf(ldom,"(48)%s(6)travel(2)id(0)",bmsg); break;
1106 | case 4: sprintf(ldom,"(48)%s(10)kouponcash(3)net(0)",bmsg); break;
1107 | case 5: sprintf(ldom,"(48)%s(6)zelora(2)sg(0)",bmsg); break;
1108 | }
1109 | }
1110 | if(!SIMPLE)
1111 | {
1112 | fprintf(ofile,"%s %s %s PACKET %s UDP %s %s %s %s %s A %s\n",ld,lt,lh1,lh2,lsr,lip,lh3,lqr,lstat,ldom);
1113 | sprintf(logline,"%s %s %s PACKET %s UDP %s %s %s %s %s A %s\n",ld,lt,lh1,lh2,lsr,lip,lh3,lqr,lstat,ldom);
1114 | filesize += strlen(logline);
1115 | lineslogged++;
1116 | }
1117 | else
1118 | {
1119 | fprintf(ofile,"%s %s %s %s %s\n",ld,lt,lip,lstat,ldom);
1120 | lineslogged++;
1121 | }
1122 | }
1123 | bursty = FALSE;
1124 | }
1125 |
1126 | // Check need to split log file
1127 | if((filesize > filemaxsize) && filesplit)
1128 | {
1129 | fclose(ofile);
1130 | if(0 == strlen(fname2))
1131 | sprintf(fname,"%s%d",fname1,fknt);
1132 | else
1133 | sprintf(fname,"%s%d.%s",fname1,fknt,fname2);
1134 | ofile = fopen(fname,"w");
1135 | if(ofile == NULL)
1136 | {
1137 | printf("Error! Can not open %s\n",fname);
1138 | perror(NULL);
1139 | exit(0);
1140 | }
1141 | fknt++;
1142 | filesize = 0;
1143 | }
1144 |
1145 | // At this point we have generated and written one or more log entries during the current second.
1146 | // A burst will cause multiple log entries.
1147 |
1148 | // Now we see if we have used up all the sub-seconds for the current second.
1149 | // Even a moderatly large network will exhibit multiple DNS requests each second.
1150 | subsec--;
1151 | if(subsec == 0)
1152 | {
1153 | sec++;
1154 | subsec = 2 + (rand() % 11);
1155 | if(sec == 15)
1156 | new1min = TRUE; // 1-minute beacons occur at the 15-second mark
1157 | if(sec == 30)
1158 | {
1159 | if(0 == (min % 10))
1160 | new10min = TRUE; // 10-minute beacons occur at the 30-second mark
1161 | }
1162 | if(sec == 60)
1163 | {
1164 | sec = 0;
1165 | min++;
1166 | if(min == 60)
1167 | {
1168 | min = 0;
1169 | hr++;
1170 | new1hour = TRUE; // 1-hour beacons occur at the 0-second mark
1171 | if(hr == 24)
1172 | {
1173 | hr = 0;
1174 | day++;
1175 | if(day > monlist[mon])
1176 | {
1177 | day = 1;
1178 | mon++;
1179 | if(mon > 12)
1180 | {
1181 | mon = 1;
1182 | yr++;
1183 | }
1184 | }
1185 | switch(datemode)
1186 | {
1187 | case 0: sprintf(ld,"%d%02d%02d",yr,mon,day); break;
1188 | case 1: sprintf(ld,"%d-%02d-%02d",yr,mon,day); break;
1189 | case 2: sprintf(ld,"%s %d %d",months[mon],day,yr); break;
1190 | }
1191 | if(verb)
1192 | printf("\n%s\n",ld);
1193 | }
1194 | }
1195 | }
1196 | if(ampm)
1197 | {
1198 | if(hr < 12)
1199 | sprintf(lt,"%02d:%02d:%02d am",hrlist[hr],min,sec);
1200 | else
1201 | sprintf(lt,"%02d:%02d:%02d pm",hrlist[hr],min,sec);
1202 | }
1203 | else
1204 | sprintf(lt,"%02d:%02d:%02d",hr,min,sec);
1205 | }
1206 | passes++;
1207 |
1208 | // Give the user something to look at and see signs of life when large log files are being generated.
1209 | if(0 == (passes % 100000))
1210 | {
1211 | printf(".");
1212 | dots++;
1213 | if(dots == 10)
1214 | {
1215 | dots = 0;
1216 | printf(" ");
1217 | megs++;
1218 | if(0 == (megs % 10))
1219 | printf("\n%dM\n",megs);
1220 | }
1221 | }
1222 | } while (((passes < maxlines) && linestop) || ((!linestop) && ((mon != today_mon) || (day != today_day) || (yr != today_yr))));
1223 | printf("\n");
1224 | printf("Start date/time: %s\n",startime);
1225 | printf("Final date/time: %s, %s\n",ld,lt);
1226 | printf("%ld lines logged.\n",lineslogged);
1227 | fclose(ofile);
1228 | exit(1);
1229 | }
1230 |
--------------------------------------------------------------------------------