@@ -561,6 +561,84 @@ def _len(line):
561561 return lines
562562
563563
564+ def get_fancy_banner (mini : Optional [bool ] = None ) -> str :
565+ """
566+ Generates the fancy Scapy banner
567+
568+ :param mini: if set, force a mini banner or not. Otherwise detect
569+ """
570+ from scapy .config import conf
571+ from scapy .utils import get_terminal_width
572+ if mini is None :
573+ mini_banner = (get_terminal_width () or 84 ) <= 75
574+ else :
575+ mini_banner = mini
576+
577+ the_logo = [
578+ " " ,
579+ " aSPY//YASa " ,
580+ " apyyyyCY//////////YCa " ,
581+ " sY//////YSpcs scpCY//Pp " ,
582+ " ayp ayyyyyyySCP//Pp syY//C " ,
583+ " AYAsAYYYYYYYY///Ps cY//S" ,
584+ " pCCCCY//p cSSps y//Y" ,
585+ " SPPPP///a pP///AC//Y" ,
586+ " A//A cyP////C" ,
587+ " p///Ac sC///a" ,
588+ " P////YCpc A//A" ,
589+ " scccccp///pSP///p p//Y" ,
590+ " sY/////////y caa S//P" ,
591+ " cayCyayP//Ya pY/Ya" ,
592+ " sY/PsY////YCc aC//Yp " ,
593+ " sc sccaCY//PCypaapyCP//YSs " ,
594+ " spCPY//////YPSps " ,
595+ " ccaacs " ,
596+ " " ,
597+ ]
598+
599+ # Used on mini screens
600+ the_logo_mini = [
601+ " .SYPACCCSASYY " ,
602+ "P /SCS/CCS ACS" ,
603+ " /A AC" ,
604+ " A/PS /SPPS" ,
605+ " YP (SC" ,
606+ " SPS/A. SC" ,
607+ " Y/PACC PP" ,
608+ " PY*AYC CAA" ,
609+ " YYCY//SCYP " ,
610+ ]
611+
612+ the_banner = [
613+ "" ,
614+ "" ,
615+ " |" ,
616+ " | Welcome to Scapy" ,
617+ " | Version %s" % conf .version ,
618+ " |" ,
619+ " | https://github.com/secdev/scapy" ,
620+ " |" ,
621+ " | Have fun!" ,
622+ " |" ,
623+ ]
624+
625+ if mini_banner :
626+ the_logo = the_logo_mini
627+ the_banner = [x [2 :] for x in the_banner [3 :- 1 ]]
628+ the_banner = ["" ] + the_banner + ["" ]
629+ else :
630+ quote , author = choice (QUOTES )
631+ the_banner .extend (_prepare_quote (quote , author , max_len = 39 ))
632+ the_banner .append (" |" )
633+ return "\n " .join (
634+ logo + banner for logo , banner in zip_longest (
635+ (conf .color_theme .logo (line ) for line in the_logo ),
636+ (conf .color_theme .success (line ) for line in the_banner ),
637+ fillvalue = ""
638+ )
639+ )
640+
641+
564642def interact (mydict = None , argv = None , mybanner = None , loglevel = logging .INFO ):
565643 # type: (Optional[Any], Optional[Any], Optional[Any], int) -> None
566644 """
@@ -635,72 +713,7 @@ def interact(mydict=None, argv=None, mybanner=None, loglevel=logging.INFO):
635713 )
636714
637715 if conf .fancy_banner :
638- from scapy .utils import get_terminal_width
639- mini_banner = (get_terminal_width () or 84 ) <= 75
640-
641- the_logo = [
642- " " ,
643- " aSPY//YASa " ,
644- " apyyyyCY//////////YCa " ,
645- " sY//////YSpcs scpCY//Pp " ,
646- " ayp ayyyyyyySCP//Pp syY//C " ,
647- " AYAsAYYYYYYYY///Ps cY//S" ,
648- " pCCCCY//p cSSps y//Y" ,
649- " SPPPP///a pP///AC//Y" ,
650- " A//A cyP////C" ,
651- " p///Ac sC///a" ,
652- " P////YCpc A//A" ,
653- " scccccp///pSP///p p//Y" ,
654- " sY/////////y caa S//P" ,
655- " cayCyayP//Ya pY/Ya" ,
656- " sY/PsY////YCc aC//Yp " ,
657- " sc sccaCY//PCypaapyCP//YSs " ,
658- " spCPY//////YPSps " ,
659- " ccaacs " ,
660- " " ,
661- ]
662-
663- # Used on mini screens
664- the_logo_mini = [
665- " .SYPACCCSASYY " ,
666- "P /SCS/CCS ACS" ,
667- " /A AC" ,
668- " A/PS /SPPS" ,
669- " YP (SC" ,
670- " SPS/A. SC" ,
671- " Y/PACC PP" ,
672- " PY*AYC CAA" ,
673- " YYCY//SCYP " ,
674- ]
675-
676- the_banner = [
677- "" ,
678- "" ,
679- " |" ,
680- " | Welcome to Scapy" ,
681- " | Version %s" % conf .version ,
682- " |" ,
683- " | https://github.com/secdev/scapy" ,
684- " |" ,
685- " | Have fun!" ,
686- " |" ,
687- ]
688-
689- if mini_banner :
690- the_logo = the_logo_mini
691- the_banner = [x [2 :] for x in the_banner [3 :- 1 ]]
692- the_banner = ["" ] + the_banner + ["" ]
693- else :
694- quote , author = choice (QUOTES )
695- the_banner .extend (_prepare_quote (quote , author , max_len = 39 ))
696- the_banner .append (" |" )
697- banner_text = "\n " .join (
698- logo + banner for logo , banner in zip_longest (
699- (conf .color_theme .logo (line ) for line in the_logo ),
700- (conf .color_theme .success (line ) for line in the_banner ),
701- fillvalue = ""
702- )
703- )
716+ banner_text = get_fancy_banner ()
704717 else :
705718 banner_text = "Welcome to Scapy (%s)" % conf .version
706719 if mybanner is not None :
0 commit comments