# ITSC202 Assignment 4 ## Problem 1 **Result** ![Screenshot 2023-11-09 at 10.23.28 AM](https://hackmd.io/_uploads/Hy6qSqcQ6.png) **prob1.c** ```c= #include <stdio.h> #include "prob1.h" int main(void) { char inputs[STR_COUNT][BUFFER_SIZE+1] = {""}; inputStr(inputs); printf("Longest length is: %d\n", maxStrLen(inputs)); printf("Count of palindrome: %d", countPalindrome(inputs)); return 0; } int _strlen(char s[]) { int i; for (i = 0; s[i] != '\0'; i++); return i; } int maxStrLen(char s[][BUFFER_SIZE+1]) { int maxlen = 0; for (int i = 0; i < STR_COUNT; i++) { int len = _strlen(s[i]); maxlen = len > maxlen ? len : maxlen; } return maxlen; } void inputStr(char s[][BUFFER_SIZE+1]) { for (int i = 0; i < STR_COUNT; i++) { printf("Input a string been enclosed by \"\" (%d/%d): ", i+1, STR_COUNT); scanf("\"%" BUFSIZE(BUFFER_SIZE) "[^\"]s\"", s[i]); while ('\n' != fgetc(stdin)); // Get rid of `"` and `\n` been in buffer } } int isPalindrome(char s[]) { if (0 == _strlen(s)) { return 0; } int head, tail; // I have no reverseStr() for (head = 0, tail = _strlen(s) - 1 ; tail > head; head++, tail--) { if (s[head] != s[tail]) { return 0; } } return 1; } int countPalindrome(char strings[][BUFFER_SIZE+1]) { int ret_c = 0; for (int i = 0; i < STR_COUNT; i++) { ret_c += isPalindrome(strings[i]); } return ret_c; } ``` **prob1.h** ```c= #ifndef _PROB1_H #define _PROB1_H #define STR_COUNT 5 #define BUFFER_SIZE 30 #define _BUFSIZE(x) #x #define BUFSIZE(x) _BUFSIZE(x) int _strlen(char s[]); int maxStrLen(char s[][BUFFER_SIZE+1]); void inputStr(char s[][BUFFER_SIZE+1]); int isPalindrome(char s[]); int countPalindrome(char strings[][BUFFER_SIZE+1]); #endif // prob1.h included ``` ## Problem 2 **Result** ![Screenshot 2023-11-09 at 10.27.20 AM](https://hackmd.io/_uploads/rJEtL55QT.png) **prob2.c** ```c= #include <stdio.h> #include <stdlib.h> #include <time.h> #include "prob2.h" int main(void) { srand(time(NULL)); char valid_string[STRING_COUNT][STRING_SIZE] = {"\0"}; genStrings(valid_string); printStrings(valid_string); return 0; } char randPrintalbeChar(void) { unsigned char rand_byte = rand(); return rand_byte % 0x5f + 0x20; } int _strlen(char s[]) { int i; for (i = 0; '\0' != s[i]; i++); return i; } int convert(char s[]) { int s_len = _strlen(s); int security_code = 0; for (int i = 0; i < s_len; i++) { security_code += s[i] * (s_len - i); } return security_code; } void newRandomString(char s[], unsigned int s_len) { int i; for (i = 0; i < s_len; i++) { s[i] = randPrintalbeChar(); } s[i] = '\0'; } void genStrings(char s[][STRING_SIZE]) { unsigned int s_len; while (1) { printf("Enter the length of the security string: "); scanf(" %u", &s_len); if (12 <= s_len && s_len <= 20) break; printf("\tValue entered should be between 12 and 20 inclusive!!! Try again\n"); } int lower_limit = 0; int upper_limit = 0; for (int i = 1; i <= s_len; i++) { lower_limit += 0x20 * i; upper_limit += 0x7e * i; } unsigned int security_code; printf("Enter your security code(%d ~ %d): ", lower_limit, upper_limit); scanf(" %u", &security_code); for (int i = 0; i < STRING_COUNT; i++) { do { newRandomString(s[i], s_len); } while (security_code != convert(s[i])); } } void printStrings(char s[][STRING_SIZE]) { for (int i = 0; i < STRING_COUNT; i++) { printf("Security String: %s -- Security Code: %d\n", s[i], convert(s[i])); } } ``` **prob2.h** ```c= #ifndef _PROB2_H #define _PROB2_H #define STRING_SIZE 21 #define STRING_COUNT 10 char randPrintalbeChar(void); int _strlen(char s[]); int convert(char s[]); void newRandomString(char s[], unsigned int s_len); void genStrings(char s[][STRING_SIZE]); void printStrings(char s[][STRING_SIZE]); #endif // prob2.h included ``` **Question1** After analyzing the algorithm used to generate the number; would you consider this a good algorithm? **Answer** No, we can easily find 10 and more passwords with the same security code. Means this algorithm has a pretty high collision rate. Which is not suitable for password check. Although it might somewhat ok for use as a checksum. **Question2** Perform some investigation online and state 3 characteristics of passwords that are considered secure. **Answer** From the online source at https://www.security.org/how-secure-is-my-password/ > A password should be 16 characters or more; our password-related research has found that 45 percent of Americans use passwords of eight characters or less, which are not as secure as longer passwords. > A password should include a combination of letters, numbers, and characters. > A password shouldn’t be shared with any other account. > A password shouldn’t include any of the user’s personal information like their address or phone number. It’s also best not to include any information that can be accessed on social media like kids’ or pets’ names. > A password shouldn’t contain any consecutive letters or numbers. > A password shouldn’t be the word “password” or the same letter or number repeated. ## Bonus Instead random generate password and try to match them on the list, I calculate every password on the list to get their security code. **bonus.c** ```c= #include <stdio.h> #define TAGET 8124 int _strlen(char s[]) { int i; for (i = 0; '\0' != s[i]; i++); return i; } int convert(char s[]) { int s_len = _strlen(s); int security_code = 0; for (int i = 0; i < s_len; i++) { security_code += s[i] * (s_len - i); } return security_code; } int main(void) { FILE *file; file = fopen("./rockyou_trimed.txt", "r"); if (NULL == file) return -1; char next_line[22] = {"\0"}; // Prepare 2 more spaces for '\n' and '\0' while (NULL != fgets(next_line, 20, file)) { next_line[_strlen(next_line) - 1] = '\0'; // Get rid of the '\n' at the end of the string if (TAGET == convert(next_line)) { printf("%s\n", next_line); } } return 0; } ``` I used the sed command to trim down the original rockyou list. ```bash sudo cat rockyou.txt | sed '/^.\{12,20\}$/!d' >> /mnt/share/ITSC202/A4/rockyou_trimed.txt ``` And here is the result of my program: ```= michaelteamo mibellagenio anklebreaker Playstation2 love2loveyou daddylilgirl cowgirl4life andreiandrei monkeyman123 ihatecameron brendakarina reggaereggae migranamor10 menaragading marciamarcia eovrstrt2001 safadoelindo pascualina25 ocalaflorida nenagolosa69 neggagangzta mandarambong mahalkocmark madeinbrazil madaparazita lagataminina kanyewest123 jokacicibona its918deny152 iqbalbengkok ihatechelsea gardencenter fuckdarabbit familiaisaza ericssont630 delilahjones coral_caro_s cherrybaby97 cheriecherry cheeseybeans charmainejoy capelliricci animaeseeker africancutie aarongabriel 12gardenclose yukitong2002 xeigx6eyfawn x100prejunots woodbarro501 whaingaroa13 westwood2008 weir261car531 weenatalie08 waterford123 wash839fad230 walnutbed660 wale352guy007 waanabeastar vane2052036188 vane0511216839 tube251bop278 tsajuput8457 trey7gangsta tortoise2239 toe182hurt722 todocambio00 tmjustme1990 tifabaricela throwback317 thibodeaux21 thejastyn232 thechucker73 than469rib401 thacutie4eva teamomiam,or sxcfiteli123 supermom9705 stripper7261 steve101b2667 stePHANIE_PAO spankette69! soyunico2008 southern1989 soulmeyt2113 sonyvgn-n10e sofysofy1234 soccerlife24 snakeshake12 smokealot555 smelly welly slaughter666 skateboard24 skateboard16 skateboard08 singndance07 shivani4life shin017cow101 shiaadhikari sheyla1411$$$ sheila2741993 sexiigirl015 sewaandt4eva seventeen223 sedam_emrem_ sectiembre21 secademivida sebasserna12 seam717guy126 schlagsljs11 sazzybby123@ saramarisa17 sanctuary330 sanamabasamo salami2891726 sagitario_29 rye_claire10 rudyomez6009 rpkntwes5523 roof092ana419 rodel_cute31 riverph0en1x rick847mat358 richardson16 renacealamor raft456jog940 rafaelastefh rachelcarter rabbitheavan quad5009001000 punkbitch420 pulp4reality promporn2929 princessj220 princes-nemo postrero0722 poojariya123 poochunck666 penyuagar147 penkitten372 pekeninnah69 pathfinder56 pastonboi123 palapalapala pagliarella5 orangedesk81 oanamaracine nyminute3797 number1pinky nochedecalor nickeltree55 niaramadhani naiarilalagi nadiashannon nabilazainal naanavanilai myladys0ph1a mwthomps3441 mrscarney123 moodymare123 monty55892206 mollypup1990 mole606tic630 mo2yyad123321 miibabiwaren michellemay1 michelleboba michaelmarks micaelasilva mccutcheon72 mash619fry112 martinadan27 martec1234567 marqueses014 manalilidabu malazajebana majicfingers majagatmitan maiklamaikla mahalkobente mahalkitaedz magicsword16 maggiecooper magayunako09 maelovetan21 mady0720860114 madeesbonita madamshamiya maconqueen12 luckylady123 luciernaga24 lovedodead12 loveamie4eva louisiana619 loserhole123 lookin4juice loociie-xxxx loganballin1 liberty4ever liamcaldwell leteshakat-9 leheneandrei leahfaulkner leahandpolly laughter4eva lapoderosa01 lakminisep19 ladyhough_01 lacramioaraa lachuchichus labrashiania l6fkiy9oN2525 kristen emma klasherock08 klapaucius11 klapaucius03 kitkatbf4lyf kisses&sassy kiraanddefer kepahalatanu kelciealexis kawasakikx60 katherinne20 katanaidario karatibros14 kamehamewave kakilekakile kailagrenger kaesviharn34 josseline123 joanadacosta jelenajelena jeadoreleart jay810swum781 javedalikhan jannahilary1 janesammut1@ jamieatalona jamesheadley jamesbeckett jakerichards jakarakapooy jajaconmocos isaacricardo ironpaper127 ipswich rock intocables.7 indirinais24 indigenous06 inakiandmama imissasya123 iluvjames123 ilscjedonn19 ilovezena123 ilovespam123 ilovereno123 ilovepink420 ilovepigs229 ilovej.quinn iloveivan929 iloveemos913 ilovebity456 ilovearmy218 iloveali4eva ilimaiakona1 icandoforall husband?wife httphttp4488 houseroad102 hottie/cutie hollister312 hijodeadonai hashaskachia hannahughes1 hannahsadler hannahdoheny hambeautiful halo_beyonce hadassaester guypearce089 grandmataco* goshbeefham1 goldtruck969 gizmo/mowgli girlygirl133 gird990gum588 ginadevalera gigidalessio gicagamutitu giannakellie georgebush69 georgeandme1 geneadunamis gemmaisadick gatita2588330 gabrielasoul gaboneramona g.o.d.d.e.s.s. funkieme4eva freaksquad07 fraangellico fqymirw42fxl fordfiesta08 foodeatter72 fisheraser22 fineliving35 fineladincom fifastreet@3 fickleminded febriganteng featherlite* fatimajeneba farehasayang familiacoqui fajariansyah fadLiye789456 fabioliveira emmaandcorey elsierhoda33 elmichoacano elchicodesvr eduardadrian eastenders95 drew416san410 dragon4475732 dkhairdesign diegoluver14 diegogiraldo diditamaluca diddlpimboli dianaymaicol dianalasuper dianajolette diamondbitch dhiengmhieng dessap1029394 demicaroline decepsionada deasisdeasis deannasmells davonschic90 danova3787803 danielpercil daniellellou dangthienbao dangelsdevil dandangstone danassmebaby damienevered dakotadimick cyberabancay cristobal1_2 covington123 costaazul740 come063wry083 cmccolection cleopatras69 clarinetto55 clarencejohn cinemabizare cincerechris ciaracorkery chuperson916 chuckandlala chosenagain1 chikaodiumeh chetsadakeng chelsisababe cheewahtlake cheaperdozen chazandchris charsrojas21 charlottej29 chargingfone chantoSinter channysere07 cftnji1455451 celticchamps cardenaskote caramelbunny caradepotito canthandleme camposlobo14 callatehueon cakipankerot cainedunford c13bplacencio burgers-dorp brianandjeni brendancraig brandibbyboy bootsie4life book283moo556 bongbaw_nana blueorange12 bloodedangel blogmaster28 blackgonzalo blackburnrfc billiandkiki bikerbradley bigeyedbuddy bicolbonding bhattacharya beuandsmile! bettyboop515 bettyboop329 bestfriend42 bestest4ever berrykiwi530 berryauto131 belitaibette becauseilove bebitogrande batintinay17 basketcasegd bankraknanna banditmeisha badlawyerkab badboyshammy b.h.u.r.a_3558 aviancabravo attention107 ashleycole3* arturo vidal aristotle... arbieandspot appleberry11 apachekrissy anushree luv anntaleser03 animandarina anggerjancok angelychuy19 angelicuchis angelemanuel angeldiavolo angelcurry83 angelawalker anevabradley andreiatefas andreasafiro andreanatera andreacordon anahwel_mika anahiyadrian amy397molt775 amudhaganesh amielbucayan americapekis allaneemilly alisonjane93 alinriri4lyf alinashideea alexoswii777 alejitapages alejandrogro aldariscraft alanbermudez aikoaikoaiko ahoy802gum504 adriangolias adanterhodes adamlongoria adakuangword achtungbaby1 acanncypaula abril25de1996 abigail020403 abelgonzales abdryydany25 ^^nicumsum^^ Xeruos3111990 TRANSFORMATION TEQUIEROJAZMIN TEADORO17400723 Snowbaording Siriyaratana Pereira251257 PSK4684295Hobit Noquestion4H NURULNATASHA30 MIOSITOHERMOSO Losodiotanto Keykotenshen JNMuki-4568525 Iwanttolearn ISAAC TE QUIERO ILoveYou14344 ILOVEYOUELIANA ILOVEJAZZREYES FrancinE187!@ Arlette022202 A1B2C3D4E5F6G7H8 99592905240034308 97927009622338612 95869994mourad@ 92Queenofpain 4r9001200yamaha 22rpb_rko.tom 2011584623humann 1993winnie1993 14759639874123456 10tumi?yote27 020592KARLAMEMO0 0061854lamorena ,6d;fu[6Pg0ibP *kathryn*0523 **gi4n+ekelo** ***253091tatiana #1rubberducky !Dreadnaught1 ```