(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(DQ (dhgex))} spids:[7])] spids: [7] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOG) op: Equal rhs: {(${ VSub_Name TEST_SSH_LOGFILE)} spids: [13] ) ] spids: [13] ) (C {(rm)} {(-f)} {(${ VSub_Name LOG)}) (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_proxy)} {($ VSub_Name '$OBJ') (/sshd_proxy_bak)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kexs) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(${ VSub_Name SSH)} {(-Q)} {(kex)}) (C {(grep)} {(diffie-hellman-group-exchange)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [36 50] ) } spids: [35] ) ] spids: [35] ) (FuncDef name: ssh_test_dhgex body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bits) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [60] ) ] spids: [60] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cipher) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [69] ) ] spids: [69] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kex) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [78] ) ] spids: [78] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (C {(cp)} {($ VSub_Name '$OBJ') (/sshd_proxy_bak)} {($ VSub_Name '$OBJ') (/sshd_proxy)}) (SimpleCommand words: [{(echo)} {(DQ ('KexAlgorithms=') ($ VSub_Name '$kex'))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)} spids: [104] ) ] ) (SimpleCommand words: [{(echo)} {(DQ ('Ciphers=') ($ VSub_Name '$cipher'))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$OBJ') (/sshd_proxy)} spids: [117] ) ] ) (C {(rm)} {(-f)} {(${ VSub_Name LOG)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opts) op: Equal rhs: { (DQ ('-oKexAlgorithms=') ($ VSub_Name '$kex') (' -oCiphers=') ($ VSub_Name '$cipher') ) } spids: [132] ) ] spids: [132] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:min) op:Equal rhs:{(2048)} spids:[141])] spids: [141] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:max) op:Equal rhs:{(8192)} spids:[145])] spids: [145] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:groupsz) op: Equal rhs: { (DQ ($ VSub_Name '$min') ('<') ($ VSub_Name '$bits') ('<') ($ VSub_Name '$max')) } spids: [149] ) ] spids: [149] ) (C {(verbose)} { (DQ ($ VSub_Name '$tid') (' bits ') ($ VSub_Name '$bits') (' ') ($ VSub_Name '$kex') (' ') ($ VSub_Name '$cipher') ) } ) (C {(${ VSub_Name SSH)} {(${ VSub_Name opts)} {($ VSub_At '$@')} {(-vvv)} {(-F)} {(${ VSub_Name OBJ) (/ssh_proxy)} {(somehost)} {(true)} ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(fail)} {(DQ ('ssh failed (') ($ VSub_At '$@') (')'))})] spids: [-1 209] ) ] spids: [-1 221] ) (SimpleCommand words: [ {(grep)} {(DQ ('SSH2_MSG_KEX_DH_GEX_REQUEST(') ($ VSub_Name '$groupsz') (') sent'))} {(${ VSub_Name LOG)} ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[240])] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:got) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(egrep)} {(DQ ('SSH2_MSG_KEX_DH_GEX_REQUEST(.*) sent'))} {(${ VSub_Name LOG)} ) ] ) left_token: <Left_Backtick '`'> spids: [262 272] ) } spids: [261] ) ] spids: [261] ) (C {(fail)} { (DQ ($ VSub_Name '$tid') (' unexpected GEX sizes, expected ') ($ VSub_Name '$groupsz') (', got ') ($ VSub_Name '$got') ) } ) ] spids: [-1 258] ) ] spids: [-1 286] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:gotbits) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(awk)} {(SQ <'/bits set:/{print $4}'>)} {(${ VSub_Name LOG)}) (C {(head)} {(-1)}) (C {(cut)} {(-f2)} {(-d/)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [295 319] ) ) } spids: [293] ) ] spids: [293] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$gotbits'))} {(-lt)} {(DQ ($ VSub_Name '$bits'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(fatal)} { (DQ ($ VSub_Name '$tid') (' expected ') ($ VSub_Name '$bits') (' bit group, got ') ($ VSub_Name '$gotbits') ) } ) ] spids: [-1 340] ) ] spids: [-1 354] ) ] spids: [57] ) spids: [53 56] ) (FuncDef name: check body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bits) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [366] ) ] spids: [366] ) terminator: <Op_Semi ';'> ) (C {(shift)}) (ForEach iter_name: c iter_words: [{($ VSub_At '$@')}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: k iter_words: [{($ VSub_Name '$kexs')}] do_arg_iter: False body: (DoGroup children: [ (C {(ssh_test_dhgex)} {($ VSub_Name '$bits')} {($ VSub_Name '$c')} {($ VSub_Name '$k')} ) ] spids: [397 409] ) spids: [393 395] ) ] spids: [385 412] ) spids: [381 383] ) ] spids: [363] ) spids: [359 362] ) (C {(check)} {(3072)} { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(${ VSub_Name SSH)} {(-Q)} {(cipher)}) (C {(grep)} {(128)})] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [424 438] ) } ) (C {(check)} {(3072)} {(arcfour)} {(blowfish-cbc)}) (C {(check)} {(7680)} { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(${ VSub_Name SSH)} {(-Q)} {(cipher)}) (C {(grep)} {(192)})] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [452 466] ) } ) (C {(check)} {(8192)} { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(${ VSub_Name SSH)} {(-Q)} {(cipher)}) (C {(grep)} {(256)})] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [472 486] ) } ) (C {(check)} {(8192)} {(rijndael-cbc) (Lit_Other '@') (lysator.liu.se)} {(chacha20-poly1305) (Lit_Other '@') (openssh.com)} ) ] )